@office-iss/react-native-win32 0.75.2 → 0.76.0-preview.2
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/.eslintrc.js +11 -0
- package/.flowconfig +5 -4
- package/CHANGELOG.json +191 -47
- package/CHANGELOG.md +63 -28
- package/Libraries/Alert/Alert.js +3 -0
- package/Libraries/Animated/AnimatedEvent.js +1 -1
- package/Libraries/Animated/AnimatedImplementation.js +7 -7
- package/Libraries/Animated/NativeAnimatedAllowlist.js +111 -0
- package/Libraries/Animated/animations/Animation.js +11 -1
- package/Libraries/Animated/animations/DecayAnimation.js +1 -1
- package/Libraries/Animated/animations/SpringAnimation.js +1 -1
- package/Libraries/Animated/animations/TimingAnimation.js +2 -1
- package/Libraries/Animated/components/AnimatedScrollView.js +3 -2
- package/Libraries/Animated/createAnimatedComponent.js +10 -9
- package/Libraries/Animated/nodes/AnimatedColor.js +1 -1
- package/Libraries/Animated/nodes/AnimatedInterpolation.js +3 -2
- package/Libraries/Animated/nodes/AnimatedNode.js +42 -33
- package/Libraries/Animated/nodes/AnimatedObject.js +56 -50
- package/Libraries/Animated/nodes/AnimatedProps.js +77 -40
- package/Libraries/Animated/nodes/AnimatedStyle.js +103 -59
- package/Libraries/Animated/nodes/AnimatedTracking.js +1 -1
- package/Libraries/Animated/nodes/AnimatedTransform.js +102 -67
- package/Libraries/Animated/nodes/AnimatedValue.js +2 -1
- package/Libraries/Animated/nodes/AnimatedWithChildren.js +21 -22
- package/Libraries/Animated/useAnimatedProps.js +142 -7
- package/Libraries/BatchedBridge/NativeModules.js +2 -0
- package/Libraries/Blob/FileReader.js +1 -1
- package/Libraries/Blob/URL.js +2 -62
- package/Libraries/Blob/URLSearchParams.js +71 -0
- package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.android.js +1 -1
- package/Libraries/Components/Keyboard/KeyboardAvoidingView.js +17 -0
- package/Libraries/Components/RefreshControl/__mocks__/RefreshControlMock.js +1 -1
- package/Libraries/Components/ScrollView/ScrollView.js +131 -169
- package/Libraries/Components/ScrollView/ScrollViewNativeComponent.js +3 -0
- package/Libraries/Components/ScrollView/ScrollViewStickyHeader.js +1 -1
- package/Libraries/Components/StatusBar/StatusBar.js +3 -1
- package/Libraries/Components/TextInput/RCTTextInputViewConfig.js +10 -0
- package/Libraries/Components/TextInput/TextInput.d.ts +32 -2
- package/Libraries/Components/TextInput/TextInput.js +230 -94
- package/Libraries/Components/TextInput/TextInput.win32.js +230 -100
- package/Libraries/Components/View/ReactNativeStyleAttributes.js +23 -1
- package/Libraries/Components/View/ReactNativeViewAttributes.js +2 -0
- package/Libraries/Components/View/ReactNativeViewAttributes.win32.js +2 -0
- package/Libraries/Components/View/ViewAccessibility.d.ts +15 -0
- package/Libraries/Components/View/ViewNativeComponent.js +0 -1
- package/Libraries/Components/View/ViewPropTypes.js +14 -0
- package/Libraries/Components/View/ViewPropTypes.win32.js +14 -0
- package/Libraries/Core/ExceptionsManager.js +2 -0
- package/Libraries/Core/InitializeCore.js +3 -1
- package/Libraries/Core/ReactFiberErrorDialog.js +3 -0
- package/Libraries/Core/ReactNativeVersion.js +4 -4
- package/Libraries/Core/ReactNativeVersionCheck.win32.js +1 -1
- package/Libraries/Core/setUpDeveloperTools.js +5 -1
- package/Libraries/Core/setUpErrorHandling.js +7 -1
- package/Libraries/Core/setUpGlobals.js +1 -0
- package/Libraries/Core/setUpReactRefresh.js +0 -4
- package/Libraries/Image/AssetSourceResolver.js +28 -1
- package/Libraries/Image/Image.android.js +9 -14
- package/Libraries/Image/Image.ios.js +11 -22
- package/Libraries/Image/Image.win32.js +11 -24
- package/Libraries/Image/ImageBackground.js +1 -8
- package/Libraries/Image/ImageUtils.js +9 -9
- package/Libraries/Image/ImageViewNativeComponent.js +1 -0
- package/Libraries/Inspector/Inspector.js +3 -2
- package/Libraries/Inspector/Inspector.win32.js +3 -2
- package/Libraries/Inspector/InspectorPanel.js +16 -10
- package/Libraries/Inspector/NetworkOverlay.js +1 -1
- package/Libraries/Interaction/TaskQueue.js +1 -0
- package/Libraries/Lists/FlatList.js +1 -1
- package/Libraries/Lists/SectionList.js +2 -2
- package/Libraries/Lists/SectionListModern.js +3 -3
- package/Libraries/LogBox/Data/LogBoxData.js +24 -3
- package/Libraries/LogBox/LogBoxNotificationContainer.js +3 -2
- package/Libraries/LogBox/UI/LogBoxInspectorHeader.js +9 -8
- package/Libraries/LogBox/UI/LogBoxInspectorHeader.win32.js +9 -29
- package/Libraries/Modal/Modal.js +0 -1
- package/Libraries/NativeComponent/BaseViewConfig.android.js +9 -1
- package/Libraries/NativeComponent/BaseViewConfig.ios.js +17 -1
- package/Libraries/NativeComponent/BaseViewConfig.win32.js +17 -1
- package/Libraries/NativeComponent/NativeComponentRegistry.js +22 -22
- package/Libraries/NativeComponent/StaticViewConfigValidator.js +0 -21
- package/Libraries/Network/XMLHttpRequest.js +4 -2
- package/Libraries/ReactNative/AppContainer-dev.js +1 -5
- package/Libraries/ReactNative/AppContainer-prod.js +1 -5
- package/Libraries/ReactNative/AppContainer.js +0 -1
- package/Libraries/ReactNative/AppRegistry.js +0 -6
- package/Libraries/ReactNative/BridgelessUIManager.js +1 -0
- package/Libraries/ReactNative/ReactFabricPublicInstance/ReactFabricHostComponent.js +1 -1
- package/Libraries/ReactNative/ReactFabricPublicInstance/ReactFabricPublicInstance.js +5 -5
- package/Libraries/ReactNative/RendererImplementation.js +26 -4
- package/Libraries/ReactNative/getNativeComponentAttributes.js +12 -0
- package/Libraries/ReactNative/renderApplication.js +0 -2
- package/Libraries/Renderer/shims/ReactNativeTypes.js +11 -4
- package/Libraries/StyleSheet/StyleSheet.js +1 -1
- package/Libraries/StyleSheet/StyleSheet.win32.js +1 -1
- package/Libraries/StyleSheet/StyleSheetTypes.d.ts +152 -2
- package/Libraries/StyleSheet/StyleSheetTypes.js +60 -5
- package/Libraries/StyleSheet/processBackgroundImage.js +384 -0
- package/Libraries/StyleSheet/processBoxShadow.js +209 -0
- package/Libraries/StyleSheet/processFilter.js +231 -42
- package/Libraries/Text/Text.js +394 -196
- package/Libraries/Text/Text.win32.js +442 -229
- package/Libraries/Text/TextNativeComponent.js +2 -1
- package/Libraries/Text/TextNativeComponent.win32.js +1 -1
- package/Libraries/TurboModule/TurboModuleRegistry.js +13 -50
- package/Libraries/Types/CodegenTypes.js +3 -1
- package/Libraries/Utilities/Appearance.js +108 -84
- package/Libraries/Utilities/DevLoadingView.js +2 -4
- package/Libraries/Utilities/HMRClient.js +8 -6
- package/Libraries/Utilities/ReactNativeTestTools.js +1 -1
- package/Libraries/Utilities/createPerformanceLogger.js +0 -9
- package/Libraries/Utilities/stringifyViewConfig.js +22 -0
- package/Libraries/Utilities/useColorScheme.js +3 -3
- package/Libraries/WebSocket/WebSocket.js +1 -1
- package/Libraries/promiseRejectionTrackingOptions.js +1 -1
- package/Libraries/vendor/emitter/EventEmitter.js +6 -5
- package/flow/jest.js +2 -2
- package/index.js +3 -1
- package/index.win32.js +3 -1
- package/jest/mockComponent.js +4 -1
- package/jest/mockModal.js +1 -3
- package/jest/mockScrollView.js +1 -1
- package/jest/renderer.js +2 -2
- package/jest/setup.js +16 -13
- package/jest.config.js +1 -2
- package/overrides.json +22 -22
- package/package.json +32 -30
- package/src/private/animated/NativeAnimatedHelper.js +438 -0
- package/src/private/animated/NativeAnimatedHelper.win32.js +440 -0
- package/src/private/animated/NativeAnimatedValidation.js +64 -0
- package/src/private/components/HScrollViewNativeComponents.js +56 -0
- package/src/private/components/SafeAreaView_INTERNAL_DO_NOT_USE.js +29 -0
- package/src/private/components/VScrollViewNativeComponents.js +48 -0
- package/src/private/components/useSyncOnScroll.js +48 -0
- package/src/private/featureflags/ReactNativeFeatureFlags.js +166 -16
- package/src/private/featureflags/specs/NativeReactNativeFeatureFlags.js +29 -5
- package/src/private/fusebox/FuseboxSessionObserver.js +42 -0
- package/{Libraries/Core → src/private/renderer/errorhandling}/ErrorHandlers.js +14 -4
- package/src/private/setup/setUpDOM.js +28 -0
- package/src/private/setup/setUpIntersectionObserver.js +27 -0
- package/src/private/setup/setUpMutationObserver.js +26 -0
- package/src/private/setup/setUpPerformanceObserver.js +64 -0
- package/src/private/specs/modules/NativeAppearance.js +3 -3
- package/src/private/specs/modules/NativeLinkingManager.js +1 -1
- package/src/private/specs/modules/NativePlatformConstantsWin.js +7 -0
- package/src/private/specs/modules/NativeSampleTurboModule.js +14 -1
- package/src/private/webapis/dom/nodes/ReadOnlyNode.js +6 -4
- package/{Libraries/IntersectionObserver → src/private/webapis/intersectionobserver}/IntersectionObserver.js +5 -3
- package/{Libraries/IntersectionObserver → src/private/webapis/intersectionobserver}/IntersectionObserverEntry.js +3 -3
- package/{Libraries/IntersectionObserver → src/private/webapis/intersectionobserver}/IntersectionObserverManager.js +14 -17
- package/src/private/{specs/modules → webapis/intersectionobserver/specs}/NativeIntersectionObserver.js +2 -2
- package/{Libraries/IntersectionObserver → src/private/webapis/intersectionobserver/specs}/__mocks__/NativeIntersectionObserver.js +4 -4
- package/{Libraries/MutationObserver → src/private/webapis/mutationobserver}/MutationObserver.js +5 -3
- package/{Libraries/MutationObserver → src/private/webapis/mutationobserver}/MutationObserverManager.js +24 -15
- package/{Libraries/MutationObserver → src/private/webapis/mutationobserver}/MutationRecord.js +4 -6
- package/src/private/{specs/modules → webapis/mutationobserver/specs}/NativeMutationObserver.js +2 -2
- package/{Libraries/MutationObserver → src/private/webapis/mutationobserver/specs}/__mocks__/NativeMutationObserver.js +5 -5
- package/src/private/webapis/performance/{EventCounts.js → EventTiming.js} +65 -3
- package/src/private/webapis/performance/LongTasks.js +39 -0
- package/src/private/webapis/performance/Performance.js +22 -9
- package/src/private/webapis/performance/PerformanceEntry.js +36 -18
- package/src/private/webapis/performance/PerformanceObserver.js +29 -43
- package/src/private/webapis/performance/RawPerformanceEntry.js +24 -1
- package/src/private/webapis/performance/UserTiming.js +17 -12
- package/src/private/webapis/performance/specs/NativePerformanceObserver.js +1 -1
- package/src-win/Libraries/Components/View/ViewAccessibility.d.ts +15 -0
- package/types/experimental.d.ts +12 -98
- package/Libraries/Animated/NativeAnimatedHelper.js +0 -615
- package/Libraries/Animated/NativeAnimatedHelper.win32.js +0 -617
- package/Libraries/Core/setUpIntersectionObserver.js +0 -16
- package/Libraries/Core/setUpMutationObserver.js +0 -16
- package/Libraries/Core/setUpPerformanceObserver.js +0 -18
- package/Libraries/IntersectionObserver/NativeIntersectionObserver.js +0 -13
- package/Libraries/MutationObserver/NativeMutationObserver.js +0 -13
- package/Libraries/Utilities/verifyComponentAttributeEquivalence.js +0 -135
- package/src/private/core/setUpDOM.js +0 -18
- package/src/private/webapis/performance/PerformanceEventTiming.js +0 -55
- /package/src/private/{core → styles}/composeStyles.js +0 -0
|
@@ -8,14 +8,16 @@
|
|
|
8
8
|
* @flow strict
|
|
9
9
|
*/
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
|
|
11
|
+
// flowlint unsafe-getters-setters:off
|
|
12
|
+
|
|
13
|
+
export type DOMHighResTimeStamp = number;
|
|
14
|
+
export type PerformanceEntryType = 'mark' | 'measure' | 'event' | 'longtask';
|
|
13
15
|
|
|
14
16
|
export type PerformanceEntryJSON = {
|
|
15
17
|
name: string,
|
|
16
18
|
entryType: PerformanceEntryType,
|
|
17
|
-
startTime:
|
|
18
|
-
duration:
|
|
19
|
+
startTime: DOMHighResTimeStamp,
|
|
20
|
+
duration: DOMHighResTimeStamp,
|
|
19
21
|
...
|
|
20
22
|
};
|
|
21
23
|
|
|
@@ -25,29 +27,45 @@ export const ALWAYS_LOGGED_ENTRY_TYPES: $ReadOnlyArray<PerformanceEntryType> = [
|
|
|
25
27
|
];
|
|
26
28
|
|
|
27
29
|
export class PerformanceEntry {
|
|
28
|
-
name: string;
|
|
29
|
-
entryType: PerformanceEntryType;
|
|
30
|
-
startTime:
|
|
31
|
-
duration:
|
|
30
|
+
#name: string;
|
|
31
|
+
#entryType: PerformanceEntryType;
|
|
32
|
+
#startTime: DOMHighResTimeStamp;
|
|
33
|
+
#duration: DOMHighResTimeStamp;
|
|
32
34
|
|
|
33
35
|
constructor(init: {
|
|
34
36
|
name: string,
|
|
35
37
|
entryType: PerformanceEntryType,
|
|
36
|
-
startTime:
|
|
37
|
-
duration:
|
|
38
|
+
startTime: DOMHighResTimeStamp,
|
|
39
|
+
duration: DOMHighResTimeStamp,
|
|
38
40
|
}) {
|
|
39
|
-
this
|
|
40
|
-
this
|
|
41
|
-
this
|
|
42
|
-
this
|
|
41
|
+
this.#name = init.name;
|
|
42
|
+
this.#entryType = init.entryType;
|
|
43
|
+
this.#startTime = init.startTime;
|
|
44
|
+
this.#duration = init.duration;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
get name(): string {
|
|
48
|
+
return this.#name;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
get entryType(): PerformanceEntryType {
|
|
52
|
+
return this.#entryType;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
get startTime(): DOMHighResTimeStamp {
|
|
56
|
+
return this.#startTime;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
get duration(): DOMHighResTimeStamp {
|
|
60
|
+
return this.#duration;
|
|
43
61
|
}
|
|
44
62
|
|
|
45
63
|
toJSON(): PerformanceEntryJSON {
|
|
46
64
|
return {
|
|
47
|
-
name: this
|
|
48
|
-
entryType: this
|
|
49
|
-
startTime: this
|
|
50
|
-
duration: this
|
|
65
|
+
name: this.#name,
|
|
66
|
+
entryType: this.#entryType,
|
|
67
|
+
startTime: this.#startTime,
|
|
68
|
+
duration: this.#duration,
|
|
51
69
|
};
|
|
52
70
|
}
|
|
53
71
|
}
|
|
@@ -8,11 +8,14 @@
|
|
|
8
8
|
* @flow strict
|
|
9
9
|
*/
|
|
10
10
|
|
|
11
|
-
import type {
|
|
11
|
+
import type {
|
|
12
|
+
DOMHighResTimeStamp,
|
|
13
|
+
PerformanceEntryType,
|
|
14
|
+
} from './PerformanceEntry';
|
|
12
15
|
|
|
13
16
|
import warnOnce from '../../../../Libraries/Utilities/warnOnce';
|
|
17
|
+
import {PerformanceEventTiming} from './EventTiming';
|
|
14
18
|
import {PerformanceEntry} from './PerformanceEntry';
|
|
15
|
-
import PerformanceEventTiming from './PerformanceEventTiming';
|
|
16
19
|
import {
|
|
17
20
|
performanceEntryTypeToRaw,
|
|
18
21
|
rawToPerformanceEntry,
|
|
@@ -66,13 +69,13 @@ export type PerformanceObserverInit =
|
|
|
66
69
|
}
|
|
67
70
|
| {
|
|
68
71
|
type: PerformanceEntryType,
|
|
69
|
-
durationThreshold?:
|
|
72
|
+
durationThreshold?: DOMHighResTimeStamp,
|
|
70
73
|
};
|
|
71
74
|
|
|
72
75
|
type PerformanceObserverConfig = {|
|
|
73
76
|
callback: PerformanceObserverCallback,
|
|
74
|
-
|
|
75
|
-
|
|
77
|
+
entryTypes: $ReadOnlySet<PerformanceEntryType>,
|
|
78
|
+
durationThreshold: ?number,
|
|
76
79
|
|};
|
|
77
80
|
|
|
78
81
|
const observerCountPerEntryType: Map<PerformanceEntryType, number> = new Map();
|
|
@@ -97,8 +100,15 @@ const onPerformanceEntry = () => {
|
|
|
97
100
|
if (!observerConfig.entryTypes.has(entry.entryType)) {
|
|
98
101
|
return false;
|
|
99
102
|
}
|
|
100
|
-
|
|
101
|
-
|
|
103
|
+
|
|
104
|
+
if (
|
|
105
|
+
entry.entryType === 'event' &&
|
|
106
|
+
observerConfig.durationThreshold != null
|
|
107
|
+
) {
|
|
108
|
+
return entry.duration >= observerConfig.durationThreshold;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
return true;
|
|
102
112
|
});
|
|
103
113
|
if (entriesForObserver.length !== 0) {
|
|
104
114
|
try {
|
|
@@ -122,21 +132,11 @@ export function warnNoNativePerformanceObserver() {
|
|
|
122
132
|
}
|
|
123
133
|
|
|
124
134
|
function applyDurationThresholds() {
|
|
125
|
-
const durationThresholds
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
(accumulator, currentValue) => union(accumulator, currentValue),
|
|
131
|
-
new Map(),
|
|
132
|
-
);
|
|
133
|
-
|
|
134
|
-
for (const [entryType, durationThreshold] of durationThresholds) {
|
|
135
|
-
NativePerformanceObserver?.setDurationThreshold(
|
|
136
|
-
performanceEntryTypeToRaw(entryType),
|
|
137
|
-
durationThreshold ?? 0,
|
|
138
|
-
);
|
|
139
|
-
}
|
|
135
|
+
const durationThresholds = Array.from(registeredObservers.values())
|
|
136
|
+
.map(observerConfig => observerConfig.durationThreshold)
|
|
137
|
+
.filter(Boolean);
|
|
138
|
+
|
|
139
|
+
return Math.min(...durationThresholds);
|
|
140
140
|
}
|
|
141
141
|
|
|
142
142
|
function getSupportedPerformanceEntryTypes(): $ReadOnlyArray<PerformanceEntryType> {
|
|
@@ -174,7 +174,7 @@ function getSupportedPerformanceEntryTypes(): $ReadOnlyArray<PerformanceEntryTyp
|
|
|
174
174
|
* });
|
|
175
175
|
* observer.observe({ type: "event" });
|
|
176
176
|
*/
|
|
177
|
-
export
|
|
177
|
+
export class PerformanceObserver {
|
|
178
178
|
#callback: PerformanceObserverCallback;
|
|
179
179
|
#type: 'single' | 'multiple' | void;
|
|
180
180
|
|
|
@@ -194,14 +194,10 @@ export default class PerformanceObserver {
|
|
|
194
194
|
|
|
195
195
|
if (options.entryTypes) {
|
|
196
196
|
this.#type = 'multiple';
|
|
197
|
-
requestedEntryTypes = new
|
|
198
|
-
options.entryTypes.map(t => [t, undefined]),
|
|
199
|
-
);
|
|
197
|
+
requestedEntryTypes = new Set(options.entryTypes);
|
|
200
198
|
} else {
|
|
201
199
|
this.#type = 'single';
|
|
202
|
-
requestedEntryTypes = new
|
|
203
|
-
[options.type, options.durationThreshold],
|
|
204
|
-
]);
|
|
200
|
+
requestedEntryTypes = new Set([options.type]);
|
|
205
201
|
}
|
|
206
202
|
|
|
207
203
|
// The same observer may receive multiple calls to "observe", so we need
|
|
@@ -218,6 +214,8 @@ export default class PerformanceObserver {
|
|
|
218
214
|
|
|
219
215
|
registeredObservers.set(this, {
|
|
220
216
|
callback: this.#callback,
|
|
217
|
+
durationThreshold:
|
|
218
|
+
options.type === 'event' ? options.durationThreshold : undefined,
|
|
221
219
|
entryTypes: nextEntryTypes,
|
|
222
220
|
});
|
|
223
221
|
|
|
@@ -322,20 +320,8 @@ export default class PerformanceObserver {
|
|
|
322
320
|
getSupportedPerformanceEntryTypes();
|
|
323
321
|
}
|
|
324
322
|
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
a: $ReadOnlyMap<T, ?number>,
|
|
328
|
-
b: $ReadOnlyMap<T, ?number>,
|
|
329
|
-
): Map<T, ?number> {
|
|
330
|
-
const res = new Map<T, ?number>();
|
|
331
|
-
for (const [k, v] of a) {
|
|
332
|
-
if (!b.has(k)) {
|
|
333
|
-
res.set(k, v);
|
|
334
|
-
} else {
|
|
335
|
-
res.set(k, Math.min(v ?? 0, b.get(k) ?? 0));
|
|
336
|
-
}
|
|
337
|
-
}
|
|
338
|
-
return res;
|
|
323
|
+
function union<T>(a: $ReadOnlySet<T>, b: $ReadOnlySet<T>): Set<T> {
|
|
324
|
+
return new Set([...a, ...b]);
|
|
339
325
|
}
|
|
340
326
|
|
|
341
327
|
function difference<T>(a: $ReadOnlySet<T>, b: $ReadOnlySet<T>): Set<T> {
|
|
@@ -14,13 +14,16 @@ import type {
|
|
|
14
14
|
RawPerformanceEntryType,
|
|
15
15
|
} from './specs/NativePerformanceObserver';
|
|
16
16
|
|
|
17
|
+
import {PerformanceEventTiming} from './EventTiming';
|
|
18
|
+
import {PerformanceLongTaskTiming} from './LongTasks';
|
|
17
19
|
import {PerformanceEntry} from './PerformanceEntry';
|
|
18
|
-
import
|
|
20
|
+
import {PerformanceMark, PerformanceMeasure} from './UserTiming';
|
|
19
21
|
|
|
20
22
|
export const RawPerformanceEntryTypeValues = {
|
|
21
23
|
MARK: 1,
|
|
22
24
|
MEASURE: 2,
|
|
23
25
|
EVENT: 3,
|
|
26
|
+
LONGTASK: 4,
|
|
24
27
|
};
|
|
25
28
|
|
|
26
29
|
export function rawToPerformanceEntry(
|
|
@@ -35,6 +38,22 @@ export function rawToPerformanceEntry(
|
|
|
35
38
|
processingEnd: entry.processingEnd,
|
|
36
39
|
interactionId: entry.interactionId,
|
|
37
40
|
});
|
|
41
|
+
} else if (entry.entryType === RawPerformanceEntryTypeValues.LONGTASK) {
|
|
42
|
+
return new PerformanceLongTaskTiming({
|
|
43
|
+
name: entry.name,
|
|
44
|
+
entryType: rawToPerformanceEntryType(entry.entryType),
|
|
45
|
+
startTime: entry.startTime,
|
|
46
|
+
duration: entry.duration,
|
|
47
|
+
});
|
|
48
|
+
} else if (entry.entryType === RawPerformanceEntryTypeValues.MARK) {
|
|
49
|
+
return new PerformanceMark(entry.name, {
|
|
50
|
+
startTime: entry.startTime,
|
|
51
|
+
});
|
|
52
|
+
} else if (entry.entryType === RawPerformanceEntryTypeValues.MEASURE) {
|
|
53
|
+
return new PerformanceMeasure(entry.name, {
|
|
54
|
+
startTime: entry.startTime,
|
|
55
|
+
duration: entry.duration,
|
|
56
|
+
});
|
|
38
57
|
} else {
|
|
39
58
|
return new PerformanceEntry({
|
|
40
59
|
name: entry.name,
|
|
@@ -55,6 +74,8 @@ export function rawToPerformanceEntryType(
|
|
|
55
74
|
return 'measure';
|
|
56
75
|
case RawPerformanceEntryTypeValues.EVENT:
|
|
57
76
|
return 'event';
|
|
77
|
+
case RawPerformanceEntryTypeValues.LONGTASK:
|
|
78
|
+
return 'longtask';
|
|
58
79
|
default:
|
|
59
80
|
throw new TypeError(
|
|
60
81
|
`rawToPerformanceEntryType: unexpected performance entry type received: ${type}`,
|
|
@@ -72,6 +93,8 @@ export function performanceEntryTypeToRaw(
|
|
|
72
93
|
return RawPerformanceEntryTypeValues.MEASURE;
|
|
73
94
|
case 'event':
|
|
74
95
|
return RawPerformanceEntryTypeValues.EVENT;
|
|
96
|
+
case 'longtask':
|
|
97
|
+
return RawPerformanceEntryTypeValues.LONGTASK;
|
|
75
98
|
default:
|
|
76
99
|
// Verify exhaustive check with Flow
|
|
77
100
|
(type: empty);
|
|
@@ -8,24 +8,25 @@
|
|
|
8
8
|
* @flow strict
|
|
9
9
|
*/
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
// flowlint unsafe-getters-setters:off
|
|
12
|
+
|
|
13
|
+
import type {DOMHighResTimeStamp} from './PerformanceEntry';
|
|
12
14
|
|
|
13
15
|
import {PerformanceEntry} from './PerformanceEntry';
|
|
14
16
|
|
|
15
|
-
type DetailType = mixed;
|
|
17
|
+
export type DetailType = mixed;
|
|
16
18
|
|
|
17
19
|
export type PerformanceMarkOptions = {
|
|
18
20
|
detail?: DetailType,
|
|
19
|
-
startTime?:
|
|
21
|
+
startTime?: DOMHighResTimeStamp,
|
|
20
22
|
};
|
|
21
23
|
|
|
22
|
-
export type TimeStampOrName =
|
|
24
|
+
export type TimeStampOrName = DOMHighResTimeStamp | string;
|
|
23
25
|
|
|
24
|
-
export type
|
|
26
|
+
export type PerformanceMeasureInit = {
|
|
25
27
|
detail?: DetailType,
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
duration?: HighResTimeStamp,
|
|
28
|
+
startTime?: DOMHighResTimeStamp,
|
|
29
|
+
duration?: DOMHighResTimeStamp,
|
|
29
30
|
};
|
|
30
31
|
|
|
31
32
|
export class PerformanceMark extends PerformanceEntry {
|
|
@@ -46,18 +47,22 @@ export class PerformanceMark extends PerformanceEntry {
|
|
|
46
47
|
}
|
|
47
48
|
|
|
48
49
|
export class PerformanceMeasure extends PerformanceEntry {
|
|
49
|
-
detail: DetailType;
|
|
50
|
+
#detail: DetailType;
|
|
50
51
|
|
|
51
|
-
constructor(measureName: string, measureOptions?:
|
|
52
|
+
constructor(measureName: string, measureOptions?: PerformanceMeasureInit) {
|
|
52
53
|
super({
|
|
53
54
|
name: measureName,
|
|
54
55
|
entryType: 'measure',
|
|
55
|
-
startTime: 0,
|
|
56
|
+
startTime: measureOptions?.startTime ?? 0,
|
|
56
57
|
duration: measureOptions?.duration ?? 0,
|
|
57
58
|
});
|
|
58
59
|
|
|
59
60
|
if (measureOptions) {
|
|
60
|
-
this
|
|
61
|
+
this.#detail = measureOptions.detail;
|
|
61
62
|
}
|
|
62
63
|
}
|
|
64
|
+
|
|
65
|
+
get detail(): DetailType {
|
|
66
|
+
return this.#detail;
|
|
67
|
+
}
|
|
63
68
|
}
|
|
@@ -366,6 +366,21 @@ export interface AccessibilityPropsIOS {
|
|
|
366
366
|
* @platform ios
|
|
367
367
|
*/
|
|
368
368
|
accessibilityLanguage?: string | undefined;
|
|
369
|
+
|
|
370
|
+
/**
|
|
371
|
+
* A Boolean value that indicates whether or not to show the item in the large content viewer.
|
|
372
|
+
* Available on iOS 13.0+
|
|
373
|
+
* https://reactnative.dev/docs/accessibility#accessibilityshowslargecontentviewer
|
|
374
|
+
* @platform ios
|
|
375
|
+
*/
|
|
376
|
+
accessibilityShowsLargeContentViewer?: boolean | undefined;
|
|
377
|
+
|
|
378
|
+
/**
|
|
379
|
+
* When `accessibilityShowsLargeContentViewer` is set, this string will be used as title for the large content viewer.
|
|
380
|
+
* https://reactnative.dev/docs/accessibility#accessibilitylargecontenttitle
|
|
381
|
+
* @platform ios
|
|
382
|
+
*/
|
|
383
|
+
accessibilityLargeContentTitle?: string | undefined;
|
|
369
384
|
}
|
|
370
385
|
|
|
371
386
|
// [Win32]
|
package/types/experimental.d.ts
CHANGED
|
@@ -32,108 +32,14 @@
|
|
|
32
32
|
* Either the import or the reference only needs to appear once, anywhere in the project.
|
|
33
33
|
*/
|
|
34
34
|
|
|
35
|
-
import {
|
|
35
|
+
import {
|
|
36
|
+
GradientValue,
|
|
37
|
+
BlendMode,
|
|
38
|
+
} from 'react-native/Libraries/StyleSheet/StyleSheetTypes';
|
|
36
39
|
|
|
37
40
|
export {};
|
|
38
41
|
|
|
39
42
|
declare module '.' {
|
|
40
|
-
export interface FlexStyle {
|
|
41
|
-
/**
|
|
42
|
-
* Equivalent to `top`, `bottom`, `right` and `left`
|
|
43
|
-
*/
|
|
44
|
-
inset?: DimensionValue | undefined;
|
|
45
|
-
|
|
46
|
-
/**
|
|
47
|
-
* Equivalent to `top`, `bottom`
|
|
48
|
-
*/
|
|
49
|
-
insetBlock?: DimensionValue | undefined;
|
|
50
|
-
|
|
51
|
-
/**
|
|
52
|
-
* Equivalent to `bottom`
|
|
53
|
-
*/
|
|
54
|
-
insetBlockEnd?: DimensionValue | undefined;
|
|
55
|
-
|
|
56
|
-
/**
|
|
57
|
-
* Equivalent to `top`
|
|
58
|
-
*/
|
|
59
|
-
insetBlockStart?: DimensionValue | undefined;
|
|
60
|
-
|
|
61
|
-
/**
|
|
62
|
-
* Equivalent to `right` and `left`
|
|
63
|
-
*/
|
|
64
|
-
insetInline?: DimensionValue | undefined;
|
|
65
|
-
|
|
66
|
-
/**
|
|
67
|
-
* Equivalent to `right` or `left`
|
|
68
|
-
*/
|
|
69
|
-
insetInlineEnd?: DimensionValue | undefined;
|
|
70
|
-
|
|
71
|
-
/**
|
|
72
|
-
* Equivalent to `right` or `left`
|
|
73
|
-
*/
|
|
74
|
-
insetInlineStart?: DimensionValue | undefined;
|
|
75
|
-
|
|
76
|
-
/**
|
|
77
|
-
* Equivalent to `marginVertical`
|
|
78
|
-
*/
|
|
79
|
-
marginBlock?: DimensionValue | undefined;
|
|
80
|
-
|
|
81
|
-
/**
|
|
82
|
-
* Equivalent to `marginBottom`
|
|
83
|
-
*/
|
|
84
|
-
marginBlockEnd?: DimensionValue | undefined;
|
|
85
|
-
|
|
86
|
-
/**
|
|
87
|
-
* Equivalent to `marginTop`
|
|
88
|
-
*/
|
|
89
|
-
marginBlockStart?: DimensionValue | undefined;
|
|
90
|
-
|
|
91
|
-
/**
|
|
92
|
-
* Equivalent to `marginHorizontal`
|
|
93
|
-
*/
|
|
94
|
-
marginInline?: DimensionValue | undefined;
|
|
95
|
-
|
|
96
|
-
/**
|
|
97
|
-
* Equivalent to `marginEnd`
|
|
98
|
-
*/
|
|
99
|
-
marginInlineEnd?: DimensionValue | undefined;
|
|
100
|
-
|
|
101
|
-
/**
|
|
102
|
-
* Equivalent to `marginStart`
|
|
103
|
-
*/
|
|
104
|
-
marginInlineStart?: DimensionValue | undefined;
|
|
105
|
-
|
|
106
|
-
/**
|
|
107
|
-
* Equivalent to `paddingVertical`
|
|
108
|
-
*/
|
|
109
|
-
paddingBlock?: DimensionValue | undefined;
|
|
110
|
-
|
|
111
|
-
/**
|
|
112
|
-
* Equivalent to `paddingBottom`
|
|
113
|
-
*/
|
|
114
|
-
paddingBlockEnd?: DimensionValue | undefined;
|
|
115
|
-
|
|
116
|
-
/**
|
|
117
|
-
* Equivalent to `paddingTop`
|
|
118
|
-
*/
|
|
119
|
-
paddingBlockStart?: DimensionValue | undefined;
|
|
120
|
-
|
|
121
|
-
/**
|
|
122
|
-
* Equivalent to `paddingHorizontal`
|
|
123
|
-
*/
|
|
124
|
-
paddingInline?: DimensionValue | undefined;
|
|
125
|
-
|
|
126
|
-
/**
|
|
127
|
-
* Equivalent to `paddingEnd`
|
|
128
|
-
*/
|
|
129
|
-
paddingInlineEnd?: DimensionValue | undefined;
|
|
130
|
-
|
|
131
|
-
/**
|
|
132
|
-
* Equivalent to `paddingStart`
|
|
133
|
-
*/
|
|
134
|
-
paddingInlineStart?: DimensionValue | undefined;
|
|
135
|
-
}
|
|
136
|
-
|
|
137
43
|
export interface ViewProps {
|
|
138
44
|
/**
|
|
139
45
|
* Contols whether this view, and its transitive children, are laid in a way
|
|
@@ -142,4 +48,12 @@ declare module '.' {
|
|
|
142
48
|
*/
|
|
143
49
|
experimental_layoutConformance?: 'strict' | 'classic' | undefined;
|
|
144
50
|
}
|
|
51
|
+
|
|
52
|
+
export interface ViewStyle {
|
|
53
|
+
experimental_mixBlendMode?: BlendMode | undefined;
|
|
54
|
+
experimental_backgroundImage?:
|
|
55
|
+
| ReadonlyArray<GradientValue>
|
|
56
|
+
| string
|
|
57
|
+
| undefined;
|
|
58
|
+
}
|
|
145
59
|
}
|