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
|
@@ -228,9 +228,15 @@ class TouchableBounce extends React.Component<
|
|
|
228
228
|
}
|
|
229
229
|
}
|
|
230
230
|
|
|
231
|
-
export default (
|
|
232
|
-
|
|
233
|
-
|
|
231
|
+
export default (function TouchableBounceWrapper({
|
|
232
|
+
ref: hostRef,
|
|
233
|
+
...props
|
|
234
|
+
}: {
|
|
235
|
+
ref: React.RefSetter<mixed>,
|
|
236
|
+
...$ReadOnly<Omit<TouchableBounceProps, 'hostRef'>>,
|
|
237
|
+
}) {
|
|
238
|
+
return <TouchableBounce {...props} hostRef={hostRef} />;
|
|
239
|
+
} as component(
|
|
234
240
|
ref: React.RefSetter<mixed>,
|
|
235
241
|
...props: $ReadOnly<Omit<TouchableBounceProps, 'hostRef'>>
|
|
236
242
|
));
|
|
@@ -19,6 +19,7 @@ import {PressabilityDebugView} from '../../Pressability/PressabilityDebug';
|
|
|
19
19
|
import StyleSheet, {type ViewStyleProp} from '../../StyleSheet/StyleSheet';
|
|
20
20
|
import Platform from '../../Utilities/Platform';
|
|
21
21
|
import * as React from 'react';
|
|
22
|
+
import {cloneElement} from 'react';
|
|
22
23
|
|
|
23
24
|
type AndroidProps = $ReadOnly<{
|
|
24
25
|
nextFocusDown?: ?number,
|
|
@@ -371,7 +372,7 @@ class TouchableHighlightImpl extends React.Component<
|
|
|
371
372
|
testID={this.props.testID}
|
|
372
373
|
ref={this.props.hostRef}
|
|
373
374
|
{...eventHandlersWithoutBlurAndFocus}>
|
|
374
|
-
{
|
|
375
|
+
{cloneElement(child, {
|
|
375
376
|
style: StyleSheet.compose(
|
|
376
377
|
child.props.style,
|
|
377
378
|
this.state.extraStyles?.child,
|
|
@@ -408,9 +409,13 @@ class TouchableHighlightImpl extends React.Component<
|
|
|
408
409
|
const TouchableHighlight: component(
|
|
409
410
|
ref?: React.RefSetter<React.ElementRef<typeof View>>,
|
|
410
411
|
...props: $ReadOnly<Omit<TouchableHighlightProps, 'hostRef'>>
|
|
411
|
-
) =
|
|
412
|
-
|
|
413
|
-
|
|
412
|
+
) = ({
|
|
413
|
+
ref: hostRef,
|
|
414
|
+
...props
|
|
415
|
+
}: {
|
|
416
|
+
ref?: React.RefSetter<React.ElementRef<typeof View>>,
|
|
417
|
+
...$ReadOnly<Omit<TouchableHighlightProps, 'hostRef'>>,
|
|
418
|
+
}) => <TouchableHighlightImpl {...props} hostRef={hostRef} />;
|
|
414
419
|
|
|
415
420
|
TouchableHighlight.displayName = 'TouchableHighlight';
|
|
416
421
|
|
|
@@ -19,6 +19,7 @@ import {PressabilityDebugView} from '../../Pressability/PressabilityDebug';
|
|
|
19
19
|
import StyleSheet, {type ViewStyleProp} from '../../StyleSheet/StyleSheet';
|
|
20
20
|
import Platform from '../../Utilities/Platform';
|
|
21
21
|
import * as React from 'react';
|
|
22
|
+
import {cloneElement} from 'react';
|
|
22
23
|
|
|
23
24
|
type AndroidProps = $ReadOnly<{
|
|
24
25
|
nextFocusDown?: ?number,
|
|
@@ -396,7 +397,7 @@ class TouchableHighlightImpl extends React.Component<
|
|
|
396
397
|
onMouseEnter={this.props.onMouseEnter} // [Windows]
|
|
397
398
|
onMouseLeave={this.props.onMouseLeave} // [Windows]
|
|
398
399
|
{...eventHandlersWithoutBlurAndFocus}>
|
|
399
|
-
{
|
|
400
|
+
{cloneElement(child, {
|
|
400
401
|
style: StyleSheet.compose(
|
|
401
402
|
child.props.style,
|
|
402
403
|
this.state.extraStyles?.child,
|
|
@@ -433,9 +434,13 @@ class TouchableHighlightImpl extends React.Component<
|
|
|
433
434
|
const TouchableHighlight: component(
|
|
434
435
|
ref?: React.RefSetter<React.ElementRef<typeof View>>,
|
|
435
436
|
...props: $ReadOnly<Omit<TouchableHighlightProps, 'hostRef'>>
|
|
436
|
-
) =
|
|
437
|
-
|
|
438
|
-
|
|
437
|
+
) = ({
|
|
438
|
+
ref: hostRef,
|
|
439
|
+
...props
|
|
440
|
+
}: {
|
|
441
|
+
ref?: React.RefSetter<React.ElementRef<typeof View>>,
|
|
442
|
+
...$ReadOnly<Omit<TouchableHighlightProps, 'hostRef'>>,
|
|
443
|
+
}) => <TouchableHighlightImpl {...props} hostRef={hostRef} />;
|
|
439
444
|
|
|
440
445
|
TouchableHighlight.displayName = 'TouchableHighlight';
|
|
441
446
|
|
|
@@ -22,6 +22,7 @@ import Platform from '../../Utilities/Platform';
|
|
|
22
22
|
import {Commands} from '../View/ViewNativeComponent';
|
|
23
23
|
import invariant from 'invariant';
|
|
24
24
|
import * as React from 'react';
|
|
25
|
+
import {cloneElement} from 'react';
|
|
25
26
|
|
|
26
27
|
type TVProps = {
|
|
27
28
|
/**
|
|
@@ -334,7 +335,7 @@ class TouchableNativeFeedback extends React.Component<
|
|
|
334
335
|
|
|
335
336
|
const accessibilityLabel =
|
|
336
337
|
this.props['aria-label'] ?? this.props.accessibilityLabel;
|
|
337
|
-
return
|
|
338
|
+
return cloneElement(
|
|
338
339
|
element,
|
|
339
340
|
{
|
|
340
341
|
...eventHandlersWithoutBlurAndFocus,
|
|
@@ -22,6 +22,7 @@ import Platform from '../../Utilities/Platform';
|
|
|
22
22
|
import {Commands} from '../View/ViewNativeComponent';
|
|
23
23
|
import invariant from 'invariant';
|
|
24
24
|
import * as React from 'react';
|
|
25
|
+
import {cloneElement} from 'react';
|
|
25
26
|
|
|
26
27
|
type TVProps = {
|
|
27
28
|
/**
|
|
@@ -341,7 +342,7 @@ class TouchableNativeFeedback extends React.Component<
|
|
|
341
342
|
|
|
342
343
|
const accessibilityLabel =
|
|
343
344
|
this.props['aria-label'] ?? this.props.accessibilityLabel;
|
|
344
|
-
return
|
|
345
|
+
return cloneElement(
|
|
345
346
|
element,
|
|
346
347
|
{
|
|
347
348
|
...eventHandlersWithoutBlurAndFocus,
|
|
@@ -379,9 +379,13 @@ class TouchableOpacity extends React.Component<
|
|
|
379
379
|
const Touchable: component(
|
|
380
380
|
ref?: React.RefSetter<React.ElementRef<typeof Animated.View>>,
|
|
381
381
|
...props: TouchableOpacityProps
|
|
382
|
-
) =
|
|
383
|
-
|
|
384
|
-
|
|
382
|
+
) = ({
|
|
383
|
+
ref,
|
|
384
|
+
...props
|
|
385
|
+
}: {
|
|
386
|
+
ref?: React.RefSetter<React.ElementRef<typeof Animated.View>>,
|
|
387
|
+
...TouchableOpacityProps,
|
|
388
|
+
}) => <TouchableOpacity {...props} hostRef={ref} />;
|
|
385
389
|
|
|
386
390
|
Touchable.displayName = 'TouchableOpacity';
|
|
387
391
|
|
|
@@ -401,9 +401,13 @@ class TouchableOpacity extends React.Component<
|
|
|
401
401
|
const Touchable: component(
|
|
402
402
|
ref?: React.RefSetter<React.ElementRef<typeof Animated.View>>,
|
|
403
403
|
...props: TouchableOpacityProps
|
|
404
|
-
) =
|
|
405
|
-
|
|
406
|
-
|
|
404
|
+
) = ({
|
|
405
|
+
ref,
|
|
406
|
+
...props
|
|
407
|
+
}: {
|
|
408
|
+
ref?: React.RefSetter<React.ElementRef<typeof Animated.View>>,
|
|
409
|
+
...TouchableOpacityProps,
|
|
410
|
+
}) => <TouchableOpacity {...props} hostRef={ref} />;
|
|
407
411
|
|
|
408
412
|
Touchable.displayName = 'TouchableOpacity';
|
|
409
413
|
|
|
@@ -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
|
}
|
|
@@ -24,7 +24,7 @@ import {PressabilityDebugView} from '../../Pressability/PressabilityDebug';
|
|
|
24
24
|
import usePressability from '../../Pressability/usePressability';
|
|
25
25
|
import {type ViewStyleProp} from '../../StyleSheet/StyleSheet';
|
|
26
26
|
import * as React from 'react';
|
|
27
|
-
import {useMemo} from 'react';
|
|
27
|
+
import {cloneElement, useMemo} from 'react';
|
|
28
28
|
import Animated from '../../Animated/Animated'; // Windows
|
|
29
29
|
|
|
30
30
|
export type TouchableWithoutFeedbackPropsIOS = {};
|
|
@@ -323,7 +323,7 @@ const TouchableWithoutFeedback: React.AbstractComponent<
|
|
|
323
323
|
}
|
|
324
324
|
|
|
325
325
|
// $FlowFixMe[incompatible-call]
|
|
326
|
-
return
|
|
326
|
+
return cloneElement(element, {...elementProps, ref}, ...children);
|
|
327
327
|
});
|
|
328
328
|
|
|
329
329
|
export default TouchableWithoutFeedback;
|
|
@@ -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;
|