@office-iss/react-native-win32 0.0.0-canary.299 → 0.0.0-canary.300
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 +3 -6
- package/CHANGELOG.json +46 -1
- package/CHANGELOG.md +19 -6
- package/IntegrationTests/IntegrationTestsApp.js +1 -1
- package/Libraries/Alert/RCTAlertManager.android.js +2 -0
- package/Libraries/Animated/Animated.d.ts +2 -0
- package/Libraries/Animated/AnimatedImplementation.js +2 -0
- package/Libraries/Animated/Easing.js +2 -0
- package/Libraries/Animated/animations/Animation.js +14 -14
- package/Libraries/Animated/animations/TimingAnimation.js +2 -0
- package/Libraries/Animated/nodes/AnimatedNode.js +7 -7
- package/Libraries/Animated/nodes/AnimatedObject.js +7 -7
- package/Libraries/Animated/nodes/AnimatedProps.js +30 -30
- package/Libraries/Animated/nodes/AnimatedStyle.js +17 -17
- package/Libraries/Animated/nodes/AnimatedTransform.js +5 -5
- package/Libraries/Animated/nodes/AnimatedValue.js +18 -18
- package/Libraries/AppState/AppState.js +3 -3
- package/Libraries/BatchedBridge/MessageQueue.js +4 -0
- package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.js +1 -1
- package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.win32.js +1 -1
- package/Libraries/Components/Pressable/Pressable.js +10 -1
- package/Libraries/Components/Pressable/Pressable.win32.js +9 -0
- package/Libraries/Components/StatusBar/StatusBar.js +2 -2
- package/Libraries/Components/Switch/Switch.js +1 -1
- package/Libraries/Components/TextInput/TextInput.js +2 -2
- package/Libraries/Components/TextInput/TextInput.win32.js +2 -1
- package/Libraries/Components/Touchable/TouchableBounce.js +1 -1
- package/Libraries/Components/Touchable/TouchableHighlight.js +1 -1
- package/Libraries/Components/Touchable/TouchableNativeFeedback.js +1 -1
- package/Libraries/Components/Touchable/TouchableOpacity.js +1 -1
- package/Libraries/Components/Touchable/TouchableWithoutFeedback.js +2 -2
- package/Libraries/Components/View/View.js +86 -168
- package/Libraries/Core/ReactNativeVersion.js +37 -10
- package/Libraries/Core/Timers/queueMicrotask.js +1 -0
- package/Libraries/Core/setUpPerformance.js +2 -1
- package/Libraries/Interaction/InteractionManager.js +118 -171
- package/Libraries/LayoutAnimation/LayoutAnimation.js +2 -0
- package/Libraries/LogBox/Data/LogBoxData.js +4 -1
- package/Libraries/Modal/Modal.js +1 -1
- package/Libraries/NativeComponent/ViewConfig.js +1 -1
- package/Libraries/Network/XMLHttpRequest.js +18 -5
- package/Libraries/Pressability/Pressability.js +1 -1
- package/Libraries/Pressability/Pressability.win32.js +1 -1
- package/Libraries/ReactNative/AppRegistryImpl.js +4 -2
- package/Libraries/Renderer/implementations/ReactFabric-dev.js +38 -35
- package/Libraries/Renderer/implementations/ReactFabric-prod.js +51 -22
- package/Libraries/Renderer/implementations/ReactFabric-profiling.js +54 -24
- package/Libraries/Renderer/implementations/ReactNativeRenderer-dev.js +36 -33
- package/Libraries/Renderer/implementations/ReactNativeRenderer-prod.js +5 -5
- package/Libraries/Renderer/implementations/ReactNativeRenderer-profiling.js +5 -5
- package/Libraries/Renderer/shims/ReactFabric.js +3 -1
- package/Libraries/Renderer/shims/ReactFeatureFlags.js +3 -1
- package/Libraries/Renderer/shims/ReactNative.js +3 -1
- package/Libraries/Renderer/shims/ReactNativeViewConfigRegistry.js +3 -1
- package/Libraries/Renderer/shims/createReactNativeComponentClass.js +3 -1
- package/Libraries/Utilities/useMergeRefs.js +1 -1
- package/Libraries/promiseRejectionTrackingOptions.js +17 -31
- package/flow/HermesInternalType.js +114 -0
- package/flow/Stringish.js +14 -0
- package/flow/bom.js.flow +554 -0
- package/flow/console.js +49 -0
- package/flow/cssom.js.flow +575 -0
- package/flow/dom.js.flow +6289 -0
- package/flow/global.js +88 -0
- package/flow/prettier.js.flow +14 -0
- package/flow/streams.js.flow +140 -0
- package/index.js +5 -2
- package/index.win32.js +6 -2
- package/jest/mockComponent.js +1 -1
- package/jest/setup.js +11 -0
- package/overrides.json +11 -11
- package/package.json +19 -19
- package/src/private/animated/NativeAnimatedHelper.js +8 -1
- package/src/private/animated/NativeAnimatedHelper.win32.js +8 -1
- package/src/private/animated/createAnimatedPropsHook.js +2 -49
- package/src/private/animated/createAnimatedPropsMemoHook.js +2 -48
- package/src/private/components/virtualview/VirtualView.js +22 -6
- package/src/private/components/virtualview/VirtualViewExperimentalNativeComponent.js +93 -0
- package/src/private/devsupport/devmenu/elementinspector/ReactDevToolsOverlay.js +2 -2
- package/src/private/featureflags/ReactNativeFeatureFlags.js +71 -51
- package/src/private/featureflags/ReactNativeFeatureFlagsBase.js +19 -0
- package/src/private/featureflags/specs/NativeReactNativeFeatureFlags.js +15 -5
- package/src/private/webapis/dom/nodes/ReadOnlyElement.js +1 -1
- package/src/private/webapis/dom/oldstylecollections/HTMLCollection.js +2 -2
- package/src/private/webapis/dom/oldstylecollections/NodeList.js +2 -2
- package/src/private/webapis/geometry/DOMRectList.js +2 -2
- package/src/private/webapis/intersectionobserver/internals/IntersectionObserverManager.js +19 -74
- package/src/private/webapis/intersectionobserver/specs/NativeIntersectionObserver.js +0 -4
- package/src/private/webapis/performance/EventTiming.js +5 -9
- package/src/private/webapis/performance/Performance.js +251 -191
- package/src/private/webapis/performance/PerformanceObserver.js +8 -29
- package/src/private/webapis/performance/UserTiming.js +24 -23
- package/src/private/webapis/performance/UserTimingExtensibility.js.flow +38 -0
- package/src/private/webapis/performance/internals/Utilities.js +9 -0
- package/src/private/webapis/performance/specs/NativePerformance.js +19 -33
- package/src/private/webapis/structuredClone/structuredClone.js +1 -1
- package/Libraries/Interaction/InteractionManagerStub.js +0 -184
- package/Libraries/Interaction/TaskQueue.js +0 -197
- package/Libraries/ReactNative/ReactNativeFeatureFlags.js +0 -31
package/flow/global.js
ADDED
|
@@ -0,0 +1,88 @@
|
|
|
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
|
+
/**
|
|
12
|
+
* `global` is a object containing all the global variables for React Native.
|
|
13
|
+
*
|
|
14
|
+
* NOTE: Consider cross-platform as well as JS environments compatibility
|
|
15
|
+
* when defining the types here. Consider both presence (`?`) as well as
|
|
16
|
+
* writeability (`+`) when defining types.
|
|
17
|
+
*/
|
|
18
|
+
// $FlowFixMe[libdef-override]
|
|
19
|
+
declare var global: {
|
|
20
|
+
// setUpGlobals
|
|
21
|
+
+window: typeof global,
|
|
22
|
+
+self: typeof global,
|
|
23
|
+
+process: {
|
|
24
|
+
+env: {
|
|
25
|
+
+NODE_ENV: 'development' | 'production',
|
|
26
|
+
},
|
|
27
|
+
+argv?: $ReadOnlyArray<string>,
|
|
28
|
+
},
|
|
29
|
+
|
|
30
|
+
// setUpPerformance
|
|
31
|
+
+performance: Performance,
|
|
32
|
+
|
|
33
|
+
// setUpXHR
|
|
34
|
+
+XMLHttpRequest: typeof XMLHttpRequest,
|
|
35
|
+
+FormData: typeof FormData,
|
|
36
|
+
+fetch: typeof fetch,
|
|
37
|
+
+Headers: typeof Headers,
|
|
38
|
+
+Request: typeof Request,
|
|
39
|
+
+Response: typeof Response,
|
|
40
|
+
+WebSocket: typeof WebSocket,
|
|
41
|
+
+Blob: typeof Blob,
|
|
42
|
+
+File: typeof File,
|
|
43
|
+
+FileReader: typeof FileReader,
|
|
44
|
+
+URL: typeof URL,
|
|
45
|
+
+URLSearchParams: typeof URLSearchParams,
|
|
46
|
+
+AbortController: typeof AbortController,
|
|
47
|
+
+AbortSignal: typeof AbortSignal,
|
|
48
|
+
|
|
49
|
+
// setUpAlert
|
|
50
|
+
+alert: typeof alert,
|
|
51
|
+
|
|
52
|
+
// setUpNavigator
|
|
53
|
+
+navigator: {
|
|
54
|
+
+product: 'ReactNative',
|
|
55
|
+
+appName?: ?string,
|
|
56
|
+
...
|
|
57
|
+
},
|
|
58
|
+
|
|
59
|
+
// setUpTimers
|
|
60
|
+
+setInterval: typeof setInterval,
|
|
61
|
+
+clearInterval: typeof clearInterval,
|
|
62
|
+
+setTimeout: typeof setTimeout,
|
|
63
|
+
+clearTimeout: typeof clearTimeout,
|
|
64
|
+
+requestAnimationFrame: typeof requestAnimationFrame,
|
|
65
|
+
+cancelAnimationFrame: typeof cancelAnimationFrame,
|
|
66
|
+
+requestIdleCallback: typeof requestIdleCallback,
|
|
67
|
+
+cancelIdleCallback: typeof cancelIdleCallback,
|
|
68
|
+
+queueMicrotask: typeof queueMicrotask,
|
|
69
|
+
+setImmediate: typeof setImmediate,
|
|
70
|
+
+clearImmediate: typeof clearImmediate,
|
|
71
|
+
|
|
72
|
+
// Polyfills
|
|
73
|
+
+console: typeof console,
|
|
74
|
+
|
|
75
|
+
// JavaScript environments specific
|
|
76
|
+
+HermesInternal: ?$HermesInternalType,
|
|
77
|
+
|
|
78
|
+
// Internal-specific
|
|
79
|
+
+__DEV__?: boolean,
|
|
80
|
+
+RN$Bridgeless?: boolean,
|
|
81
|
+
|
|
82
|
+
// setupDOM
|
|
83
|
+
+DOMRect: typeof DOMRect,
|
|
84
|
+
+DOMRectReadOnly: typeof DOMRectReadOnly,
|
|
85
|
+
|
|
86
|
+
// Undeclared properties are implicitly `any`.
|
|
87
|
+
[string | symbol]: any,
|
|
88
|
+
};
|
|
@@ -0,0 +1,14 @@
|
|
|
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
|
+
// $FlowFixMe[unsupported-syntax]
|
|
12
|
+
declare module 'prettier' {
|
|
13
|
+
declare module.exports: $FlowFixMe;
|
|
14
|
+
}
|
|
@@ -0,0 +1,140 @@
|
|
|
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
|
+
// Adapted from https://github.com/flow-typed/flow-typed/blob/main/definitions/environments/streams/flow_v0.261.x-/streams.js
|
|
12
|
+
|
|
13
|
+
type TextEncodeOptions = {options?: boolean, ...};
|
|
14
|
+
|
|
15
|
+
declare class TextEncoder {
|
|
16
|
+
encode(buffer: string, options?: TextEncodeOptions): Uint8Array;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
declare class ReadableStreamController {
|
|
20
|
+
close(): void;
|
|
21
|
+
|
|
22
|
+
constructor(
|
|
23
|
+
stream: ReadableStream,
|
|
24
|
+
underlyingSource: UnderlyingSource,
|
|
25
|
+
size: number,
|
|
26
|
+
highWaterMark: number,
|
|
27
|
+
): void;
|
|
28
|
+
|
|
29
|
+
desiredSize: number;
|
|
30
|
+
// $FlowFixMe[unclear-type]
|
|
31
|
+
enqueue(chunk: any): void;
|
|
32
|
+
error(error: Error): void;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
declare class ReadableStreamReader {
|
|
36
|
+
cancel(reason: string): void;
|
|
37
|
+
|
|
38
|
+
closed: boolean;
|
|
39
|
+
|
|
40
|
+
constructor(stream: ReadableStream): void;
|
|
41
|
+
read(): Promise<{
|
|
42
|
+
done: boolean,
|
|
43
|
+
// $FlowFixMe[unclear-type]
|
|
44
|
+
value: ?any,
|
|
45
|
+
...
|
|
46
|
+
}>;
|
|
47
|
+
releaseLock(): void;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
declare interface UnderlyingSource {
|
|
51
|
+
autoAllocateChunkSize?: number;
|
|
52
|
+
cancel?: (reason: string) => ?Promise<void>;
|
|
53
|
+
|
|
54
|
+
pull?: (controller: ReadableStreamController) => ?Promise<void>;
|
|
55
|
+
start?: (controller: ReadableStreamController) => ?Promise<void>;
|
|
56
|
+
type?: string;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
declare class TransformStream {
|
|
60
|
+
readable: ReadableStream;
|
|
61
|
+
writable: WritableStream;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
interface PipeThroughTransformStream {
|
|
65
|
+
readable: ReadableStream;
|
|
66
|
+
writable: WritableStream;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
type PipeToOptions = {
|
|
70
|
+
preventAbort?: boolean,
|
|
71
|
+
preventCancel?: boolean,
|
|
72
|
+
preventClose?: boolean,
|
|
73
|
+
...
|
|
74
|
+
};
|
|
75
|
+
|
|
76
|
+
type QueuingStrategy = {
|
|
77
|
+
highWaterMark: number,
|
|
78
|
+
// $FlowFixMe[unclear-type]
|
|
79
|
+
size(chunk: ?any): number,
|
|
80
|
+
...
|
|
81
|
+
};
|
|
82
|
+
|
|
83
|
+
declare class ReadableStream {
|
|
84
|
+
cancel(reason: string): void;
|
|
85
|
+
|
|
86
|
+
constructor(
|
|
87
|
+
underlyingSource: ?UnderlyingSource,
|
|
88
|
+
queuingStrategy: ?QueuingStrategy,
|
|
89
|
+
): void;
|
|
90
|
+
|
|
91
|
+
getReader(): ReadableStreamReader;
|
|
92
|
+
locked: boolean;
|
|
93
|
+
// $FlowFixMe[unclear-type]
|
|
94
|
+
pipeThrough(transform: PipeThroughTransformStream, options: ?any): void;
|
|
95
|
+
pipeTo(dest: WritableStream, options: ?PipeToOptions): Promise<void>;
|
|
96
|
+
tee(): [ReadableStream, ReadableStream];
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
declare interface WritableStreamController {
|
|
100
|
+
error(error: Error): void;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
declare interface UnderlyingSink {
|
|
104
|
+
abort?: (reason: string) => ?Promise<void>;
|
|
105
|
+
autoAllocateChunkSize?: number;
|
|
106
|
+
|
|
107
|
+
close?: (controller: WritableStreamController) => ?Promise<void>;
|
|
108
|
+
start?: (controller: WritableStreamController) => ?Promise<void>;
|
|
109
|
+
type?: string;
|
|
110
|
+
// $FlowFixMe[unclear-type]
|
|
111
|
+
write?: (chunk: any, controller: WritableStreamController) => ?Promise<void>;
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
declare interface WritableStreamWriter {
|
|
115
|
+
// $FlowFixMe[unclear-type]
|
|
116
|
+
abort(reason: string): ?Promise<any>;
|
|
117
|
+
// $FlowFixMe[unclear-type]
|
|
118
|
+
close(): Promise<any>;
|
|
119
|
+
// $FlowFixMe[unclear-type]
|
|
120
|
+
closed: Promise<any>;
|
|
121
|
+
|
|
122
|
+
desiredSize?: number;
|
|
123
|
+
// $FlowFixMe[unclear-type]
|
|
124
|
+
ready: Promise<any>;
|
|
125
|
+
releaseLock(): void;
|
|
126
|
+
// $FlowFixMe[unclear-type]
|
|
127
|
+
write(chunk: any): Promise<any>;
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
declare class WritableStream {
|
|
131
|
+
abort(reason: string): void;
|
|
132
|
+
|
|
133
|
+
constructor(
|
|
134
|
+
underlyingSink: ?UnderlyingSink,
|
|
135
|
+
queuingStrategy: QueuingStrategy,
|
|
136
|
+
): void;
|
|
137
|
+
|
|
138
|
+
getWriter(): WritableStreamWriter;
|
|
139
|
+
locked: boolean;
|
|
140
|
+
}
|
package/index.js
CHANGED
|
@@ -86,14 +86,14 @@ module.exports = {
|
|
|
86
86
|
/**
|
|
87
87
|
* @deprecated SafeAreaView has been deprecated and will be removed in a future release.
|
|
88
88
|
* Please use 'react-native-safe-area-context' instead.
|
|
89
|
-
* See https://github.com/
|
|
89
|
+
* See https://github.com/AppAndFlow/react-native-safe-area-context
|
|
90
90
|
*/
|
|
91
91
|
get SafeAreaView() {
|
|
92
92
|
warnOnce(
|
|
93
93
|
'safe-area-view-deprecated',
|
|
94
94
|
'SafeAreaView has been deprecated and will be removed in a future release. ' +
|
|
95
95
|
"Please use 'react-native-safe-area-context' instead. " +
|
|
96
|
-
'See https://github.com/
|
|
96
|
+
'See https://github.com/AppAndFlow/react-native-safe-area-context',
|
|
97
97
|
);
|
|
98
98
|
return require('./Libraries/Components/SafeAreaView/SafeAreaView').default;
|
|
99
99
|
},
|
|
@@ -289,6 +289,9 @@ module.exports = {
|
|
|
289
289
|
get requireNativeComponent() {
|
|
290
290
|
return require('./Libraries/ReactNative/requireNativeComponent').default;
|
|
291
291
|
},
|
|
292
|
+
get ReactNativeVersion() {
|
|
293
|
+
return require('./Libraries/Core/ReactNativeVersion').default;
|
|
294
|
+
},
|
|
292
295
|
get RootTagContext() {
|
|
293
296
|
return require('./Libraries/ReactNative/RootTag').RootTagContext;
|
|
294
297
|
},
|
package/index.win32.js
CHANGED
|
@@ -106,6 +106,7 @@ import typeof useWindowDimensions from './Libraries/Utilities/useWindowDimension
|
|
|
106
106
|
import typeof Vibration from './Libraries/Vibration/Vibration';
|
|
107
107
|
import typeof DevMenu from './src/private/devsupport/devmenu/DevMenu';
|
|
108
108
|
import typeof registerCallableModule from './Libraries/Core/registerCallableModule';
|
|
109
|
+
import typeof ReactNativeVersion from './Libraries/Core/ReactNativeVersion';
|
|
109
110
|
// Windows]]
|
|
110
111
|
|
|
111
112
|
const warnOnce = require('./Libraries/Utilities/warnOnce').default;
|
|
@@ -173,14 +174,14 @@ module.exports = {
|
|
|
173
174
|
/**
|
|
174
175
|
* @deprecated SafeAreaView has been deprecated and will be removed in a future release.
|
|
175
176
|
* Please use 'react-native-safe-area-context' instead.
|
|
176
|
-
* See https://github.com/
|
|
177
|
+
* See https://github.com/AppAndFlow/react-native-safe-area-context
|
|
177
178
|
*/
|
|
178
179
|
get SafeAreaView(): SafeAreaView {
|
|
179
180
|
warnOnce(
|
|
180
181
|
'safe-area-view-deprecated',
|
|
181
182
|
'SafeAreaView has been deprecated and will be removed in a future release. ' +
|
|
182
183
|
"Please use 'react-native-safe-area-context' instead. " +
|
|
183
|
-
'See https://github.com/
|
|
184
|
+
'See https://github.com/AppAndFlow/react-native-safe-area-context',
|
|
184
185
|
);
|
|
185
186
|
return require('./Libraries/Components/SafeAreaView/SafeAreaView').default;
|
|
186
187
|
},
|
|
@@ -377,6 +378,9 @@ module.exports = {
|
|
|
377
378
|
) => HostComponent<T> {
|
|
378
379
|
return require('./Libraries/ReactNative/requireNativeComponent').default;
|
|
379
380
|
},
|
|
381
|
+
get ReactNativeVersion(): ReactNativeVersion {
|
|
382
|
+
return require('./Libraries/Core/ReactNativeVersion').default;
|
|
383
|
+
},
|
|
380
384
|
get RootTagContext(): RootTagContext {
|
|
381
385
|
return require('./Libraries/ReactNative/RootTag').RootTagContext;
|
|
382
386
|
},
|
package/jest/mockComponent.js
CHANGED
|
@@ -50,7 +50,7 @@ export default function mockComponent<
|
|
|
50
50
|
(RealComponent.render == null
|
|
51
51
|
? 'Unknown'
|
|
52
52
|
: // $FlowFixMe[incompatible-use]
|
|
53
|
-
RealComponent.render.displayName ?? RealComponent.render.name);
|
|
53
|
+
(RealComponent.render.displayName ?? RealComponent.render.name));
|
|
54
54
|
|
|
55
55
|
const nameWithoutPrefix = name.replace(/^(RCT|RK)/, '');
|
|
56
56
|
|
package/jest/setup.js
CHANGED
|
@@ -70,6 +70,17 @@ Object.defineProperties(global, {
|
|
|
70
70
|
},
|
|
71
71
|
});
|
|
72
72
|
|
|
73
|
+
/**
|
|
74
|
+
* Prettier v3 uses import (cjs/mjs) file formats that jest-runtime does not
|
|
75
|
+
* support. To work around this we need to bypass the jest module system by
|
|
76
|
+
* using the orginal node `require` function.
|
|
77
|
+
*/
|
|
78
|
+
jest.mock('prettier', () => {
|
|
79
|
+
// $FlowExpectedError[underconstrained-implicit-instantiation]
|
|
80
|
+
const module = jest.requireActual('module');
|
|
81
|
+
return module.prototype.require(require.resolve('prettier'));
|
|
82
|
+
});
|
|
83
|
+
|
|
73
84
|
// $FlowFixMe[incompatible-call] - `./mocks/AppState` is incomplete.
|
|
74
85
|
mock('m#../Libraries/AppState/AppState', 'm#./mocks/AppState');
|
|
75
86
|
mock('m#../Libraries/BatchedBridge/NativeModules', 'm#./mocks/NativeModules');
|
package/overrides.json
CHANGED
|
@@ -7,19 +7,19 @@
|
|
|
7
7
|
"**/__snapshots__/**",
|
|
8
8
|
"src-win/rntypes/**"
|
|
9
9
|
],
|
|
10
|
-
"baseVersion": "0.
|
|
10
|
+
"baseVersion": "0.82.0-nightly-20250806-5936f29d6",
|
|
11
11
|
"overrides": [
|
|
12
12
|
{
|
|
13
13
|
"type": "derived",
|
|
14
14
|
"file": ".flowconfig",
|
|
15
15
|
"baseFile": ".flowconfig",
|
|
16
|
-
"baseHash": "
|
|
16
|
+
"baseHash": "373bd1b0dfbd85e02605d9526e7b08b41a67435f"
|
|
17
17
|
},
|
|
18
18
|
{
|
|
19
19
|
"type": "derived",
|
|
20
20
|
"file": "src-win/index.win32.js",
|
|
21
21
|
"baseFile": "packages/react-native/index.js",
|
|
22
|
-
"baseHash": "
|
|
22
|
+
"baseHash": "e4e8dc864521ce28adf8cfa2fb29059484206a05"
|
|
23
23
|
},
|
|
24
24
|
{
|
|
25
25
|
"type": "platform",
|
|
@@ -41,7 +41,7 @@
|
|
|
41
41
|
"type": "derived",
|
|
42
42
|
"file": "src-win/Libraries/Components/AccessibilityInfo/AccessibilityInfo.win32.js",
|
|
43
43
|
"baseFile": "packages/react-native/Libraries/Components/AccessibilityInfo/AccessibilityInfo.js",
|
|
44
|
-
"baseHash": "
|
|
44
|
+
"baseHash": "692b825d9db6a6da9c3ae9595e4dfb5c202b879d"
|
|
45
45
|
},
|
|
46
46
|
{
|
|
47
47
|
"type": "copy",
|
|
@@ -85,7 +85,7 @@
|
|
|
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": "08a6e1c0dd895af70ea1c8448a3be028d9cd2587",
|
|
89
89
|
"issue": 6240
|
|
90
90
|
},
|
|
91
91
|
{
|
|
@@ -114,7 +114,7 @@
|
|
|
114
114
|
"type": "derived",
|
|
115
115
|
"file": "src-win/Libraries/Components/TextInput/TextInput.win32.js",
|
|
116
116
|
"baseFile": "packages/react-native/Libraries/Components/TextInput/TextInput.js",
|
|
117
|
-
"baseHash": "
|
|
117
|
+
"baseHash": "d6f92b47afedf2e31f4066e50c2900477c4d6c31"
|
|
118
118
|
},
|
|
119
119
|
{
|
|
120
120
|
"type": "patch",
|
|
@@ -153,7 +153,7 @@
|
|
|
153
153
|
"type": "derived",
|
|
154
154
|
"file": "src-win/Libraries/Components/Touchable/TouchableNativeFeedback.win32.js",
|
|
155
155
|
"baseFile": "packages/react-native/Libraries/Components/Touchable/TouchableNativeFeedback.js",
|
|
156
|
-
"baseHash": "
|
|
156
|
+
"baseHash": "2ded2efb727d7544aa8a0b249dd3f2502bb57129"
|
|
157
157
|
},
|
|
158
158
|
{
|
|
159
159
|
"type": "platform",
|
|
@@ -177,7 +177,7 @@
|
|
|
177
177
|
"type": "patch",
|
|
178
178
|
"file": "src-win/Libraries/Components/View/View.win32.js",
|
|
179
179
|
"baseFile": "packages/react-native/Libraries/Components/View/View.js",
|
|
180
|
-
"baseHash": "
|
|
180
|
+
"baseHash": "60eab5df574b43200494005fc3f00d11576d515b"
|
|
181
181
|
},
|
|
182
182
|
{
|
|
183
183
|
"type": "derived",
|
|
@@ -365,7 +365,7 @@
|
|
|
365
365
|
"type": "patch",
|
|
366
366
|
"file": "src-win/Libraries/Pressability/Pressability.win32.js",
|
|
367
367
|
"baseFile": "packages/react-native/Libraries/Pressability/Pressability.js",
|
|
368
|
-
"baseHash": "
|
|
368
|
+
"baseHash": "a4205b3bea276e65da3ce0aeb6753bc8e7c5ead0",
|
|
369
369
|
"issue": 6240
|
|
370
370
|
},
|
|
371
371
|
{
|
|
@@ -491,13 +491,13 @@
|
|
|
491
491
|
"type": "copy",
|
|
492
492
|
"file": "src-win/Libraries/Utilities/useMergeRefs.js",
|
|
493
493
|
"baseFile": "packages/react-native/Libraries/Utilities/useMergeRefs.js",
|
|
494
|
-
"baseHash": "
|
|
494
|
+
"baseHash": "4ab145e150c82f4f82547122896e02f45103d1a1"
|
|
495
495
|
},
|
|
496
496
|
{
|
|
497
497
|
"type": "patch",
|
|
498
498
|
"file": "src-win/src/private/animated/NativeAnimatedHelper.win32.js",
|
|
499
499
|
"baseFile": "packages/react-native/src/private/animated/NativeAnimatedHelper.js",
|
|
500
|
-
"baseHash": "
|
|
500
|
+
"baseHash": "ecb4418a11a56257962be8ca273d3dbfb7d9862c",
|
|
501
501
|
"issue": 11041
|
|
502
502
|
},
|
|
503
503
|
{
|
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.300",
|
|
4
4
|
"description": "Implementation of react native on top of Office's Win32 platform.",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -26,17 +26,17 @@
|
|
|
26
26
|
"dependencies": {
|
|
27
27
|
"@babel/runtime": "^7.0.0",
|
|
28
28
|
"@jest/create-cache-key-function": "^29.7.0",
|
|
29
|
-
"@react-native-community/cli": "
|
|
30
|
-
"@react-native-community/cli-platform-android": "
|
|
31
|
-
"@react-native-community/cli-platform-ios": "
|
|
29
|
+
"@react-native-community/cli": "20.0.0",
|
|
30
|
+
"@react-native-community/cli-platform-android": "20.0.0",
|
|
31
|
+
"@react-native-community/cli-platform-ios": "20.0.0",
|
|
32
32
|
"@react-native/assets": "1.0.0",
|
|
33
|
-
"@react-native/assets-registry": "0.
|
|
34
|
-
"@react-native/codegen": "0.
|
|
35
|
-
"@react-native/community-cli-plugin": "0.
|
|
36
|
-
"@react-native/gradle-plugin": "0.
|
|
37
|
-
"@react-native/js-polyfills": "0.
|
|
38
|
-
"@react-native/normalize-colors": "0.
|
|
39
|
-
"@react-native/virtualized-lists": "0.
|
|
33
|
+
"@react-native/assets-registry": "0.82.0-nightly-20250806-5936f29d6",
|
|
34
|
+
"@react-native/codegen": "0.82.0-nightly-20250806-5936f29d6",
|
|
35
|
+
"@react-native/community-cli-plugin": "0.82.0-nightly-20250806-5936f29d6",
|
|
36
|
+
"@react-native/gradle-plugin": "0.82.0-nightly-20250806-5936f29d6",
|
|
37
|
+
"@react-native/js-polyfills": "0.82.0-nightly-20250806-5936f29d6",
|
|
38
|
+
"@react-native/normalize-colors": "0.82.0-nightly-20250806-5936f29d6",
|
|
39
|
+
"@react-native/virtualized-lists": "0.82.0-nightly-20250806-5936f29d6",
|
|
40
40
|
"abort-controller": "^3.0.0",
|
|
41
41
|
"anser": "^1.4.9",
|
|
42
42
|
"ansi-regex": "^5.0.0",
|
|
@@ -72,30 +72,30 @@
|
|
|
72
72
|
"devDependencies": {
|
|
73
73
|
"@babel/core": "^7.25.2",
|
|
74
74
|
"@babel/eslint-parser": "^7.25.1",
|
|
75
|
-
"@react-native/metro-config": "0.
|
|
75
|
+
"@react-native/metro-config": "0.82.0-nightly-20250806-5936f29d6",
|
|
76
76
|
"@rnw-scripts/babel-react-native-config": "0.0.0",
|
|
77
|
-
"@rnw-scripts/eslint-config": "1.2.
|
|
78
|
-
"@rnw-scripts/jest-out-of-tree-snapshot-resolver": "^1.1.
|
|
79
|
-
"@rnw-scripts/just-task": "2.3.
|
|
77
|
+
"@rnw-scripts/eslint-config": "1.2.38",
|
|
78
|
+
"@rnw-scripts/jest-out-of-tree-snapshot-resolver": "^1.1.42",
|
|
79
|
+
"@rnw-scripts/just-task": "2.3.57",
|
|
80
80
|
"@rnw-scripts/metro-dev-config": "0.0.0",
|
|
81
81
|
"@rnx-kit/jest-preset": "^0.1.17",
|
|
82
82
|
"@types/node": "^22.0.0",
|
|
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.278.0",
|
|
87
87
|
"jscodeshift": "^0.14.0",
|
|
88
88
|
"just-scripts": "^1.3.3",
|
|
89
89
|
"prettier": "2.8.8",
|
|
90
90
|
"react": "19.1.0",
|
|
91
|
-
"react-native": "0.
|
|
92
|
-
"react-native-platform-override": "^1.9.
|
|
91
|
+
"react-native": "0.82.0-nightly-20250806-5936f29d6",
|
|
92
|
+
"react-native-platform-override": "^1.9.60",
|
|
93
93
|
"typescript": "5.0.4"
|
|
94
94
|
},
|
|
95
95
|
"peerDependencies": {
|
|
96
96
|
"@types/react": "^19.1.0",
|
|
97
97
|
"react": "^19.1.0",
|
|
98
|
-
"react-native": "0.
|
|
98
|
+
"react-native": "0.82.0-nightly-20250806-5936f29d6"
|
|
99
99
|
},
|
|
100
100
|
"beachball": {
|
|
101
101
|
"defaultNpmTag": "canary",
|
|
@@ -58,7 +58,6 @@ let globalEventEmitterGetValueListener: ?EventSubscription = null;
|
|
|
58
58
|
let globalEventEmitterAnimationFinishedListener: ?EventSubscription = null;
|
|
59
59
|
|
|
60
60
|
const shouldSignalBatch: boolean =
|
|
61
|
-
ReactNativeFeatureFlags.animatedShouldSignalBatch() ||
|
|
62
61
|
ReactNativeFeatureFlags.cxxNativeAnimatedEnabled();
|
|
63
62
|
|
|
64
63
|
function createNativeOperations(): $NonMaybeType<typeof NativeAnimatedModule> {
|
|
@@ -141,6 +140,8 @@ const NativeOperations = createNativeOperations();
|
|
|
141
140
|
const API = {
|
|
142
141
|
getValue: (isSingleOpBatching
|
|
143
142
|
? (tag, saveValueCallback) => {
|
|
143
|
+
/* $FlowFixMe[constant-condition] Error discovered during Constant
|
|
144
|
+
* Condition roll out. See https://fburl.com/workplace/1v97vimq. */
|
|
144
145
|
if (saveValueCallback) {
|
|
145
146
|
eventListenerGetValueCallbacks[tag] = saveValueCallback;
|
|
146
147
|
}
|
|
@@ -265,6 +266,8 @@ const API = {
|
|
|
265
266
|
|
|
266
267
|
startAnimatingNode: (isSingleOpBatching
|
|
267
268
|
? (animationId, nodeTag, config, endCallback) => {
|
|
269
|
+
/* $FlowFixMe[constant-condition] Error discovered during Constant
|
|
270
|
+
* Condition roll out. See https://fburl.com/workplace/1v97vimq. */
|
|
268
271
|
if (endCallback) {
|
|
269
272
|
eventListenerAnimationFinishedCallbacks[animationId] = endCallback;
|
|
270
273
|
}
|
|
@@ -350,6 +353,8 @@ function ensureGlobalEventEmitterListeners() {
|
|
|
350
353
|
params => {
|
|
351
354
|
const {tag} = params;
|
|
352
355
|
const callback = eventListenerGetValueCallbacks[tag];
|
|
356
|
+
/* $FlowFixMe[constant-condition] Error discovered during Constant
|
|
357
|
+
* Condition roll out. See https://fburl.com/workplace/1v97vimq. */
|
|
353
358
|
if (!callback) {
|
|
354
359
|
return;
|
|
355
360
|
}
|
|
@@ -366,6 +371,8 @@ function ensureGlobalEventEmitterListeners() {
|
|
|
366
371
|
for (const animation of animations) {
|
|
367
372
|
const {animationId} = animation;
|
|
368
373
|
const callback = eventListenerAnimationFinishedCallbacks[animationId];
|
|
374
|
+
/* $FlowFixMe[constant-condition] Error discovered during Constant
|
|
375
|
+
* Condition roll out. See https://fburl.com/workplace/1v97vimq. */
|
|
369
376
|
if (callback) {
|
|
370
377
|
callback(animation);
|
|
371
378
|
delete eventListenerAnimationFinishedCallbacks[animationId];
|
|
@@ -58,7 +58,6 @@ let globalEventEmitterGetValueListener: ?EventSubscription = null;
|
|
|
58
58
|
let globalEventEmitterAnimationFinishedListener: ?EventSubscription = null;
|
|
59
59
|
|
|
60
60
|
const shouldSignalBatch: boolean =
|
|
61
|
-
ReactNativeFeatureFlags.animatedShouldSignalBatch() ||
|
|
62
61
|
ReactNativeFeatureFlags.cxxNativeAnimatedEnabled();
|
|
63
62
|
|
|
64
63
|
function createNativeOperations(): $NonMaybeType<typeof NativeAnimatedModule> {
|
|
@@ -141,6 +140,8 @@ const NativeOperations = createNativeOperations();
|
|
|
141
140
|
const API = {
|
|
142
141
|
getValue: (isSingleOpBatching
|
|
143
142
|
? (tag, saveValueCallback) => {
|
|
143
|
+
/* $FlowFixMe[constant-condition] Error discovered during Constant
|
|
144
|
+
* Condition roll out. See https://fburl.com/workplace/1v97vimq. */
|
|
144
145
|
if (saveValueCallback) {
|
|
145
146
|
eventListenerGetValueCallbacks[tag] = saveValueCallback;
|
|
146
147
|
}
|
|
@@ -268,6 +269,8 @@ const API = {
|
|
|
268
269
|
|
|
269
270
|
startAnimatingNode: (isSingleOpBatching
|
|
270
271
|
? (animationId, nodeTag, config, endCallback) => {
|
|
272
|
+
/* $FlowFixMe[constant-condition] Error discovered during Constant
|
|
273
|
+
* Condition roll out. See https://fburl.com/workplace/1v97vimq. */
|
|
271
274
|
if (endCallback) {
|
|
272
275
|
eventListenerAnimationFinishedCallbacks[animationId] = endCallback;
|
|
273
276
|
}
|
|
@@ -353,6 +356,8 @@ function ensureGlobalEventEmitterListeners() {
|
|
|
353
356
|
params => {
|
|
354
357
|
const {tag} = params;
|
|
355
358
|
const callback = eventListenerGetValueCallbacks[tag];
|
|
359
|
+
/* $FlowFixMe[constant-condition] Error discovered during Constant
|
|
360
|
+
* Condition roll out. See https://fburl.com/workplace/1v97vimq. */
|
|
356
361
|
if (!callback) {
|
|
357
362
|
return;
|
|
358
363
|
}
|
|
@@ -369,6 +374,8 @@ function ensureGlobalEventEmitterListeners() {
|
|
|
369
374
|
for (const animation of animations) {
|
|
370
375
|
const {animationId} = animation;
|
|
371
376
|
const callback = eventListenerAnimationFinishedCallbacks[animationId];
|
|
377
|
+
/* $FlowFixMe[constant-condition] Error discovered during Constant
|
|
378
|
+
* Condition roll out. See https://fburl.com/workplace/1v97vimq. */
|
|
372
379
|
if (callback) {
|
|
373
380
|
callback(animation);
|
|
374
381
|
delete eventListenerAnimationFinishedCallbacks[animationId];
|
|
@@ -67,7 +67,7 @@ export default function createAnimatedPropsHook(
|
|
|
67
67
|
|
|
68
68
|
useEffect(() => {
|
|
69
69
|
// Animated queue flush is handled deterministically in setImmediate for the following feature flags:
|
|
70
|
-
//
|
|
70
|
+
// cxxNativeAnimatedEnabled
|
|
71
71
|
if (!NativeAnimatedHelper.shouldSignalBatch) {
|
|
72
72
|
// If multiple components call `flushQueue`, the first one will flush the
|
|
73
73
|
// queue and subsequent ones will do nothing.
|
|
@@ -89,13 +89,6 @@ export default function createAnimatedPropsHook(
|
|
|
89
89
|
};
|
|
90
90
|
});
|
|
91
91
|
|
|
92
|
-
// NOTE: This feature flag must be evaluated inside the hook because this
|
|
93
|
-
// module factory can be evaluated much sooner, before overrides are set.
|
|
94
|
-
const useAnimatedPropsLifecycle =
|
|
95
|
-
ReactNativeFeatureFlags.scheduleAnimatedCleanupInMicrotask()
|
|
96
|
-
? useAnimatedPropsLifecycleWithCleanupInMicrotask
|
|
97
|
-
: useAnimatedPropsLifecycleWithPrevNodeRef;
|
|
98
|
-
|
|
99
92
|
useAnimatedPropsLifecycle(node);
|
|
100
93
|
|
|
101
94
|
// TODO: This "effect" does three things:
|
|
@@ -262,44 +255,6 @@ function addAnimatedValuesListenersToProps(
|
|
|
262
255
|
}
|
|
263
256
|
}
|
|
264
257
|
|
|
265
|
-
/**
|
|
266
|
-
* Manages the lifecycle of the supplied `AnimatedProps` by invoking `__attach`
|
|
267
|
-
* and `__detach`. However, this is more complicated because `AnimatedProps`
|
|
268
|
-
* uses reference counting to determine when to recursively detach its children
|
|
269
|
-
* nodes. So in order to optimize this, we avoid detaching until the next attach
|
|
270
|
-
* unless we are unmounting.
|
|
271
|
-
*/
|
|
272
|
-
function useAnimatedPropsLifecycleWithPrevNodeRef(node: AnimatedProps): void {
|
|
273
|
-
const prevNodeRef = useRef<?AnimatedProps>(null);
|
|
274
|
-
const isUnmountingRef = useRef<boolean>(false);
|
|
275
|
-
|
|
276
|
-
useInsertionEffect(() => {
|
|
277
|
-
isUnmountingRef.current = false;
|
|
278
|
-
return () => {
|
|
279
|
-
isUnmountingRef.current = true;
|
|
280
|
-
};
|
|
281
|
-
}, []);
|
|
282
|
-
|
|
283
|
-
useInsertionEffect(() => {
|
|
284
|
-
node.__attach();
|
|
285
|
-
if (prevNodeRef.current != null) {
|
|
286
|
-
const prevNode = prevNodeRef.current;
|
|
287
|
-
// TODO: Stop restoring default values (unless `reset` is called).
|
|
288
|
-
prevNode.__restoreDefaultValues();
|
|
289
|
-
prevNode.__detach();
|
|
290
|
-
prevNodeRef.current = null;
|
|
291
|
-
}
|
|
292
|
-
return () => {
|
|
293
|
-
if (isUnmountingRef.current) {
|
|
294
|
-
// NOTE: Do not restore default values on unmount, see D18197735.
|
|
295
|
-
node.__detach();
|
|
296
|
-
} else {
|
|
297
|
-
prevNodeRef.current = node;
|
|
298
|
-
}
|
|
299
|
-
};
|
|
300
|
-
}, [node]);
|
|
301
|
-
}
|
|
302
|
-
|
|
303
258
|
/**
|
|
304
259
|
* Manages the lifecycle of the supplied `AnimatedProps` by invoking `__attach`
|
|
305
260
|
* and `__detach`. However, `__detach` occurs in a microtask for these reasons:
|
|
@@ -314,9 +269,7 @@ function useAnimatedPropsLifecycleWithPrevNodeRef(node: AnimatedProps): void {
|
|
|
314
269
|
* callbacks may update state, which is unsupported and will force synchronous
|
|
315
270
|
* updates.
|
|
316
271
|
*/
|
|
317
|
-
function
|
|
318
|
-
node: AnimatedProps,
|
|
319
|
-
): void {
|
|
272
|
+
function useAnimatedPropsLifecycle(node: AnimatedProps): void {
|
|
320
273
|
const isMounted = useRef<boolean>(false);
|
|
321
274
|
|
|
322
275
|
useInsertionEffect(() => {
|