@office-iss/react-native-win32 0.0.0-canary.296 → 0.0.0-canary.297
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 -1
- package/CHANGELOG.json +22 -1
- package/CHANGELOG.md +13 -4
- package/Libraries/Animated/Animated.js +0 -1
- package/Libraries/Animated/Animated.js.flow +0 -1
- package/Libraries/Animated/AnimatedExports.js +0 -1
- package/Libraries/Animated/AnimatedExports.js.flow +1 -2
- package/Libraries/Animated/animations/Animation.js +5 -2
- package/Libraries/Animated/components/AnimatedScrollView.js +53 -52
- package/Libraries/Animated/createAnimatedComponent.js +37 -33
- package/Libraries/Animated/nodes/AnimatedObject.js +2 -3
- package/Libraries/Animated/nodes/AnimatedProps.js +1 -1
- package/Libraries/Animated/shouldUseTurboAnimatedModule.js +6 -1
- package/Libraries/AppState/AppState.js +6 -1
- package/Libraries/Components/ActivityIndicator/ActivityIndicator.js +19 -18
- package/Libraries/Components/Button.js +2 -2
- package/Libraries/Components/Button.win32.js +2 -2
- package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.android.js +2 -3
- package/Libraries/Components/Keyboard/KeyboardAvoidingView.js +2 -1
- package/Libraries/Components/LayoutConformance/LayoutConformance.js +0 -1
- package/Libraries/Components/Pressable/Pressable.js +9 -6
- package/Libraries/Components/Pressable/Pressable.win32.js +9 -6
- package/Libraries/Components/ProgressBarAndroid/ProgressBarAndroid.android.js +14 -13
- package/Libraries/Components/ProgressBarAndroid/ProgressBarAndroid.js +13 -1
- package/Libraries/Components/ProgressBarAndroid/ProgressBarAndroidTypes.js +29 -20
- package/Libraries/Components/ScrollView/ScrollView.d.ts +9 -5
- package/Libraries/Components/ScrollView/ScrollView.js +18 -12
- package/Libraries/Components/ScrollView/ScrollViewContext.js +2 -1
- package/Libraries/Components/ScrollView/ScrollViewNativeComponentType.js +1 -1
- package/Libraries/Components/ScrollView/ScrollViewStickyHeader.js +19 -6
- package/Libraries/Components/Switch/Switch.js +8 -2
- package/Libraries/Components/TextInput/AndroidTextInputNativeComponent.js +1 -5
- package/Libraries/Components/TextInput/TextInput.flow.js +1 -5
- package/Libraries/Components/TextInput/TextInput.flow.win32.js +1 -5
- package/Libraries/Components/TextInput/TextInput.js +26 -25
- package/Libraries/Components/TextInput/TextInput.win32.js +27 -25
- package/Libraries/Components/Touchable/TouchableBounce.js +9 -3
- package/Libraries/Components/Touchable/TouchableHighlight.js +9 -4
- package/Libraries/Components/Touchable/TouchableNativeFeedback.js +2 -1
- package/Libraries/Components/Touchable/TouchableNativeFeedback.win32.js +2 -0
- package/Libraries/Components/Touchable/TouchableOpacity.js +7 -3
- package/Libraries/Components/Touchable/TouchableWithoutFeedback.js +2 -2
- package/Libraries/Components/View/View.js +111 -25
- package/Libraries/Core/Devtools/loadBundleFromServer.js +49 -7
- package/Libraries/Core/Devtools/loadBundleFromServer.win32.js +49 -7
- package/Libraries/Core/InitializeCore.js +1 -22
- package/Libraries/Core/ReactNativeVersion.js +3 -2
- package/Libraries/Debugging/DebuggingOverlay.js +6 -8
- package/Libraries/Debugging/DebuggingOverlayRegistry.js +0 -1
- package/Libraries/Debugging/useSubscribeToDebuggingOverlayRegistry.js +0 -1
- package/Libraries/EventEmitter/NativeEventEmitter.js +1 -1
- package/Libraries/Image/AssetRegistry.js +4 -10
- package/Libraries/Image/AssetSourceResolver.js +17 -4
- package/Libraries/Image/Image.android.js +112 -106
- package/Libraries/Image/Image.ios.js +10 -2
- package/Libraries/Image/Image.win32.js +11 -3
- package/Libraries/Image/ImageAnalyticsTagContext.js +2 -2
- package/Libraries/Image/RelativeImageStub.js +1 -0
- package/Libraries/Lists/FlatList.d.ts +9 -5
- package/Libraries/Lists/FlatList.js +1 -1
- package/Libraries/Lists/SectionListModern.js +9 -3
- package/Libraries/LogBox/UI/LogBoxButton.js +2 -1
- package/Libraries/LogBox/UI/LogBoxInspectorReactFrames.js +2 -1
- package/Libraries/LogBox/UI/LogBoxInspectorReactFrames.win32.js +2 -1
- package/Libraries/LogBox/UI/LogBoxInspectorSourceMapStatus.js +3 -2
- package/Libraries/LogBox/UI/LogBoxInspectorSourceMapStatus.win32.js +3 -2
- package/Libraries/LogBox/UI/LogBoxInspectorStackFrames.js +2 -1
- package/Libraries/ReactNative/AppContainer-dev.js +4 -4
- package/Libraries/ReactNative/AppContainer-prod.js +0 -1
- package/Libraries/ReactNative/RootTag.js +2 -2
- package/Libraries/ReactPrivate/ReactNativePrivateInterface.js +1 -0
- package/Libraries/Renderer/shims/ReactNativeTypes.js +21 -25
- package/Libraries/Renderer/shims/ReactNativeTypes.win32.js +270 -0
- package/Libraries/StyleSheet/StyleSheetExports.js.flow +3 -1
- package/Libraries/StyleSheet/StyleSheetTypes.js +4 -3
- package/Libraries/StyleSheet/private/_TransformStyle.js +49 -21
- package/Libraries/StyleSheet/processBoxShadow.js +0 -1
- package/Libraries/StyleSheet/processFilter.js +0 -1
- package/Libraries/Text/Text.d.ts +7 -0
- package/Libraries/Text/Text.js +255 -244
- package/Libraries/Text/Text.win32.js +293 -284
- package/Libraries/Text/TextAncestor.js +3 -2
- package/Libraries/Text/TextProps.js +2 -34
- package/Libraries/Text/TextProps.win32.js +2 -33
- package/Libraries/Types/ReactDevToolsTypes.js +0 -1
- package/Libraries/Utilities/PerformanceLoggerContext.js +2 -2
- package/Libraries/Utilities/PlatformTypes.js +1 -1
- package/Libraries/vendor/core/ErrorUtils.js +28 -4
- package/index.js +0 -1
- package/jest/mockNativeComponent.js +2 -1
- package/jest/renderer.js +0 -1
- package/jest/resolver.js +31 -0
- package/jest/setup.js +1 -1
- package/overrides.json +27 -20
- package/package.json +13 -13
- package/src/private/animated/NativeAnimatedHelper.js +6 -1
- package/src/private/animated/NativeAnimatedHelper.win32.js +6 -1
- package/src/private/animated/createAnimatedPropsHook.js +11 -4
- package/src/private/animated/createAnimatedPropsMemoHook.js +0 -1
- package/src/private/components/safeareaview/SafeAreaView_INTERNAL_DO_NOT_USE.js +0 -1
- package/src/private/components/scrollview/HScrollViewNativeComponents.js +0 -1
- package/src/private/components/scrollview/VScrollViewNativeComponents.js +0 -1
- package/src/private/devsupport/rndevtools/FuseboxSessionObserver.js +0 -1
- package/src/private/devsupport/rndevtools/ReactDevToolsSettingsManager.android.js +8 -9
- package/src/private/devsupport/rndevtools/ReactDevToolsSettingsManager.ios.js +12 -15
- package/src/private/devsupport/rndevtools/ReactDevToolsSettingsManager.win32.js +8 -9
- package/src/private/devsupport/rndevtools/setUpFuseboxReactDevToolsDispatcher.js +0 -1
- package/src/private/devsupport/rndevtools/specs/NativeReactDevToolsRuntimeSettingsModule.js +0 -1
- package/src/private/featureflags/ReactNativeFeatureFlags.js +39 -4
- package/src/private/featureflags/specs/NativeReactNativeFeatureFlags.js +5 -2
- package/src/private/setup/setUpDefaultReactNativeEnvironment.js +44 -0
- package/src/private/styles/composeStyles.js +12 -5
- package/src/private/webapis/dom/events/Event.js +3 -0
- package/src/private/webapis/dom/events/EventTarget.js +3 -0
- package/src/private/webapis/dom/nodes/ReactNativeElement.js +6 -23
- package/src/private/webapis/dom/nodes/ReadOnlyNode.js +3 -1
- package/src/private/webapis/dom/nodes/specs/NativeDOM.js +38 -0
- package/src/private/webapis/dom/oldstylecollections/HTMLCollection.js +3 -0
- package/src/private/webapis/dom/oldstylecollections/NodeList.js +3 -0
- package/src/private/webapis/errors/DOMException.js +166 -0
- package/src/private/webapis/geometry/DOMRect.js +5 -0
- package/src/private/webapis/geometry/DOMRectList.js +3 -0
- package/src/private/webapis/geometry/DOMRectReadOnly.js +6 -0
- package/src/private/webapis/intersectionobserver/IntersectionObserver.js +15 -7
- package/src/private/webapis/intersectionobserver/IntersectionObserverEntry.js +3 -0
- package/src/private/webapis/intersectionobserver/internals/IntersectionObserverManager.js +80 -18
- package/src/private/webapis/intersectionobserver/specs/NativeIntersectionObserver.js +12 -0
- package/src/private/webapis/mutationobserver/MutationObserver.js +23 -33
- package/src/private/webapis/mutationobserver/MutationRecord.js +3 -0
- package/src/private/webapis/mutationobserver/internals/MutationObserverManager.js +56 -24
- package/src/private/webapis/mutationobserver/specs/NativeMutationObserver.js +4 -1
- package/src/private/webapis/performance/MemoryInfo.js +4 -1
- package/src/private/webapis/performance/Performance.js +19 -8
- package/src/private/webapis/performance/PerformanceEntry.js +4 -0
- package/src/private/webapis/performance/ReactNativeStartupTiming.js +4 -1
- package/src/private/webapis/performance/internals/RawPerformanceEntry.js +2 -0
- package/src/private/webapis/structuredClone/structuredClone.js +233 -0
- package/src/private/webapis/webidl/PlatformObjects.js +59 -0
- package/src/types/globals.d.ts +42 -0
- package/src-win/Libraries/Text/Text.d.ts +7 -0
- package/types/index.d.ts +1 -1
|
@@ -23,7 +23,7 @@ import {PressabilityDebugView} from '../../Pressability/PressabilityDebug';
|
|
|
23
23
|
import usePressability from '../../Pressability/usePressability';
|
|
24
24
|
import {type ViewStyleProp} from '../../StyleSheet/StyleSheet';
|
|
25
25
|
import * as React from 'react';
|
|
26
|
-
import {useMemo} from 'react';
|
|
26
|
+
import {cloneElement, useMemo} from 'react';
|
|
27
27
|
|
|
28
28
|
export type TouchableWithoutFeedbackPropsIOS = {};
|
|
29
29
|
|
|
@@ -283,5 +283,5 @@ export default function TouchableWithoutFeedback(
|
|
|
283
283
|
}
|
|
284
284
|
|
|
285
285
|
// $FlowFixMe[incompatible-call]
|
|
286
|
-
return
|
|
286
|
+
return cloneElement(element, elementProps, ...children);
|
|
287
287
|
}
|
|
@@ -10,12 +10,19 @@
|
|
|
10
10
|
|
|
11
11
|
import type {ViewProps} from './ViewPropTypes';
|
|
12
12
|
|
|
13
|
+
import * as ReactNativeFeatureFlags from '../../../src/private/featureflags/ReactNativeFeatureFlags';
|
|
13
14
|
import TextAncestor from '../../Text/TextAncestor';
|
|
14
15
|
import ViewNativeComponent from './ViewNativeComponent';
|
|
15
16
|
import * as React from 'react';
|
|
17
|
+
import {use} from 'react';
|
|
16
18
|
|
|
17
19
|
export type Props = ViewProps;
|
|
18
20
|
|
|
21
|
+
type PropsWithRef = $ReadOnly<{
|
|
22
|
+
ref?: React.RefSetter<React.ElementRef<typeof ViewNativeComponent>>,
|
|
23
|
+
...ViewProps,
|
|
24
|
+
}>;
|
|
25
|
+
|
|
19
26
|
/**
|
|
20
27
|
* The most fundamental component for building a UI, View is a container that
|
|
21
28
|
* supports layout with flexbox, style, some touch handling, and accessibility
|
|
@@ -23,12 +30,99 @@ export type Props = ViewProps;
|
|
|
23
30
|
*
|
|
24
31
|
* @see https://reactnative.dev/docs/view
|
|
25
32
|
*/
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
(
|
|
31
|
-
{
|
|
33
|
+
function View(props: PropsWithRef): React.Node {
|
|
34
|
+
const hasTextAncestor = use(TextAncestor);
|
|
35
|
+
|
|
36
|
+
let actualView;
|
|
37
|
+
if (ReactNativeFeatureFlags.reduceDefaultPropsInView()) {
|
|
38
|
+
const {
|
|
39
|
+
accessibilityState,
|
|
40
|
+
accessibilityValue,
|
|
41
|
+
'aria-busy': ariaBusy,
|
|
42
|
+
'aria-checked': ariaChecked,
|
|
43
|
+
'aria-disabled': ariaDisabled,
|
|
44
|
+
'aria-expanded': ariaExpanded,
|
|
45
|
+
'aria-hidden': ariaHidden,
|
|
46
|
+
'aria-label': ariaLabel,
|
|
47
|
+
'aria-labelledby': ariaLabelledBy,
|
|
48
|
+
'aria-live': ariaLive,
|
|
49
|
+
'aria-selected': ariaSelected,
|
|
50
|
+
'aria-valuemax': ariaValueMax,
|
|
51
|
+
'aria-valuemin': ariaValueMin,
|
|
52
|
+
'aria-valuenow': ariaValueNow,
|
|
53
|
+
'aria-valuetext': ariaValueText,
|
|
54
|
+
id,
|
|
55
|
+
tabIndex,
|
|
56
|
+
...otherProps
|
|
57
|
+
} = props;
|
|
58
|
+
|
|
59
|
+
// Since we destructured props, we can now treat it as mutable
|
|
60
|
+
const processedProps = otherProps as {...PropsWithRef};
|
|
61
|
+
|
|
62
|
+
const parsedAriaLabelledBy = ariaLabelledBy?.split(/\s*,\s*/g);
|
|
63
|
+
if (parsedAriaLabelledBy !== undefined) {
|
|
64
|
+
processedProps.accessibilityLabelledBy = parsedAriaLabelledBy;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
if (ariaLabel !== undefined) {
|
|
68
|
+
processedProps.accessibilityLabel = ariaLabel;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
if (ariaLive !== undefined) {
|
|
72
|
+
processedProps.accessibilityLiveRegion =
|
|
73
|
+
ariaLive === 'off' ? 'none' : ariaLive;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
if (ariaHidden !== undefined) {
|
|
77
|
+
processedProps.accessibilityElementsHidden = ariaHidden;
|
|
78
|
+
if (ariaHidden === true) {
|
|
79
|
+
processedProps.importantForAccessibility = 'no-hide-descendants';
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
if (id !== undefined) {
|
|
84
|
+
processedProps.nativeID = id;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
if (tabIndex !== undefined) {
|
|
88
|
+
processedProps.focusable = !tabIndex;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
if (
|
|
92
|
+
accessibilityState != null ||
|
|
93
|
+
ariaBusy != null ||
|
|
94
|
+
ariaChecked != null ||
|
|
95
|
+
ariaDisabled != null ||
|
|
96
|
+
ariaExpanded != null ||
|
|
97
|
+
ariaSelected != null
|
|
98
|
+
) {
|
|
99
|
+
processedProps.accessibilityState = {
|
|
100
|
+
busy: ariaBusy ?? accessibilityState?.busy,
|
|
101
|
+
checked: ariaChecked ?? accessibilityState?.checked,
|
|
102
|
+
disabled: ariaDisabled ?? accessibilityState?.disabled,
|
|
103
|
+
expanded: ariaExpanded ?? accessibilityState?.expanded,
|
|
104
|
+
selected: ariaSelected ?? accessibilityState?.selected,
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
if (
|
|
109
|
+
accessibilityValue != null ||
|
|
110
|
+
ariaValueMax != null ||
|
|
111
|
+
ariaValueMin != null ||
|
|
112
|
+
ariaValueNow != null ||
|
|
113
|
+
ariaValueText != null
|
|
114
|
+
) {
|
|
115
|
+
processedProps.accessibilityValue = {
|
|
116
|
+
max: ariaValueMax ?? accessibilityValue?.max,
|
|
117
|
+
min: ariaValueMin ?? accessibilityValue?.min,
|
|
118
|
+
now: ariaValueNow ?? accessibilityValue?.now,
|
|
119
|
+
text: ariaValueText ?? accessibilityValue?.text,
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
actualView = <ViewNativeComponent {...processedProps} />;
|
|
124
|
+
} else {
|
|
125
|
+
const {
|
|
32
126
|
accessibilityElementsHidden,
|
|
33
127
|
accessibilityLabel,
|
|
34
128
|
accessibilityLabelledBy,
|
|
@@ -54,10 +148,7 @@ const View: component(
|
|
|
54
148
|
nativeID,
|
|
55
149
|
tabIndex,
|
|
56
150
|
...otherProps
|
|
57
|
-
}
|
|
58
|
-
forwardedRef,
|
|
59
|
-
) => {
|
|
60
|
-
const hasTextAncestor = React.useContext(TextAncestor);
|
|
151
|
+
} = props;
|
|
61
152
|
const _accessibilityLabelledBy =
|
|
62
153
|
ariaLabelledBy?.split(/\s*,\s*/g) ?? accessibilityLabelledBy;
|
|
63
154
|
|
|
@@ -91,7 +182,7 @@ const View: component(
|
|
|
91
182
|
}
|
|
92
183
|
: undefined;
|
|
93
184
|
|
|
94
|
-
|
|
185
|
+
actualView = (
|
|
95
186
|
<ViewNativeComponent
|
|
96
187
|
{...otherProps}
|
|
97
188
|
accessibilityLiveRegion={
|
|
@@ -109,22 +200,17 @@ const View: component(
|
|
|
109
200
|
: importantForAccessibility
|
|
110
201
|
}
|
|
111
202
|
nativeID={id ?? nativeID}
|
|
112
|
-
ref={forwardedRef}
|
|
113
203
|
/>
|
|
114
204
|
);
|
|
205
|
+
}
|
|
115
206
|
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
);
|
|
122
|
-
}
|
|
207
|
+
if (hasTextAncestor) {
|
|
208
|
+
return <TextAncestor value={false}>{actualView}</TextAncestor>;
|
|
209
|
+
}
|
|
210
|
+
return actualView;
|
|
211
|
+
}
|
|
123
212
|
|
|
124
|
-
|
|
125
|
-
|
|
213
|
+
export default View as component(
|
|
214
|
+
ref?: React.RefSetter<React.ElementRef<typeof ViewNativeComponent>>,
|
|
215
|
+
...props: ViewProps
|
|
126
216
|
);
|
|
127
|
-
|
|
128
|
-
View.displayName = 'View';
|
|
129
|
-
|
|
130
|
-
export default View;
|
|
@@ -6,7 +6,6 @@
|
|
|
6
6
|
*
|
|
7
7
|
* @flow strict-local
|
|
8
8
|
* @format
|
|
9
|
-
* @oncall react_native
|
|
10
9
|
*/
|
|
11
10
|
|
|
12
11
|
import Networking from '../../Network/RCTNetworking';
|
|
@@ -20,6 +19,34 @@ let pendingRequests = 0;
|
|
|
20
19
|
|
|
21
20
|
const cachedPromisesByUrl = new Map<string, Promise<void>>();
|
|
22
21
|
|
|
22
|
+
export class LoadBundleFromServerError extends Error {
|
|
23
|
+
url: string;
|
|
24
|
+
isTimeout: boolean;
|
|
25
|
+
constructor(
|
|
26
|
+
message: string,
|
|
27
|
+
url: string,
|
|
28
|
+
isTimeout: boolean,
|
|
29
|
+
options?: {cause: mixed, ...},
|
|
30
|
+
): void {
|
|
31
|
+
super(message, options);
|
|
32
|
+
this.url = url;
|
|
33
|
+
this.isTimeout = isTimeout;
|
|
34
|
+
this.name = 'LoadBundleFromServerError';
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
export class LoadBundleFromServerRequestError extends LoadBundleFromServerError {
|
|
39
|
+
constructor(
|
|
40
|
+
message: string,
|
|
41
|
+
url: string,
|
|
42
|
+
isTimeout: boolean,
|
|
43
|
+
options?: {cause: mixed, ...},
|
|
44
|
+
): void {
|
|
45
|
+
super(message, url, isTimeout, options);
|
|
46
|
+
this.name = 'LoadBundleFromServerRequestError';
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
|
|
23
50
|
function asyncRequest(
|
|
24
51
|
url: string,
|
|
25
52
|
): Promise<{body: string, headers: {[string]: string}}> {
|
|
@@ -62,10 +89,19 @@ function asyncRequest(
|
|
|
62
89
|
);
|
|
63
90
|
completeListener = Networking.addListener(
|
|
64
91
|
'didCompleteNetworkResponse',
|
|
65
|
-
([requestId,
|
|
92
|
+
([requestId, errorMessage, isTimeout]) => {
|
|
66
93
|
if (requestId === id) {
|
|
67
|
-
if (
|
|
68
|
-
reject(
|
|
94
|
+
if (errorMessage) {
|
|
95
|
+
reject(
|
|
96
|
+
new LoadBundleFromServerRequestError(
|
|
97
|
+
'Could not load bundle',
|
|
98
|
+
url,
|
|
99
|
+
isTimeout,
|
|
100
|
+
{
|
|
101
|
+
cause: errorMessage,
|
|
102
|
+
},
|
|
103
|
+
),
|
|
104
|
+
);
|
|
69
105
|
} else {
|
|
70
106
|
//$FlowFixMe[incompatible-call]
|
|
71
107
|
resolve({body: responseText, headers});
|
|
@@ -122,9 +158,15 @@ export default function loadBundleFromServer(
|
|
|
122
158
|
headers['Content-Type'].indexOf('application/json') >= 0
|
|
123
159
|
) {
|
|
124
160
|
// Errors are returned as JSON.
|
|
125
|
-
throw new
|
|
126
|
-
|
|
127
|
-
|
|
161
|
+
throw new LoadBundleFromServerError(
|
|
162
|
+
'Could not load bundle',
|
|
163
|
+
bundlePathAndQuery,
|
|
164
|
+
false, // isTimeout
|
|
165
|
+
{
|
|
166
|
+
cause:
|
|
167
|
+
JSON.parse(body).message ||
|
|
168
|
+
`Unknown error fetching '${bundlePathAndQuery}'`,
|
|
169
|
+
},
|
|
128
170
|
);
|
|
129
171
|
}
|
|
130
172
|
|
|
@@ -6,7 +6,6 @@
|
|
|
6
6
|
*
|
|
7
7
|
* @flow strict-local
|
|
8
8
|
* @format
|
|
9
|
-
* @oncall react_native
|
|
10
9
|
*/
|
|
11
10
|
|
|
12
11
|
import Networking from '../../Network/RCTNetworking';
|
|
@@ -20,6 +19,34 @@ let pendingRequests = 0;
|
|
|
20
19
|
|
|
21
20
|
const cachedPromisesByUrl = new Map<string, Promise<void>>();
|
|
22
21
|
|
|
22
|
+
export class LoadBundleFromServerError extends Error {
|
|
23
|
+
url: string;
|
|
24
|
+
isTimeout: boolean;
|
|
25
|
+
constructor(
|
|
26
|
+
message: string,
|
|
27
|
+
url: string,
|
|
28
|
+
isTimeout: boolean,
|
|
29
|
+
options?: {cause: mixed, ...},
|
|
30
|
+
): void {
|
|
31
|
+
super(message, options);
|
|
32
|
+
this.url = url;
|
|
33
|
+
this.isTimeout = isTimeout;
|
|
34
|
+
this.name = 'LoadBundleFromServerError';
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
export class LoadBundleFromServerRequestError extends LoadBundleFromServerError {
|
|
39
|
+
constructor(
|
|
40
|
+
message: string,
|
|
41
|
+
url: string,
|
|
42
|
+
isTimeout: boolean,
|
|
43
|
+
options?: {cause: mixed, ...},
|
|
44
|
+
): void {
|
|
45
|
+
super(message, url, isTimeout, options);
|
|
46
|
+
this.name = 'LoadBundleFromServerRequestError';
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
|
|
23
50
|
function asyncRequest(
|
|
24
51
|
url: string,
|
|
25
52
|
): Promise<{body: string, headers: {[string]: string}}> {
|
|
@@ -62,10 +89,19 @@ function asyncRequest(
|
|
|
62
89
|
);
|
|
63
90
|
completeListener = Networking.addListener(
|
|
64
91
|
'didCompleteNetworkResponse',
|
|
65
|
-
([requestId,
|
|
92
|
+
([requestId, errorMessage, isTimeout]) => {
|
|
66
93
|
if (requestId === id) {
|
|
67
|
-
if (
|
|
68
|
-
reject(
|
|
94
|
+
if (errorMessage) {
|
|
95
|
+
reject(
|
|
96
|
+
new LoadBundleFromServerRequestError(
|
|
97
|
+
'Could not load bundle',
|
|
98
|
+
url,
|
|
99
|
+
isTimeout,
|
|
100
|
+
{
|
|
101
|
+
cause: errorMessage,
|
|
102
|
+
},
|
|
103
|
+
),
|
|
104
|
+
);
|
|
69
105
|
} else {
|
|
70
106
|
//$FlowFixMe[incompatible-call]
|
|
71
107
|
resolve({body: responseText, headers});
|
|
@@ -122,9 +158,15 @@ export default function loadBundleFromServer(
|
|
|
122
158
|
headers['Content-Type'].indexOf('application/json') >= 0
|
|
123
159
|
) {
|
|
124
160
|
// Errors are returned as JSON.
|
|
125
|
-
throw new
|
|
126
|
-
|
|
127
|
-
|
|
161
|
+
throw new LoadBundleFromServerError(
|
|
162
|
+
'Could not load bundle',
|
|
163
|
+
bundlePathAndQuery,
|
|
164
|
+
false, // isTimeout
|
|
165
|
+
{
|
|
166
|
+
cause:
|
|
167
|
+
JSON.parse(body).message ||
|
|
168
|
+
`Unknown error fetching '${bundlePathAndQuery}'`,
|
|
169
|
+
},
|
|
128
170
|
);
|
|
129
171
|
}
|
|
130
172
|
|
|
@@ -28,28 +28,7 @@
|
|
|
28
28
|
|
|
29
29
|
const start = Date.now();
|
|
30
30
|
|
|
31
|
-
require('
|
|
32
|
-
require('../../src/private/setup/setUpDOM').default();
|
|
33
|
-
require('./setUpPerformance');
|
|
34
|
-
require('./polyfillPromise');
|
|
35
|
-
require('./setUpTimers');
|
|
36
|
-
if (__DEV__) {
|
|
37
|
-
require('./setUpReactDevTools');
|
|
38
|
-
}
|
|
39
|
-
require('./setUpErrorHandling');
|
|
40
|
-
require('./setUpRegeneratorRuntime');
|
|
41
|
-
require('./setUpXHR');
|
|
42
|
-
require('./setUpAlert');
|
|
43
|
-
require('./setUpNavigator');
|
|
44
|
-
require('./setUpBatchedBridge');
|
|
45
|
-
require('./setUpSegmentFetcher');
|
|
46
|
-
if (__DEV__) {
|
|
47
|
-
require('./checkNativeVersion');
|
|
48
|
-
require('./setUpDeveloperTools');
|
|
49
|
-
require('../LogBox/LogBox').default.install();
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
require('../ReactNative/AppRegistry');
|
|
31
|
+
require('../../src/private/setup/setUpDefaultReactNativeEnvironment').default();
|
|
53
32
|
|
|
54
33
|
const GlobalPerformanceLogger =
|
|
55
34
|
require('../Utilities/GlobalPerformanceLogger').default;
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
6
6
|
*
|
|
7
7
|
* @flow strict
|
|
8
|
+
* @noformat
|
|
8
9
|
* @generated by scripts/releases/set-version.js
|
|
9
10
|
*/
|
|
10
11
|
|
|
@@ -15,7 +16,7 @@ export const version: $ReadOnly<{
|
|
|
15
16
|
prerelease: string | null,
|
|
16
17
|
}> = {
|
|
17
18
|
major: 0,
|
|
18
|
-
minor:
|
|
19
|
+
minor: 81,
|
|
19
20
|
patch: 0,
|
|
20
|
-
prerelease: 'nightly-
|
|
21
|
+
prerelease: 'nightly-20250521-3cb70bb6a',
|
|
21
22
|
};
|
|
@@ -31,10 +31,11 @@ type DebuggingOverlayHandle = {
|
|
|
31
31
|
clearElementsHighlight(): void,
|
|
32
32
|
};
|
|
33
33
|
|
|
34
|
-
function DebuggingOverlay(
|
|
35
|
-
|
|
34
|
+
function DebuggingOverlay({
|
|
35
|
+
ref,
|
|
36
|
+
}: {
|
|
36
37
|
ref: React.RefSetter<DebuggingOverlayHandle>,
|
|
37
|
-
): React.Node {
|
|
38
|
+
}): React.Node {
|
|
38
39
|
useImperativeHandle(
|
|
39
40
|
ref,
|
|
40
41
|
() => ({
|
|
@@ -102,9 +103,6 @@ const styles = StyleSheet.create({
|
|
|
102
103
|
},
|
|
103
104
|
});
|
|
104
105
|
|
|
105
|
-
|
|
106
|
+
export default DebuggingOverlay as component(
|
|
106
107
|
ref: React.RefSetter<DebuggingOverlayHandle>,
|
|
107
|
-
|
|
108
|
-
) = React.forwardRef(DebuggingOverlay);
|
|
109
|
-
|
|
110
|
-
export default DebuggingOverlayWithForwardedRef;
|
|
108
|
+
);
|
|
@@ -8,13 +8,7 @@
|
|
|
8
8
|
* @format
|
|
9
9
|
*/
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
const AssetRegistry = require('@react-native/assets-registry/registry') as {
|
|
16
|
-
registerAsset: (asset: PackagerAsset) => number,
|
|
17
|
-
getAssetByID: (assetId: number) => PackagerAsset,
|
|
18
|
-
};
|
|
19
|
-
|
|
20
|
-
module.exports = AssetRegistry;
|
|
11
|
+
export {
|
|
12
|
+
registerAsset,
|
|
13
|
+
getAssetByID,
|
|
14
|
+
} from '@react-native/assets-registry/registry';
|
|
@@ -18,10 +18,23 @@ export type ResolvedAssetSource = {
|
|
|
18
18
|
+scale: number,
|
|
19
19
|
};
|
|
20
20
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
21
|
+
// From @react-native/assets-registry
|
|
22
|
+
type AssetDestPathResolver = 'android' | 'generic';
|
|
23
|
+
|
|
24
|
+
// From @react-native/assets-registry
|
|
25
|
+
type PackagerAsset = $ReadOnly<{
|
|
26
|
+
__packager_asset: boolean,
|
|
27
|
+
fileSystemLocation: string,
|
|
28
|
+
httpServerLocation: string,
|
|
29
|
+
width: ?number,
|
|
30
|
+
height: ?number,
|
|
31
|
+
scales: Array<number>,
|
|
32
|
+
hash: string,
|
|
33
|
+
name: string,
|
|
34
|
+
type: string,
|
|
35
|
+
resolver?: AssetDestPathResolver,
|
|
36
|
+
...
|
|
37
|
+
}>;
|
|
25
38
|
|
|
26
39
|
const PixelRatio = require('../Utilities/PixelRatio').default;
|
|
27
40
|
const Platform = require('../Utilities/Platform').default;
|