react-native-windows 0.0.0-canary.992 → 0.0.0-canary.993
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/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.windows.js +2 -3
- 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.windows.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/ScrollView.windows.js +19 -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/Switch/Switch.windows.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.windows.js +1 -6
- package/Libraries/Components/TextInput/TextInput.js +26 -25
- package/Libraries/Components/TextInput/TextInput.windows.js +27 -25
- package/Libraries/Components/TextInput/WindowsTextInputNativeComponent.js +1 -5
- package/Libraries/Components/Touchable/TouchableBounce.js +9 -3
- package/Libraries/Components/Touchable/TouchableBounce.windows.js +9 -3
- package/Libraries/Components/Touchable/TouchableHighlight.js +9 -4
- package/Libraries/Components/Touchable/TouchableHighlight.windows.js +9 -4
- package/Libraries/Components/Touchable/TouchableNativeFeedback.js +2 -1
- package/Libraries/Components/Touchable/TouchableNativeFeedback.windows.js +2 -1
- package/Libraries/Components/Touchable/TouchableOpacity.js +7 -3
- package/Libraries/Components/Touchable/TouchableOpacity.windows.js +7 -3
- package/Libraries/Components/Touchable/TouchableWithoutFeedback.js +2 -2
- package/Libraries/Components/Touchable/TouchableWithoutFeedback.windows.js +2 -2
- package/Libraries/Components/View/View.js +111 -25
- package/Libraries/Components/View/View.windows.js +427 -227
- package/Libraries/Core/Devtools/loadBundleFromServer.js +49 -7
- package/Libraries/Core/Devtools/loadBundleFromServer.windows.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/AssetSourceResolver.windows.js +17 -4
- package/Libraries/Image/Image.android.js +112 -106
- package/Libraries/Image/Image.ios.js +10 -2
- package/Libraries/Image/Image.windows.js +30 -20
- 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.windows.js +2 -1
- package/Libraries/LogBox/UI/LogBoxInspectorSourceMapStatus.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.windows.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 +1 -2
- package/Libraries/Text/Text.js +255 -244
- package/Libraries/Text/Text.windows.js +281 -300
- package/Libraries/Text/TextAncestor.js +3 -2
- package/Libraries/Text/TextProps.js +2 -34
- package/Libraries/Text/TextProps.windows.js +2 -34
- 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/Microsoft.ReactNative/Fabric/AbiComponentDescriptor.cpp +1 -1
- package/Microsoft.ReactNative/Fabric/AbiComponentDescriptor.h +1 -1
- package/Microsoft.ReactNative/Fabric/AbiShadowNode.h +1 -1
- package/Microsoft.ReactNative/Fabric/AbiViewComponentDescriptor.h +1 -1
- package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputComponentDescriptor.h +2 -2
- package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputComponentView.cpp +10 -9
- package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputShadowNode.cpp +21 -17
- package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputShadowNode.h +4 -4
- package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputState.cpp +19 -0
- package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputState.h +76 -0
- package/Microsoft.ReactNative/Fabric/platform/react/renderer/textlayoutmanager/WindowsTextLayoutManager.cpp +6 -0
- package/Microsoft.ReactNative/Modules/PaperUIManagerModule.cpp +19 -2
- package/Microsoft.ReactNative/Utils/ThemeUtils.cpp +49 -0
- package/Microsoft.ReactNative/Utils/ThemeUtils.h +31 -0
- package/Microsoft.ReactNative/Views/ShadowNodeBase.cpp +36 -8
- package/Microsoft.ReactNative/Views/ShadowNodeRegistry.cpp +6 -2
- package/Microsoft.ReactNative/Views/ViewManagerBase.cpp +9 -1
- package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/Base.h +45 -34
- package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/Bool.h +1 -1
- package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/Bridging.h +1 -0
- package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/Class.h +36 -33
- package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/Number.h +10 -10
- package/PropertySheets/External/Microsoft.ReactNative.Cpp.Dependencies.props +10 -0
- package/PropertySheets/Generated/PackageVersion.g.props +2 -2
- package/PropertySheets/React.Cpp.props +1 -1
- package/ReactCommon/ReactCommon.vcxproj +10 -19
- package/ReactCommon/ReactCommon.vcxproj.filters +36 -13
- package/ReactCommon/TEMP_UntilReactCommonUpdate/cxxreact/NativeToJsBridge.cpp +1 -1
- package/ReactCommon/TEMP_UntilReactCommonUpdate/jsi/jsi/test/testlib.cpp +110 -0
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/bridging/Bridging.h +1 -0
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/dom/NativeDOM.cpp +19 -3
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/dom/NativeDOM.h +9 -0
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/text/ParagraphShadowNode.cpp +459 -0
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/text/platform/android/react/renderer/components/text/ParagraphState.h +92 -0
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/view/AccessibilityPrimitives.h +35 -0
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/view/AccessibilityProps.cpp +28 -1
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/css/CSSTokenizer.h +1 -2
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/runtime/ReactInstance.cpp +2 -1
- package/Scripts/creaternwapp.cmd +11 -8
- package/Shared/HermesRuntimeHolder.cpp +3 -1
- package/Shared/Shared.vcxitems +5 -1
- package/Shared/Shared.vcxitems.filters +4 -0
- package/codegen/NativeDOMSpec.g.h +6 -0
- package/codegen/NativeIntersectionObserverSpec.g.h +19 -5
- package/codegen/NativeMutationObserverSpec.g.h +11 -5
- package/codegen/NativeReactNativeFeatureFlagsSpec.g.h +104 -92
- package/codegen/react/components/rnwcore/States.h +8 -8
- package/codegen/rnwcoreJSI-generated.cpp +48 -3
- package/codegen/rnwcoreJSI.h +73 -10
- package/index.js +0 -1
- package/jest/mockNativeComponent.js +2 -1
- package/jest/renderer.js +0 -1
- package/jest/resolver.js +31 -0
- package/package.json +13 -13
- package/src/private/animated/NativeAnimatedHelper.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.windows.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/templates/cpp-lib/windows/MyLib/MyLib.vcxproj +0 -1
- package/types/index.d.ts +1 -1
- package/ReactCommon/TEMP_UntilReactCommonUpdate/cxxreact/JSExecutor.cpp +0 -78
- package/ReactCommon/TEMP_UntilReactCommonUpdate/cxxreact/JSExecutor.h +0 -196
|
@@ -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;
|
|
@@ -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;
|
|
@@ -8,8 +8,10 @@
|
|
|
8
8
|
* @format
|
|
9
9
|
*/
|
|
10
10
|
|
|
11
|
+
import type {HostInstance} from '../../src/private/types/HostInstance';
|
|
11
12
|
import type {ImageStyleProp} from '../StyleSheet/StyleSheet';
|
|
12
13
|
import type {RootTag} from '../Types/RootTagTypes';
|
|
14
|
+
import type {ImageProps} from './ImageProps';
|
|
13
15
|
import type {AbstractImageAndroid, ImageAndroid} from './ImageTypes.flow';
|
|
14
16
|
|
|
15
17
|
import flattenStyle from '../StyleSheet/flattenStyle';
|
|
@@ -126,125 +128,129 @@ async function queryCache(
|
|
|
126
128
|
*
|
|
127
129
|
* See https://reactnative.dev/docs/image
|
|
128
130
|
*/
|
|
129
|
-
let BaseImage: AbstractImageAndroid =
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
131
|
+
let BaseImage: AbstractImageAndroid = ({
|
|
132
|
+
ref: forwardedRef,
|
|
133
|
+
...props
|
|
134
|
+
}: {
|
|
135
|
+
ref?: React.RefSetter<HostInstance>,
|
|
136
|
+
...ImageProps,
|
|
137
|
+
}) => {
|
|
138
|
+
let source = getImageSourcesFromImageProps(props) || {
|
|
139
|
+
uri: undefined,
|
|
140
|
+
width: undefined,
|
|
141
|
+
height: undefined,
|
|
142
|
+
};
|
|
143
|
+
const defaultSource = resolveAssetSource(props.defaultSource);
|
|
144
|
+
const loadingIndicatorSource = resolveAssetSource(
|
|
145
|
+
props.loadingIndicatorSource,
|
|
146
|
+
);
|
|
140
147
|
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
148
|
+
if (props.children != null) {
|
|
149
|
+
throw new Error(
|
|
150
|
+
'The <Image> component cannot contain children. If you want to render content on top of the image, consider using the <ImageBackground> component or absolute positioning.',
|
|
151
|
+
);
|
|
152
|
+
}
|
|
146
153
|
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
154
|
+
if (props.defaultSource != null && props.loadingIndicatorSource != null) {
|
|
155
|
+
throw new Error(
|
|
156
|
+
'The <Image> component cannot have defaultSource and loadingIndicatorSource at the same time. Please use either defaultSource or loadingIndicatorSource.',
|
|
157
|
+
);
|
|
158
|
+
}
|
|
152
159
|
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
}
|
|
163
|
-
const width = source.width ?? props.width;
|
|
164
|
-
const height = source.height ?? props.height;
|
|
165
|
-
style = [{width, height}, styles.base, props.style];
|
|
166
|
-
sources = [source];
|
|
160
|
+
let style: ImageStyleProp;
|
|
161
|
+
let sources;
|
|
162
|
+
if (Array.isArray(source)) {
|
|
163
|
+
style = [styles.base, props.style];
|
|
164
|
+
sources = source;
|
|
165
|
+
} else {
|
|
166
|
+
const {uri} = source;
|
|
167
|
+
if (uri === '') {
|
|
168
|
+
console.warn('source.uri should not be an empty string');
|
|
167
169
|
}
|
|
170
|
+
const width = source.width ?? props.width;
|
|
171
|
+
const height = source.height ?? props.height;
|
|
172
|
+
style = [{width, height}, styles.base, props.style];
|
|
173
|
+
sources = [source];
|
|
174
|
+
}
|
|
168
175
|
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
const flattenedStyle = flattenStyle<ImageStyleProp>(style);
|
|
201
|
-
const objectFit = convertObjectFitToResizeMode(flattenedStyle?.objectFit);
|
|
202
|
-
const resizeMode =
|
|
203
|
-
objectFit || props.resizeMode || flattenedStyle?.resizeMode || 'cover';
|
|
176
|
+
const {onLoadStart, onLoad, onLoadEnd, onError} = props;
|
|
177
|
+
const nativeProps = {
|
|
178
|
+
...props,
|
|
179
|
+
style,
|
|
180
|
+
shouldNotifyLoadEvents: !!(onLoadStart || onLoad || onLoadEnd || onError),
|
|
181
|
+
// Both iOS and C++ sides expect to have "source" prop, whereas on Android it's "src"
|
|
182
|
+
// (for historical reasons). So in the latter case we populate both "src" and "source",
|
|
183
|
+
// in order to have a better alignment between platforms in the future.
|
|
184
|
+
src: sources,
|
|
185
|
+
source: sources,
|
|
186
|
+
/* $FlowFixMe(>=0.78.0 site=react_native_android_fb) This issue was found
|
|
187
|
+
* when making Flow check .android.js files. */
|
|
188
|
+
headers: (source?.[0]?.headers || source?.headers: ?{[string]: string}),
|
|
189
|
+
defaultSource: defaultSource ? defaultSource.uri : null,
|
|
190
|
+
loadingIndicatorSrc: loadingIndicatorSource
|
|
191
|
+
? loadingIndicatorSource.uri
|
|
192
|
+
: null,
|
|
193
|
+
accessibilityLabel:
|
|
194
|
+
props['aria-label'] ?? props.accessibilityLabel ?? props.alt,
|
|
195
|
+
accessibilityLabelledBy:
|
|
196
|
+
props?.['aria-labelledby'] ?? props?.accessibilityLabelledBy,
|
|
197
|
+
accessible: props.alt !== undefined ? true : props.accessible,
|
|
198
|
+
accessibilityState: {
|
|
199
|
+
busy: props['aria-busy'] ?? props.accessibilityState?.busy,
|
|
200
|
+
checked: props['aria-checked'] ?? props.accessibilityState?.checked,
|
|
201
|
+
disabled: props['aria-disabled'] ?? props.accessibilityState?.disabled,
|
|
202
|
+
expanded: props['aria-expanded'] ?? props.accessibilityState?.expanded,
|
|
203
|
+
selected: props['aria-selected'] ?? props.accessibilityState?.selected,
|
|
204
|
+
},
|
|
205
|
+
};
|
|
204
206
|
|
|
205
|
-
|
|
207
|
+
const flattenedStyle = flattenStyle<ImageStyleProp>(style);
|
|
208
|
+
const objectFit = convertObjectFitToResizeMode(flattenedStyle?.objectFit);
|
|
209
|
+
const resizeMode =
|
|
210
|
+
objectFit || props.resizeMode || flattenedStyle?.resizeMode || 'cover';
|
|
206
211
|
|
|
207
|
-
|
|
208
|
-
<ImageAnalyticsTagContext.Consumer>
|
|
209
|
-
{analyticTag => {
|
|
210
|
-
const nativePropsWithAnalytics =
|
|
211
|
-
analyticTag !== null
|
|
212
|
-
? {
|
|
213
|
-
...nativeProps,
|
|
214
|
-
internal_analyticTag: analyticTag,
|
|
215
|
-
}
|
|
216
|
-
: nativeProps;
|
|
217
|
-
return (
|
|
218
|
-
<TextAncestor.Consumer>
|
|
219
|
-
{hasTextAncestor => {
|
|
220
|
-
if (hasTextAncestor) {
|
|
221
|
-
return (
|
|
222
|
-
<TextInlineImageNativeComponent
|
|
223
|
-
// $FlowFixMe[incompatible-type]
|
|
224
|
-
style={style}
|
|
225
|
-
resizeMode={resizeMode}
|
|
226
|
-
headers={nativeProps.headers}
|
|
227
|
-
src={sources}
|
|
228
|
-
ref={actualRef}
|
|
229
|
-
/>
|
|
230
|
-
);
|
|
231
|
-
}
|
|
212
|
+
const actualRef = useWrapRefWithImageAttachedCallbacks(forwardedRef);
|
|
232
213
|
|
|
214
|
+
return (
|
|
215
|
+
<ImageAnalyticsTagContext.Consumer>
|
|
216
|
+
{analyticTag => {
|
|
217
|
+
const nativePropsWithAnalytics =
|
|
218
|
+
analyticTag !== null
|
|
219
|
+
? {
|
|
220
|
+
...nativeProps,
|
|
221
|
+
internal_analyticTag: analyticTag,
|
|
222
|
+
}
|
|
223
|
+
: nativeProps;
|
|
224
|
+
return (
|
|
225
|
+
<TextAncestor.Consumer>
|
|
226
|
+
{hasTextAncestor => {
|
|
227
|
+
if (hasTextAncestor) {
|
|
233
228
|
return (
|
|
234
|
-
<
|
|
235
|
-
|
|
229
|
+
<TextInlineImageNativeComponent
|
|
230
|
+
// $FlowFixMe[incompatible-type]
|
|
231
|
+
style={style}
|
|
236
232
|
resizeMode={resizeMode}
|
|
233
|
+
headers={nativeProps.headers}
|
|
234
|
+
src={sources}
|
|
237
235
|
ref={actualRef}
|
|
238
236
|
/>
|
|
239
237
|
);
|
|
240
|
-
}
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
return (
|
|
241
|
+
<ImageViewNativeComponent
|
|
242
|
+
{...nativePropsWithAnalytics}
|
|
243
|
+
resizeMode={resizeMode}
|
|
244
|
+
ref={actualRef}
|
|
245
|
+
/>
|
|
246
|
+
);
|
|
247
|
+
}}
|
|
248
|
+
</TextAncestor.Consumer>
|
|
249
|
+
);
|
|
250
|
+
}}
|
|
251
|
+
</ImageAnalyticsTagContext.Consumer>
|
|
252
|
+
);
|
|
253
|
+
};
|
|
248
254
|
|
|
249
255
|
const imageComponentDecorator = unstable_getImageComponentDecorator();
|
|
250
256
|
if (imageComponentDecorator != null) {
|
|
@@ -8,8 +8,10 @@
|
|
|
8
8
|
* @format
|
|
9
9
|
*/
|
|
10
10
|
|
|
11
|
+
import type {HostInstance} from '../../src/private/types/HostInstance';
|
|
11
12
|
import type {ImageStyleProp} from '../StyleSheet/StyleSheet';
|
|
12
13
|
import type {RootTag} from '../Types/RootTagTypes';
|
|
14
|
+
import type {ImageProps} from './ImageProps';
|
|
13
15
|
import type {AbstractImageIOS, ImageIOS} from './ImageTypes.flow';
|
|
14
16
|
import type {ImageSize} from './NativeImageLoaderAndroid';
|
|
15
17
|
|
|
@@ -105,7 +107,13 @@ async function queryCache(
|
|
|
105
107
|
*
|
|
106
108
|
* See https://reactnative.dev/docs/image
|
|
107
109
|
*/
|
|
108
|
-
let BaseImage: AbstractImageIOS =
|
|
110
|
+
let BaseImage: AbstractImageIOS = ({
|
|
111
|
+
ref: forwardedRef,
|
|
112
|
+
...props
|
|
113
|
+
}: {
|
|
114
|
+
ref?: React.RefSetter<HostInstance>,
|
|
115
|
+
...ImageProps,
|
|
116
|
+
}) => {
|
|
109
117
|
const source = getImageSourcesFromImageProps(props) || {
|
|
110
118
|
uri: undefined,
|
|
111
119
|
width: undefined,
|
|
@@ -180,7 +188,7 @@ let BaseImage: AbstractImageIOS = React.forwardRef((props, forwardedRef) => {
|
|
|
180
188
|
}}
|
|
181
189
|
</ImageAnalyticsTagContext.Consumer>
|
|
182
190
|
);
|
|
183
|
-
}
|
|
191
|
+
};
|
|
184
192
|
|
|
185
193
|
const imageComponentDecorator = unstable_getImageComponentDecorator();
|
|
186
194
|
if (imageComponentDecorator != null) {
|