diff --git a/packages/@office-iss/react-native-win32-tester/overrides.json b/packages/@office-iss/react-native-win32-tester/overrides.json index a644b8f2f4d..a9969ff1966 100644 --- a/packages/@office-iss/react-native-win32-tester/overrides.json +++ b/packages/@office-iss/react-native-win32-tester/overrides.json @@ -5,13 +5,13 @@ "excludePatterns": [ "src/js/examples-win32/**" ], - "baseVersion": "0.81.0-nightly-20250709-6892dde36", + "baseVersion": "0.82.0-nightly-20250819-25104de5c", "overrides": [ { "type": "patch", "file": "src/js/components/ListExampleShared.win32.js", "baseFile": "packages/rn-tester/js/components/ListExampleShared.js", - "baseHash": "885ca16a7587f79d6404679ee1b1309d3844afe9" + "baseHash": "5eddedbaff0a785757713beb25750aac98e40fcb" }, { "type": "patch", @@ -42,7 +42,7 @@ "type": "derived", "file": "src/js/utils/RNTesterList.win32.js", "baseFile": "packages/rn-tester/js/utils/RNTesterList.android.js", - "baseHash": "c89e65c8063b338c86ec9db173b05b96c589f69e" + "baseHash": "8cd219abae140e98f9578432954fc9ef62421308" } ] } \ No newline at end of file diff --git a/packages/@office-iss/react-native-win32-tester/package.json b/packages/@office-iss/react-native-win32-tester/package.json index f974cfe4bed..a081ba272f3 100644 --- a/packages/@office-iss/react-native-win32-tester/package.json +++ b/packages/@office-iss/react-native-win32-tester/package.json @@ -30,7 +30,7 @@ "@types/node": "^22.14.0", "eslint": "^8.19.0", "just-scripts": "^1.3.3", - "react-native": "0.81.0-nightly-20250709-6892dde36", + "react-native": "0.82.0-nightly-20250819-25104de5c", "react-native-platform-override": "^1.9.59", "typescript": "5.0.4" }, diff --git a/packages/@office-iss/react-native-win32-tester/src/js/components/ListExampleShared.win32.js b/packages/@office-iss/react-native-win32-tester/src/js/components/ListExampleShared.win32.js index bc4c81c3e0f..efc5ef91680 100644 --- a/packages/@office-iss/react-native-win32-tester/src/js/components/ListExampleShared.win32.js +++ b/packages/@office-iss/react-native-win32-tester/src/js/components/ListExampleShared.win32.js @@ -171,7 +171,7 @@ const LoadingComponent: React.ComponentType<{}> = memo(() => ( )); -class ItemSeparatorComponent extends React.PureComponent<$FlowFixMeProps> { +class ItemSeparatorComponent extends React.PureComponent<$FlowFixMe> { render(): React.Node { const style = this.props.highlighted ? [ @@ -183,7 +183,7 @@ class ItemSeparatorComponent extends React.PureComponent<$FlowFixMeProps> { } } -class Spindicator extends React.PureComponent<$FlowFixMeProps> { +class Spindicator extends React.PureComponent<$FlowFixMe> { render(): React.Node { return ( = [ /*{ @@ -154,12 +153,15 @@ const Components: Array = [ category: 'Basic', module: require('../examples/Performance/PerformanceComparisonExample'), }, +<<<<<<< Upstream +======= /* { key: 'OSSLibraryExample', module: require('../examples/OSSLibraryExample/OSSLibraryExample'), }, */ +>>>>>>> Override ...RNTesterListFbInternal.Components, ]; @@ -374,14 +376,6 @@ const APIs: Array = ([ ...RNTesterListFbInternal.APIs, ]: Array).filter(Boolean); -if (ReactNativeFeatureFlags.shouldEmitW3CPointerEvents()) { - APIs.push({ - key: 'W3C PointerEvents', - category: 'Experimental', - module: require('../examples/Experimental/W3CPointerEventsExample').default, - }); -} - const Playgrounds: Array = [ { key: 'PlaygroundExample', diff --git a/packages/@office-iss/react-native-win32/.flowconfig b/packages/@office-iss/react-native-win32/.flowconfig index 29f567c3166..874205b98de 100644 --- a/packages/@office-iss/react-native-win32/.flowconfig +++ b/packages/@office-iss/react-native-win32/.flowconfig @@ -149,11 +149,8 @@ module.system.haste.module_ref_prefix=m# react.runtime=automatic -suppress_type=$FlowIssue +experimental.error_code_migration=new suppress_type=$FlowFixMe -suppress_type=$FlowFixMeProps -suppress_type=$FlowFixMeState -suppress_type=$FlowFixMeEmpty ban_spread_key_props=true @@ -180,4 +177,8 @@ untyped-import untyped-type-import [version] +<<<<<<< Upstream +^0.279.0 +======= ^0.274.2 +>>>>>>> Override diff --git a/packages/@office-iss/react-native-win32/overrides.json b/packages/@office-iss/react-native-win32/overrides.json index 2cbc30d4ff9..c21fd9d890f 100644 --- a/packages/@office-iss/react-native-win32/overrides.json +++ b/packages/@office-iss/react-native-win32/overrides.json @@ -7,19 +7,19 @@ "**/__snapshots__/**", "src-win/rntypes/**" ], - "baseVersion": "0.81.0-nightly-20250709-6892dde36", + "baseVersion": "0.82.0-nightly-20250819-25104de5c", "overrides": [ { "type": "derived", "file": ".flowconfig", "baseFile": ".flowconfig", - "baseHash": "a5a50b87e779ba343919454cb5f7c1e77c2db982" + "baseHash": "85187f6c2ae01185505e2dc8d14587e9e887e519" }, { "type": "derived", "file": "src-win/index.win32.js", "baseFile": "packages/react-native/index.js", - "baseHash": "c5d0dfd40d0fb7c197790b1f23f4f8b9ca835047" + "baseHash": "88aa62f2d86a810631bcbc871f45c28c53fceec7" }, { "type": "platform", @@ -41,7 +41,7 @@ "type": "derived", "file": "src-win/Libraries/Components/AccessibilityInfo/AccessibilityInfo.win32.js", "baseFile": "packages/react-native/Libraries/Components/AccessibilityInfo/AccessibilityInfo.js", - "baseHash": "5a43c9cf537c5cb89e7f634e45be708f4b021493" + "baseHash": "b77b87e32a86265a3c8c29ebbbee46558596aec8" }, { "type": "copy", @@ -60,7 +60,7 @@ "type": "derived", "file": "src-win/Libraries/Components/Button.win32.js", "baseFile": "packages/react-native/Libraries/Components/Button.js", - "baseHash": "5b293a6dbfdf16309c7cbfe71d61f143fa9fa2a2" + "baseHash": "26d3afc77f82939021f848eb8185b3b441fb3c7d" }, { "type": "platform", @@ -85,7 +85,7 @@ "type": "patch", "file": "src-win/Libraries/Components/Pressable/Pressable.win32.js", "baseFile": "packages/react-native/Libraries/Components/Pressable/Pressable.js", - "baseHash": "5909b509ee835f2b6eb0dbd3e223180efe602f98", + "baseHash": "08a6e1c0dd895af70ea1c8448a3be028d9cd2587", "issue": 6240 }, { @@ -114,7 +114,7 @@ "type": "derived", "file": "src-win/Libraries/Components/TextInput/TextInput.win32.js", "baseFile": "packages/react-native/Libraries/Components/TextInput/TextInput.js", - "baseHash": "b6289ef53abc941f6f0aed50f80d3852b6682215" + "baseHash": "ed5d48ce62056182bf81dfa2d22d511d611d5201" }, { "type": "patch", @@ -153,7 +153,7 @@ "type": "derived", "file": "src-win/Libraries/Components/Touchable/TouchableNativeFeedback.win32.js", "baseFile": "packages/react-native/Libraries/Components/Touchable/TouchableNativeFeedback.js", - "baseHash": "5608d67cf2684b855fb32403fea01b8c22c66f3b" + "baseHash": "2ded2efb727d7544aa8a0b249dd3f2502bb57129" }, { "type": "platform", @@ -177,7 +177,7 @@ "type": "patch", "file": "src-win/Libraries/Components/View/View.win32.js", "baseFile": "packages/react-native/Libraries/Components/View/View.js", - "baseHash": "83a4fc8e982845619abb121bb860ad63366260c7" + "baseHash": "60eab5df574b43200494005fc3f00d11576d515b" }, { "type": "derived", @@ -218,7 +218,7 @@ "type": "patch", "file": "src-win/Libraries/Core/Devtools/loadBundleFromServer.win32.js", "baseFile": "packages/react-native/Libraries/Core/Devtools/loadBundleFromServer.js", - "baseHash": "ac08c96a4bebd677597a40ea1525a2d5d1ee8742", + "baseHash": "5177ecc736e9bebd4e798dcc2c6dd19c38b0a937", "issue": 12704 }, { @@ -309,7 +309,7 @@ "type": "derived", "file": "src-win/Libraries/LogBox/UI/LogBoxInspectorSourceMapStatus.win32.js", "baseFile": "packages/react-native/Libraries/LogBox/UI/LogBoxInspectorSourceMapStatus.js", - "baseHash": "987653809d7838bb80d3a975abc9f0fd3bc13d93" + "baseHash": "ccbfc8413dc7bd26eb7bc9726b273f1cf23b1c70" }, { "type": "derived", @@ -335,7 +335,7 @@ "type": "copy", "file": "src-win/Libraries/Network/RCTNetworking.win32.js", "baseFile": "packages/react-native/Libraries/Network/RCTNetworking.ios.js", - "baseHash": "975cb78ed40d162be73144bafcaee9bcd057bd44", + "baseHash": "1c7dcc3e3cf7339c3450e7722b7b0a355266a001", "issue": 4318 }, { @@ -365,7 +365,7 @@ "type": "patch", "file": "src-win/Libraries/Pressability/Pressability.win32.js", "baseFile": "packages/react-native/Libraries/Pressability/Pressability.js", - "baseHash": "54f2a508c9378c1d9240ff27a460a8815e2b8ebd", + "baseHash": "a4205b3bea276e65da3ce0aeb6753bc8e7c5ead0", "issue": 6240 }, { @@ -425,13 +425,13 @@ "type": "derived", "file": "src-win/Libraries/Text/Text.win32.js", "baseFile": "packages/react-native/Libraries/Text/Text.js", - "baseHash": "fb6f5390b49eb22085ac1618becde3a5208ba167" + "baseHash": "14367e55fca8889783f7dea94ec2c09205960c3c" }, { "type": "derived", "file": "src-win/Libraries/Text/TextNativeComponent.win32.js", "baseFile": "packages/react-native/Libraries/Text/TextNativeComponent.js", - "baseHash": "4af82705ca22b281344c1e7f0c7b06b6fc3264c5", + "baseHash": "259a625b5f7cf3a70ecd4af6388d82d47f446e50", "issue": 7074 }, { @@ -478,26 +478,26 @@ "type": "derived", "file": "src-win/Libraries/Utilities/Platform.win32.js", "baseFile": "packages/react-native/Libraries/Utilities/Platform.android.js", - "baseHash": "d3c78d9d5e43a65ec67505b84a1f25f1647530c8" + "baseHash": "6497ec623691b34885e226e4d05bc55ba582a135" }, { "type": "patch", "file": "src-win/Libraries/Utilities/PlatformTypes.js", "baseFile": "packages/react-native/Libraries/Utilities/PlatformTypes.js", - "baseHash": "c2f607691db07cf1d43c42d048e8513b5515757b", + "baseHash": "f4859039e2bf991ff60d38308c25456ec752191f", "issue": 14686 }, { "type": "copy", "file": "src-win/Libraries/Utilities/useMergeRefs.js", "baseFile": "packages/react-native/Libraries/Utilities/useMergeRefs.js", - "baseHash": "4ba42e1b43ef55a1a9e3095336979fa712f4dc8d" + "baseHash": "4ab145e150c82f4f82547122896e02f45103d1a1" }, { "type": "patch", "file": "src-win/src/private/animated/NativeAnimatedHelper.win32.js", "baseFile": "packages/react-native/src/private/animated/NativeAnimatedHelper.js", - "baseHash": "8ed20ecc1b2a1967539fee0d53a47f25432746f4", + "baseHash": "c3fdc3d1e9879c6fe03a1a5caad7b02b386ddcde", "issue": 11041 }, { diff --git a/packages/@office-iss/react-native-win32/package.json b/packages/@office-iss/react-native-win32/package.json index 895fcf17e14..6f07cb33fe4 100644 --- a/packages/@office-iss/react-native-win32/package.json +++ b/packages/@office-iss/react-native-win32/package.json @@ -88,7 +88,7 @@ "just-scripts": "^1.3.3", "prettier": "2.8.8", "react": "19.1.0", - "react-native": "0.81.0-nightly-20250709-6892dde36", + "react-native": "0.82.0-nightly-20250819-25104de5c", "react-native-platform-override": "^1.9.59", "typescript": "5.0.4" }, diff --git a/packages/@office-iss/react-native-win32/src-win/Libraries/Components/AccessibilityInfo/AccessibilityInfo.win32.js b/packages/@office-iss/react-native-win32/src-win/Libraries/Components/AccessibilityInfo/AccessibilityInfo.win32.js index dbf81afa5b4..efd8dc05ee3 100644 --- a/packages/@office-iss/react-native-win32/src-win/Libraries/Components/AccessibilityInfo/AccessibilityInfo.win32.js +++ b/packages/@office-iss/react-native-win32/src-win/Libraries/Components/AccessibilityInfo/AccessibilityInfo.win32.js @@ -420,13 +420,13 @@ const AccessibilityInfo = { */ addEventListener>( eventName: K, - // $FlowIssue[incompatible-type] - Flow bug with unions and generics (T128099423) + // $FlowFixMe[incompatible-type] - Flow bug with unions and generics (T128099423) handler: (...AccessibilityEventDefinitions[K]) => void, ): EventSubscription { const deviceEventName = EventNames.get(eventName); return deviceEventName == null ? {remove(): void {}} - : // $FlowFixMe[incompatible-call] + : // $FlowFixMe[incompatible-type] RCTDeviceEventEmitter.addListener(deviceEventName, handler); }, diff --git a/packages/@office-iss/react-native-win32/src-win/Libraries/Components/Button.win32.js b/packages/@office-iss/react-native-win32/src-win/Libraries/Components/Button.win32.js index a25656e26bc..12afdda284b 100644 --- a/packages/@office-iss/react-native-win32/src-win/Libraries/Components/Button.win32.js +++ b/packages/@office-iss/react-native-win32/src-win/Libraries/Components/Button.win32.js @@ -394,7 +394,7 @@ const Button: component( touchSoundDisabled={touchSoundDisabled} // $FlowFixMe[incompatible-exact] // $FlowFixMe[prop-missing] - // $FlowFixMe[incompatible-type-arg] + // $FlowFixMe[incompatible-type] ref={ref}> diff --git a/packages/@office-iss/react-native-win32/src-win/Libraries/Components/Pressable/Pressable.win32.js b/packages/@office-iss/react-native-win32/src-win/Libraries/Components/Pressable/Pressable.win32.js index bee84749615..2439a22fc13 100644 --- a/packages/@office-iss/react-native-win32/src-win/Libraries/Components/Pressable/Pressable.win32.js +++ b/packages/@office-iss/react-native-win32/src-win/Libraries/Components/Pressable/Pressable.win32.js @@ -123,6 +123,12 @@ type PressableBaseProps = $ReadOnly<{ onPressOut?: ?(event: GestureResponderEvent) => mixed, /** +<<<<<<< Upstream + * Whether to prevent any other native components from becoming responder + * while this pressable is responder. + */ + blockNativeResponder?: ?boolean, +======= * Called after the element loses focus. */ onBlur?: ?(event: BlurEvent) => mixed, @@ -161,6 +167,7 @@ type PressableBaseProps = $ReadOnly<{ * Called in the tunneling phase after a key up event is detected. */ onKeyUpCapture?: ?(event: KeyEvent) => void, +>>>>>>> Override /** * Either view styles or a function that receives a boolean reflecting whether @@ -231,6 +238,7 @@ function Pressable({ 'aria-multiselectable': ariaMultiselectable, // Win32 'aria-required': ariaRequired, // Win32 'aria-selected': ariaSelected, + blockNativeResponder, cancelable, children, delayHoverIn, @@ -290,7 +298,7 @@ function Pressable({ }; const accessibilityLiveRegion = - ariaLive === 'off' ? 'none' : ariaLive ?? props.accessibilityLiveRegion; + ariaLive === 'off' ? 'none' : (ariaLive ?? props.accessibilityLiveRegion); const accessibilityLabel = ariaLabel ?? props.accessibilityLabel; const restPropsWithDefaults: React.ElementConfig = { @@ -348,14 +356,19 @@ function Pressable({ onPressOut(event); } }, +<<<<<<< Upstream + blockNativeResponder, +======= // [Windows onKeyDown, onKeyUp, // Windows] +>>>>>>> Override }), [ android_disableSound, android_rippleConfig, + blockNativeResponder, cancelable, delayHoverIn, delayHoverOut, diff --git a/packages/@office-iss/react-native-win32/src-win/Libraries/Components/TextInput/TextInput.win32.js b/packages/@office-iss/react-native-win32/src-win/Libraries/Components/TextInput/TextInput.win32.js index 972f6b7b6b4..7a92e4b24b7 100644 --- a/packages/@office-iss/react-native-win32/src-win/Libraries/Components/TextInput/TextInput.win32.js +++ b/packages/@office-iss/react-native-win32/src-win/Libraries/Components/TextInput/TextInput.win32.js @@ -508,7 +508,7 @@ function InternalTextInput(props: TextInputProps): React.Node { [mostRecentEventCount, viewCommands], ); - // $FlowExpectedError[incompatible-call] + // $FlowExpectedError[incompatible-type] const ref = useMergeRefs(setLocalRef, props.forwardedRef); const _onChange = (event: TextInputChangeEvent) => { @@ -721,6 +721,9 @@ function InternalTextInput(props: TextInputProps): React.Node { props.onKeyUpCapture && props.onKeyUpCapture(event); }; + const _accessibilityLabel = + props?.['aria-label'] ?? props?.accessibilityLabel; + let _accessibilityState; if ( accessibilityState != null || @@ -752,7 +755,7 @@ function InternalTextInput(props: TextInputProps): React.Node { if (typeof flattenedStyle?.fontWeight === 'number') { overrides = overrides || ({}: {...TextStyleInternal}); overrides.fontWeight = - // $FlowFixMe[incompatible-cast] + // $FlowFixMe[incompatible-type] (flattenedStyle.fontWeight.toString(): TextStyleInternal['fontWeight']); } @@ -789,7 +792,11 @@ function InternalTextInput(props: TextInputProps): React.Node { {...otherProps} {...eventHandlers} acceptDragAndDropTypes={props.experimental_acceptDragAndDropTypes} +<<<<<<< Upstream + accessibilityLabel={_accessibilityLabel} +======= accessibilityErrorMessage={accessibilityErrorMessage} +>>>>>>> Override accessibilityState={_accessibilityState} accessible={accessible} submitBehavior={submitBehavior} @@ -853,9 +860,14 @@ function InternalTextInput(props: TextInputProps): React.Node { {...otherProps} {...colorProps} {...eventHandlers} +<<<<<<< Upstream + accessibilityLabel={_accessibilityLabel} +======= accessibilityErrorMessage={accessibilityErrorMessage} accessibilityState={_accessibilityState} +>>>>>>> Override accessibilityLabelledBy={_accessibilityLabelledBy} + accessibilityState={_accessibilityState} accessible={accessible} acceptDragAndDropTypes={props.experimental_acceptDragAndDropTypes} autoCapitalize={autoCapitalize} @@ -873,7 +885,7 @@ function InternalTextInput(props: TextInputProps): React.Node { /* $FlowFixMe[prop-missing] the types for AndroidTextInput don't match * up exactly with the props for TextInput. This will need to get fixed */ - /* $FlowFixMe[incompatible-type-arg] the types for AndroidTextInput + /* $FlowFixMe[incompatible-type] the types for AndroidTextInput * don't match up exactly with the props for TextInput. This will need * to get fixed */ onScroll={_onScroll} @@ -1051,9 +1063,16 @@ const TextInput: component( } autoComplete={ Platform.OS === 'android' +<<<<<<< Upstream + ? // $FlowFixMe[invalid-computed-prop] + // $FlowFixMe[prop-missing] + (autoCompleteWebToAutoCompleteAndroidMap[autoComplete] ?? + autoComplete) +======= ? // $FlowFixMe autoCompleteWebToAutoCompleteAndroidMap[autoComplete] ?? autoComplete +>>>>>>> Override : undefined } textContentType={ diff --git a/packages/@office-iss/react-native-win32/src-win/Libraries/Components/Touchable/TouchableNativeFeedback.win32.js b/packages/@office-iss/react-native-win32/src-win/Libraries/Components/Touchable/TouchableNativeFeedback.win32.js index 8940c9bb37c..93de9ea9565 100644 --- a/packages/@office-iss/react-native-win32/src-win/Libraries/Components/Touchable/TouchableNativeFeedback.win32.js +++ b/packages/@office-iss/react-native-win32/src-win/Libraries/Components/Touchable/TouchableNativeFeedback.win32.js @@ -286,6 +286,106 @@ class TouchableNativeFeedback extends React.Component< } } +<<<<<<< Upstream + render(): React.Node { + const element = React.Children.only<$FlowFixMe>(this.props.children); + const children: Array = [element.props.children]; + if (__DEV__) { + if (element.type === View) { + children.push( + , + ); + } + } + + // BACKWARD-COMPATIBILITY: Focus and blur events were never supported before + // adopting `Pressability`, so preserve that behavior. + const {onBlur, onFocus, ...eventHandlersWithoutBlurAndFocus} = + this.state.pressability.getEventHandlers(); + + let _accessibilityState = { + busy: this.props['aria-busy'] ?? this.props.accessibilityState?.busy, + checked: + this.props['aria-checked'] ?? this.props.accessibilityState?.checked, + disabled: + this.props['aria-disabled'] ?? this.props.accessibilityState?.disabled, + expanded: + this.props['aria-expanded'] ?? this.props.accessibilityState?.expanded, + selected: + this.props['aria-selected'] ?? this.props.accessibilityState?.selected, + }; + + _accessibilityState = + this.props.disabled != null + ? { + ..._accessibilityState, + disabled: this.props.disabled, + } + : _accessibilityState; + + const accessibilityValue = { + max: this.props['aria-valuemax'] ?? this.props.accessibilityValue?.max, + min: this.props['aria-valuemin'] ?? this.props.accessibilityValue?.min, + now: this.props['aria-valuenow'] ?? this.props.accessibilityValue?.now, + text: this.props['aria-valuetext'] ?? this.props.accessibilityValue?.text, + }; + + const accessibilityLiveRegion = + this.props['aria-live'] === 'off' + ? 'none' + : (this.props['aria-live'] ?? this.props.accessibilityLiveRegion); + + const accessibilityLabel = + this.props['aria-label'] ?? this.props.accessibilityLabel; + return cloneElement( + element, + { + ...eventHandlersWithoutBlurAndFocus, + ...getBackgroundProp( + this.props.background === undefined + ? TouchableNativeFeedback.SelectableBackground() + : this.props.background, + this.props.useForeground === true, + ), + accessible: this.props.accessible !== false, + accessibilityHint: this.props.accessibilityHint, + accessibilityLanguage: this.props.accessibilityLanguage, + accessibilityLabel: accessibilityLabel, + accessibilityRole: this.props.accessibilityRole, + accessibilityState: _accessibilityState, + accessibilityActions: this.props.accessibilityActions, + onAccessibilityAction: this.props.onAccessibilityAction, + accessibilityValue: accessibilityValue, + importantForAccessibility: + this.props['aria-hidden'] === true + ? 'no-hide-descendants' + : this.props.importantForAccessibility, + accessibilityViewIsModal: + this.props['aria-modal'] ?? this.props.accessibilityViewIsModal, + accessibilityLiveRegion: accessibilityLiveRegion, + accessibilityElementsHidden: + this.props['aria-hidden'] ?? this.props.accessibilityElementsHidden, + hasTVPreferredFocus: this.props.hasTVPreferredFocus, + hitSlop: this.props.hitSlop, + focusable: + this.props.focusable !== false && + this.props.onPress !== undefined && + !this.props.disabled, + nativeID: this.props.id ?? this.props.nativeID, + nextFocusDown: this.props.nextFocusDown, + nextFocusForward: this.props.nextFocusForward, + nextFocusLeft: this.props.nextFocusLeft, + nextFocusRight: this.props.nextFocusRight, + nextFocusUp: this.props.nextFocusUp, + onLayout: this.props.onLayout, + testID: this.props.testID, + }, + ...children, + ); + } + +======= +>>>>>>> Override componentDidUpdate( prevProps: TouchableNativeFeedbackProps, prevState: TouchableNativeFeedbackState, diff --git a/packages/@office-iss/react-native-win32/src-win/Libraries/Components/View/View.win32.js b/packages/@office-iss/react-native-win32/src-win/Libraries/Components/View/View.win32.js index 197d16f00f4..67ecdea37df 100644 --- a/packages/@office-iss/react-native-win32/src-win/Libraries/Components/View/View.win32.js +++ b/packages/@office-iss/react-native-win32/src-win/Libraries/Components/View/View.win32.js @@ -10,7 +10,11 @@ import type {ViewProps} from './ViewPropTypes'; +<<<<<<< Upstream +import TextAncestorContext from '../../Text/TextAncestorContext'; +======= import TextAncestor from '../../Text/TextAncestor'; +>>>>>>> Override import ViewNativeComponent from './ViewNativeComponent'; import * as React from 'react'; import invariant from 'invariant'; // [Windows] @@ -25,6 +29,105 @@ import type {KeyEvent} from '../../Types/CoreEventTypes'; * * @see https://reactnative.dev/docs/view */ +<<<<<<< Upstream +component View( + ref?: React.RefSetter>, + ...props: ViewProps +) { + const hasTextAncestor = use(TextAncestorContext); + + const { + accessibilityState, + accessibilityValue, + 'aria-busy': ariaBusy, + 'aria-checked': ariaChecked, + 'aria-disabled': ariaDisabled, + 'aria-expanded': ariaExpanded, + 'aria-hidden': ariaHidden, + 'aria-label': ariaLabel, + 'aria-labelledby': ariaLabelledBy, + 'aria-live': ariaLive, + 'aria-selected': ariaSelected, + 'aria-valuemax': ariaValueMax, + 'aria-valuemin': ariaValueMin, + 'aria-valuenow': ariaValueNow, + 'aria-valuetext': ariaValueText, + id, + tabIndex, + ...otherProps + } = props; + + // Since we destructured props, we can now treat it as mutable + const processedProps = otherProps as {...ViewProps}; + + const parsedAriaLabelledBy = ariaLabelledBy?.split(/\s*,\s*/g); + if (parsedAriaLabelledBy !== undefined) { + processedProps.accessibilityLabelledBy = parsedAriaLabelledBy; + } + + if (ariaLabel !== undefined) { + processedProps.accessibilityLabel = ariaLabel; + } + + if (ariaLive !== undefined) { + processedProps.accessibilityLiveRegion = + ariaLive === 'off' ? 'none' : ariaLive; + } + + if (ariaHidden !== undefined) { + processedProps.accessibilityElementsHidden = ariaHidden; + if (ariaHidden === true) { + processedProps.importantForAccessibility = 'no-hide-descendants'; + } + } + + if (id !== undefined) { + processedProps.nativeID = id; + } + + if (tabIndex !== undefined) { + processedProps.focusable = !tabIndex; + } + + if ( + accessibilityState != null || + ariaBusy != null || + ariaChecked != null || + ariaDisabled != null || + ariaExpanded != null || + ariaSelected != null + ) { + processedProps.accessibilityState = { + busy: ariaBusy ?? accessibilityState?.busy, + checked: ariaChecked ?? accessibilityState?.checked, + disabled: ariaDisabled ?? accessibilityState?.disabled, + expanded: ariaExpanded ?? accessibilityState?.expanded, + selected: ariaSelected ?? accessibilityState?.selected, + }; + } + + if ( + accessibilityValue != null || + ariaValueMax != null || + ariaValueMin != null || + ariaValueNow != null || + ariaValueText != null + ) { + processedProps.accessibilityValue = { + max: ariaValueMax ?? accessibilityValue?.max, + min: ariaValueMin ?? accessibilityValue?.min, + now: ariaValueNow ?? accessibilityValue?.now, + text: ariaValueText ?? accessibilityValue?.text, + }; + } + + const actualView = + ref == null ? ( + + ) : ( + + ); +======= const View: component( ref?: React.RefSetter>, ...props: ViewProps @@ -210,6 +313,7 @@ const View: component( }); }; // Windows] +>>>>>>> Override return ( // [Windows @@ -279,8 +383,14 @@ const View: component( // Windows] ); +<<<<<<< Upstream + } + return actualView; +} +======= }, ); +>>>>>>> Override View.displayName = 'View'; diff --git a/packages/@office-iss/react-native-win32/src-win/Libraries/Core/Devtools/loadBundleFromServer.win32.js b/packages/@office-iss/react-native-win32/src-win/Libraries/Core/Devtools/loadBundleFromServer.win32.js index 4c8e5e57006..99ac2a59124 100644 --- a/packages/@office-iss/react-native-win32/src-win/Libraries/Core/Devtools/loadBundleFromServer.win32.js +++ b/packages/@office-iss/react-native-win32/src-win/Libraries/Core/Devtools/loadBundleFromServer.win32.js @@ -103,7 +103,7 @@ function asyncRequest( ), ); } else { - //$FlowFixMe[incompatible-call] + //$FlowFixMe[incompatible-type] resolve({body: responseText, headers}); } } diff --git a/packages/@office-iss/react-native-win32/src-win/Libraries/LogBox/UI/LogBoxInspectorSourceMapStatus.win32.js b/packages/@office-iss/react-native-win32/src-win/Libraries/LogBox/UI/LogBoxInspectorSourceMapStatus.win32.js index adf33ec9bc6..47768bfd1ba 100644 --- a/packages/@office-iss/react-native-win32/src-win/Libraries/LogBox/UI/LogBoxInspectorSourceMapStatus.win32.js +++ b/packages/@office-iss/react-native-win32/src-win/Libraries/LogBox/UI/LogBoxInspectorSourceMapStatus.win32.js @@ -44,7 +44,7 @@ function LogBoxInspectorSourceMapStatus(props: Props): React.Node { useNativeDriver: true, }), ); - // $FlowFixMe[incompatible-call] + // $FlowFixMe[incompatible-type] setState({ animation, rotate: animated.interpolate({ diff --git a/packages/@office-iss/react-native-win32/src-win/Libraries/Network/RCTNetworking.win32.js b/packages/@office-iss/react-native-win32/src-win/Libraries/Network/RCTNetworking.win32.js index dcabadec9fd..ee9364e5b50 100644 --- a/packages/@office-iss/react-native-win32/src-win/Libraries/Network/RCTNetworking.win32.js +++ b/packages/@office-iss/react-native-win32/src-win/Libraries/Network/RCTNetworking.win32.js @@ -23,7 +23,7 @@ const RCTNetworking = { listener: (...RCTNetworkingEventDefinitions[K]) => mixed, context?: mixed, ): EventSubscription { - // $FlowFixMe[incompatible-call] + // $FlowFixMe[incompatible-type] return RCTDeviceEventEmitter.addListener(eventType, listener, context); }, diff --git a/packages/@office-iss/react-native-win32/src-win/Libraries/Pressability/Pressability.win32.js b/packages/@office-iss/react-native-win32/src-win/Libraries/Pressability/Pressability.win32.js index 395cd18d6fb..12768b498b1 100644 --- a/packages/@office-iss/react-native-win32/src-win/Libraries/Pressability/Pressability.win32.js +++ b/packages/@office-iss/react-native-win32/src-win/Libraries/Pressability/Pressability.win32.js @@ -17,8 +17,8 @@ import type { MouseEvent, } from '../Types/CoreEventTypes'; +import * as ReactNativeFeatureFlags from '../../src/private/featureflags/ReactNativeFeatureFlags'; import SoundManager from '../Components/Sound/SoundManager'; -import ReactNativeFeatureFlags from '../ReactNative/ReactNativeFeatureFlags'; import UIManager from '../ReactNative/UIManager'; import {type RectOrSize, normalizeRect} from '../StyleSheet/Rect'; import {type PointerEvent} from '../Types/CoreEventTypes'; diff --git a/packages/@office-iss/react-native-win32/src-win/Libraries/Text/Text.win32.js b/packages/@office-iss/react-native-win32/src-win/Libraries/Text/Text.win32.js index 1ec2f8efa89..b517d20cd82 100644 --- a/packages/@office-iss/react-native-win32/src-win/Libraries/Text/Text.win32.js +++ b/packages/@office-iss/react-native-win32/src-win/Libraries/Text/Text.win32.js @@ -14,6 +14,7 @@ import type {GestureResponderEvent} from '../Types/CoreEventTypes'; import type {NativeTextProps} from './TextNativeComponent'; import type {PressRetentionOffset, TextProps} from './TextProps'; +import * as ReactNativeFeatureFlags from '../../src/private/featureflags/ReactNativeFeatureFlags'; import * as PressabilityDebug from '../Pressability/PressabilityDebug'; import usePressability from '../Pressability/usePressability'; import flattenStyle from '../StyleSheet/flattenStyle'; @@ -35,6 +36,204 @@ type TextForwardRef = React.ElementRef< * * @see https://reactnative.dev/docs/text */ +<<<<<<< Upstream +let _TextImpl; +if (ReactNativeFeatureFlags.reduceDefaultPropsInText()) { + const TextImplNoDefaultProps: component( + ref?: React.RefSetter, + ...props: TextProps + ) = ({ + ref: forwardedRef, + accessible, + accessibilityLabel, + accessibilityState, + allowFontScaling, + 'aria-busy': ariaBusy, + 'aria-checked': ariaChecked, + 'aria-disabled': ariaDisabled, + 'aria-expanded': ariaExpanded, + 'aria-label': ariaLabel, + 'aria-selected': ariaSelected, + children, + ellipsizeMode, + disabled, + id, + nativeID, + numberOfLines, + onLongPress, + onPress, + onPressIn, + onPressOut, + onResponderGrant, + onResponderMove, + onResponderRelease, + onResponderTerminate, + onResponderTerminationRequest, + onStartShouldSetResponder, + pressRetentionOffset, + selectable, + selectionColor, + suppressHighlighting, + style, + ...restProps + }: { + ref?: React.RefSetter, + ...TextProps, + }) => { + const processedProps = restProps as { + ...NativeTextProps, + }; + const _accessibilityLabel = ariaLabel ?? accessibilityLabel; + let _accessibilityState: ?TextProps['accessibilityState'] = + accessibilityState; + if ( + ariaBusy != null || + ariaChecked != null || + ariaDisabled != null || + ariaExpanded != null || + ariaSelected != null + ) { + if (_accessibilityState != null) { + _accessibilityState = { + busy: ariaBusy ?? _accessibilityState.busy, + checked: ariaChecked ?? _accessibilityState.checked, + disabled: ariaDisabled ?? _accessibilityState.disabled, + expanded: ariaExpanded ?? _accessibilityState.expanded, + selected: ariaSelected ?? _accessibilityState.selected, + }; + } else { + _accessibilityState = { + busy: ariaBusy, + checked: ariaChecked, + disabled: ariaDisabled, + expanded: ariaExpanded, + selected: ariaSelected, + }; + } + } + + const _accessibilityStateDisabled = _accessibilityState?.disabled; + const _disabled = disabled ?? _accessibilityStateDisabled; + + // If the disabled prop and accessibilityState.disabled are out of sync but not both in + // falsy states we need to update the accessibilityState object to use the disabled prop. + if ( + _accessibilityState != null && + _disabled !== _accessibilityStateDisabled && + ((_disabled != null && _disabled !== false) || + (_accessibilityStateDisabled != null && + _accessibilityStateDisabled !== false)) + ) { + _accessibilityState.disabled = _disabled; + } + + const _accessible = Platform.select({ + ios: accessible !== false, + android: + accessible == null + ? onPress != null || onLongPress != null + : accessible, + default: accessible, + }); + + const isPressable = + (onPress != null || + onLongPress != null || + onStartShouldSetResponder != null) && + _disabled !== true; + + // TODO: Move this processing to the view configuration. + const _selectionColor = + selectionColor != null ? processColor(selectionColor) : undefined; + + let _style = style; + if (__DEV__) { + if (PressabilityDebug.isEnabled() && onPress != null) { + _style = [style, {color: 'magenta'}]; + } + } + + let _numberOfLines = numberOfLines; + if (_numberOfLines != null && !(_numberOfLines >= 0)) { + if (__DEV__) { + console.error( + `'numberOfLines' in must be a non-negative number, received: ${_numberOfLines}. The value will be set to 0.`, + ); + } + _numberOfLines = 0; + } + + let _selectable = selectable; + + let processedStyle = flattenStyle(_style); + if (processedStyle != null) { + let overrides: ?{...TextStyleInternal} = null; + if (typeof processedStyle.fontWeight === 'number') { + overrides = overrides || ({}: {...TextStyleInternal}); + overrides.fontWeight = + // $FlowFixMe[incompatible-type] + (String(processedStyle.fontWeight): TextStyleInternal['fontWeight']); + } + + if (processedStyle.userSelect != null) { + _selectable = userSelectToSelectableMap[processedStyle.userSelect]; + overrides = overrides || ({}: {...TextStyleInternal}); + overrides.userSelect = undefined; + } + + if (processedStyle.verticalAlign != null) { + overrides = overrides || ({}: {...TextStyleInternal}); + overrides.textAlignVertical = + verticalAlignToTextAlignVerticalMap[processedStyle.verticalAlign]; + overrides.verticalAlign = undefined; + } + + if (overrides != null) { + // $FlowFixMe[incompatible-type] + _style = [_style, overrides]; + } + } + + const _nativeID = id ?? nativeID; + + if (_accessibilityLabel !== undefined) { + processedProps.accessibilityLabel = _accessibilityLabel; + } + if (_accessibilityState !== undefined) { + processedProps.accessibilityState = _accessibilityState; + } + if (_nativeID !== undefined) { + processedProps.nativeID = _nativeID; + } + if (_numberOfLines !== undefined) { + processedProps.numberOfLines = _numberOfLines; + } + if (_selectable !== undefined) { + processedProps.selectable = _selectable; + } + if (_style !== undefined) { + processedProps.style = _style; + } + if (_selectionColor !== undefined) { + processedProps.selectionColor = _selectionColor; + } + + let textPressabilityProps: ?TextPressabilityProps; + if (isPressable) { + textPressabilityProps = { + onLongPress, + onPress, + onPressIn, + onPressOut, + onResponderGrant, + onResponderMove, + onResponderRelease, + onResponderTerminate, + onResponderTerminationRequest, + onStartShouldSetResponder, + pressRetentionOffset, + suppressHighlighting, +======= const TextImpl: component( ref?: React.RefSetter, ...props: TextProps @@ -128,95 +327,314 @@ const TextImpl: component( multiselectable: ariaMultiselectable, // Win32, required: ariaRequired, // Win32 selected: ariaSelected, +>>>>>>> Override }; } - } - const _accessibilityStateDisabled = _accessibilityState?.disabled; - const _disabled = disabled ?? _accessibilityStateDisabled; + const hasTextAncestor = useContext(TextAncestorContext); + if (hasTextAncestor) { + processedProps.disabled = disabled; + processedProps.children = children; + if (isPressable) { + return ( + + ); + } + return ; + } - const isPressable = - (onPress != null || - onLongPress != null || - onStartShouldSetResponder != null) && - _disabled !== true; + let nativeText = null; - // TODO: Move this processing to the view configuration. - const _selectionColor = - selectionColor != null ? processColor(selectionColor) : undefined; + processedProps.accessible = _accessible; + processedProps.allowFontScaling = allowFontScaling !== false; + processedProps.disabled = _disabled; + processedProps.ellipsizeMode = ellipsizeMode ?? 'tail'; + processedProps.children = children; - let _style = style; - if (__DEV__) { - if (PressabilityDebug.isEnabled() && onPress != null) { - _style = [style, {color: 'magenta'}]; + if (isPressable) { + nativeText = ( + + ); + } else { + nativeText = ; } - } - let _numberOfLines = numberOfLines; - if (_numberOfLines != null && !(_numberOfLines >= 0)) { - if (__DEV__) { - console.error( - `'numberOfLines' in must be a non-negative number, received: ${_numberOfLines}. The value will be set to 0.`, - ); + if (children == null) { + return nativeText; + } + + // If the children do not contain a JSX element it would not be possible to have a + // nested `Text` component so we can skip adding the `TextAncestorContext` context wrapper + // which has a performance overhead. Since we do this for performance reasons we need + // to keep the check simple to avoid regressing overall perf. For this reason the + // `children.length` constant is set to `3`, this should be a reasonable tradeoff + // to capture the majority of `Text` uses but also not make this check too expensive. + if (Array.isArray(children) && children.length <= 3) { + let hasNonTextChild = false; + for (let child of children) { + if (child != null && typeof child === 'object') { + hasNonTextChild = true; + break; + } + } + if (!hasNonTextChild) { + return nativeText; + } + } else if (typeof children !== 'object') { + return nativeText; } - _numberOfLines = 0; - } - let _selectable = selectable; + return {nativeText}; + }; + _TextImpl = TextImplNoDefaultProps; +} else { + const TextImplLegacy: component( + ref?: React.RefSetter, + ...props: TextProps + ) = ({ + ref: forwardedRef, + accessible, + accessibilityLabel, + accessibilityState, + allowFontScaling, + 'aria-busy': ariaBusy, + 'aria-checked': ariaChecked, + 'aria-disabled': ariaDisabled, + 'aria-expanded': ariaExpanded, + 'aria-label': ariaLabel, + 'aria-selected': ariaSelected, + children, + ellipsizeMode, + disabled, + id, + nativeID, + numberOfLines, + onLongPress, + onPress, + onPressIn, + onPressOut, + onResponderGrant, + onResponderMove, + onResponderRelease, + onResponderTerminate, + onResponderTerminationRequest, + onStartShouldSetResponder, + pressRetentionOffset, + selectable, + selectionColor, + suppressHighlighting, + style, + ...restProps + }: { + ref?: React.RefSetter, + ...TextProps, + }) => { + const _accessibilityLabel = ariaLabel ?? accessibilityLabel; - let processedStyle = flattenStyle(_style); - if (processedStyle != null) { - let overrides: ?{...TextStyleInternal} = null; - if (typeof processedStyle.fontWeight === 'number') { - overrides = overrides || ({}: {...TextStyleInternal}); - overrides.fontWeight = - // $FlowFixMe[incompatible-cast] - (processedStyle.fontWeight.toString(): TextStyleInternal['fontWeight']); + let _accessibilityState: ?TextProps['accessibilityState'] = + accessibilityState; + if ( + ariaBusy != null || + ariaChecked != null || + ariaDisabled != null || + ariaExpanded != null || + ariaSelected != null + ) { + if (_accessibilityState != null) { + _accessibilityState = { + busy: ariaBusy ?? _accessibilityState.busy, + checked: ariaChecked ?? _accessibilityState.checked, + disabled: ariaDisabled ?? _accessibilityState.disabled, + expanded: ariaExpanded ?? _accessibilityState.expanded, + selected: ariaSelected ?? _accessibilityState.selected, + }; + } else { + _accessibilityState = { + busy: ariaBusy, + checked: ariaChecked, + disabled: ariaDisabled, + expanded: ariaExpanded, + selected: ariaSelected, + }; + } } - if (processedStyle.userSelect != null) { - _selectable = userSelectToSelectableMap[processedStyle.userSelect]; - overrides = overrides || ({}: {...TextStyleInternal}); - overrides.userSelect = undefined; + const _accessibilityStateDisabled = _accessibilityState?.disabled; + const _disabled = disabled ?? _accessibilityStateDisabled; + + const isPressable = + (onPress != null || + onLongPress != null || + onStartShouldSetResponder != null) && + _disabled !== true; + + // TODO: Move this processing to the view configuration. + const _selectionColor = + selectionColor != null ? processColor(selectionColor) : undefined; + + let _style = style; + if (__DEV__) { + if (PressabilityDebug.isEnabled() && onPress != null) { + _style = [style, {color: 'magenta'}]; + } + } + + let _numberOfLines = numberOfLines; + if (_numberOfLines != null && !(_numberOfLines >= 0)) { + if (__DEV__) { + console.error( + `'numberOfLines' in must be a non-negative number, received: ${_numberOfLines}. The value will be set to 0.`, + ); + } + _numberOfLines = 0; + } + + let _selectable = selectable; + + let processedStyle = flattenStyle(_style); + if (processedStyle != null) { + let overrides: ?{...TextStyleInternal} = null; + if (typeof processedStyle.fontWeight === 'number') { + overrides = overrides || ({}: {...TextStyleInternal}); + overrides.fontWeight = + // $FlowFixMe[incompatible-type] + (processedStyle.fontWeight.toString(): TextStyleInternal['fontWeight']); + } + + if (processedStyle.userSelect != null) { + _selectable = userSelectToSelectableMap[processedStyle.userSelect]; + overrides = overrides || ({}: {...TextStyleInternal}); + overrides.userSelect = undefined; + } + + if (processedStyle.verticalAlign != null) { + overrides = overrides || ({}: {...TextStyleInternal}); + overrides.textAlignVertical = + verticalAlignToTextAlignVerticalMap[processedStyle.verticalAlign]; + overrides.verticalAlign = undefined; + } + + if (overrides != null) { + // $FlowFixMe[incompatible-type] + _style = [_style, overrides]; + } } - if (processedStyle.verticalAlign != null) { - overrides = overrides || ({}: {...TextStyleInternal}); - overrides.textAlignVertical = - verticalAlignToTextAlignVerticalMap[processedStyle.verticalAlign]; - overrides.verticalAlign = undefined; + const _nativeID = id ?? nativeID; + + const hasTextAncestor = useContext(TextAncestorContext); + if (hasTextAncestor) { + if (isPressable) { + return ( + + ); + } + + return ( + + {children} + + ); } - if (overrides != null) { - // $FlowFixMe[incompatible-type] - _style = [_style, overrides]; + // If the disabled prop and accessibilityState.disabled are out of sync but not both in + // falsy states we need to update the accessibilityState object to use the disabled prop. + if ( + _disabled !== _accessibilityStateDisabled && + ((_disabled != null && _disabled !== false) || + (_accessibilityStateDisabled != null && + _accessibilityStateDisabled !== false)) + ) { + _accessibilityState = {..._accessibilityState, disabled: _disabled}; } - } - const _nativeID = id ?? nativeID; + const _accessible = Platform.select({ + ios: accessible !== false, + android: + accessible == null + ? onPress != null || onLongPress != null + : accessible, + default: accessible, + }); +<<<<<<< Upstream + let nativeText = null; +======= const hasTextAncestor = useContext(TextAncestor); if (hasTextAncestor) { +>>>>>>> Override if (isPressable) { - return ( - >>>>>> Override nativeID: _nativeID, numberOfLines: _numberOfLines, selectable: _selectable, selectionColor: _selectionColor, style: _style, - disabled: disabled, children, }} textPressabilityProps={{ @@ -235,8 +653,31 @@ const TextImpl: component( }} /> ); + } else { + nativeText = ( + + {children} + + ); } +<<<<<<< Upstream + if (children == null) { + return nativeText; +======= return ( >>>>>> Override } - if (!hasNonTextChild) { + + // If the children do not contain a JSX element it would not be possible to have a + // nested `Text` component so we can skip adding the `TextAncestorContext` context wrapper + // which has a performance overhead. Since we do this for performance reasons we need + // to keep the check simple to avoid regressing overall perf. For this reason the + // `children.length` constant is set to `3`, this should be a reasonable tradeoff + // to capture the majority of `Text` uses but also not make this check too expensive. + if (Array.isArray(children) && children.length <= 3) { + let hasNonTextChild = false; + for (let child of children) { + if (child != null && typeof child === 'object') { + hasNonTextChild = true; + break; + } + } + if (!hasNonTextChild) { + return nativeText; + } + } else if (typeof children !== 'object') { return nativeText; } - } else if (typeof children !== 'object') { - return nativeText; - } +<<<<<<< Upstream + return {nativeText}; + }; + _TextImpl = TextImplLegacy; +} + +const TextImpl: component( + ref?: React.RefSetter, + ...props: TextProps +) = _TextImpl; +======= return ( {nativeText} ); }; +>>>>>>> Override TextImpl.displayName = 'Text'; diff --git a/packages/@office-iss/react-native-win32/src-win/Libraries/Text/TextNativeComponent.win32.js b/packages/@office-iss/react-native-win32/src-win/Libraries/Text/TextNativeComponent.win32.js index 505195a25ef..5ff2186fb6b 100644 --- a/packages/@office-iss/react-native-win32/src-win/Libraries/Text/TextNativeComponent.win32.js +++ b/packages/@office-iss/react-native-win32/src-win/Libraries/Text/TextNativeComponent.win32.js @@ -101,7 +101,7 @@ const virtualTextViewConfig = { export const NativeText: HostComponent = (createReactNativeComponentClass('RCTText', () => - /* $FlowFixMe[incompatible-call] Natural Inference rollout. See + /* $FlowFixMe[incompatible-type] Natural Inference rollout. See * https://fburl.com/workplace/6291gfvu */ createViewConfig(textViewConfig), ): any); @@ -111,7 +111,7 @@ export const NativeVirtualText: HostComponent = UIManager.getViewManagerConfig('RCTVirtualText') == null ? NativeText : (createReactNativeComponentClass('RCTVirtualText', () => - /* $FlowFixMe[incompatible-call] Natural Inference rollout. See + /* $FlowFixMe[incompatible-type] Natural Inference rollout. See * https://fburl.com/workplace/6291gfvu */ createViewConfig(virtualTextViewConfig), ): any); diff --git a/packages/@office-iss/react-native-win32/src-win/Libraries/Utilities/Platform.win32.js b/packages/@office-iss/react-native-win32/src-win/Libraries/Utilities/Platform.win32.js index 053a6ff5709..0f8be6a7dc5 100644 --- a/packages/@office-iss/react-native-win32/src-win/Libraries/Utilities/Platform.win32.js +++ b/packages/@office-iss/react-native-win32/src-win/Libraries/Utilities/Platform.win32.js @@ -65,13 +65,19 @@ const Platform: PlatformType = { return false; }, select: (spec: PlatformSelectSpec): T => +<<<<<<< Upstream + 'android' in spec + ? // $FlowFixMe[incompatible-type] + spec.android +======= 'win32' in spec ? // $FlowFixMe[incompatible-return] spec.win32 +>>>>>>> Override : 'native' in spec - ? // $FlowFixMe[incompatible-return] + ? // $FlowFixMe[incompatible-type] spec.native - : // $FlowFixMe[incompatible-return] + : // $FlowFixMe[incompatible-type] spec.default, }; diff --git a/packages/@office-iss/react-native-win32/src-win/Libraries/Utilities/PlatformTypes.js b/packages/@office-iss/react-native-win32/src-win/Libraries/Utilities/PlatformTypes.js index 34e433924b3..f50f99df71a 100644 --- a/packages/@office-iss/react-native-win32/src-win/Libraries/Utilities/PlatformTypes.js +++ b/packages/@office-iss/react-native-win32/src-win/Libraries/Utilities/PlatformTypes.js @@ -196,7 +196,7 @@ type Win32Platform = { type WebPlatform = { OS: 'web', // $FlowFixMe[unsafe-getters-setters] - get Version(): void, + get Version(): string, // $FlowFixMe[unsafe-getters-setters] get constants(): { reactNativeVersion: { diff --git a/packages/@office-iss/react-native-win32/src-win/Libraries/Utilities/useMergeRefs.js b/packages/@office-iss/react-native-win32/src-win/Libraries/Utilities/useMergeRefs.js index 3c7439a6036..5e6f2957878 100644 --- a/packages/@office-iss/react-native-win32/src-win/Libraries/Utilities/useMergeRefs.js +++ b/packages/@office-iss/react-native-win32/src-win/Libraries/Utilities/useMergeRefs.js @@ -31,7 +31,7 @@ export default function useMergeRefs( return undefined; } else { if (typeof ref === 'function') { - // $FlowIssue[incompatible-type] - Flow does not understand ref cleanup. + // $FlowFixMe[incompatible-type] - Flow does not understand ref cleanup. const cleanup: void | (() => void) = ref(current); return typeof cleanup === 'function' ? cleanup diff --git a/packages/@office-iss/react-native-win32/src-win/index.win32.js b/packages/@office-iss/react-native-win32/src-win/index.win32.js index c2fa64e43ee..f84e080cb78 100644 --- a/packages/@office-iss/react-native-win32/src-win/index.win32.js +++ b/packages/@office-iss/react-native-win32/src-win/index.win32.js @@ -173,14 +173,14 @@ module.exports = { /** * @deprecated SafeAreaView has been deprecated and will be removed in a future release. * Please use 'react-native-safe-area-context' instead. - * See https://github.com/th3rdwave/react-native-safe-area-context + * See https://github.com/AppAndFlow/react-native-safe-area-context */ get SafeAreaView(): SafeAreaView { warnOnce( 'safe-area-view-deprecated', 'SafeAreaView has been deprecated and will be removed in a future release. ' + "Please use 'react-native-safe-area-context' instead. " + - 'See https://github.com/th3rdwave/react-native-safe-area-context', + 'See https://github.com/AppAndFlow/react-native-safe-area-context', ); return require('./Libraries/Components/SafeAreaView/SafeAreaView').default; }, @@ -326,7 +326,14 @@ module.exports = { get NativeAppEventEmitter(): RCTNativeAppEventEmitter { return require('./Libraries/EventEmitter/RCTNativeAppEventEmitter').default; }, +<<<<<<< Upstream + get NativeComponentRegistry() { + return require('./Libraries/NativeComponent/NativeComponentRegistry'); + }, + get NativeDialogManagerAndroid() { +======= get NativeDialogManagerAndroid(): NativeDialogManagerAndroid { +>>>>>>> Override return require('./Libraries/NativeModules/specs/NativeDialogManagerAndroid') .default; }, @@ -377,7 +384,14 @@ module.exports = { ) => HostComponent { return require('./Libraries/ReactNative/requireNativeComponent').default; }, +<<<<<<< Upstream + get ReactNativeVersion() { + return require('./Libraries/Core/ReactNativeVersion').default; + }, + get RootTagContext() { +======= get RootTagContext(): RootTagContext { +>>>>>>> Override return require('./Libraries/ReactNative/RootTag').RootTagContext; }, get Settings(): Settings { diff --git a/packages/@office-iss/react-native-win32/src-win/src/private/animated/NativeAnimatedHelper.win32.js b/packages/@office-iss/react-native-win32/src-win/src/private/animated/NativeAnimatedHelper.win32.js index ba3a213b948..0b5cbe9b14a 100644 --- a/packages/@office-iss/react-native-win32/src-win/src/private/animated/NativeAnimatedHelper.win32.js +++ b/packages/@office-iss/react-native-win32/src-win/src/private/animated/NativeAnimatedHelper.win32.js @@ -58,7 +58,6 @@ let globalEventEmitterGetValueListener: ?EventSubscription = null; let globalEventEmitterAnimationFinishedListener: ?EventSubscription = null; const shouldSignalBatch: boolean = - ReactNativeFeatureFlags.animatedShouldSignalBatch() || ReactNativeFeatureFlags.cxxNativeAnimatedEnabled(); function createNativeOperations(): $NonMaybeType { @@ -128,7 +127,7 @@ function createNativeOperations(): $NonMaybeType { }; } } - // $FlowExpectedError[incompatible-return] - Dynamism. + // $FlowExpectedError[incompatible-type] - Dynamism. return nativeOperations; } @@ -141,10 +140,12 @@ const NativeOperations = createNativeOperations(); const API = { getValue: (isSingleOpBatching ? (tag, saveValueCallback) => { + /* $FlowFixMe[constant-condition] Error discovered during Constant + * Condition roll out. See https://fburl.com/workplace/1v97vimq. */ if (saveValueCallback) { eventListenerGetValueCallbacks[tag] = saveValueCallback; } - /* $FlowExpectedError[incompatible-call] - `saveValueCallback` is handled + /* $FlowExpectedError[incompatible-type] - `saveValueCallback` is handled differently when `isSingleOpBatching` is enabled. */ NativeOperations.getValue(tag); } @@ -268,10 +269,12 @@ const API = { startAnimatingNode: (isSingleOpBatching ? (animationId, nodeTag, config, endCallback) => { + /* $FlowFixMe[constant-condition] Error discovered during Constant + * Condition roll out. See https://fburl.com/workplace/1v97vimq. */ if (endCallback) { eventListenerAnimationFinishedCallbacks[animationId] = endCallback; } - /* $FlowExpectedError[incompatible-call] - `endCallback` is handled + /* $FlowExpectedError[incompatible-type] - `endCallback` is handled differently when `isSingleOpBatching` is enabled. */ NativeOperations.startAnimatingNode(animationId, nodeTag, config); } @@ -353,6 +356,8 @@ function ensureGlobalEventEmitterListeners() { params => { const {tag} = params; const callback = eventListenerGetValueCallbacks[tag]; + /* $FlowFixMe[constant-condition] Error discovered during Constant + * Condition roll out. See https://fburl.com/workplace/1v97vimq. */ if (!callback) { return; } @@ -369,6 +374,8 @@ function ensureGlobalEventEmitterListeners() { for (const animation of animations) { const {animationId} = animation; const callback = eventListenerAnimationFinishedCallbacks[animationId]; + /* $FlowFixMe[constant-condition] Error discovered during Constant + * Condition roll out. See https://fburl.com/workplace/1v97vimq. */ if (callback) { callback(animation); delete eventListenerAnimationFinishedCallbacks[animationId]; diff --git a/packages/@react-native-windows/automation-channel/package.json b/packages/@react-native-windows/automation-channel/package.json index 26d43e5433c..da0465261f0 100644 --- a/packages/@react-native-windows/automation-channel/package.json +++ b/packages/@react-native-windows/automation-channel/package.json @@ -32,7 +32,7 @@ "just-scripts": "^1.3.2", "prettier": "2.8.8", "react": "19.1.0", - "react-native": "0.81.0-nightly-20250709-6892dde36", + "react-native": "0.82.0-nightly-20250819-25104de5c", "react-native-windows": "^0.0.0-canary.1003", "typescript": "5.0.4" }, diff --git a/packages/@react-native-windows/tester/overrides.json b/packages/@react-native-windows/tester/overrides.json index 2deee1792ac..123ca0afd1e 100644 --- a/packages/@react-native-windows/tester/overrides.json +++ b/packages/@react-native-windows/tester/overrides.json @@ -5,13 +5,13 @@ "excludePatterns": [ "src/js/examples-win/**" ], - "baseVersion": "0.81.0-nightly-20250709-6892dde36", + "baseVersion": "0.82.0-nightly-20250819-25104de5c", "overrides": [ { "type": "copy", "file": "js/examples/ContentURLAndroid/ContentURLAndroid.js", "baseFile": "packages/rn-tester/js/examples/ContentURLAndroid/ContentURLAndroid.js", - "baseHash": "5219751d36d3f2581e075d835424aa2f20c9809f", + "baseHash": "f85a06b7cdb2820871b524a0946f23738aa4eabe", "issue": 14844 }, { @@ -24,13 +24,13 @@ "type": "derived", "file": "src/js/examples-win/Button/ButtonExample.windows.js", "baseFile": "packages/rn-tester/js/examples/Button/ButtonExample.js", - "baseHash": "c44c83e48760fddc1129751debbf3a3ba1ec3fac" + "baseHash": "e50ed3ad268f9a4d34cbb720650c53fad379e0fe" }, { "type": "derived", "file": "src/js/examples-win/Switch/SwitchExample.windows.js", "baseFile": "packages/rn-tester/js/examples/Switch/SwitchExample.js", - "baseHash": "a5314bc9384402a96a8bb5190e5513a785925f90" + "baseHash": "cf59144fe876a5dc4acf703849a95e64fd9416f1" }, { "type": "patch", @@ -43,14 +43,14 @@ "type": "patch", "file": "src/js/examples/FlatList/BaseFlatListExample.windows.js", "baseFile": "packages/rn-tester/js/examples/FlatList/BaseFlatListExample.js", - "baseHash": "533b9b1c2889c22af9ba923e17a8951ffbbfe3d7", + "baseHash": "7a516e491b4cbe22678baf899dfe855567468a6f", "issue": 12869 }, { "type": "patch", "file": "src/js/examples/FlatList/FlatList-basic.windows.js", "baseFile": "packages/rn-tester/js/examples/FlatList/FlatList-basic.js", - "baseHash": "c523e6ea68a0ec0e754f4bea57f598200112a3c1", + "baseHash": "41496b69da9128cd74a3efa43e41d08f967b37ed", "issue": 12869 }, { @@ -104,40 +104,40 @@ "type": "patch", "file": "src/js/examples/Pressable/PressableExample.windows.js", "baseFile": "packages/rn-tester/js/examples/Pressable/PressableExample.js", - "baseHash": "c6dd35fb59d439ee655844b2baa16f1711b70619", + "baseHash": "65b69f0b2d0906c91369d3e42ceea03a1d47b20c", "issue": 6240 }, { "type": "derived", "file": "src/js/examples/Text/TextExample.windows.js", "baseFile": "packages/rn-tester/js/examples/Text/TextExample.android.js", - "baseHash": "55b0983ac2f69f38284e5014d77533eb0e2e9ff6" + "baseHash": "87ac08c76abcb9f2f8d3df8990ed6e02d5d4efd9" }, { "type": "patch", "file": "src/js/examples/Text/TextSharedExamples.windows.js", "baseFile": "packages/rn-tester/js/examples/Text/TextSharedExamples.js", - "baseHash": "af0e1fb5bf6deebad7fc0de41242a27652bafdac", + "baseHash": "2f043ce1ae7f2f82c0a913247da51777dd53979b", "issue": 15125 }, { "type": "patch", "file": "src/js/examples/TextInput/TextInputExample.windows.js", "baseFile": "packages/rn-tester/js/examples/TextInput/TextInputExample.android.js", - "baseHash": "e2ec4b71e3cd614682d9be1551b3a2994ea51823", + "baseHash": "9aa7d0134a84831e699156845ec92d0a2fc8c108", "issue": 5688 }, { "type": "derived", "file": "src/js/examples/Touchable/TouchableExample.windows.js", "baseFile": "packages/rn-tester/js/examples/Touchable/TouchableExample.js", - "baseHash": "453404f69c1754b4a434bc128c745fbca0492433" + "baseHash": "03b4d8b4c97e998cf488bfc889dcdc047378c306" }, { "type": "patch", "file": "src/js/examples/TurboModule/SampleTurboModuleExample.windows.js", "baseFile": "packages/rn-tester/js/examples/TurboModule/SampleTurboModuleExample.js", - "baseHash": "3e16d172b5b5cac74c4733662d83bc2b2107bc4f" + "baseHash": "6699f509cf17c113d98fd87bfab9127037d9ca08" }, { "type": "patch", @@ -156,7 +156,7 @@ "type": "derived", "file": "src/js/utils/RNTesterList.windows.js", "baseFile": "packages/rn-tester/js/utils/RNTesterList.android.js", - "baseHash": "c89e65c8063b338c86ec9db173b05b96c589f69e" + "baseHash": "8cd219abae140e98f9578432954fc9ef62421308" } ] } \ No newline at end of file diff --git a/packages/@react-native-windows/tester/package.json b/packages/@react-native-windows/tester/package.json index aae96ffe707..c039d5cd113 100644 --- a/packages/@react-native-windows/tester/package.json +++ b/packages/@react-native-windows/tester/package.json @@ -33,7 +33,7 @@ "@types/node": "^22.14.0", "eslint": "^8.19.0", "just-scripts": "^1.3.3", - "react-native": "0.81.0-nightly-20250709-6892dde36", + "react-native": "0.82.0-nightly-20250819-25104de5c", "react-native-platform-override": "^1.9.59", "react-native-windows": "^0.0.0-canary.1003", "typescript": "5.0.4" diff --git a/packages/@react-native-windows/tester/src/js/examples-win/Button/ButtonExample.windows.js b/packages/@react-native-windows/tester/src/js/examples-win/Button/ButtonExample.windows.js index 069de0e10db..7295fac1919 100644 --- a/packages/@react-native-windows/tester/src/js/examples-win/Button/ButtonExample.windows.js +++ b/packages/@react-native-windows/tester/src/js/examples-win/Button/ButtonExample.windows.js @@ -10,6 +10,8 @@ 'use strict'; +import type {RNTesterModuleExample} from '../../types/RNTesterTypes'; + const {RNTesterThemeContext} = require('../../components/RNTesterTheme'); const React = require('react'); const {Alert, Button, StyleSheet, View} = require('react-native'); @@ -231,6 +233,9 @@ exports.examples = [ ); }, }, +<<<<<<< Upstream +] as Array; +======= { title: 'Button with Accessible and Focusable Prop', render: function (): React.Node { @@ -275,6 +280,7 @@ exports.examples = [ }, }, ]; +>>>>>>> Override const styles = StyleSheet.create({ container: { diff --git a/packages/@react-native-windows/tester/src/js/examples-win/Switch/SwitchExample.windows.js b/packages/@react-native-windows/tester/src/js/examples-win/Switch/SwitchExample.windows.js index 9a8009c75c0..09a087bcdc4 100644 --- a/packages/@react-native-windows/tester/src/js/examples-win/Switch/SwitchExample.windows.js +++ b/packages/@react-native-windows/tester/src/js/examples-win/Switch/SwitchExample.windows.js @@ -10,6 +10,8 @@ 'use strict'; +import type {RNTesterModuleExample} from '../../types/RNTesterTypes'; + import RNTesterText from '../../components/RNTesterText'; import React from 'react'; import {Platform, Switch, View} from 'react-native'; @@ -123,7 +125,7 @@ class DisabledSwitchExample extends React.Component< } } -class ColorSwitchExample extends React.Component<{...}, $FlowFixMeState> { +class ColorSwitchExample extends React.Component<{...}, $FlowFixMe> { state: any | {colorFalseSwitchIsOn: boolean, colorTrueSwitchIsOn: boolean} = { colorTrueSwitchIsOn: true, colorFalseSwitchIsOn: false, @@ -158,7 +160,7 @@ class ColorSwitchExample extends React.Component<{...}, $FlowFixMeState> { } } -class EventSwitchExample extends React.Component<{...}, $FlowFixMeState> { +class EventSwitchExample extends React.Component<{...}, $FlowFixMe> { state: any | {eventSwitchIsOn: boolean, eventSwitchRegressionIsOn: boolean} = { eventSwitchIsOn: false, @@ -211,7 +213,7 @@ class EventSwitchExample extends React.Component<{...}, $FlowFixMeState> { } } -class IOSBackgroundColEx extends React.Component<{...}, $FlowFixMeState> { +class IOSBackgroundColEx extends React.Component<{...}, $FlowFixMe> { state: any | {iosBackgroundColor: string} = { iosBackgroundColor: '#ffa500', }; @@ -233,7 +235,7 @@ class IOSBackgroundColEx extends React.Component<{...}, $FlowFixMeState> { } } -class OnChangeExample extends React.Component<{...}, $FlowFixMeState> { +class OnChangeExample extends React.Component<{...}, $FlowFixMe> { render(): React.Node { return ( @@ -250,7 +252,7 @@ class OnChangeExample extends React.Component<{...}, $FlowFixMeState> { class ContainerBackgroundColorStyleExample extends React.Component< {...}, - $FlowFixMeState, + $FlowFixMe, > { render(): React.Node { return ( @@ -388,6 +390,9 @@ exports.examples = [ return ; }, }, +<<<<<<< Upstream +] as Array; +======= { title: 'Switches can have customized accessibility', render(): React.Element { @@ -395,10 +400,9 @@ exports.examples = [ }, }, ]; +>>>>>>> Override if (Platform.OS === 'ios') { - /* $FlowFixMe[incompatible-call] error found during natural inference roll- - * out. See https://fburl.com/workplace/tc9m3tcf */ exports.examples.push({ title: '[iOS Only] Custom background colors can be set', render(): React.MixedElement { diff --git a/packages/@react-native-windows/tester/src/js/examples/FlatList/BaseFlatListExample.windows.js b/packages/@react-native-windows/tester/src/js/examples/FlatList/BaseFlatListExample.windows.js index 7f202bdd541..cc6d7ba26e4 100644 --- a/packages/@react-native-windows/tester/src/js/examples/FlatList/BaseFlatListExample.windows.js +++ b/packages/@react-native-windows/tester/src/js/examples/FlatList/BaseFlatListExample.windows.js @@ -97,7 +97,7 @@ const BaseFlatListExample: component( data={DATA} keyExtractor={(item, index) => item + index} style={styles.list} - // $FlowFixMe[incompatible-type-arg] + // $FlowFixMe[incompatible-type] renderItem={Item} /> diff --git a/packages/@react-native-windows/tester/src/js/examples/FlatList/FlatList-basic.windows.js b/packages/@react-native-windows/tester/src/js/examples/FlatList/FlatList-basic.windows.js index f4d6321ebb6..87c6d3bf309 100644 --- a/packages/@react-native-windows/tester/src/js/examples/FlatList/FlatList-basic.windows.js +++ b/packages/@react-native-windows/tester/src/js/examples/FlatList/FlatList-basic.windows.js @@ -131,6 +131,10 @@ class FlatListExample extends React.PureComponent { } _setBooleanValue: string => boolean => void = key => value => +<<<<<<< Upstream + // $FlowFixMe[incompatible-type] +======= +>>>>>>> Override this.setState({[key]: value}); _setIsRTL: boolean => void = value => { diff --git a/packages/@react-native-windows/tester/src/js/examples/Pressable/PressableExample.windows.js b/packages/@react-native-windows/tester/src/js/examples/Pressable/PressableExample.windows.js index 2ac094c01fe..bf722ae4790 100644 --- a/packages/@react-native-windows/tester/src/js/examples/Pressable/PressableExample.windows.js +++ b/packages/@react-native-windows/tester/src/js/examples/Pressable/PressableExample.windows.js @@ -10,6 +10,7 @@ import type {RNTesterModule} from '../../types/RNTesterTypes'; +import * as PressableExampleFbInternal from './PressableExampleFbInternal'; import * as React from 'react'; import { Alert, @@ -23,7 +24,6 @@ import { View, Switch, } from 'react-native'; -import ReactNativeFeatureFlags from 'react-native/Libraries/ReactNative/ReactNativeFeatureFlags'; const {useEffect, useRef, useState} = React; @@ -291,6 +291,8 @@ function PressableDisabled() { ); } +<<<<<<< Upstream +======= function PressableHoverStyle() { const [hovered, setHovered] = useState(false); return ( @@ -457,6 +459,7 @@ function PressWithKeyCapture() { ); } +>>>>>>> Override const styles = StyleSheet.create({ row: { justifyContent: 'center', @@ -752,6 +755,9 @@ const examples = [ return ; }, }, +<<<<<<< Upstream + ...PressableExampleFbInternal.examples, +======= { title: 'Focusability in Pressable', description: @@ -1107,24 +1113,16 @@ const examples = [ }, }, // Windows] +>>>>>>> Override ]; -if (ReactNativeFeatureFlags.shouldPressibilityUseW3CPointerEventsForHover()) { - examples.push({ - title: 'Change style based on Hover', - render(): React.Node { - return ; - }, - }); -} - module.exports = ({ title: 'Pressable', documentationURL: 'https://reactnative.dev/docs/pressable', category: 'UI', description: 'Component for making views pressable.', displayName: 'Pressable', - /* $FlowFixMe[incompatible-cast] Natural Inference rollout. See + /* $FlowFixMe[incompatible-type] Natural Inference rollout. See * https://fburl.com/workplace/6291gfvu */ examples, }: RNTesterModule); diff --git a/packages/@react-native-windows/tester/src/js/examples/Text/TextExample.windows.js b/packages/@react-native-windows/tester/src/js/examples/Text/TextExample.windows.js index ccc71639e8b..ddb28ae8c18 100644 --- a/packages/@react-native-windows/tester/src/js/examples/Text/TextExample.windows.js +++ b/packages/@react-native-windows/tester/src/js/examples/Text/TextExample.windows.js @@ -39,7 +39,7 @@ class Entity extends React.Component<{children: React.Node}> { ); } } -class AttributeToggler extends React.Component<{...}, $FlowFixMeState> { +class AttributeToggler extends React.Component<{...}, $FlowFixMe> { state: {fontSize: number, fontWeight: 'bold' | 'normal'} = { fontWeight: 'bold', fontSize: 15, @@ -1921,6 +1921,20 @@ const examples = [ ); }, }, + { + title: 'Disabled', + name: 'disabled', + render: function (): React.Node { + return ( + + + This text has its corresponding text view in the disabled state for + testing purposes. + + + ); + }, + }, ...TextSharedExamples, { title: 'Customized Accessibility', diff --git a/packages/@react-native-windows/tester/src/js/examples/Text/TextSharedExamples.windows.js b/packages/@react-native-windows/tester/src/js/examples/Text/TextSharedExamples.windows.js index fbc10d31a07..f55c7f2b7b9 100644 --- a/packages/@react-native-windows/tester/src/js/examples/Text/TextSharedExamples.windows.js +++ b/packages/@react-native-windows/tester/src/js/examples/Text/TextSharedExamples.windows.js @@ -110,13 +110,114 @@ function NumberOfLinesTextLayoutExample(): React.Node { ); } +<<<<<<< Upstream +component RtlInlineViewExample( + label: string, + testID: string, + children: React.Node, +) { + return ( + + + {label} + + {children} + + ); +} + +component RtlAndInlineViewsExample() { + return ( + + + + مَٰنِ ٱلرَّحِيمِ + + + + + + + Hello + {' '} + World! + + + + + + + مَٰنِ ٱلرَّحِيمِ + + + + + + مَٰنِ ٱلرَّحِيمِ + + + + + + + مَٰنِ ٱلرَّحِيمِ + Hello + + + + + + + Hello + + مَٰنِ ٱلرَّحِيمِ + + + + + ); +} + +export default [ +======= const examples = [ +>>>>>>> Override { title: 'Empty Text', name: 'emptyText', render: EmptyTextExample, }, { +<<<<<<< Upstream + title: 'TextInlineViewsExample', + name: 'inlineViews', + description: + 'Shows how inline views are rendered when text is subject to alignment.', + expect: 'The red box should align correctly with the rest of the text.', + render: TextInlineViewsExample, + }, + { + title: 'RTL and Inline Views', + name: 'rtlInlineViews', + description: 'RTL Script and Layout Direction, Combined with Inline Views', + scrollable: true, + render: RtlAndInlineViewsExample, + }, + { +======= +>>>>>>> Override title: 'numberOfLines with onTextLayout', name: 'numberOfLinesLayout', description: diff --git a/packages/@react-native-windows/tester/src/js/examples/TextInput/TextInputExample.windows.js b/packages/@react-native-windows/tester/src/js/examples/TextInput/TextInputExample.windows.js index 701e2a2ac59..43de6b59027 100644 --- a/packages/@react-native-windows/tester/src/js/examples/TextInput/TextInputExample.windows.js +++ b/packages/@react-native-windows/tester/src/js/examples/TextInput/TextInputExample.windows.js @@ -755,6 +755,16 @@ const examples: Array = [ }, }, { +<<<<<<< Upstream + title: 'Accessibility', + render: function (): React.Node { + return ( + + accessibilityLabel prop + + aria-label prop + +======= title: 'onPressIn, onPressOut events', render: function (): React.Node { return ; @@ -904,11 +914,15 @@ const examples: Array = [ accessibilityRole="searchbox" defaultValue="Search" /> +>>>>>>> Override ); }, }, +<<<<<<< Upstream +======= // Windows] +>>>>>>> Override ]; module.exports = ({ diff --git a/packages/@react-native-windows/tester/src/js/examples/Touchable/TouchableExample.windows.js b/packages/@react-native-windows/tester/src/js/examples/Touchable/TouchableExample.windows.js index 057e7b208cd..07a63f46f40 100644 --- a/packages/@react-native-windows/tester/src/js/examples/Touchable/TouchableExample.windows.js +++ b/packages/@react-native-windows/tester/src/js/examples/Touchable/TouchableExample.windows.js @@ -28,7 +28,7 @@ import { const forceTouchAvailable = (Platform.OS === 'ios' && Platform.constants.forceTouchAvailable) || false; -class TouchableHighlightBox extends React.Component<{...}, $FlowFixMeState> { +class TouchableHighlightBox extends React.Component<{...}, $FlowFixMe> { state: any | {timesPressed: number} = { timesPressed: 0, }; @@ -79,10 +79,7 @@ class TouchableHighlightBox extends React.Component<{...}, $FlowFixMeState> { } } -class TouchableWithoutFeedbackBox extends React.Component< - {...}, - $FlowFixMeState, -> { +class TouchableWithoutFeedbackBox extends React.Component<{...}, $FlowFixMe> { state: any | {timesPressed: number} = { timesPressed: 0, }; @@ -122,7 +119,7 @@ class TouchableWithoutFeedbackBox extends React.Component< } } -class TextOnPressBox extends React.Component<{...}, $FlowFixMeState> { +class TextOnPressBox extends React.Component<{...}, $FlowFixMe> { state: any | {timesPressed: number} = { timesPressed: 0, }; @@ -157,7 +154,7 @@ class TextOnPressBox extends React.Component<{...}, $FlowFixMeState> { } } -class TouchableFeedbackEvents extends React.Component<{...}, $FlowFixMeState> { +class TouchableFeedbackEvents extends React.Component<{...}, $FlowFixMe> { state: any | {eventLog: Array} = { eventLog: [], }; @@ -199,7 +196,7 @@ class TouchableFeedbackEvents extends React.Component<{...}, $FlowFixMeState> { }; } -class TouchableDelayEvents extends React.Component<{...}, $FlowFixMeState> { +class TouchableDelayEvents extends React.Component<{...}, $FlowFixMe> { state: any | {eventLog: Array} = { eventLog: [], }; @@ -240,7 +237,7 @@ class TouchableDelayEvents extends React.Component<{...}, $FlowFixMeState> { }; } -class ForceTouchExample extends React.Component<{...}, $FlowFixMeState> { +class ForceTouchExample extends React.Component<{...}, $FlowFixMe> { state: any | {force: number} = { force: 0, }; @@ -274,7 +271,7 @@ class ForceTouchExample extends React.Component<{...}, $FlowFixMeState> { } } -class TouchableHitSlop extends React.Component<{...}, $FlowFixMeState> { +class TouchableHitSlop extends React.Component<{...}, $FlowFixMe> { state: any | {timesPressed: number} = { timesPressed: 0, }; diff --git a/packages/@react-native-windows/tester/src/js/examples/TurboModule/SampleTurboModuleExample.windows.js b/packages/@react-native-windows/tester/src/js/examples/TurboModule/SampleTurboModuleExample.windows.js index 082c39d36b8..95acb4e4f2f 100644 --- a/packages/@react-native-windows/tester/src/js/examples/TurboModule/SampleTurboModuleExample.windows.js +++ b/packages/@react-native-windows/tester/src/js/examples/TurboModule/SampleTurboModuleExample.windows.js @@ -255,7 +255,7 @@ class SampleTurboModuleExample extends React.Component<{}, State> { style={[styles.column, styles.button]} onPress={() => Object.keys(this._tests).forEach(item => - // $FlowFixMe[incompatible-call] + // $FlowFixMe[incompatible-type] this._setResult(item, this._tests[item]()), ) }> @@ -272,7 +272,7 @@ class SampleTurboModuleExample extends React.Component<{}, State> { item} renderItem={({item}: {item: Examples, ...}) => ( @@ -292,7 +292,7 @@ class SampleTurboModuleExample extends React.Component<{}, State> { item} renderItem={({item}: {item: ErrorExamples, ...}) => ( diff --git a/packages/@react-native-windows/tester/src/js/utils/RNTesterList.windows.js b/packages/@react-native-windows/tester/src/js/utils/RNTesterList.windows.js index 4fb02a1a99b..ff13116b4ea 100644 --- a/packages/@react-native-windows/tester/src/js/utils/RNTesterList.windows.js +++ b/packages/@react-native-windows/tester/src/js/utils/RNTesterList.windows.js @@ -13,7 +13,6 @@ import type {RNTesterModule, RNTesterModuleInfo} from '../types/RNTesterTypes'; import * as RNTesterListFbInternal from './RNTesterListFbInternal'; -import ReactNativeFeatureFlags from 'react-native/Libraries/ReactNative/ReactNativeFeatureFlags'; const Components: Array = [ /*{ @@ -214,12 +213,15 @@ const Components: Array = [ category: 'Basic', module: require('../examples/Performance/PerformanceComparisonExample'), }, +<<<<<<< Upstream +======= /* { key: 'OSSLibraryExample', module: require('../examples/OSSLibraryExample/OSSLibraryExample'), }, */ +>>>>>>> Override ...RNTesterListFbInternal.Components, ]; @@ -467,14 +469,6 @@ const APIs: Array = ([ ...RNTesterListFbInternal.APIs, ]: Array).filter(Boolean); -if (ReactNativeFeatureFlags.shouldEmitW3CPointerEvents()) { - APIs.push({ - key: 'W3C PointerEvents', - category: 'Experimental', - module: require('../examples/Experimental/W3CPointerEventsExample').default, - }); -} - const Playgrounds: Array = [ { key: 'PlaygroundExample', diff --git a/packages/@react-native/monorepo/overrides.json b/packages/@react-native/monorepo/overrides.json index cae52fcbf07..796d1175e6f 100644 --- a/packages/@react-native/monorepo/overrides.json +++ b/packages/@react-native/monorepo/overrides.json @@ -1,11 +1,11 @@ { - "baseVersion": "0.81.0-nightly-20250709-6892dde36", + "baseVersion": "0.82.0-nightly-20250819-25104de5c", "overrides": [ { "type": "patch", "file": "package.json", "baseFile": "package.json", - "baseHash": "47d95d17d32c83bc795c3f50fa1ce7a393271b75" + "baseHash": "2136eb982b3bf6d6e2e02ff9f3accaf477a07de9" } ] } \ No newline at end of file diff --git a/packages/@react-native/monorepo/package.json b/packages/@react-native/monorepo/package.json index d20c7e8cabc..be7d59d67db 100644 --- a/packages/@react-native/monorepo/package.json +++ b/packages/@react-native/monorepo/package.json @@ -13,9 +13,25 @@ "flow": "flow", "format-check": "prettier --list-different \"./**/*.{js,md,yml,ts,tsx}\"", "format": "npm run prettier && npm run clang-format", +<<<<<<< HEAD +======= +<<<<<<< Upstream +>>>>>>> 923b1fa618d99a145a0081df94a00fc9404b2a21 + "featureflags": "yarn --cwd packages/react-native featureflags", + "js-api-diff": "node ./scripts/js-api/diff-api-snapshot", + "lint-ci": "./.github/workflow-scripts/analyze_code.sh && yarn shellcheck", + "lint-kotlin-check": "./gradlew ktfmtCheck", + "lint-kotlin": "./gradlew ktfmtFormat", + "lint-markdown": "markdownlint-cli2 2>&1", + "lint": "eslint --max-warnings 0 .", +<<<<<<< HEAD +======= +======= "featureflags": "cd packages/react-native && yarn featureflags", "lint-ci": "./scripts/circleci/analyze_code.sh && yarn shellcheck", "lint-java": "node ./scripts/lint-java.js", +>>>>>>> Override +>>>>>>> 923b1fa618d99a145a0081df94a00fc9404b2a21 "prettier": "prettier --write \"./**/*.{js,md,yml,ts,tsx}\"", "print-packages": "node ./scripts/monorepo/print", "shellcheck": "./scripts/circleci/analyze_scripts.sh", @@ -23,8 +39,8 @@ "set-version": "node ./scripts/releases/set-version", "test-android": "./gradlew :packages:react-native:ReactAndroid:test", "test-ci": "jest --maxWorkers=2 --ci --reporters=\"default\" --reporters=\"jest-junit\"", - "test-e2e-local-clean": "node ./scripts/release-testing/test-e2e-local-clean.js", - "test-e2e-local": "node ./scripts/release-testing/test-e2e-local.js", + "test-release-local-clean": "node ./scripts/release-testing/test-release-local-clean.js", + "test-release-local": "node ./scripts/release-testing/test-release-local.js", "test-ios": "./scripts/objc-test.sh test", "test-typescript": "tsc -p packages/react-native/types/tsconfig.json", "test-generated-typescript": "tsc -p packages/react-native/types_generated/tsconfig.test.json", @@ -47,14 +63,23 @@ "@babel/preset-env": "^7.25.3", "@babel/preset-flow": "^7.24.7", "@jest/create-cache-key-function": "^29.7.0", +<<<<<<< Upstream + "@microsoft/api-extractor": "^7.52.2", + "@react-native/metro-babel-transformer": "0.82.0-main", + "@react-native/metro-config": "0.82.0-main", + "@tsconfig/node22": "22.0.2", + "@types/react": "^19.1.0", + "@typescript-eslint/parser": "^8.36.0", +======= "@react-native/metro-babel-transformer": "0.81.0-nightly-20250709-6892dde36", "@react-native/metro-config": "0.81.0-nightly-20250709-6892dde36", "@tsconfig/node18": "1.0.1", "@types/react": "^19.0.0", "@typescript-eslint/parser": "^7.1.1", +>>>>>>> Override "ansi-styles": "^4.2.1", "babel-plugin-minify-dead-code-elimination": "^0.5.2", - "babel-plugin-syntax-hermes-parser": "0.29.1", + "babel-plugin-syntax-hermes-parser": "0.31.2", "babel-plugin-transform-define": "^2.1.4", "babel-plugin-transform-flow-enums": "^0.0.2", "clang-format": "^1.8.0", @@ -66,17 +91,35 @@ "eslint-plugin-babel": "^5.3.1", "eslint-plugin-eslint-comments": "^3.2.0", "eslint-plugin-ft-flow": "^2.0.1", - "eslint-plugin-jest": "^27.9.0", + "eslint-plugin-jest": "^29.0.1", "eslint-plugin-jsx-a11y": "^6.6.0", "eslint-plugin-react": "^7.30.1", "eslint-plugin-react-native": "^4.0.0", "eslint-plugin-redundant-undefined": "^0.4.0", "eslint-plugin-relay": "^1.8.3", +<<<<<<< HEAD + "flow-api-translator": "0.31.2", + "flow-bin": "^0.279.0", + "glob": "^7.1.1", + "hermes-eslint": "0.31.2", + "hermes-transform": "0.31.2", + "ini": "^5.0.0", +======= +<<<<<<< Upstream + "flow-api-translator": "0.31.2", + "flow-bin": "^0.279.0", + "glob": "^7.1.1", + "hermes-eslint": "0.31.2", + "hermes-transform": "0.31.2", + "ini": "^5.0.0", +======= "flow-api-translator": "0.29.1", "flow-bin": "^0.274.2", "glob": "^7.1.1", "hermes-eslint": "0.29.1", "hermes-transform": "0.29.1", +>>>>>>> Override +>>>>>>> 923b1fa618d99a145a0081df94a00fc9404b2a21 "inquirer": "^7.1.0", "jest": "^29.7.0", "jest-config": "^29.7.0", @@ -85,27 +128,53 @@ "jest-snapshot": "^29.7.0", "markdownlint-cli2": "^0.17.2", "markdownlint-rule-relative-links": "^3.0.0", +<<<<<<< HEAD + "memfs": "^4.7.7", + "metro-babel-register": "^0.83.1", + "metro-transform-plugins": "^0.83.1", +======= +<<<<<<< Upstream + "memfs": "^4.7.7", + "metro-babel-register": "^0.83.1", + "metro-transform-plugins": "^0.83.1", +======= "metro-babel-register": "^0.82.4", "metro-memory-fs": "^0.82.4", "metro-transform-plugins": "^0.82.4", +>>>>>>> Override +>>>>>>> 923b1fa618d99a145a0081df94a00fc9404b2a21 "micromatch": "^4.0.4", "node-fetch": "^2.2.0", "nullthrows": "^1.1.1", - "prettier": "2.8.8", - "prettier-plugin-hermes-parser": "0.29.1", - "react": "19.1.0", - "react-test-renderer": "19.1.0", + "prettier": "3.6.2", + "prettier-plugin-hermes-parser": "0.31.1", + "react": "19.1.1", + "react-test-renderer": "19.1.1", "rimraf": "^3.0.2", "shelljs": "^0.8.5", "signedsource": "^1.0.0", "supports-color": "^7.1.0", "temp-dir": "^2.0.0", +<<<<<<< HEAD + "tinybench": "^4.1.0", + "typescript": "5.8.3", + "ws": "^6.2.3" +======= +<<<<<<< Upstream + "tinybench": "^4.1.0", + "typescript": "5.8.3", + "ws": "^6.2.3" +======= "tinybench": "^3.1.0", "typescript": "5.0.4", "ws": "^6.2.2" +>>>>>>> Override +>>>>>>> 923b1fa618d99a145a0081df94a00fc9404b2a21 }, "resolutions": { "eslint-plugin-react-hooks": "6.1.0-canary-12bc60f5-20250613", - "react-is": "19.1.0" + "react-is": "19.1.1", + "on-headers": "1.1.0", + "compression": "1.8.1" } } diff --git a/packages/@react-native/tester/NativeComponentExample/js/MyNativeView.js b/packages/@react-native/tester/NativeComponentExample/js/MyNativeView.js index 2fed427bb6c..198ade0266f 100644 --- a/packages/@react-native/tester/NativeComponentExample/js/MyNativeView.js +++ b/packages/@react-native/tester/NativeComponentExample/js/MyNativeView.js @@ -183,7 +183,7 @@ export default function MyNativeView(props: {}): React.Node { currentBGColor + 1 >= colors.length ? 0 : currentBGColor + 1; let newColor = colors[nextBGColor]; RNTMyNativeViewCommands.callNativeMethodToChangeBackgroundColor( - // $FlowFixMe[incompatible-call] + // $FlowFixMe[incompatible-type] ref.current, newColor, ); @@ -215,7 +215,7 @@ export default function MyNativeView(props: {}): React.Node { colors[(randomColorId + 1) % 5], ]; RNTMyNativeViewCommands.callNativeMethodToAddOverlays( - // $FlowFixMe[incompatible-call] + // $FlowFixMe[incompatible-type] ref.current, overlayColors, ); @@ -226,7 +226,7 @@ export default function MyNativeView(props: {}): React.Node { title="Remove Overlays" onPress={() => { RNTMyNativeViewCommands.callNativeMethodToRemoveOverlays( - // $FlowFixMe[incompatible-call] + // $FlowFixMe[incompatible-type] ref.current, ); callNativeMethodToRemoveOverlays(legacyRef.current); @@ -287,7 +287,7 @@ export default function MyNativeView(props: {}): React.Node { title="Fire Legacy Style Event" onPress={() => { RNTMyNativeViewCommands.fireLagacyStyleEvent( - // $FlowFixMe[incompatible-call] + // $FlowFixMe[incompatible-type] ref.current, ); }} diff --git a/packages/@react-native/tester/js/RNTesterAppShared.js b/packages/@react-native/tester/js/RNTesterAppShared.js index fb21d2bcaef..6a53954e3df 100644 --- a/packages/@react-native/tester/js/RNTesterAppShared.js +++ b/packages/@react-native/tester/js/RNTesterAppShared.js @@ -33,6 +33,7 @@ import { BackHandler, Button, Linking, + NativeComponentRegistry, Platform, StatusBar, StyleSheet, @@ -40,7 +41,6 @@ import { useColorScheme, useWindowDimensions, } from 'react-native'; -import * as NativeComponentRegistry from 'react-native/Libraries/NativeComponent/NativeComponentRegistry'; // In Bridgeless mode, in dev, enable static view config validator if (global.RN$Bridgeless === true && __DEV__) { diff --git a/packages/@react-native/tester/js/examples/TextInput/TextInputExample.android.js b/packages/@react-native/tester/js/examples/TextInput/TextInputExample.android.js index 930b241647b..eda21cd69be 100644 --- a/packages/@react-native/tester/js/examples/TextInput/TextInputExample.android.js +++ b/packages/@react-native/tester/js/examples/TextInput/TextInputExample.android.js @@ -451,6 +451,19 @@ const examples: Array = [ return ; }, }, + { + title: 'Accessibility', + render: function (): React.Node { + return ( + + accessibilityLabel prop + + aria-label prop + + + ); + }, + }, ]; module.exports = ({ diff --git a/packages/@react-native/tester/js/examples/TextInput/TextInputExample.ios.js b/packages/@react-native/tester/js/examples/TextInput/TextInputExample.ios.js index 62f9607de9e..5fc810c44f0 100644 --- a/packages/@react-native/tester/js/examples/TextInput/TextInputExample.ios.js +++ b/packages/@react-native/tester/js/examples/TextInput/TextInputExample.ios.js @@ -32,7 +32,7 @@ import { View, } from 'react-native'; -class WithLabel extends React.Component<$FlowFixMeProps> { +class WithLabel extends React.Component<$FlowFixMe> { render(): React.Node { return ( @@ -50,7 +50,7 @@ class TextInputAccessoryViewChangeTextExample extends React.Component< {text: string}, > { constructor(props: void | {...}) { - // $FlowFixMe[incompatible-call] + // $FlowFixMe[incompatible-type] super(props); this.state = {text: 'Placeholder Text'}; } @@ -85,7 +85,7 @@ class TextInputAccessoryViewChangeKeyboardExample extends React.Component< {keyboardType: string, text: string}, > { constructor(props: void | {...}) { - // $FlowFixMe[incompatible-call] + // $FlowFixMe[incompatible-type] super(props); this.state = {text: '', keyboardType: 'default'}; } @@ -130,7 +130,7 @@ class TextInputAccessoryViewDefaultDoneButtonExample extends React.Component< {text: string}, > { constructor(props: void | $ReadOnly<{keyboardType: KeyboardTypeOptions}>) { - // $FlowFixMe[incompatible-call] + // $FlowFixMe[incompatible-type] super(props); this.state = {text: ''}; } @@ -147,7 +147,7 @@ class TextInputAccessoryViewDefaultDoneButtonExample extends React.Component< } } -class RewriteExampleKana extends React.Component<$FlowFixMeProps, any> { +class RewriteExampleKana extends React.Component<$FlowFixMe, any> { constructor(props: any | void) { super(props); this.state = {text: ''}; @@ -167,7 +167,7 @@ class RewriteExampleKana extends React.Component<$FlowFixMeProps, any> { } } -class SecureEntryExample extends React.Component<$FlowFixMeProps, any> { +class SecureEntryExample extends React.Component<$FlowFixMe, any> { constructor(props: any | void) { super(props); this.state = { @@ -1036,6 +1036,21 @@ const textInputExamples: Array = [ ); }, }, + { + title: 'Accessibility', + render: function (): React.Node { + return ( + + + + + + + + + ); + }, + }, ]; module.exports = ({ diff --git a/packages/@react-native/tester/js/examples/TextInput/TextInputKeyProp.js b/packages/@react-native/tester/js/examples/TextInput/TextInputKeyProp.js index 5d2330c3b57..3e25d843dbd 100644 --- a/packages/@react-native/tester/js/examples/TextInput/TextInputKeyProp.js +++ b/packages/@react-native/tester/js/examples/TextInput/TextInputKeyProp.js @@ -10,6 +10,8 @@ 'use strict'; +import type {RNTesterModuleExample} from '../../types/RNTesterTypes'; + import React, {useEffect, useState} from 'react'; import {TextInput, View} from 'react-native'; @@ -48,4 +50,4 @@ exports.examples = [ return ; }, }, -]; +] as Array; diff --git a/packages/@react-native/tester/js/examples/TextInput/TextInputSharedExamples.js b/packages/@react-native/tester/js/examples/TextInput/TextInputSharedExamples.js index 288b90c1432..2de5275b9dd 100644 --- a/packages/@react-native/tester/js/examples/TextInput/TextInputSharedExamples.js +++ b/packages/@react-native/tester/js/examples/TextInput/TextInputSharedExamples.js @@ -76,7 +76,7 @@ const styles = StyleSheet.create({ }); class AutoFocusWithSelectOnFocusTextExample extends React.Component< - $FlowFixMeProps, + $FlowFixMe, any, > { constructor(props: any | void) { @@ -108,7 +108,7 @@ class AutoFocusWithSelectOnFocusTextExample extends React.Component< } } -class WithLabel extends React.Component<$FlowFixMeProps> { +class WithLabel extends React.Component<$FlowFixMe> { render(): React.Node { return ( @@ -119,7 +119,7 @@ class WithLabel extends React.Component<$FlowFixMeProps> { } } -class RewriteExample extends React.Component<$FlowFixMeProps, any> { +class RewriteExample extends React.Component<$FlowFixMe, any> { constructor(props: any | void) { super(props); this.state = {text: ''}; @@ -149,10 +149,7 @@ class RewriteExample extends React.Component<$FlowFixMeProps, any> { } } -class RewriteExampleInvalidCharacters extends React.Component< - $FlowFixMeProps, - any, -> { +class RewriteExampleInvalidCharacters extends React.Component<$FlowFixMe, any> { constructor(props: any | void) { super(props); this.state = {text: ''}; @@ -175,7 +172,7 @@ class RewriteExampleInvalidCharacters extends React.Component< } class RewriteInvalidCharactersAndClearExample extends React.Component< - $FlowFixMeProps, + $FlowFixMe, any, > { inputRef: ?React.ElementRef = null; @@ -359,7 +356,7 @@ class SubmitBehaviorExample extends React.Component<{...}> { } } -class TextEventsExample extends React.Component<{...}, $FlowFixMeState> { +class TextEventsExample extends React.Component<{...}, $FlowFixMe> { state: | any | { @@ -427,10 +424,7 @@ class TextEventsExample extends React.Component<{...}, $FlowFixMeState> { } } -class TokenizedTextExample extends React.Component< - $FlowFixMeProps, - $FlowFixMeState, -> { +class TokenizedTextExample extends React.Component<$FlowFixMe, $FlowFixMe> { constructor(props: any | void) { super(props); this.state = {text: 'Hello #World'}; @@ -500,7 +494,7 @@ type SelectionExampleState = { }; class SelectionExample extends React.Component< - $FlowFixMeProps, + $FlowFixMe, SelectionExampleState, > { _textInput: React.ElementRef | null = null; @@ -1239,6 +1233,7 @@ module.exports = ([ enablesReturnKeyAutomatically={true} returnKeyType="done" style={{maxHeight: 400, minHeight: 20, backgroundColor: '#eeeeee'}}> + generic generic generic small small small small small small @@ -1246,6 +1241,7 @@ module.exports = ([ huge huge huge huge huge + generic generic generic ); diff --git a/packages/@react-native/tester/js/utils/RNTesterList.android.js b/packages/@react-native/tester/js/utils/RNTesterList.android.js index 52353418c80..bf09e4e8777 100644 --- a/packages/@react-native/tester/js/utils/RNTesterList.android.js +++ b/packages/@react-native/tester/js/utils/RNTesterList.android.js @@ -13,7 +13,6 @@ import type {RNTesterModule, RNTesterModuleInfo} from '../types/RNTesterTypes'; import * as RNTesterListFbInternal from './RNTesterListFbInternal'; -import ReactNativeFeatureFlags from 'react-native/Libraries/ReactNative/ReactNativeFeatureFlags'; const Components: Array = [ { @@ -146,12 +145,18 @@ const Components: Array = [ category: 'Basic', module: require('../examples/Performance/PerformanceComparisonExample'), }, +<<<<<<< HEAD +<<<<<<< Upstream +======= /* { key: 'OSSLibraryExample', module: require('../examples/OSSLibraryExample/OSSLibraryExample'), }, */ +>>>>>>> Override +======= +>>>>>>> 923b1fa618d99a145a0081df94a00fc9404b2a21 ...RNTesterListFbInternal.Components, ]; @@ -373,14 +378,6 @@ const APIs: Array = ([ ...RNTesterListFbInternal.APIs, ]: Array).filter(Boolean); -if (ReactNativeFeatureFlags.shouldEmitW3CPointerEvents()) { - APIs.push({ - key: 'W3C PointerEvents', - category: 'Experimental', - module: require('../examples/Experimental/W3CPointerEventsExample').default, - }); -} - const Playgrounds: Array = [ { key: 'PlaygroundExample', diff --git a/packages/@react-native/tester/js/utils/RNTesterList.ios.js b/packages/@react-native/tester/js/utils/RNTesterList.ios.js index 9cea3dadee3..e0b59644c03 100644 --- a/packages/@react-native/tester/js/utils/RNTesterList.ios.js +++ b/packages/@react-native/tester/js/utils/RNTesterList.ios.js @@ -11,7 +11,6 @@ import type {RNTesterModule, RNTesterModuleInfo} from '../types/RNTesterTypes'; import * as RNTesterListFbInternal from './RNTesterListFbInternal'; -import ReactNativeFeatureFlags from 'react-native/Libraries/ReactNative/ReactNativeFeatureFlags'; const Components: Array = [ { @@ -154,12 +153,18 @@ const Components: Array = [ category: 'Basic', module: require('../examples/Performance/PerformanceComparisonExample'), }, +<<<<<<< HEAD +<<<<<<< Upstream +======= /* { key: 'OSSLibraryExample', module: require('../examples/OSSLibraryExample/OSSLibraryExample'), }, */ +>>>>>>> Override +======= +>>>>>>> 923b1fa618d99a145a0081df94a00fc9404b2a21 ...RNTesterListFbInternal.Components, ]; @@ -347,14 +352,6 @@ const APIs: Array = ([ ...RNTesterListFbInternal.APIs, ]: Array).filter(Boolean); -if (ReactNativeFeatureFlags.shouldEmitW3CPointerEvents()) { - APIs.push({ - key: 'W3C PointerEvents', - category: 'Experimental', - module: require('../examples/Experimental/W3CPointerEventsExample').default, - }); -} - const Playgrounds: Array = [ { key: 'PlaygroundExample', diff --git a/packages/@react-native/tester/js/utils/RNTesterNavigationReducer.js b/packages/@react-native/tester/js/utils/RNTesterNavigationReducer.js index 3a3fd36dd31..a952455b82f 100644 --- a/packages/@react-native/tester/js/utils/RNTesterNavigationReducer.js +++ b/packages/@react-native/tester/js/utils/RNTesterNavigationReducer.js @@ -45,7 +45,7 @@ const getUpdatedRecentlyUsed = ({ if (existingKeys.includes(key)) { existingKeys = existingKeys.filter(k => k !== key); } - // $FlowFixMe[incompatible-call] + // $FlowFixMe[incompatible-type] existingKeys.unshift(key); updatedRecentlyUsed[exampleType] = existingKeys.slice(0, 5); diff --git a/packages/@react-native/tester/overrides.json b/packages/@react-native/tester/overrides.json index cd2706e635a..b7ecdc3c779 100644 --- a/packages/@react-native/tester/overrides.json +++ b/packages/@react-native/tester/overrides.json @@ -1,5 +1,5 @@ { - "baseVersion": "0.81.0-nightly-20250709-6892dde36", + "baseVersion": "0.82.0-nightly-20250819-25104de5c", "overrides": [ { "type": "copy", @@ -12,21 +12,21 @@ "type": "copy", "directory": "js/components", "baseDirectory": "packages/rn-tester/js/components", - "baseHash": "d80fda0dc8694fec30a830c9505ce0d993d4243f", + "baseHash": "27b96c605c41f54f04786b4e31cd1e5d911486b0", "issue": 4054 }, { "type": "copy", "directory": "js/examples/Accessibility", "baseDirectory": "packages/rn-tester/js/examples/Accessibility", - "baseHash": "f3ebe7a63580cff1fcd1b69530221deae674624d", + "baseHash": "8e5f2a1d2ceeaafedf6756e97de0ac696672026a", "issue": 4054 }, { "type": "copy", "directory": "js/examples/ActionSheetIOS", "baseDirectory": "packages/rn-tester/js/examples/ActionSheetIOS", - "baseHash": "5ea321e609eca938c5b2b6e6588ffec9dc9bc140", + "baseHash": "e6eb3978718f0e991b9ecfd4eb9b51d068329b6a", "issue": 4054 }, { @@ -40,28 +40,28 @@ "type": "copy", "directory": "js/examples/Alert", "baseDirectory": "packages/rn-tester/js/examples/Alert", - "baseHash": "f86c10d593d7df2d39f2c84999d17b8779ce850d", + "baseHash": "50936fa640fba028d0efe7d391968e02c409a9e5", "issue": 4054 }, { "type": "copy", "directory": "js/examples/Animated", "baseDirectory": "packages/rn-tester/js/examples/Animated", - "baseHash": "2360c15266880dd810d87ecdaadb8d3118949122", + "baseHash": "8746a19c501f6c4cf769f45301b39ba04918ca8c", "issue": 4054 }, { "type": "copy", "directory": "js/examples/AnimatedGratuitousApp", "baseDirectory": "packages/rn-tester/js/examples/AnimatedGratuitousApp", - "baseHash": "919725c39b25ca35d8c9ae97f738efcac5d4619c", + "baseHash": "8a8aac9f747ca0830268bf4b7c83df1405614c1b", "issue": 4054 }, { "type": "copy", "directory": "js/examples/Appearance", "baseDirectory": "packages/rn-tester/js/examples/Appearance", - "baseHash": "a0ace4d095aed6fcadb33b1036a0dce2faa84935", + "baseHash": "e50957281c2d2c69ac0cf9b7fbba52bfcb4b2acc", "issue": 4054 }, { @@ -82,49 +82,49 @@ "type": "copy", "directory": "js/examples/BoxShadow", "baseDirectory": "packages/rn-tester/js/examples/BoxShadow", - "baseHash": "25008c322d69227afc8ddca0d2583a736bbd5fcf", + "baseHash": "30d7c9a61b97ba9e2fa50ab1fbd2e95bc69bf578", "issue": 4054 }, { "type": "copy", "directory": "js/examples/Button", "baseDirectory": "packages/rn-tester/js/examples/Button", - "baseHash": "b55e8f45a52219192b60c93a74327fea5f12f248", + "baseHash": "9128b96da49cf2265707e7a45885fec6f21b0531", "issue": 4054 }, { "type": "copy", "directory": "js/examples/ContentURLAndroid", "baseDirectory": "packages/rn-tester/js/examples/ContentURLAndroid", - "baseHash": "84432fe42f13d88cf5a683f6352c5448bdab5ff8", + "baseHash": "b68ab3fbff1dd27263c6f79cac4b100387031ba6", "issue": 14844 }, { "type": "copy", "directory": "js/examples/Crash", "baseDirectory": "packages/rn-tester/js/examples/Crash", - "baseHash": "8f253227dc9153838c06e3acefedb19ad71afcf4", + "baseHash": "d7c6e62e585ac7262e64400e98b1f488b7b5ae5e", "issue": 4054 }, { "type": "copy", "directory": "js/examples/Cursor", "baseDirectory": "packages/rn-tester/js/examples/Cursor/", - "baseHash": "4fe0a044c8d36a03f8813c2c979996969cbb8292", + "baseHash": "f3fe5f238ed6a197c211eed37353994d0e4e652d", "issue": 4054 }, { "type": "copy", "directory": "js/examples/DevSettings", "baseDirectory": "packages/rn-tester/js/examples/DevSettings", - "baseHash": "1dfcc11095ad5623f55c70a9583423fef063d020", + "baseHash": "72e5665981d0a3592148eeddd6ea9c4dbe9a2c15", "issue": 4054 }, { "type": "copy", "directory": "js/examples/Dimensions", "baseDirectory": "packages/rn-tester/js/examples/Dimensions", - "baseHash": "17355cfdfc1226357f64195b897685681b3d0d06", + "baseHash": "dd72316571c8d3cb1d099b193570b929dbe3aee8", "issue": 4054 }, { @@ -138,14 +138,14 @@ "type": "copy", "directory": "js/examples/DrawerLayoutAndroid", "baseDirectory": "packages/rn-tester/js/examples/DrawerLayoutAndroid", - "baseHash": "e39c4ae1b1ab170ff0aa9bbdd6dc10ee9572e581", + "baseHash": "631085563b9f193a0b8e55c4b3125cccab3ac315", "issue": 4054 }, { "type": "copy", "directory": "js/examples/Experimental", "baseDirectory": "packages/rn-tester/js/examples/Experimental", - "baseHash": "c89b48fc1ecf0dac37dfa28a14a6d145e847ba07", + "baseHash": "9ab384bedf0c2b3027fa0af54ecc8f3744ed9ae7", "issue": 4054 }, { @@ -159,7 +159,7 @@ "type": "copy", "directory": "js/examples/FlatList", "baseDirectory": "packages/rn-tester/js/examples/FlatList", - "baseHash": "8482cbc242b6e720fa5c1ee6cbee09463a46e55a", + "baseHash": "68baba17c05eeb1f038396bdbbb63c1dfed64f69", "issue": 4054 }, { @@ -173,21 +173,21 @@ "type": "copy", "directory": "js/examples/InputAccessoryView", "baseDirectory": "packages/rn-tester/js/examples/InputAccessoryView", - "baseHash": "0e08c62585bf84585a5c5e4750ac60810cfc4abd", + "baseHash": "6024360ecd527038c8f21b3fdf0867b4d9e71d27", "issue": 4054 }, { "type": "copy", "directory": "js/examples/InvalidProps", "baseDirectory": "packages/rn-tester/js/examples/InvalidProps", - "baseHash": "156aa86db7cd0d18359a36639e33f7c1cd2b8a6a", + "baseHash": "848cebed1d4f9f51217033fea4297ea9d0775f17", "issue": 4054 }, { "type": "copy", "directory": "js/examples/JSResponderHandlerExample", "baseDirectory": "packages/rn-tester/js/examples/JSResponderHandlerExample", - "baseHash": "56167eac4a956eda6aaefa320ace8aa232bebe7b", + "baseHash": "94091a151a359db592357af0c7a9c3eb217df518", "issue": 4054 }, { @@ -201,28 +201,28 @@ "type": "copy", "directory": "js/examples/KeyboardAvoidingView", "baseDirectory": "packages/rn-tester/js/examples/KeyboardAvoidingView", - "baseHash": "a62950d3245e6a55daada929fc54faf862c6c449", + "baseHash": "fe61b4f3bedda50f12e876afb55ebceba6127a8b", "issue": 4054 }, { "type": "copy", "directory": "js/examples/Layout", "baseDirectory": "packages/rn-tester/js/examples/Layout", - "baseHash": "2c057a259bc8ab4468b210ba0a1c93f14e592afc", + "baseHash": "36ed6980fcca678f858b65dd8a723dcb3bfcf5cc", "issue": 4054 }, { "type": "copy", "directory": "js/examples/LinearGradient", "baseDirectory": "packages/rn-tester/js/examples/LinearGradient/", - "baseHash": "601ee443dd033a5622d000de87cea51aa4e9119d", + "baseHash": "1f9a8cb4d023214e768ba729b7c97870de8f61ab", "issue": 4054 }, { "type": "copy", "directory": "js/examples/Linking", "baseDirectory": "packages/rn-tester/js/examples/Linking", - "baseHash": "1a9a2785318a4b9e7bb03536776831690883578e", + "baseHash": "6645d446796b252ff1bcd18453791d8529a09bb3", "issue": 4054 }, { @@ -243,34 +243,35 @@ "type": "copy", "directory": "js/examples/NativeAnimation", "baseDirectory": "packages/rn-tester/js/examples/NativeAnimation", - "baseHash": "e6e46a8314710ca508b1235eaaf15454e112100f", + "baseHash": "119f131f626c4baa10d4d28bc2ac4f0686d602ee", "issue": 4054 }, { "type": "copy", "directory": "js/examples/NewAppScreen", "baseDirectory": "packages/rn-tester/js/examples/NewAppScreen", - "baseHash": "69596f54e45e0b9ed384052e7e0d96ed44dc0c6e", + "baseHash": "b3ebeecade38c72789c6d3ad51a86e0e9fc13d1a", "issue": 0 }, { "type": "copy", "directory": "js/examples/NewArchitecture", "baseDirectory": "packages/rn-tester/js/examples/NewArchitecture", - "baseHash": "f2f212445c5a1310b393a64634014a50c38dd03c", + "baseHash": "dff238dab067fed2d3a07f6f3aaac5a698212aa0", "issue": 4054 }, { "type": "copy", "directory": "js/examples/OrientationChange", "baseDirectory": "packages/rn-tester/js/examples/OrientationChange", - "baseHash": "58840892e1b928b2290bafad76efebbf0e7770cb", + "baseHash": "d0ecbb6e4bbbad8b41cfd3f9fecd738ba3571f4d", "issue": 4054 }, { "type": "copy", "directory": "js/examples/OSSLibraryExample", "baseDirectory": "packages/rn-tester/js/examples/OSSLibraryExample", + "baseVersion": "0.81.0-nightly-20250709-6892dde36", "baseHash": "5e81207c1955cdd2c2e3c307785d614f74ff858f", "issue": 4054 }, @@ -278,7 +279,7 @@ "type": "copy", "directory": "js/examples/PanResponder", "baseDirectory": "packages/rn-tester/js/examples/PanResponder", - "baseHash": "6859f5e7f35424e6ddc4aa9c39a76ecb946c7bb3", + "baseHash": "0dcad06c7958cd62119b4bc963947d8653b38ed5", "issue": 4054 }, { @@ -291,21 +292,21 @@ "type": "copy", "directory": "js/examples/PermissionsAndroid", "baseDirectory": "packages/rn-tester/js/examples/PermissionsAndroid", - "baseHash": "6f4d4d32f7cfa7d1c6b7d7f85aacc86a00fd51cf", + "baseHash": "e7525727686b5bf71634f85afe1bb538941aac77", "issue": 4054 }, { "type": "copy", "directory": "js/examples/PixelRatio", "baseDirectory": "packages/rn-tester/js/examples/PixelRatio", - "baseHash": "e724d72c0010fce144a936d606ff2f120ab9bf3e", + "baseHash": "23719718be8a111e40b8e3c2ef363772181c9efb", "issue": 4054 }, { "type": "copy", "directory": "js/examples/PlatformColor", "baseDirectory": "packages/rn-tester/js/examples/PlatformColor", - "baseHash": "1c2389a60e5b5e450a377d33212d6bf102424503", + "baseHash": "d8c828c7f2c41e99de2e8fe9bc89d5e0e8250bb0", "issue": 4054 }, { @@ -319,35 +320,35 @@ "type": "copy", "directory": "js/examples/PointerEvents", "baseDirectory": "packages/rn-tester/js/examples/PointerEvents", - "baseHash": "41cb4045529577e57964802fdb23c429e2bce46b", + "baseHash": "b494881c44a0922313a3d1737cb7bca96231273b", "issue": 4054 }, { "type": "copy", "directory": "js/examples/PopupMenuAndroid", "baseDirectory": "packages/rn-tester/js/examples/PopupMenuAndroid", - "baseHash": "0025a91c9757a0674f324c044ed3694f59741867", + "baseHash": "73ffd4dc81c8eb84fdf259c21e2a186824a7a2b9", "issue": 4054 }, { "type": "copy", "directory": "js/examples/Pressable", "baseDirectory": "packages/rn-tester/js/examples/Pressable", - "baseHash": "c5d2c7e009eaece6ca49b0687c9b855e82426546", + "baseHash": "c9f130fc8a2b9878459742dfb0877aabc5dd4ffb", "issue": 4054 }, { "type": "copy", "directory": "js/examples/RCTRootView", "baseDirectory": "packages/rn-tester/js/examples/RCTRootView", - "baseHash": "77a2dcd006f9548de27a0ff12d7b7fffd41ec74e", + "baseHash": "81cdac461245072989ad47bf38a232f20fdaf26d", "issue": 4054 }, { "type": "copy", "directory": "js/examples/RefreshControl", "baseDirectory": "packages/rn-tester/js/examples/RefreshControl", - "baseHash": "1de0f9e3b09919b5d3e6c19aaae9e03fe34621f3", + "baseHash": "41dc4318a31956bfdc38a677ffce4355af4c9ea9", "issue": 4054 }, { @@ -361,77 +362,77 @@ "type": "copy", "directory": "js/examples/RTL", "baseDirectory": "packages/rn-tester/js/examples/RTL", - "baseHash": "f71c89d778f6df90fd7fe08067749daea5893da5", + "baseHash": "5a7547ab97eed836f60f1b39620079041de23f25", "issue": 4054 }, { "type": "copy", "directory": "js/examples/SafeAreaView", "baseDirectory": "packages/rn-tester/js/examples/SafeAreaView", - "baseHash": "2a360fd4548a4056093e797a79a0751a5c47e7d8", + "baseHash": "61ccb78c5d021374a85c2da7f86aa9a466a90c3f", "issue": 4054 }, { "type": "copy", "directory": "js/examples/ScrollView", "baseDirectory": "packages/rn-tester/js/examples/ScrollView", - "baseHash": "3b2597b4f034b9db684367ba3d48bf3aef4893fb", + "baseHash": "324ee22c1a5d0ba705aed327c257386342674ad5", "issue": 4054 }, { "type": "copy", "directory": "js/examples/SectionList", "baseDirectory": "packages/rn-tester/js/examples/SectionList", - "baseHash": "8bc8ac6cea1513369d65328fb589a78f3f914a00", + "baseHash": "bf3816be6589a5bdc5c81ef7e911ce9569adf61c", "issue": 4054 }, { "type": "copy", "directory": "js/examples/SetPropertiesExample", "baseDirectory": "packages/rn-tester/js/examples/SetPropertiesExample", - "baseHash": "6600716b175dc5efefac41ad6667191755a34965", + "baseHash": "4858771a546a200e4bab06959dc9729b5c70dbb9", "issue": 4054 }, { "type": "copy", "directory": "js/examples/Share", "baseDirectory": "packages/rn-tester/js/examples/Share", - "baseHash": "3b16ebdae95ba484745d10f5713f930c349aef4c", + "baseHash": "040ca0acbf3e8b82f25a82d77e30ee99721c2cca", "issue": 4054 }, { "type": "copy", "directory": "js/examples/Snapshot", "baseDirectory": "packages/rn-tester/js/examples/Snapshot", - "baseHash": "14825f13f10d6d0e49a1052879041136427735ca", + "baseHash": "83f9c765c2b1c2113162e51f4d261b6a12d963cd", "issue": 4054 }, { "type": "copy", "directory": "js/examples/StatusBar", "baseDirectory": "packages/rn-tester/js/examples/StatusBar", - "baseHash": "f221f26adda37c9fa5b0049b231111a6f98bfc0d", + "baseHash": "0f9966b903371a024de277e6587fe8a86c96b006", "issue": 4054 }, { "type": "copy", "directory": "js/examples/SwipeableCardExample", "baseDirectory": "packages/rn-tester/js/examples/SwipeableCardExample", - "baseHash": "d38ac95f729475513331784eb1f557fa9a06f8b1", + "baseHash": "6d1fd140b0ba3e748e78cb34c2a30caeb19a63f3", "issue": 4054 }, { "type": "copy", "directory": "js/examples/Switch", "baseDirectory": "packages/rn-tester/js/examples/Switch", - "baseHash": "80f86685990261b19208331b623277a9fe6fa906", + "baseHash": "1b7682d93faa3a9e8b94be2dcee948fb9586d321", "issue": 4054 }, { "type": "copy", "directory": "js/examples/Text", "baseDirectory": "packages/rn-tester/js/examples/Text", - "baseHash": "8a3a60f413a0d2aa9deb6349ef42fad60488c111", + "baseHash": "a569a3f8074d7300060c5c5ed70f2fb6806f928c", "issue": 4054 }, { @@ -445,14 +446,14 @@ "type": "copy", "file": "js/examples/TextInput/TextInputExample.android.js", "baseFile": "packages/rn-tester/js/examples/TextInput/TextInputExample.android.js", - "baseHash": "e2ec4b71e3cd614682d9be1551b3a2994ea51823", + "baseHash": "9aa7d0134a84831e699156845ec92d0a2fc8c108", "issue": 14292 }, { "type": "copy", "file": "js/examples/TextInput/TextInputExample.ios.js", "baseFile": "packages/rn-tester/js/examples/TextInput/TextInputExample.ios.js", - "baseHash": "3ee8cf92c26fd3b2bdf49cd45f91bd4039889176", + "baseHash": "9ed97c0ed2a545cd137f4045f506a55a1bf8af5e", "issue": 14292 }, { @@ -466,56 +467,56 @@ "type": "copy", "file": "js/examples/TextInput/TextInputKeyProp.js", "baseFile": "packages/rn-tester/js/examples/TextInput/TextInputKeyProp.js", - "baseHash": "8ef6a993c1754a016afb1d4826b33b9bffd64c4f", + "baseHash": "27f94be6a2fa8acf7f47835220e638a7c5bea7de", "issue": 14292 }, { "type": "patch", "file": "js/examples/TextInput/TextInputSharedExamples.js", "baseFile": "packages/rn-tester/js/examples/TextInput/TextInputSharedExamples.js", - "baseHash": "46b59227ca8473ab25f558b2c27d5eab8c6009e4", + "baseHash": "9aa9bb1abe070483e9f2563e3354168121523ae0", "issue": 14291 }, { "type": "copy", "directory": "js/examples/Timer", "baseDirectory": "packages/rn-tester/js/examples/Timer", - "baseHash": "e34b237e56a1909d86a6f17162f3c11ece405d89", + "baseHash": "9f94fd225bd27a5fb093ad513bdb5677a85f3872", "issue": 4054 }, { "type": "copy", "directory": "js/examples/ToastAndroid", "baseDirectory": "packages/rn-tester/js/examples/ToastAndroid", - "baseHash": "82e349fa291f3187dbdac9b74eb15b85405fa064", + "baseHash": "f9be84cfa0da537f5e7963bde61ce206b9b2b63c", "issue": 4054 }, { "type": "copy", "directory": "js/examples/Touchable", "baseDirectory": "packages/rn-tester/js/examples/Touchable", - "baseHash": "52d0d4e3698c0d9a96bb07e75accddb4cb19271a", + "baseHash": "eba111cf46fca7fd70eacb629681a2284231e271", "issue": 4054 }, { "type": "copy", "directory": "js/examples/Transform", "baseDirectory": "packages/rn-tester/js/examples/Transform", - "baseHash": "e9341b7f41df3f22b843a9d74638d8e14c4d1be0", + "baseHash": "70a24883543aea6b2f6423628c9edb7c9ae473df", "issue": 4054 }, { "type": "copy", "directory": "js/examples/TransparentHitTest", "baseDirectory": "packages/rn-tester/js/examples/TransparentHitTest", - "baseHash": "3b28f506de014aae36bb4682a6d02d886b0ef382", + "baseHash": "237bdfa4a41b3c6fa7e9b1985d69bd16425b0aef", "issue": 4054 }, { "type": "copy", "directory": "js/examples/TurboModule", "baseDirectory": "packages/rn-tester/js/examples/TurboModule", - "baseHash": "cd1e1d008f6827d58a128b58cc258fd50c6a2b71", + "baseHash": "d4b5116060834b4b8117b75a357a9e7fc81fda29", "issue": 4054 }, { @@ -528,7 +529,7 @@ "type": "copy", "directory": "js/examples/Vibration", "baseDirectory": "packages/rn-tester/js/examples/Vibration", - "baseHash": "0cfa593f9c7fc6a80bca9f25930297cdaedc0ddf", + "baseHash": "e92a8f36178e17ed3ff691b8965a7cdb6346a544", "issue": 4054 }, { @@ -542,14 +543,14 @@ "type": "copy", "directory": "js/examples/WebSocket", "baseDirectory": "packages/rn-tester/js/examples/WebSocket", - "baseHash": "d7b4236514fc52773bd2db0f4a0cd92f9c33ecf2", + "baseHash": "c3d237f95a50b85b29e5d8534868b3f894352e47", "issue": 4054 }, { "type": "copy", "directory": "js/examples/XHR", "baseDirectory": "packages/rn-tester/js/examples/XHR", - "baseHash": "7e0371f96a68b509a7b2f948db55199a7e4bb341", + "baseHash": "51ff285f97ad22e79fe3e679a933b4949d92f62b", "issue": 4054 }, { @@ -570,7 +571,7 @@ "type": "copy", "file": "js/RNTesterAppShared.js", "baseFile": "packages/rn-tester/js/RNTesterAppShared.js", - "baseHash": "0aaf9b3f905d737372a382ffc59d30f3b16622dd", + "baseHash": "2891b809358e8c1a3c8f428c0313656afcc689bd", "issue": 4054 }, { @@ -591,14 +592,14 @@ "type": "patch", "file": "js/utils/RNTesterList.android.js", "baseFile": "packages/rn-tester/js/utils/RNTesterList.android.js", - "baseHash": "c89e65c8063b338c86ec9db173b05b96c589f69e", + "baseHash": "8cd219abae140e98f9578432954fc9ef62421308", "issue": 13228 }, { "type": "patch", "file": "js/utils/RNTesterList.ios.js", "baseFile": "packages/rn-tester/js/utils/RNTesterList.ios.js", - "baseHash": "f36a808a9ff9d17b37402193efa5bb580536370d", + "baseHash": "6872f4b3f0d2495a64c33fdd4328272d547f9108", "issue": 13228 }, { @@ -619,7 +620,7 @@ "type": "copy", "file": "js/utils/RNTesterNavigationReducer.js", "baseFile": "packages/rn-tester/js/utils/RNTesterNavigationReducer.js", - "baseHash": "20a837b3cd30a61623215b3681e5cd35070789c8", + "baseHash": "0eb1fcb680e43a38cf929a6a4a60b3c50286e238", "issue": 4054 }, { @@ -640,7 +641,7 @@ "type": "copy", "file": "NativeComponentExample/js/MyNativeView.js", "baseFile": "packages/rn-tester/NativeComponentExample/js/MyNativeView.js", - "baseHash": "b3aa204d778223b56dd798090fa959a81df1dc67", + "baseHash": "9a386fda5793ed90e0a9b9e44f4ff29e1aab728c", "issue": 4054 }, { @@ -668,7 +669,7 @@ "type": "patch", "file": "package.json", "baseFile": "packages/rn-tester/package.json", - "baseHash": "e847b2b1a87e2db14460c3df73c17e5368ad9d7a", + "baseHash": "eb9e150056b2617b6ccb2731c027ad807025eab1", "issue": 13228 }, { diff --git a/packages/@react-native/tester/package.json b/packages/@react-native/tester/package.json index a68361f580f..dd68eedebcd 100644 --- a/packages/@react-native/tester/package.json +++ b/packages/@react-native/tester/package.json @@ -1,6 +1,6 @@ { "name": "@react-native/tester", - "version": "0.80.0-main", + "version": "0.82.0-main", "private": true, "description": "React Native tester app.", "license": "MIT", @@ -26,14 +26,14 @@ "e2e-test-ios": "./scripts/maestro-test-ios.sh" }, "dependencies": { - "@react-native/new-app-screen": "0.81.0-nightly-20250709-6892dde36", - "@react-native/popup-menu-android": "0.81.0-nightly-20250709-6892dde36", + "@react-native/new-app-screen": "0.82.0-main", + "@react-native/popup-menu-android": "0.82.0-main", "flow-enums-runtime": "^0.0.6", "invariant": "^2.2.4", "nullthrows": "^1.1.1" }, "peerDependencies": { - "react": "19.1.0", + "react": "19.1.1", "react-native": "*" }, "codegenConfig": { @@ -57,9 +57,9 @@ } }, "devDependencies": { - "@react-native-community/cli": "17.0.0", - "@react-native-community/cli-platform-android": "17.0.0", - "@react-native-community/cli-platform-ios": "17.0.0", + "@react-native-community/cli": "20.0.0", + "@react-native-community/cli-platform-android": "20.0.0", + "@react-native-community/cli-platform-ios": "20.0.0", "commander": "^12.0.0", "listr2": "^6.4.1", "rxjs": "npm:@react-native-community/rxjs@6.5.4-custom" diff --git a/packages/@rnw-scripts/integrate-rn/package.json b/packages/@rnw-scripts/integrate-rn/package.json index 495494cd74c..9f23d43107d 100644 --- a/packages/@rnw-scripts/integrate-rn/package.json +++ b/packages/@rnw-scripts/integrate-rn/package.json @@ -19,7 +19,7 @@ "integrate-rn": "./bin.js" }, "dependencies": { - "@react-native-community/template": "0.81.0-nightly-202578-011c586", + "@react-native-community/template": "0.81.0-nightly-2025819-246871d", "@react-native-windows/find-repo-root": "^0.0.0-canary.97", "@react-native-windows/fs": "^0.0.0-canary.68", "@react-native-windows/package-utils": "^0.0.0-canary.94", diff --git a/packages/e2e-test-app-fabric/package.json b/packages/e2e-test-app-fabric/package.json index c36106456f6..a266fc9556b 100644 --- a/packages/e2e-test-app-fabric/package.json +++ b/packages/e2e-test-app-fabric/package.json @@ -20,7 +20,7 @@ "@typescript-eslint/eslint-plugin": "^7.1.1", "@typescript-eslint/parser": "^7.1.1", "react": "^19.1.0", - "react-native": "0.81.0-nightly-20250709-6892dde36", + "react-native": "0.82.0-nightly-20250819-25104de5c", "react-native-windows": "^0.0.0-canary.1003" }, "devDependencies": { diff --git a/packages/e2e-test-app/package.json b/packages/e2e-test-app/package.json index d54cb9d4a4f..82b981256b3 100644 --- a/packages/e2e-test-app/package.json +++ b/packages/e2e-test-app/package.json @@ -20,7 +20,7 @@ "@typescript-eslint/eslint-plugin": "^7.1.1", "@typescript-eslint/parser": "^7.1.1", "react": "^19.1.0", - "react-native": "0.81.0-nightly-20250709-6892dde36", + "react-native": "0.82.0-nightly-20250819-25104de5c", "react-native-windows": "^0.0.0-canary.1003", "react-native-xaml": "^0.0.80" }, diff --git a/packages/integration-test-app/package.json b/packages/integration-test-app/package.json index 76647e0b417..ca6ba505a0b 100644 --- a/packages/integration-test-app/package.json +++ b/packages/integration-test-app/package.json @@ -17,7 +17,7 @@ "@typescript-eslint/parser": "^7.1.1", "chai": "^4.2.0", "react": "^19.1.0", - "react-native": "0.81.0-nightly-20250709-6892dde36", + "react-native": "0.82.0-nightly-20250819-25104de5c", "react-native-windows": "^0.0.0-canary.1003" }, "devDependencies": { diff --git a/packages/playground/package.json b/packages/playground/package.json index 65bc6f4008e..8c3b08220c4 100644 --- a/packages/playground/package.json +++ b/packages/playground/package.json @@ -15,7 +15,7 @@ "@typescript-eslint/eslint-plugin": "^7.1.1", "@typescript-eslint/parser": "^7.1.1", "react": "^19.1.0", - "react-native": "0.81.0-nightly-20250709-6892dde36", + "react-native": "0.82.0-nightly-20250819-25104de5c", "react-native-windows": "^0.0.0-canary.1003" }, "devDependencies": { diff --git a/packages/sample-app-fabric/package.json b/packages/sample-app-fabric/package.json index e52548b2e7d..86a77aa03d7 100644 --- a/packages/sample-app-fabric/package.json +++ b/packages/sample-app-fabric/package.json @@ -17,7 +17,7 @@ "@typescript-eslint/parser": "^7.1.1", "@react-native/new-app-screen": "0.81.0-nightly-20250709-6892dde36", "react": "^19.1.0", - "react-native": "0.81.0-nightly-20250709-6892dde36", + "react-native": "0.82.0-nightly-20250819-25104de5c", "react-native-windows": "^0.0.0-canary.1003" }, "devDependencies": { diff --git a/packages/sample-apps/package.json b/packages/sample-apps/package.json index bac151263b4..5728be876bb 100644 --- a/packages/sample-apps/package.json +++ b/packages/sample-apps/package.json @@ -16,7 +16,7 @@ "@typescript-eslint/eslint-plugin": "^7.1.1", "@typescript-eslint/parser": "^7.1.1", "react": "^19.1.0", - "react-native": "0.81.0-nightly-20250709-6892dde36", + "react-native": "0.82.0-nightly-20250819-25104de5c", "react-native-windows": "^0.0.0-canary.1003" }, "devDependencies": { diff --git a/packages/sample-custom-component/package.json b/packages/sample-custom-component/package.json index b4809325701..04a16a33f4a 100644 --- a/packages/sample-custom-component/package.json +++ b/packages/sample-custom-component/package.json @@ -22,7 +22,7 @@ "dependencies": { "@types/react": "^19.1.0", "react": "^19.1.0", - "react-native": "0.81.0-nightly-20250709-6892dde36", + "react-native": "0.82.0-nightly-20250819-25104de5c", "react-native-windows": "^0.0.0-canary.1003" }, "devDependencies": { diff --git a/vnext/.flowconfig b/vnext/.flowconfig index 59e4b10cfaa..9bdbfdf8327 100644 --- a/vnext/.flowconfig +++ b/vnext/.flowconfig @@ -145,11 +145,8 @@ module.system.haste.module_ref_prefix=m# react.runtime=automatic -suppress_type=$FlowIssue +experimental.error_code_migration=new suppress_type=$FlowFixMe -suppress_type=$FlowFixMeProps -suppress_type=$FlowFixMeState -suppress_type=$FlowFixMeEmpty ban_spread_key_props=true sharedmemory.hash_table_pow=21 @@ -175,4 +172,17 @@ untyped-import untyped-type-import [version] +<<<<<<< Upstream +^0.279.0 +======= +<<<<<<< HEAD +<<<<<<< Upstream +^0.279.0 +======= ^0.274.2 +>>>>>>> Override +>>>>>>> Override +======= +^0.274.2 +>>>>>>> Override +>>>>>>> 923b1fa618d99a145a0081df94a00fc9404b2a21 diff --git a/vnext/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputShadowNode.cpp b/vnext/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputShadowNode.cpp index 29e9f97120c..aba77cb0454 100644 --- a/vnext/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputShadowNode.cpp +++ b/vnext/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputShadowNode.cpp @@ -14,7 +14,18 @@ namespace facebook::react { +<<<<<<< Upstream +<<<<<<< HEAD +======= +<<<<<<< Upstream +>>>>>>> Override +======= +>>>>>>> 923b1fa618d99a145a0081df94a00fc9404b2a21 +// NOLINTNEXTLINE(modernize-avoid-c-arrays) +extern const char AndroidTextInputComponentName[] = "AndroidTextInput"; +======= extern const char WindowsTextInputComponentName[] = "WindowsTextInput"; +>>>>>>> Override void WindowsTextInputShadowNode::setTextLayoutManager(std::shared_ptr textLayoutManager) { ensureUnsealed(); diff --git a/vnext/ReactCommon/TEMP_UntilReactCommonUpdate/cxxreact/CxxNativeModule.cpp b/vnext/ReactCommon/TEMP_UntilReactCommonUpdate/cxxreact/CxxNativeModule.cpp index a6ce3c04c8e..dd624e192f7 100644 --- a/vnext/ReactCommon/TEMP_UntilReactCommonUpdate/cxxreact/CxxNativeModule.cpp +++ b/vnext/ReactCommon/TEMP_UntilReactCommonUpdate/cxxreact/CxxNativeModule.cpp @@ -94,6 +94,7 @@ std::vector CxxNativeModule::getMethods() { lazyInit(); std::vector descs; + descs.reserve(methods_.size()); for (auto& method : methods_) { descs.emplace_back(method.name, method.getType()); } @@ -199,8 +200,8 @@ void CxxNativeModule::invoke( TraceSection s( "CxxMethodCallDispatch", "module", moduleName, "method", method.name); try { - method.func(std::move(params), first, second); - } catch (const facebook::xplat::JsArgumentException& ex) { + method.func(params, first, second); + } catch (const facebook::xplat::JsArgumentException&) { throw; } catch (std::exception& e) { LOG(ERROR) << "std::exception. Method call " << method.name.c_str() diff --git a/vnext/ReactCommon/TEMP_UntilReactCommonUpdate/cxxreact/NativeToJsBridge.cpp b/vnext/ReactCommon/TEMP_UntilReactCommonUpdate/cxxreact/NativeToJsBridge.cpp index 909a20eec1f..93062866e3c 100644 --- a/vnext/ReactCommon/TEMP_UntilReactCommonUpdate/cxxreact/NativeToJsBridge.cpp +++ b/vnext/ReactCommon/TEMP_UntilReactCommonUpdate/cxxreact/NativeToJsBridge.cpp @@ -26,6 +26,7 @@ #include "TraceSection.h" #include +#include #ifdef WITH_FBSYSTRACE #include @@ -41,7 +42,7 @@ class JsToNativeBridge : public react::ExecutorDelegate { JsToNativeBridge( std::shared_ptr registry, std::shared_ptr callback) - : m_registry(registry), m_callback(callback) {} + : m_registry(std::move(registry)), m_callback(std::move(callback)) {} std::shared_ptr getModuleRegistry() override { return m_registry; diff --git a/vnext/ReactCommon/TEMP_UntilReactCommonUpdate/cxxreact/TraceSection.h b/vnext/ReactCommon/TEMP_UntilReactCommonUpdate/cxxreact/TraceSection.h index c3e441624d2..58d963fd2b2 100644 --- a/vnext/ReactCommon/TEMP_UntilReactCommonUpdate/cxxreact/TraceSection.h +++ b/vnext/ReactCommon/TEMP_UntilReactCommonUpdate/cxxreact/TraceSection.h @@ -54,8 +54,8 @@ struct TraceSection { public: template explicit TraceSection( - const __unused char* name, - __unused ConvertsToStringPiece&&... args) { + [[maybe_unused]] const char* name, + [[maybe_unused]] ConvertsToStringPiece&&... args) { TRACE_EVENT_BEGIN("react-native", perfetto::DynamicString{name}, args...); } @@ -82,8 +82,8 @@ struct DummyTraceSection { public: template explicit DummyTraceSection( - const __unused char* name, - __unused ConvertsToStringPiece&&... args) {} + [[maybe_unused]] const char* name, + [[maybe_unused]] ConvertsToStringPiece&&... args) {} }; using TraceSectionUnwrapped = DummyTraceSection; #endif diff --git a/vnext/ReactCommon/TEMP_UntilReactCommonUpdate/jsi/jsi/test/testlib.cpp b/vnext/ReactCommon/TEMP_UntilReactCommonUpdate/jsi/jsi/test/testlib.cpp index d3f2d620c1a..f22efae8c00 100644 --- a/vnext/ReactCommon/TEMP_UntilReactCommonUpdate/jsi/jsi/test/testlib.cpp +++ b/vnext/ReactCommon/TEMP_UntilReactCommonUpdate/jsi/jsi/test/testlib.cpp @@ -1853,7 +1853,9 @@ TEST_P(JSITest, CastInterface) { auto randomUuid = facebook::jsi::UUID{0xf2cd96cfu, 0x455eu, 0x42d9u, 0x850au, 0x13e2cde59b8bull}; auto ptr = rd.castInterface(randomUuid); - EXPECT_EQ(ptr, nullptr); + // Use == instead of EXPECT_EQ to avoid ambiguous operator usage due to the + // type of 'ptr'. + EXPECT_TRUE(ptr == nullptr); } INSTANTIATE_TEST_CASE_P( diff --git a/vnext/ReactCommon/TEMP_UntilReactCommonUpdate/jsinspector-modern/NetworkIOAgent.cpp b/vnext/ReactCommon/TEMP_UntilReactCommonUpdate/jsinspector-modern/NetworkIOAgent.cpp index 744a44d7aee..37cfe735f16 100644 --- a/vnext/ReactCommon/TEMP_UntilReactCommonUpdate/jsinspector-modern/NetworkIOAgent.cpp +++ b/vnext/ReactCommon/TEMP_UntilReactCommonUpdate/jsinspector-modern/NetworkIOAgent.cpp @@ -21,6 +21,7 @@ namespace facebook::react::jsinspector_modern { static constexpr long DEFAULT_BYTES_PER_READ = 1048576; // 1MB (Chrome v112 default) +static constexpr unsigned long MAX_BYTES_PER_READ = 10485760; // 10MB // https://github.com/chromium/chromium/blob/128.0.6593.1/content/browser/devtools/devtools_io_context.cc#L71-L73 static constexpr std::array kTextMIMETypePrefixes{ @@ -58,7 +59,7 @@ class Stream : public NetworkRequestListener, Stream(const Stream& other) = delete; Stream& operator=(const Stream& other) = delete; Stream(Stream&& other) = default; - Stream& operator=(Stream&& other) = default; + Stream& operator=(Stream&& other) noexcept = default; /** * Factory method to create a Stream with a callback for the initial result @@ -71,9 +72,9 @@ class Stream : public NetworkRequestListener, */ static std::shared_ptr create( VoidExecutor executor, - StreamInitCallback initCb) { + const StreamInitCallback& initCb) { std::shared_ptr stream{new Stream(initCb)}; - stream->setExecutor(executor); + stream->setExecutor(std::move(executor)); return stream; } @@ -86,8 +87,7 @@ class Stream : public NetworkRequestListener, * with the result of the read, or an error string. */ void read(long maxBytesToRead, const IOReadCallback& callback) { - pendingReadRequests_.emplace_back( - std::make_tuple(maxBytesToRead, callback)); + pendingReadRequests_.emplace_back(maxBytesToRead, callback); processPending(); } @@ -404,9 +404,30 @@ void NetworkIOAgent::handleIoRead(const cdp::PreparsedRequest& req) { "Invalid params: handle is missing or not a string.")); return; } +<<<<<<< Upstream + std::optional size = std::nullopt; +======= +<<<<<<< HEAD +<<<<<<< Upstream + std::optional size = std::nullopt; +======= std::optional size = std::nullopt; // [Windows #13587] +>>>>>>> Override +>>>>>>> Override +======= + std::optional size = std::nullopt; // [Windows #13587] +>>>>>>> Override +>>>>>>> 923b1fa618d99a145a0081df94a00fc9404b2a21 if ((req.params.count("size") != 0u) && req.params.at("size").isInt()) { size = req.params.at("size").asInt(); + + if (size > MAX_BYTES_PER_READ) { + frontendChannel_(cdp::jsonError( + requestId, + cdp::ErrorCode::InvalidParams, + "Invalid params: size cannot be greater than 10MB.")); + return; + } } auto streamId = req.params.at("handle").asString(); diff --git a/vnext/ReactCommon/TEMP_UntilReactCommonUpdate/jsinspector-modern/Utf8.h b/vnext/ReactCommon/TEMP_UntilReactCommonUpdate/jsinspector-modern/Utf8.h index 2edec0b1735..1d08d46e489 100644 --- a/vnext/ReactCommon/TEMP_UntilReactCommonUpdate/jsinspector-modern/Utf8.h +++ b/vnext/ReactCommon/TEMP_UntilReactCommonUpdate/jsinspector-modern/Utf8.h @@ -7,6 +7,7 @@ #pragma once +#include #include namespace facebook::react::jsinspector_modern { diff --git a/vnext/ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/core/ReactCommon/TurboModule.h b/vnext/ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/core/ReactCommon/TurboModule.h index 6555d49ff7f..f9221d83e36 100644 --- a/vnext/ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/core/ReactCommon/TurboModule.h +++ b/vnext/ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/core/ReactCommon/TurboModule.h @@ -114,14 +114,14 @@ class JSI_EXPORT TurboModule : public jsi::HostObject { */ void emitDeviceEvent( const std::string& eventName, - ArgFactory argFactory = nullptr); + ArgFactory&& argFactory = nullptr); // Backwards compatibility version void emitDeviceEvent( jsi::Runtime& /*runtime*/, const std::string& eventName, - ArgFactory argFactory = nullptr) { + ArgFactory&& argFactory = nullptr) { emitDeviceEvent(eventName, std::move(argFactory)); } diff --git a/vnext/ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/dom/NativeDOM.cpp b/vnext/ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/dom/NativeDOM.cpp index b1395fc9228..3b5f874e787 100644 --- a/vnext/ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/dom/NativeDOM.cpp +++ b/vnext/ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/dom/NativeDOM.cpp @@ -30,15 +30,14 @@ inline std::shared_ptr getShadowNode( return Bridging>::fromJs( runtime, shadowNodeValue); } -} // namespace #pragma mark - Private helpers -static UIManager& getUIManagerFromRuntime(facebook::jsi::Runtime& runtime) { +UIManager& getUIManagerFromRuntime(facebook::jsi::Runtime& runtime) { return UIManagerBinding::getBinding(runtime)->getUIManager(); } -static RootShadowNode::Shared getCurrentShadowTreeRevision( +RootShadowNode::Shared getCurrentShadowTreeRevision( facebook::jsi::Runtime& runtime, SurfaceId surfaceId) { auto shadowTreeRevisionProvider = @@ -46,7 +45,7 @@ static RootShadowNode::Shared getCurrentShadowTreeRevision( return shadowTreeRevisionProvider->getCurrentRevision(surfaceId); } -static RootShadowNode::Shared getCurrentShadowTreeRevision( +RootShadowNode::Shared getCurrentShadowTreeRevision( facebook::jsi::Runtime& runtime, jsi::Value& nativeNodeReference) { if (nativeNodeReference.isNumber()) { @@ -58,14 +57,13 @@ static RootShadowNode::Shared getCurrentShadowTreeRevision( runtime, getShadowNode(runtime, nativeNodeReference)->getSurfaceId()); } -static facebook::react::PointerEventsProcessor& -getPointerEventsProcessorFromRuntime(facebook::jsi::Runtime& runtime) { +facebook::react::PointerEventsProcessor& getPointerEventsProcessorFromRuntime( + facebook::jsi::Runtime& runtime) { return facebook::react::UIManagerBinding::getBinding(runtime) ->getPointerEventsProcessor(); } -static std::vector -getArrayOfInstanceHandlesFromShadowNodes( +std::vector getArrayOfInstanceHandlesFromShadowNodes( const std::vector>& nodes, facebook::jsi::Runtime& runtime) { // JSI doesn't support adding elements to an array after creation, @@ -83,10 +81,12 @@ getArrayOfInstanceHandlesFromShadowNodes( return nonNullInstanceHandles; } -static bool isRootShadowNode(const ShadowNode& shadowNode) { +bool isRootShadowNode(const ShadowNode& shadowNode) { return shadowNode.getTraits().check(ShadowNodeTraits::Trait::RootNodeKind); } +} // namespace + #pragma mark - NativeDOM NativeDOM::NativeDOM(std::shared_ptr jsInvoker) @@ -172,6 +172,23 @@ std::vector NativeDOM::getChildNodes( return getArrayOfInstanceHandlesFromShadowNodes(childNodes, rt); } +jsi::Value NativeDOM::getElementById( + jsi::Runtime& rt, + SurfaceId surfaceId, + const std::string& id) { + auto currentRevision = getCurrentShadowTreeRevision(rt, surfaceId); + if (currentRevision == nullptr) { + return jsi::Value::undefined(); + } + + auto elementById = dom::getElementById(currentRevision, id); + if (elementById == nullptr) { + return jsi::Value::undefined(); + } + + return elementById->getInstanceHandle(rt); +} + jsi::Value NativeDOM::getParentNode( jsi::Runtime& rt, jsi::Value nativeNodeReference) { @@ -299,7 +316,7 @@ NativeDOM::getScrollSize( } std::string NativeDOM::getTagName( - jsi::Runtime& rt, + jsi::Runtime& /*rt*/, std::shared_ptr shadowNode) { return dom::getTagName(*shadowNode); } @@ -389,44 +406,38 @@ jsi::Value NativeDOM::linkRootNode( void NativeDOM::measure( jsi::Runtime& rt, std::shared_ptr shadowNode, - jsi::Function callback) { + const MeasureOnSuccessCallback& callback) { auto currentRevision = getCurrentShadowTreeRevision(rt, shadowNode->getSurfaceId()); if (currentRevision == nullptr) { - callback.call(rt, {0, 0, 0, 0, 0, 0}); + callback(0, 0, 0, 0, 0, 0); return; } auto measureRect = dom::measure(currentRevision, *shadowNode); - callback.call( - rt, - {jsi::Value{rt, measureRect.x}, - jsi::Value{rt, measureRect.y}, - jsi::Value{rt, measureRect.width}, - jsi::Value{rt, measureRect.height}, - jsi::Value{rt, measureRect.pageX}, - jsi::Value{rt, measureRect.pageY}}); + callback( + measureRect.x, + measureRect.y, + measureRect.width, + measureRect.height, + measureRect.pageX, + measureRect.pageY); } void NativeDOM::measureInWindow( jsi::Runtime& rt, std::shared_ptr shadowNode, - jsi::Function callback) { + const MeasureInWindowOnSuccessCallback& callback) { auto currentRevision = getCurrentShadowTreeRevision(rt, shadowNode->getSurfaceId()); if (currentRevision == nullptr) { - callback.call(rt, {0, 0, 0, 0}); + callback(0, 0, 0, 0); return; } auto rect = dom::measureInWindow(currentRevision, *shadowNode); - callback.call( - rt, - {jsi::Value{rt, rect.x}, - jsi::Value{rt, rect.y}, - jsi::Value{rt, rect.width}, - jsi::Value{rt, rect.height}}); + callback(rect.x, rect.y, rect.width, rect.height); } void NativeDOM::measureLayout( @@ -434,7 +445,7 @@ void NativeDOM::measureLayout( std::shared_ptr shadowNode, std::shared_ptr relativeToShadowNode, jsi::Function onFail, - jsi::Function onSuccess) { + const MeasureLayoutOnSuccessCallback& onSuccess) { auto currentRevision = getCurrentShadowTreeRevision(rt, shadowNode->getSurfaceId()); if (currentRevision == nullptr) { @@ -452,12 +463,7 @@ void NativeDOM::measureLayout( auto rect = maybeRect.value(); - onSuccess.call( - rt, - {jsi::Value{rt, rect.x}, - jsi::Value{rt, rect.y}, - jsi::Value{rt, rect.width}, - jsi::Value{rt, rect.height}}); + onSuccess(rect.x, rect.y, rect.width, rect.height); } // [windows MSVC cant handle backtick character in a preprocessor line @@ -472,4 +478,4 @@ void NativeDOM::setNativeProps( shadowNode, RawProps(rt, updatePayload)); } -} // namespace facebook::react \ No newline at end of file +} // namespace facebook::react diff --git a/vnext/ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/dom/NativeDOM.h b/vnext/ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/dom/NativeDOM.h index 1b77ef01631..25358767251 100644 --- a/vnext/ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/dom/NativeDOM.h +++ b/vnext/ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/dom/NativeDOM.h @@ -23,6 +23,15 @@ namespace facebook::react { +using MeasureOnSuccessCallback = + SyncCallback; + +using MeasureInWindowOnSuccessCallback = + SyncCallback; + +using MeasureLayoutOnSuccessCallback = + SyncCallback; + class NativeDOM : public NativeDOMCxxSpec { public: NativeDOM(std::shared_ptr jsInvoker); @@ -38,6 +47,9 @@ class NativeDOM : public NativeDOMCxxSpec { jsi::Runtime& rt, jsi::Value nativeNodeReference); + jsi::Value + getElementById(jsi::Runtime& rt, SurfaceId surfaceId, const std::string& id); + jsi::Value getParentNode(jsi::Runtime& rt, jsi::Value nativeNodeReference); bool isConnected(jsi::Runtime& rt, jsi::Value nativeNodeReference); @@ -111,19 +123,19 @@ class NativeDOM : public NativeDOMCxxSpec { void measure( jsi::Runtime& rt, std::shared_ptr shadowNode, - jsi::Function callback); + const MeasureOnSuccessCallback& callback); void measureInWindow( jsi::Runtime& rt, std::shared_ptr shadowNode, - jsi::Function callback); + const MeasureInWindowOnSuccessCallback& callback); void measureLayout( jsi::Runtime& rt, std::shared_ptr shadowNode, std::shared_ptr relativeToShadowNode, jsi::Function onFail, - jsi::Function onSuccess); + const MeasureLayoutOnSuccessCallback& onSuccess); // [windows MSVC cant handle backtick character in a preprocessor line #pragma mark - Legacy direct manipulation APIs (for ReactNativeElement). diff --git a/vnext/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/componentregistry/ComponentDescriptorRegistry.cpp b/vnext/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/componentregistry/ComponentDescriptorRegistry.cpp index 6e1bb3bce75..876be0826ef 100644 --- a/vnext/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/componentregistry/ComponentDescriptorRegistry.cpp +++ b/vnext/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/componentregistry/ComponentDescriptorRegistry.cpp @@ -29,7 +29,7 @@ ComponentDescriptorRegistry::ComponentDescriptorRegistry( contextContainer_(std::move(contextContainer)) {} void ComponentDescriptorRegistry::add( - ComponentDescriptorProvider componentDescriptorProvider) const { + const ComponentDescriptorProvider& componentDescriptorProvider) const { std::unique_lock lock(mutex_); auto componentDescriptor = componentDescriptorProvider.constructor( diff --git a/vnext/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/text/ParagraphShadowNode.cpp b/vnext/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/text/ParagraphShadowNode.cpp index 0fda64637d1..ee9f84a50d9 100644 --- a/vnext/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/text/ParagraphShadowNode.cpp +++ b/vnext/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/text/ParagraphShadowNode.cpp @@ -36,6 +36,7 @@ namespace facebook::react { using Content = ParagraphShadowNode::Content; +// NOLINTNEXTLINE(facebook-hte-CArray) const char ParagraphComponentName[] = "Paragraph"; void ParagraphShadowNode::initialize() noexcept { diff --git a/vnext/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/view/AccessibilityPrimitives.h b/vnext/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/view/AccessibilityPrimitives.h index fa075e58132..cd4e92c58e3 100644 --- a/vnext/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/view/AccessibilityPrimitives.h +++ b/vnext/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/view/AccessibilityPrimitives.h @@ -12,6 +12,8 @@ #include #include +#include + namespace facebook::react { enum class AccessibilityTraits : uint32_t { @@ -91,10 +93,24 @@ struct AccessibilityState { std::optional selected{std::nullopt}; // [Windows] - Do not remove; required for Windows ISelectionItemProvider Implementation bool busy{false}; std::optional expanded{std::nullopt}; +<<<<<<< Upstream + enum CheckedState { Unchecked, Checked, Mixed, None } checked{None}; +======= +<<<<<<< HEAD +<<<<<<< Upstream + enum CheckedState { Unchecked, Checked, Mixed, None } checked{None}; +======= +======= +>>>>>>> 923b1fa618d99a145a0081df94a00fc9404b2a21 std::optional readOnly{std::nullopt}; // [Windows] - Do not remove; required for Windows IRangeValueProvider and IValueProvider Implementation std::optional multiselectable{std::nullopt}; // [Windows] - Do not remove; required for Windows ISelectionProvider Implementation std::optional required{std::nullopt}; // [Windows] - Do not remove; required for Windows ISelectionProvider Implementation enum { Unchecked, Checked, Mixed, None } checked{None}; +>>>>>>> Override +<<<<<<< HEAD +>>>>>>> Override +======= +>>>>>>> 923b1fa618d99a145a0081df94a00fc9404b2a21 }; constexpr bool operator==( @@ -111,6 +127,29 @@ constexpr bool operator!=( return !(rhs == lhs); } +#if RN_DEBUG_STRING_CONVERTIBLE +inline std::string toString(AccessibilityState::CheckedState state) { + switch (state) { + case AccessibilityState::Unchecked: + return "Unchecked"; + case AccessibilityState::Checked: + return "Checked"; + case AccessibilityState::Mixed: + return "Mixed"; + case AccessibilityState::None: + return "None"; + } +} + +inline std::string toString(const AccessibilityState& accessibilityState) { + return "{disabled:" + toString(accessibilityState.disabled) + + ",selected:" + toString(accessibilityState.selected) + + ",checked:" + toString(accessibilityState.checked) + + ",busy:" + toString(accessibilityState.busy) + + ",expanded:" + toString(accessibilityState.expanded) + "}"; +} +#endif + struct AccessibilityLabelledBy { std::vector value{}; }; diff --git a/vnext/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/view/AccessibilityProps.cpp b/vnext/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/view/AccessibilityProps.cpp index 300c3cc641d..8d36b0aa4ef 100644 --- a/vnext/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/view/AccessibilityProps.cpp +++ b/vnext/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/view/AccessibilityProps.cpp @@ -224,13 +224,35 @@ AccessibilityProps::AccessibilityProps( // it probably can, but this is a fairly rare edge-case that (1) is easy-ish // to work around here, and (2) would require very careful work to address // this case and not regress the more common cases. +<<<<<<< Upstream +======= +<<<<<<< HEAD +<<<<<<< Upstream +======= // [Windows ##14845 +>>>>>>> Override +>>>>>>> Override +======= + // [Windows ##14845 +>>>>>>> Override +>>>>>>> 923b1fa618d99a145a0081df94a00fc9404b2a21 if (ReactNativeFeatureFlags::enableCppPropsIteratorSetter()) { accessibilityRole = sourceProps.accessibilityRole; role = sourceProps.role; accessibilityTraits = sourceProps.accessibilityTraits; } else { +<<<<<<< Upstream +======= +<<<<<<< HEAD +<<<<<<< Upstream +======= + // Windows] +>>>>>>> Override +>>>>>>> Override +======= // Windows] +>>>>>>> Override +>>>>>>> 923b1fa618d99a145a0081df94a00fc9404b2a21 auto* accessibilityRoleValue = rawProps.at("accessibilityRole", nullptr, nullptr); auto* roleValue = rawProps.at("role", nullptr, nullptr); @@ -321,6 +343,10 @@ SharedDebugStringConvertibleList AccessibilityProps::getDebugProps() const { "accessibilityActions", accessibilityActions, defaultProps.accessibilityActions), + debugStringConvertibleItem( + "accessibilityState", + accessibilityState, + defaultProps.accessibilityState), debugStringConvertibleItem( "accessibilityElementsHidden", accessibilityElementsHidden, diff --git a/vnext/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/core/DynamicEventPayload.cpp b/vnext/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/core/DynamicEventPayload.cpp index 15bd60a3cf8..af355712d01 100644 --- a/vnext/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/core/DynamicEventPayload.cpp +++ b/vnext/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/core/DynamicEventPayload.cpp @@ -32,9 +32,23 @@ std::optional DynamicEventPayload::extractValue(const std::vector(dynamic.asInt()); +======= +<<<<<<< HEAD +<<<<<<< Upstream + return static_cast(dynamic.asInt()); +======= +======= +>>>>>>> 923b1fa618d99a145a0081df94a00fc9404b2a21 // [Windows ##14797 return static_cast(dynamic.asInt()); // Windows] +>>>>>>> Override +<<<<<<< HEAD +>>>>>>> Override +======= +>>>>>>> 923b1fa618d99a145a0081df94a00fc9404b2a21 } return std::nullopt; } diff --git a/vnext/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/core/ShadowNode.cpp b/vnext/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/core/ShadowNode.cpp index 32311b44e6d..0cccaebaf3c 100644 --- a/vnext/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/core/ShadowNode.cpp +++ b/vnext/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/core/ShadowNode.cpp @@ -163,7 +163,8 @@ std::shared_ptr ShadowNode::clone( } } -ContextContainer::Shared ShadowNode::getContextContainer() const { +std::shared_ptr ShadowNode::getContextContainer() + const { return family_->componentDescriptor_.getContextContainer(); } diff --git a/vnext/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/css/CSSHexColor.h b/vnext/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/css/CSSHexColor.h deleted file mode 100644 index 6116e57437f..00000000000 --- a/vnext/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/css/CSSHexColor.h +++ /dev/null @@ -1,104 +0,0 @@ -/* - * Copyright (c) Meta Platforms, Inc. and affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ - - #pragma once - - #include - #include - - #include - - namespace facebook::react { - - namespace detail { - enum class HexColorType { - Long, - Short, - }; - - constexpr uint8_t hexToNumeric(std::string_view hex, HexColorType hexType) { - int result = 0; - for (char c : hex) { - int value = 0; - if (c >= '0' && c <= '9') { - value = c - '0'; - } else { - value = toLower(c) - 'a' + 10; - } - result *= 16; - result += value; - } - - if (hexType == HexColorType::Short) { - return static_cast(result * 16 + result); // Windows #14666 - } else { - return static_cast(result); // Windows #14666 - } - } - - constexpr bool isHexDigit(char c) { - return (c >= '0' && c <= '9') || (toLower(c) >= 'a' && toLower(c) <= 'f'); - } - - constexpr bool isValidHexColor(std::string_view hex) { - // The syntax of a is a token whose value consists - // of 3, 4, 6, or 8 hexadecimal digits. - if (hex.size() != 3 && hex.size() != 4 && hex.size() != 6 && - hex.size() != 8) { - return false; - } - - for (auto c : hex) { - if (!isHexDigit(c)) { - return false; - } - } - - return true; - } - } // namespace detail - - /** - * Parses a CSS value from hash token string value and returns a - * CSSColor if it is valid. - * https://www.w3.org/TR/css-color-4/#hex-color - */ - template - constexpr std::optional parseCSSHexColor( - std::string_view hexColorValue) { - if (detail::isValidHexColor(hexColorValue)) { - if (hexColorValue.length() == 3) { - return CSSColor{ - hexToNumeric(hexColorValue.substr(0, 1), detail::HexColorType::Short), - hexToNumeric(hexColorValue.substr(1, 1), detail::HexColorType::Short), - hexToNumeric(hexColorValue.substr(2, 1), detail::HexColorType::Short), - 255u}; - } else if (hexColorValue.length() == 4) { - return CSSColor{ - hexToNumeric(hexColorValue.substr(0, 1), detail::HexColorType::Short), - hexToNumeric(hexColorValue.substr(1, 1), detail::HexColorType::Short), - hexToNumeric(hexColorValue.substr(2, 1), detail::HexColorType::Short), - hexToNumeric( - hexColorValue.substr(3, 1), detail::HexColorType::Short)}; - } else if (hexColorValue.length() == 6) { - return CSSColor{ - hexToNumeric(hexColorValue.substr(0, 2), detail::HexColorType::Long), - hexToNumeric(hexColorValue.substr(2, 2), detail::HexColorType::Long), - hexToNumeric(hexColorValue.substr(4, 2), detail::HexColorType::Long), - 255u}; - } else if (hexColorValue.length() == 8) { - return CSSColor{ - hexToNumeric(hexColorValue.substr(0, 2), detail::HexColorType::Long), - hexToNumeric(hexColorValue.substr(2, 2), detail::HexColorType::Long), - hexToNumeric(hexColorValue.substr(4, 2), detail::HexColorType::Long), - hexToNumeric(hexColorValue.substr(6, 2), detail::HexColorType::Long)}; - } - } - return {}; - } - - } // namespace facebook::react diff --git a/vnext/ReactCommon/TEMP_UntilReactCommonUpdate/react/runtime/ReactInstance.cpp b/vnext/ReactCommon/TEMP_UntilReactCommonUpdate/react/runtime/ReactInstance.cpp index 3e6aab1552a..b9940f113d6 100644 --- a/vnext/ReactCommon/TEMP_UntilReactCommonUpdate/react/runtime/ReactInstance.cpp +++ b/vnext/ReactCommon/TEMP_UntilReactCommonUpdate/react/runtime/ReactInstance.cpp @@ -36,7 +36,9 @@ std::shared_ptr createRuntimeScheduler( RuntimeSchedulerTaskErrorHandler taskErrorHandler) { std::shared_ptr scheduler = std::make_shared( - runtimeExecutor, HighResTimeStamp::now, taskErrorHandler); + std::move(runtimeExecutor), + HighResTimeStamp::now, + std::move(taskErrorHandler)); scheduler->setPerformanceEntryReporter( // FIXME: Move creation of PerformanceEntryReporter to here and // guarantee that its lifetime is the same as the runtime. @@ -54,7 +56,7 @@ ReactInstance::ReactInstance( JsErrorHandler::OnJsError onJsError, jsinspector_modern::HostTarget* parentInspectorTarget) : runtime_(std::move(runtime)), - jsMessageQueueThread_(jsMessageQueueThread), + jsMessageQueueThread_(std::move(jsMessageQueueThread)), timerManager_(std::move(timerManager)), jsErrorHandler_(std::make_shared(std::move(onJsError))), parentInspectorTarget_(parentInspectorTarget) { @@ -93,7 +95,7 @@ ReactInstance::ReactInstance( } }; - if (parentInspectorTarget_) { + if (parentInspectorTarget_ != nullptr) { auto executor = parentInspectorTarget_->executorFromThis(); auto bufferedRuntimeExecutorThatWaitsForInspectorSetup = @@ -154,7 +156,7 @@ ReactInstance::ReactInstance( } void ReactInstance::unregisterFromInspector() { - if (inspectorTarget_) { + if (inspectorTarget_ != nullptr) { assert(runtimeInspectorTarget_); inspectorTarget_->unregisterRuntime(*runtimeInspectorTarget_); @@ -199,7 +201,7 @@ namespace { // Copied from JSIExecutor.cpp // basename_r isn't in all iOS SDKs, so use this simple version instead. std::string simpleBasename(const std::string& path) { - size_t pos = path.rfind("/"); + size_t pos = path.rfind('/'); return (pos != std::string::npos) ? path.substr(pos) : path; } @@ -233,7 +235,7 @@ void ReactInstance::loadScript( beforeLoad(runtime); } TraceSection s("ReactInstance::loadScript"); - bool hasLogger(ReactMarker::logTaggedMarkerBridgelessImpl); + bool hasLogger(ReactMarker::logTaggedMarkerBridgelessImpl != nullptr); if (hasLogger) { ReactMarker::logTaggedMarkerBridgeless( ReactMarker::RUN_JS_BUNDLE_START, scriptName.c_str()); @@ -343,7 +345,7 @@ void ReactInstance::registerSegment( } auto buffer = std::make_shared(std::move(script)); - bool hasLogger(ReactMarker::logTaggedMarkerBridgelessImpl); + bool hasLogger(ReactMarker::logTaggedMarkerBridgelessImpl != nullptr); if (hasLogger) { ReactMarker::logTaggedMarkerBridgeless( ReactMarker::REGISTER_JS_SEGMENT_START, tag.c_str()); @@ -364,7 +366,7 @@ void ReactInstance::registerSegment( namespace { void defineReactInstanceFlags( jsi::Runtime& runtime, - ReactInstance::JSRuntimeFlags options) noexcept { + const ReactInstance::JSRuntimeFlags& options) noexcept { defineReadOnlyGlobal(runtime, "RN$Bridgeless", jsi::Value(true)); if (options.isProfiling) { @@ -389,7 +391,10 @@ bool isTruthy(jsi::Runtime& runtime, const jsi::Value& value) { void ReactInstance::initializeRuntime( JSRuntimeFlags options, BindingsInstallFunc bindingsInstallFunc) noexcept { - runtimeScheduler_->scheduleWork([this, options, bindingsInstallFunc]( + runtimeScheduler_->scheduleWork([this, + options = std::move(options), + bindingsInstallFunc = + std::move(bindingsInstallFunc)]( jsi::Runtime& runtime) { TraceSection s("ReactInstance::initializeRuntime"); @@ -605,7 +610,7 @@ void ReactInstance::handleMemoryPressureJs(int pressureLevel) { TRIM_MEMORY_RUNNING_MODERATE = 5, TRIM_MEMORY_UI_HIDDEN = 20, }; - const char* levelName; + const char* levelName = nullptr; switch (pressureLevel) { case TRIM_MEMORY_BACKGROUND: levelName = "TRIM_MEMORY_BACKGROUND"; diff --git a/vnext/codegen/NativeDOMSpec.g.h b/vnext/codegen/NativeDOMSpec.g.h index 1ae9a7b3f34..b2e1fea76cf 100644 --- a/vnext/codegen/NativeDOMSpec.g.h +++ b/vnext/codegen/NativeDOMSpec.g.h @@ -19,24 +19,25 @@ struct DOMSpec : winrt::Microsoft::ReactNative::TurboModuleSpec { static constexpr auto methods = std::tuple{ SyncMethod{0, L"compareDocumentPosition"}, SyncMethod() noexcept>{1, L"getChildNodes"}, - SyncMethod<() noexcept>{2, L"getParentNode"}, - SyncMethod{3, L"isConnected"}, - SyncMethod() noexcept>{4, L"getBorderWidth"}, - SyncMethod(, bool) noexcept>{5, L"getBoundingClientRect"}, - SyncMethod() noexcept>{6, L"getInnerSize"}, - SyncMethod() noexcept>{7, L"getScrollPosition"}, - SyncMethod() noexcept>{8, L"getScrollSize"}, - SyncMethod{9, L"getTagName"}, - SyncMethod{10, L"getTextContent"}, - SyncMethod{11, L"hasPointerCapture"}, - Method{12, L"releasePointerCapture"}, - Method{13, L"setPointerCapture"}, - SyncMethod() noexcept>{14, L"getOffset"}, - SyncMethod<(double, ) noexcept>{15, L"linkRootNode"}, - Method) noexcept>{16, L"measure"}, - Method) noexcept>{17, L"measureInWindow"}, - Method, Callback) noexcept>{18, L"measureLayout"}, - Method{19, L"setNativeProps"}, + SyncMethod<(, std::string) noexcept>{2, L"getElementById"}, + SyncMethod<() noexcept>{3, L"getParentNode"}, + SyncMethod{4, L"isConnected"}, + SyncMethod() noexcept>{5, L"getBorderWidth"}, + SyncMethod(, bool) noexcept>{6, L"getBoundingClientRect"}, + SyncMethod() noexcept>{7, L"getInnerSize"}, + SyncMethod() noexcept>{8, L"getScrollPosition"}, + SyncMethod() noexcept>{9, L"getScrollSize"}, + SyncMethod{10, L"getTagName"}, + SyncMethod{11, L"getTextContent"}, + SyncMethod{12, L"hasPointerCapture"}, + Method{13, L"releasePointerCapture"}, + Method{14, L"setPointerCapture"}, + SyncMethod() noexcept>{15, L"getOffset"}, + SyncMethod<(double, ) noexcept>{16, L"linkRootNode"}, + Method) noexcept>{17, L"measure"}, + Method) noexcept>{18, L"measureInWindow"}, + Method, Callback) noexcept>{19, L"measureLayout"}, + Method{20, L"setNativeProps"}, }; template @@ -55,91 +56,96 @@ struct DOMSpec : winrt::Microsoft::ReactNative::TurboModuleSpec { " REACT_SYNC_METHOD(getChildNodes) static std::vector<> getChildNodes( nativeNodeReference) noexcept { /* implementation */ }\n"); REACT_SHOW_METHOD_SPEC_ERRORS( 2, + "getElementById", + " REACT_SYNC_METHOD(getElementById) getElementById( nativeNodeReference, std::string id) noexcept { /* implementation */ }\n" + " REACT_SYNC_METHOD(getElementById) static getElementById( nativeNodeReference, std::string id) noexcept { /* implementation */ }\n"); + REACT_SHOW_METHOD_SPEC_ERRORS( + 3, "getParentNode", " REACT_SYNC_METHOD(getParentNode) getParentNode( nativeNodeReference) noexcept { /* implementation */ }\n" " REACT_SYNC_METHOD(getParentNode) static getParentNode( nativeNodeReference) noexcept { /* implementation */ }\n"); REACT_SHOW_METHOD_SPEC_ERRORS( - 3, + 4, "isConnected", " REACT_SYNC_METHOD(isConnected) bool isConnected( nativeNodeReference) noexcept { /* implementation */ }\n" " REACT_SYNC_METHOD(isConnected) static bool isConnected( nativeNodeReference) noexcept { /* implementation */ }\n"); REACT_SHOW_METHOD_SPEC_ERRORS( - 4, + 5, "getBorderWidth", " REACT_SYNC_METHOD(getBorderWidth) std::vector getBorderWidth( nativeElementReference) noexcept { /* implementation */ }\n" " REACT_SYNC_METHOD(getBorderWidth) static std::vector getBorderWidth( nativeElementReference) noexcept { /* implementation */ }\n"); REACT_SHOW_METHOD_SPEC_ERRORS( - 5, + 6, "getBoundingClientRect", " REACT_SYNC_METHOD(getBoundingClientRect) std::vector getBoundingClientRect( nativeElementReference, bool includeTransform) noexcept { /* implementation */ }\n" " REACT_SYNC_METHOD(getBoundingClientRect) static std::vector getBoundingClientRect( nativeElementReference, bool includeTransform) noexcept { /* implementation */ }\n"); REACT_SHOW_METHOD_SPEC_ERRORS( - 6, + 7, "getInnerSize", " REACT_SYNC_METHOD(getInnerSize) std::vector getInnerSize( nativeElementReference) noexcept { /* implementation */ }\n" " REACT_SYNC_METHOD(getInnerSize) static std::vector getInnerSize( nativeElementReference) noexcept { /* implementation */ }\n"); REACT_SHOW_METHOD_SPEC_ERRORS( - 7, + 8, "getScrollPosition", " REACT_SYNC_METHOD(getScrollPosition) std::vector getScrollPosition( nativeElementReference) noexcept { /* implementation */ }\n" " REACT_SYNC_METHOD(getScrollPosition) static std::vector getScrollPosition( nativeElementReference) noexcept { /* implementation */ }\n"); REACT_SHOW_METHOD_SPEC_ERRORS( - 8, + 9, "getScrollSize", " REACT_SYNC_METHOD(getScrollSize) std::vector getScrollSize( nativeElementReference) noexcept { /* implementation */ }\n" " REACT_SYNC_METHOD(getScrollSize) static std::vector getScrollSize( nativeElementReference) noexcept { /* implementation */ }\n"); REACT_SHOW_METHOD_SPEC_ERRORS( - 9, + 10, "getTagName", " REACT_SYNC_METHOD(getTagName) std::string getTagName( nativeElementReference) noexcept { /* implementation */ }\n" " REACT_SYNC_METHOD(getTagName) static std::string getTagName( nativeElementReference) noexcept { /* implementation */ }\n"); REACT_SHOW_METHOD_SPEC_ERRORS( - 10, + 11, "getTextContent", " REACT_SYNC_METHOD(getTextContent) std::string getTextContent( nativeElementReference) noexcept { /* implementation */ }\n" " REACT_SYNC_METHOD(getTextContent) static std::string getTextContent( nativeElementReference) noexcept { /* implementation */ }\n"); REACT_SHOW_METHOD_SPEC_ERRORS( - 11, + 12, "hasPointerCapture", " REACT_SYNC_METHOD(hasPointerCapture) bool hasPointerCapture( nativeElementReference, double pointerId) noexcept { /* implementation */ }\n" " REACT_SYNC_METHOD(hasPointerCapture) static bool hasPointerCapture( nativeElementReference, double pointerId) noexcept { /* implementation */ }\n"); REACT_SHOW_METHOD_SPEC_ERRORS( - 12, + 13, "releasePointerCapture", " REACT_METHOD(releasePointerCapture) void releasePointerCapture( nativeElementReference, double pointerId) noexcept { /* implementation */ }\n" " REACT_METHOD(releasePointerCapture) static void releasePointerCapture( nativeElementReference, double pointerId) noexcept { /* implementation */ }\n"); REACT_SHOW_METHOD_SPEC_ERRORS( - 13, + 14, "setPointerCapture", " REACT_METHOD(setPointerCapture) void setPointerCapture( nativeElementReference, double pointerId) noexcept { /* implementation */ }\n" " REACT_METHOD(setPointerCapture) static void setPointerCapture( nativeElementReference, double pointerId) noexcept { /* implementation */ }\n"); REACT_SHOW_METHOD_SPEC_ERRORS( - 14, + 15, "getOffset", " REACT_SYNC_METHOD(getOffset) std::vector<> getOffset( nativeElementReference) noexcept { /* implementation */ }\n" " REACT_SYNC_METHOD(getOffset) static std::vector<> getOffset( nativeElementReference) noexcept { /* implementation */ }\n"); REACT_SHOW_METHOD_SPEC_ERRORS( - 15, + 16, "linkRootNode", " REACT_SYNC_METHOD(linkRootNode) linkRootNode(double rootTag, instanceHandle) noexcept { /* implementation */ }\n" " REACT_SYNC_METHOD(linkRootNode) static linkRootNode(double rootTag, instanceHandle) noexcept { /* implementation */ }\n"); REACT_SHOW_METHOD_SPEC_ERRORS( - 16, + 17, "measure", " REACT_METHOD(measure) void measure( nativeElementReference, std::function const & callback) noexcept { /* implementation */ }\n" " REACT_METHOD(measure) static void measure( nativeElementReference, std::function const & callback) noexcept { /* implementation */ }\n"); REACT_SHOW_METHOD_SPEC_ERRORS( - 17, + 18, "measureInWindow", " REACT_METHOD(measureInWindow) void measureInWindow( nativeElementReference, std::function const & callback) noexcept { /* implementation */ }\n" " REACT_METHOD(measureInWindow) static void measureInWindow( nativeElementReference, std::function const & callback) noexcept { /* implementation */ }\n"); REACT_SHOW_METHOD_SPEC_ERRORS( - 18, + 19, "measureLayout", " REACT_METHOD(measureLayout) void measureLayout( nativeElementReference, relativeNode, std::function const & onFail, std::function const & onSuccess) noexcept { /* implementation */ }\n" " REACT_METHOD(measureLayout) static void measureLayout( nativeElementReference, relativeNode, std::function const & onFail, std::function const & onSuccess) noexcept { /* implementation */ }\n"); REACT_SHOW_METHOD_SPEC_ERRORS( - 19, + 20, "setNativeProps", " REACT_METHOD(setNativeProps) void setNativeProps( nativeElementReference, updatePayload) noexcept { /* implementation */ }\n" " REACT_METHOD(setNativeProps) static void setNativeProps( nativeElementReference, updatePayload) noexcept { /* implementation */ }\n"); diff --git a/vnext/codegen/NativeIntersectionObserverSpec.g.h b/vnext/codegen/NativeIntersectionObserverSpec.g.h index d5478418b9c..35b8e136f25 100644 --- a/vnext/codegen/NativeIntersectionObserverSpec.g.h +++ b/vnext/codegen/NativeIntersectionObserverSpec.g.h @@ -59,13 +59,11 @@ inline winrt::Microsoft::ReactNative::FieldMap GetStructInfo(IntersectionObserve struct IntersectionObserverSpec : winrt::Microsoft::ReactNative::TurboModuleSpec { static constexpr auto methods = std::tuple{ - Method{0, L"observe"}, - Method{1, L"unobserve"}, - SyncMethod<(IntersectionObserverSpec_NativeIntersectionObserverObserveOptions) noexcept>{2, L"observeV2"}, - Method{3, L"unobserveV2"}, - Method) noexcept>{4, L"connect"}, - Method{5, L"disconnect"}, - SyncMethod() noexcept>{6, L"takeRecords"}, + SyncMethod<(IntersectionObserverSpec_NativeIntersectionObserverObserveOptions) noexcept>{0, L"observeV2"}, + Method{1, L"unobserveV2"}, + Method) noexcept>{2, L"connect"}, + Method{3, L"disconnect"}, + SyncMethod() noexcept>{4, L"takeRecords"}, }; template @@ -74,36 +72,26 @@ struct IntersectionObserverSpec : winrt::Microsoft::ReactNative::TurboModuleSpec REACT_SHOW_METHOD_SPEC_ERRORS( 0, - "observe", - " REACT_METHOD(observe) void observe(IntersectionObserverSpec_NativeIntersectionObserverObserveOptions && options) noexcept { /* implementation */ }\n" - " REACT_METHOD(observe) static void observe(IntersectionObserverSpec_NativeIntersectionObserverObserveOptions && options) noexcept { /* implementation */ }\n"); - REACT_SHOW_METHOD_SPEC_ERRORS( - 1, - "unobserve", - " REACT_METHOD(unobserve) void unobserve(double intersectionObserverId, targetShadowNode) noexcept { /* implementation */ }\n" - " REACT_METHOD(unobserve) static void unobserve(double intersectionObserverId, targetShadowNode) noexcept { /* implementation */ }\n"); - REACT_SHOW_METHOD_SPEC_ERRORS( - 2, "observeV2", " REACT_SYNC_METHOD(observeV2) observeV2(IntersectionObserverSpec_NativeIntersectionObserverObserveOptions && options) noexcept { /* implementation */ }\n" " REACT_SYNC_METHOD(observeV2) static observeV2(IntersectionObserverSpec_NativeIntersectionObserverObserveOptions && options) noexcept { /* implementation */ }\n"); REACT_SHOW_METHOD_SPEC_ERRORS( - 3, + 1, "unobserveV2", " REACT_METHOD(unobserveV2) void unobserveV2(double intersectionObserverId, token) noexcept { /* implementation */ }\n" " REACT_METHOD(unobserveV2) static void unobserveV2(double intersectionObserverId, token) noexcept { /* implementation */ }\n"); REACT_SHOW_METHOD_SPEC_ERRORS( - 4, + 2, "connect", " REACT_METHOD(connect) void connect(std::function const & notifyIntersectionObserversCallback) noexcept { /* implementation */ }\n" " REACT_METHOD(connect) static void connect(std::function const & notifyIntersectionObserversCallback) noexcept { /* implementation */ }\n"); REACT_SHOW_METHOD_SPEC_ERRORS( - 5, + 3, "disconnect", " REACT_METHOD(disconnect) void disconnect() noexcept { /* implementation */ }\n" " REACT_METHOD(disconnect) static void disconnect() noexcept { /* implementation */ }\n"); REACT_SHOW_METHOD_SPEC_ERRORS( - 6, + 4, "takeRecords", " REACT_SYNC_METHOD(takeRecords) std::vector takeRecords() noexcept { /* implementation */ }\n" " REACT_SYNC_METHOD(takeRecords) static std::vector takeRecords() noexcept { /* implementation */ }\n"); diff --git a/vnext/codegen/NativePerformanceSpec.g.h b/vnext/codegen/NativePerformanceSpec.g.h index 5d058ccdb96..cdf87e9ae60 100644 --- a/vnext/codegen/NativePerformanceSpec.g.h +++ b/vnext/codegen/NativePerformanceSpec.g.h @@ -94,9 +94,9 @@ inline winrt::Microsoft::ReactNative::FieldMap GetStructInfo(PerformanceSpec_Rea struct PerformanceSpec : winrt::Microsoft::ReactNative::TurboModuleSpec { static constexpr auto methods = std::tuple{ SyncMethod{0, L"now"}, - SyncMethod{1, L"markWithResult"}, - SyncMethod(std::string, double, double, double, std::string, std::string) noexcept>{2, L"measure"}, - SyncMethod(std::string, double, double, double, std::string, std::string) noexcept>{3, L"measureWithResult"}, + Method{1, L"reportMark"}, + Method{2, L"reportMeasure"}, + SyncMethod(std::string) noexcept>{3, L"getMarkTime"}, Method{4, L"clearMarks"}, Method{5, L"clearMeasures"}, SyncMethod() noexcept>{6, L"getEntries"}, @@ -111,8 +111,7 @@ struct PerformanceSpec : winrt::Microsoft::ReactNative::TurboModuleSpec { Method{15, L"disconnect"}, SyncMethod(, bool) noexcept>{16, L"takeRecords"}, SyncMethod() noexcept>{17, L"getSupportedPerformanceEntryTypes"}, - Method{18, L"setCurrentTimeStampForTesting"}, - Method{19, L"clearEventCountsForTesting"}, + Method{18, L"clearEventCountsForTesting"}, }; template @@ -126,19 +125,19 @@ struct PerformanceSpec : winrt::Microsoft::ReactNative::TurboModuleSpec { " REACT_SYNC_METHOD(now) static double now() noexcept { /* implementation */ }\n"); REACT_SHOW_METHOD_SPEC_ERRORS( 1, - "markWithResult", - " REACT_SYNC_METHOD(markWithResult) double markWithResult(std::string name, double startTime) noexcept { /* implementation */ }\n" - " REACT_SYNC_METHOD(markWithResult) static double markWithResult(std::string name, double startTime) noexcept { /* implementation */ }\n"); + "reportMark", + " REACT_METHOD(reportMark) void reportMark(std::string name, double startTime, entry) noexcept { /* implementation */ }\n" + " REACT_METHOD(reportMark) static void reportMark(std::string name, double startTime, entry) noexcept { /* implementation */ }\n"); REACT_SHOW_METHOD_SPEC_ERRORS( 2, - "measure", - " REACT_SYNC_METHOD(measure) std::vector measure(std::string name, double startTime, double endTime, double duration, std::string startMark, std::string endMark) noexcept { /* implementation */ }\n" - " REACT_SYNC_METHOD(measure) static std::vector measure(std::string name, double startTime, double endTime, double duration, std::string startMark, std::string endMark) noexcept { /* implementation */ }\n"); + "reportMeasure", + " REACT_METHOD(reportMeasure) void reportMeasure(std::string name, double startTime, double duration, entry) noexcept { /* implementation */ }\n" + " REACT_METHOD(reportMeasure) static void reportMeasure(std::string name, double startTime, double duration, entry) noexcept { /* implementation */ }\n"); REACT_SHOW_METHOD_SPEC_ERRORS( 3, - "measureWithResult", - " REACT_SYNC_METHOD(measureWithResult) std::vector measureWithResult(std::string name, double startTime, double endTime, double duration, std::string startMark, std::string endMark) noexcept { /* implementation */ }\n" - " REACT_SYNC_METHOD(measureWithResult) static std::vector measureWithResult(std::string name, double startTime, double endTime, double duration, std::string startMark, std::string endMark) noexcept { /* implementation */ }\n"); + "getMarkTime", + " REACT_SYNC_METHOD(getMarkTime) std::optional getMarkTime(std::string name) noexcept { /* implementation */ }\n" + " REACT_SYNC_METHOD(getMarkTime) static std::optional getMarkTime(std::string name) noexcept { /* implementation */ }\n"); REACT_SHOW_METHOD_SPEC_ERRORS( 4, "clearMarks", @@ -211,11 +210,6 @@ struct PerformanceSpec : winrt::Microsoft::ReactNative::TurboModuleSpec { " REACT_SYNC_METHOD(getSupportedPerformanceEntryTypes) static std::vector getSupportedPerformanceEntryTypes() noexcept { /* implementation */ }\n"); REACT_SHOW_METHOD_SPEC_ERRORS( 18, - "setCurrentTimeStampForTesting", - " REACT_METHOD(setCurrentTimeStampForTesting) void setCurrentTimeStampForTesting(double timeStamp) noexcept { /* implementation */ }\n" - " REACT_METHOD(setCurrentTimeStampForTesting) static void setCurrentTimeStampForTesting(double timeStamp) noexcept { /* implementation */ }\n"); - REACT_SHOW_METHOD_SPEC_ERRORS( - 19, "clearEventCountsForTesting", " REACT_METHOD(clearEventCountsForTesting) void clearEventCountsForTesting() noexcept { /* implementation */ }\n" " REACT_METHOD(clearEventCountsForTesting) static void clearEventCountsForTesting() noexcept { /* implementation */ }\n"); diff --git a/vnext/codegen/NativeReactNativeFeatureFlagsSpec.g.h b/vnext/codegen/NativeReactNativeFeatureFlagsSpec.g.h index a0c80911e2e..acb3577d276 100644 --- a/vnext/codegen/NativeReactNativeFeatureFlagsSpec.g.h +++ b/vnext/codegen/NativeReactNativeFeatureFlagsSpec.g.h @@ -19,63 +19,73 @@ struct ReactNativeFeatureFlagsSpec : winrt::Microsoft::ReactNative::TurboModuleS static constexpr auto methods = std::tuple{ SyncMethod{0, L"commonTestFlag"}, SyncMethod{1, L"commonTestFlagWithoutNativeImplementation"}, - SyncMethod{2, L"animatedShouldSignalBatch"}, + SyncMethod{2, L"cdpInteractionMetricsEnabled"}, SyncMethod{3, L"cxxNativeAnimatedEnabled"}, SyncMethod{4, L"cxxNativeAnimatedRemoveJsSync"}, - SyncMethod{5, L"disableMainQueueSyncDispatchIOS"}, + SyncMethod{5, L"disableFabricCommitInCXXAnimated"}, SyncMethod{6, L"disableMountItemReorderingAndroid"}, - SyncMethod{7, L"disableTextLayoutManagerCacheAndroid"}, - SyncMethod{8, L"enableAccessibilityOrder"}, - SyncMethod{9, L"enableAccumulatedUpdatesInRawPropsAndroid"}, - SyncMethod{10, L"enableAndroidTextMeasurementOptimizations"}, - SyncMethod{11, L"enableBridgelessArchitecture"}, - SyncMethod{12, L"enableCppPropsIteratorSetter"}, - SyncMethod{13, L"enableCustomFocusSearchOnClippedElementsAndroid"}, - SyncMethod{14, L"enableDestroyShadowTreeRevisionAsync"}, - SyncMethod{15, L"enableDoubleMeasurementFixAndroid"}, - SyncMethod{16, L"enableEagerRootViewAttachment"}, - SyncMethod{17, L"enableFabricLogs"}, - SyncMethod{18, L"enableFabricRenderer"}, - SyncMethod{19, L"enableFixForParentTagDuringReparenting"}, - SyncMethod{20, L"enableFontScaleChangesUpdatingLayout"}, - SyncMethod{21, L"enableIOSTextBaselineOffsetPerLine"}, - SyncMethod{22, L"enableIOSViewClipToPaddingBox"}, - SyncMethod{23, L"enableInteropViewManagerClassLookUpOptimizationIOS"}, - SyncMethod{24, L"enableLayoutAnimationsOnAndroid"}, - SyncMethod{25, L"enableLayoutAnimationsOnIOS"}, - SyncMethod{26, L"enableMainQueueCoordinatorOnIOS"}, - SyncMethod{27, L"enableMainQueueModulesOnIOS"}, - SyncMethod{28, L"enableModuleArgumentNSNullConversionIOS"}, - SyncMethod{29, L"enableNativeCSSParsing"}, - SyncMethod{30, L"enableNetworkEventReporting"}, - SyncMethod{31, L"enableNewBackgroundAndBorderDrawables"}, - SyncMethod{32, L"enablePreparedTextLayout"}, - SyncMethod{33, L"enablePropsUpdateReconciliationAndroid"}, - SyncMethod{34, L"enableResourceTimingAPI"}, - SyncMethod{35, L"enableSynchronousStateUpdates"}, - SyncMethod{36, L"enableViewCulling"}, - SyncMethod{37, L"enableViewRecycling"}, - SyncMethod{38, L"enableViewRecyclingForText"}, - SyncMethod{39, L"enableViewRecyclingForView"}, - SyncMethod{40, L"enableVirtualViewDebugFeatures"}, - SyncMethod{41, L"enableVirtualViewRenderState"}, - SyncMethod{42, L"enableVirtualViewWindowFocusDetection"}, - SyncMethod{43, L"fixMappingOfEventPrioritiesBetweenFabricAndReact"}, - SyncMethod{44, L"fuseboxEnabledRelease"}, - SyncMethod{45, L"fuseboxNetworkInspectionEnabled"}, - SyncMethod{46, L"hideOffscreenVirtualViewsOnIOS"}, - SyncMethod{47, L"preparedTextCacheSize"}, - SyncMethod{48, L"traceTurboModulePromiseRejectionsOnAndroid"}, - SyncMethod{49, L"updateRuntimeShadowNodeReferencesOnCommit"}, - SyncMethod{50, L"useAlwaysAvailableJSErrorHandling"}, - SyncMethod{51, L"useFabricInterop"}, - SyncMethod{52, L"useNativeViewConfigsInBridgelessMode"}, - SyncMethod{53, L"useOptimizedEventBatchingOnAndroid"}, - SyncMethod{54, L"useRawPropsJsiValue"}, - SyncMethod{55, L"useShadowNodeStateOnClone"}, - SyncMethod{56, L"useTurboModuleInterop"}, - SyncMethod{57, L"useTurboModules"}, - SyncMethod{58, L"virtualViewPrerenderRatio"}, + SyncMethod{7, L"disableOldAndroidAttachmentMetricsWorkarounds"}, + SyncMethod{8, L"disableTextLayoutManagerCacheAndroid"}, + SyncMethod{9, L"enableAccessibilityOrder"}, + SyncMethod{10, L"enableAccumulatedUpdatesInRawPropsAndroid"}, + SyncMethod{11, L"enableAndroidTextMeasurementOptimizations"}, + SyncMethod{12, L"enableBridgelessArchitecture"}, + SyncMethod{13, L"enableCppPropsIteratorSetter"}, + SyncMethod{14, L"enableCustomFocusSearchOnClippedElementsAndroid"}, + SyncMethod{15, L"enableDestroyShadowTreeRevisionAsync"}, + SyncMethod{16, L"enableDoubleMeasurementFixAndroid"}, + SyncMethod{17, L"enableEagerMainQueueModulesOnIOS"}, + SyncMethod{18, L"enableEagerRootViewAttachment"}, + SyncMethod{19, L"enableFabricLogs"}, + SyncMethod{20, L"enableFabricRenderer"}, + SyncMethod{21, L"enableFixForParentTagDuringReparenting"}, + SyncMethod{22, L"enableFontScaleChangesUpdatingLayout"}, + SyncMethod{23, L"enableIOSTextBaselineOffsetPerLine"}, + SyncMethod{24, L"enableIOSViewClipToPaddingBox"}, + SyncMethod{25, L"enableImagePrefetchingAndroid"}, + SyncMethod{26, L"enableImmediateUpdateModeForContentOffsetChanges"}, + SyncMethod{27, L"enableInteropViewManagerClassLookUpOptimizationIOS"}, + SyncMethod{28, L"enableLayoutAnimationsOnAndroid"}, + SyncMethod{29, L"enableLayoutAnimationsOnIOS"}, + SyncMethod{30, L"enableMainQueueCoordinatorOnIOS"}, + SyncMethod{31, L"enableModuleArgumentNSNullConversionIOS"}, + SyncMethod{32, L"enableNativeCSSParsing"}, + SyncMethod{33, L"enableNetworkEventReporting"}, + SyncMethod{34, L"enableNewBackgroundAndBorderDrawables"}, + SyncMethod{35, L"enablePreparedTextLayout"}, + SyncMethod{36, L"enablePropsUpdateReconciliationAndroid"}, + SyncMethod{37, L"enableResourceTimingAPI"}, + SyncMethod{38, L"enableViewCulling"}, + SyncMethod{39, L"enableViewRecycling"}, + SyncMethod{40, L"enableViewRecyclingForText"}, + SyncMethod{41, L"enableViewRecyclingForView"}, + SyncMethod{42, L"enableVirtualViewDebugFeatures"}, + SyncMethod{43, L"enableVirtualViewRenderState"}, + SyncMethod{44, L"enableVirtualViewWindowFocusDetection"}, + SyncMethod{45, L"fixMappingOfEventPrioritiesBetweenFabricAndReact"}, + SyncMethod{46, L"fuseboxEnabledRelease"}, + SyncMethod{47, L"fuseboxNetworkInspectionEnabled"}, + SyncMethod{48, L"hideOffscreenVirtualViewsOnIOS"}, + SyncMethod{49, L"perfMonitorV2Enabled"}, + SyncMethod{50, L"preparedTextCacheSize"}, + SyncMethod{51, L"preventShadowTreeCommitExhaustion"}, + SyncMethod{52, L"releaseImageDataWhenConsumed"}, + SyncMethod{53, L"shouldPressibilityUseW3CPointerEventsForHover"}, + SyncMethod{54, L"skipActivityIdentityAssertionOnHostPause"}, + SyncMethod{55, L"sweepActiveTouchOnChildNativeGesturesAndroid"}, + SyncMethod{56, L"traceTurboModulePromiseRejectionsOnAndroid"}, + SyncMethod{57, L"updateRuntimeShadowNodeReferencesOnCommit"}, + SyncMethod{58, L"useAlwaysAvailableJSErrorHandling"}, + SyncMethod{59, L"useFabricInterop"}, + SyncMethod{60, L"useNativeEqualsInNativeReadableArrayAndroid"}, + SyncMethod{61, L"useNativeTransformHelperAndroid"}, + SyncMethod{62, L"useNativeViewConfigsInBridgelessMode"}, + SyncMethod{63, L"useOptimizedEventBatchingOnAndroid"}, + SyncMethod{64, L"useRawPropsJsiValue"}, + SyncMethod{65, L"useShadowNodeStateOnClone"}, + SyncMethod{66, L"useTurboModuleInterop"}, + SyncMethod{67, L"useTurboModules"}, + SyncMethod{68, L"virtualViewPrerenderRatio"}, }; template @@ -94,9 +104,9 @@ struct ReactNativeFeatureFlagsSpec : winrt::Microsoft::ReactNative::TurboModuleS " REACT_SYNC_METHOD(commonTestFlagWithoutNativeImplementation) static bool commonTestFlagWithoutNativeImplementation() noexcept { /* implementation */ }\n"); REACT_SHOW_METHOD_SPEC_ERRORS( 2, - "animatedShouldSignalBatch", - " REACT_SYNC_METHOD(animatedShouldSignalBatch) bool animatedShouldSignalBatch() noexcept { /* implementation */ }\n" - " REACT_SYNC_METHOD(animatedShouldSignalBatch) static bool animatedShouldSignalBatch() noexcept { /* implementation */ }\n"); + "cdpInteractionMetricsEnabled", + " REACT_SYNC_METHOD(cdpInteractionMetricsEnabled) bool cdpInteractionMetricsEnabled() noexcept { /* implementation */ }\n" + " REACT_SYNC_METHOD(cdpInteractionMetricsEnabled) static bool cdpInteractionMetricsEnabled() noexcept { /* implementation */ }\n"); REACT_SHOW_METHOD_SPEC_ERRORS( 3, "cxxNativeAnimatedEnabled", @@ -109,9 +119,9 @@ struct ReactNativeFeatureFlagsSpec : winrt::Microsoft::ReactNative::TurboModuleS " REACT_SYNC_METHOD(cxxNativeAnimatedRemoveJsSync) static bool cxxNativeAnimatedRemoveJsSync() noexcept { /* implementation */ }\n"); REACT_SHOW_METHOD_SPEC_ERRORS( 5, - "disableMainQueueSyncDispatchIOS", - " REACT_SYNC_METHOD(disableMainQueueSyncDispatchIOS) bool disableMainQueueSyncDispatchIOS() noexcept { /* implementation */ }\n" - " REACT_SYNC_METHOD(disableMainQueueSyncDispatchIOS) static bool disableMainQueueSyncDispatchIOS() noexcept { /* implementation */ }\n"); + "disableFabricCommitInCXXAnimated", + " REACT_SYNC_METHOD(disableFabricCommitInCXXAnimated) bool disableFabricCommitInCXXAnimated() noexcept { /* implementation */ }\n" + " REACT_SYNC_METHOD(disableFabricCommitInCXXAnimated) static bool disableFabricCommitInCXXAnimated() noexcept { /* implementation */ }\n"); REACT_SHOW_METHOD_SPEC_ERRORS( 6, "disableMountItemReorderingAndroid", @@ -119,261 +129,311 @@ struct ReactNativeFeatureFlagsSpec : winrt::Microsoft::ReactNative::TurboModuleS " REACT_SYNC_METHOD(disableMountItemReorderingAndroid) static bool disableMountItemReorderingAndroid() noexcept { /* implementation */ }\n"); REACT_SHOW_METHOD_SPEC_ERRORS( 7, + "disableOldAndroidAttachmentMetricsWorkarounds", + " REACT_SYNC_METHOD(disableOldAndroidAttachmentMetricsWorkarounds) bool disableOldAndroidAttachmentMetricsWorkarounds() noexcept { /* implementation */ }\n" + " REACT_SYNC_METHOD(disableOldAndroidAttachmentMetricsWorkarounds) static bool disableOldAndroidAttachmentMetricsWorkarounds() noexcept { /* implementation */ }\n"); + REACT_SHOW_METHOD_SPEC_ERRORS( + 8, "disableTextLayoutManagerCacheAndroid", " REACT_SYNC_METHOD(disableTextLayoutManagerCacheAndroid) bool disableTextLayoutManagerCacheAndroid() noexcept { /* implementation */ }\n" " REACT_SYNC_METHOD(disableTextLayoutManagerCacheAndroid) static bool disableTextLayoutManagerCacheAndroid() noexcept { /* implementation */ }\n"); REACT_SHOW_METHOD_SPEC_ERRORS( - 8, + 9, "enableAccessibilityOrder", " REACT_SYNC_METHOD(enableAccessibilityOrder) bool enableAccessibilityOrder() noexcept { /* implementation */ }\n" " REACT_SYNC_METHOD(enableAccessibilityOrder) static bool enableAccessibilityOrder() noexcept { /* implementation */ }\n"); REACT_SHOW_METHOD_SPEC_ERRORS( - 9, + 10, "enableAccumulatedUpdatesInRawPropsAndroid", " REACT_SYNC_METHOD(enableAccumulatedUpdatesInRawPropsAndroid) bool enableAccumulatedUpdatesInRawPropsAndroid() noexcept { /* implementation */ }\n" " REACT_SYNC_METHOD(enableAccumulatedUpdatesInRawPropsAndroid) static bool enableAccumulatedUpdatesInRawPropsAndroid() noexcept { /* implementation */ }\n"); REACT_SHOW_METHOD_SPEC_ERRORS( - 10, + 11, "enableAndroidTextMeasurementOptimizations", " REACT_SYNC_METHOD(enableAndroidTextMeasurementOptimizations) bool enableAndroidTextMeasurementOptimizations() noexcept { /* implementation */ }\n" " REACT_SYNC_METHOD(enableAndroidTextMeasurementOptimizations) static bool enableAndroidTextMeasurementOptimizations() noexcept { /* implementation */ }\n"); REACT_SHOW_METHOD_SPEC_ERRORS( - 11, + 12, "enableBridgelessArchitecture", " REACT_SYNC_METHOD(enableBridgelessArchitecture) bool enableBridgelessArchitecture() noexcept { /* implementation */ }\n" " REACT_SYNC_METHOD(enableBridgelessArchitecture) static bool enableBridgelessArchitecture() noexcept { /* implementation */ }\n"); REACT_SHOW_METHOD_SPEC_ERRORS( - 12, + 13, "enableCppPropsIteratorSetter", " REACT_SYNC_METHOD(enableCppPropsIteratorSetter) bool enableCppPropsIteratorSetter() noexcept { /* implementation */ }\n" " REACT_SYNC_METHOD(enableCppPropsIteratorSetter) static bool enableCppPropsIteratorSetter() noexcept { /* implementation */ }\n"); REACT_SHOW_METHOD_SPEC_ERRORS( - 13, + 14, "enableCustomFocusSearchOnClippedElementsAndroid", " REACT_SYNC_METHOD(enableCustomFocusSearchOnClippedElementsAndroid) bool enableCustomFocusSearchOnClippedElementsAndroid() noexcept { /* implementation */ }\n" " REACT_SYNC_METHOD(enableCustomFocusSearchOnClippedElementsAndroid) static bool enableCustomFocusSearchOnClippedElementsAndroid() noexcept { /* implementation */ }\n"); REACT_SHOW_METHOD_SPEC_ERRORS( - 14, + 15, "enableDestroyShadowTreeRevisionAsync", " REACT_SYNC_METHOD(enableDestroyShadowTreeRevisionAsync) bool enableDestroyShadowTreeRevisionAsync() noexcept { /* implementation */ }\n" " REACT_SYNC_METHOD(enableDestroyShadowTreeRevisionAsync) static bool enableDestroyShadowTreeRevisionAsync() noexcept { /* implementation */ }\n"); REACT_SHOW_METHOD_SPEC_ERRORS( - 15, + 16, "enableDoubleMeasurementFixAndroid", " REACT_SYNC_METHOD(enableDoubleMeasurementFixAndroid) bool enableDoubleMeasurementFixAndroid() noexcept { /* implementation */ }\n" " REACT_SYNC_METHOD(enableDoubleMeasurementFixAndroid) static bool enableDoubleMeasurementFixAndroid() noexcept { /* implementation */ }\n"); REACT_SHOW_METHOD_SPEC_ERRORS( - 16, + 17, + "enableEagerMainQueueModulesOnIOS", + " REACT_SYNC_METHOD(enableEagerMainQueueModulesOnIOS) bool enableEagerMainQueueModulesOnIOS() noexcept { /* implementation */ }\n" + " REACT_SYNC_METHOD(enableEagerMainQueueModulesOnIOS) static bool enableEagerMainQueueModulesOnIOS() noexcept { /* implementation */ }\n"); + REACT_SHOW_METHOD_SPEC_ERRORS( + 18, "enableEagerRootViewAttachment", " REACT_SYNC_METHOD(enableEagerRootViewAttachment) bool enableEagerRootViewAttachment() noexcept { /* implementation */ }\n" " REACT_SYNC_METHOD(enableEagerRootViewAttachment) static bool enableEagerRootViewAttachment() noexcept { /* implementation */ }\n"); REACT_SHOW_METHOD_SPEC_ERRORS( - 17, + 19, "enableFabricLogs", " REACT_SYNC_METHOD(enableFabricLogs) bool enableFabricLogs() noexcept { /* implementation */ }\n" " REACT_SYNC_METHOD(enableFabricLogs) static bool enableFabricLogs() noexcept { /* implementation */ }\n"); REACT_SHOW_METHOD_SPEC_ERRORS( - 18, + 20, "enableFabricRenderer", " REACT_SYNC_METHOD(enableFabricRenderer) bool enableFabricRenderer() noexcept { /* implementation */ }\n" " REACT_SYNC_METHOD(enableFabricRenderer) static bool enableFabricRenderer() noexcept { /* implementation */ }\n"); REACT_SHOW_METHOD_SPEC_ERRORS( - 19, + 21, "enableFixForParentTagDuringReparenting", " REACT_SYNC_METHOD(enableFixForParentTagDuringReparenting) bool enableFixForParentTagDuringReparenting() noexcept { /* implementation */ }\n" " REACT_SYNC_METHOD(enableFixForParentTagDuringReparenting) static bool enableFixForParentTagDuringReparenting() noexcept { /* implementation */ }\n"); REACT_SHOW_METHOD_SPEC_ERRORS( - 20, + 22, "enableFontScaleChangesUpdatingLayout", " REACT_SYNC_METHOD(enableFontScaleChangesUpdatingLayout) bool enableFontScaleChangesUpdatingLayout() noexcept { /* implementation */ }\n" " REACT_SYNC_METHOD(enableFontScaleChangesUpdatingLayout) static bool enableFontScaleChangesUpdatingLayout() noexcept { /* implementation */ }\n"); REACT_SHOW_METHOD_SPEC_ERRORS( - 21, + 23, "enableIOSTextBaselineOffsetPerLine", " REACT_SYNC_METHOD(enableIOSTextBaselineOffsetPerLine) bool enableIOSTextBaselineOffsetPerLine() noexcept { /* implementation */ }\n" " REACT_SYNC_METHOD(enableIOSTextBaselineOffsetPerLine) static bool enableIOSTextBaselineOffsetPerLine() noexcept { /* implementation */ }\n"); REACT_SHOW_METHOD_SPEC_ERRORS( - 22, + 24, "enableIOSViewClipToPaddingBox", " REACT_SYNC_METHOD(enableIOSViewClipToPaddingBox) bool enableIOSViewClipToPaddingBox() noexcept { /* implementation */ }\n" " REACT_SYNC_METHOD(enableIOSViewClipToPaddingBox) static bool enableIOSViewClipToPaddingBox() noexcept { /* implementation */ }\n"); REACT_SHOW_METHOD_SPEC_ERRORS( - 23, + 25, + "enableImagePrefetchingAndroid", + " REACT_SYNC_METHOD(enableImagePrefetchingAndroid) bool enableImagePrefetchingAndroid() noexcept { /* implementation */ }\n" + " REACT_SYNC_METHOD(enableImagePrefetchingAndroid) static bool enableImagePrefetchingAndroid() noexcept { /* implementation */ }\n"); + REACT_SHOW_METHOD_SPEC_ERRORS( + 26, + "enableImmediateUpdateModeForContentOffsetChanges", + " REACT_SYNC_METHOD(enableImmediateUpdateModeForContentOffsetChanges) bool enableImmediateUpdateModeForContentOffsetChanges() noexcept { /* implementation */ }\n" + " REACT_SYNC_METHOD(enableImmediateUpdateModeForContentOffsetChanges) static bool enableImmediateUpdateModeForContentOffsetChanges() noexcept { /* implementation */ }\n"); + REACT_SHOW_METHOD_SPEC_ERRORS( + 27, "enableInteropViewManagerClassLookUpOptimizationIOS", " REACT_SYNC_METHOD(enableInteropViewManagerClassLookUpOptimizationIOS) bool enableInteropViewManagerClassLookUpOptimizationIOS() noexcept { /* implementation */ }\n" " REACT_SYNC_METHOD(enableInteropViewManagerClassLookUpOptimizationIOS) static bool enableInteropViewManagerClassLookUpOptimizationIOS() noexcept { /* implementation */ }\n"); REACT_SHOW_METHOD_SPEC_ERRORS( - 24, + 28, "enableLayoutAnimationsOnAndroid", " REACT_SYNC_METHOD(enableLayoutAnimationsOnAndroid) bool enableLayoutAnimationsOnAndroid() noexcept { /* implementation */ }\n" " REACT_SYNC_METHOD(enableLayoutAnimationsOnAndroid) static bool enableLayoutAnimationsOnAndroid() noexcept { /* implementation */ }\n"); REACT_SHOW_METHOD_SPEC_ERRORS( - 25, + 29, "enableLayoutAnimationsOnIOS", " REACT_SYNC_METHOD(enableLayoutAnimationsOnIOS) bool enableLayoutAnimationsOnIOS() noexcept { /* implementation */ }\n" " REACT_SYNC_METHOD(enableLayoutAnimationsOnIOS) static bool enableLayoutAnimationsOnIOS() noexcept { /* implementation */ }\n"); REACT_SHOW_METHOD_SPEC_ERRORS( - 26, + 30, "enableMainQueueCoordinatorOnIOS", " REACT_SYNC_METHOD(enableMainQueueCoordinatorOnIOS) bool enableMainQueueCoordinatorOnIOS() noexcept { /* implementation */ }\n" " REACT_SYNC_METHOD(enableMainQueueCoordinatorOnIOS) static bool enableMainQueueCoordinatorOnIOS() noexcept { /* implementation */ }\n"); REACT_SHOW_METHOD_SPEC_ERRORS( - 27, - "enableMainQueueModulesOnIOS", - " REACT_SYNC_METHOD(enableMainQueueModulesOnIOS) bool enableMainQueueModulesOnIOS() noexcept { /* implementation */ }\n" - " REACT_SYNC_METHOD(enableMainQueueModulesOnIOS) static bool enableMainQueueModulesOnIOS() noexcept { /* implementation */ }\n"); - REACT_SHOW_METHOD_SPEC_ERRORS( - 28, + 31, "enableModuleArgumentNSNullConversionIOS", " REACT_SYNC_METHOD(enableModuleArgumentNSNullConversionIOS) bool enableModuleArgumentNSNullConversionIOS() noexcept { /* implementation */ }\n" " REACT_SYNC_METHOD(enableModuleArgumentNSNullConversionIOS) static bool enableModuleArgumentNSNullConversionIOS() noexcept { /* implementation */ }\n"); REACT_SHOW_METHOD_SPEC_ERRORS( - 29, + 32, "enableNativeCSSParsing", " REACT_SYNC_METHOD(enableNativeCSSParsing) bool enableNativeCSSParsing() noexcept { /* implementation */ }\n" " REACT_SYNC_METHOD(enableNativeCSSParsing) static bool enableNativeCSSParsing() noexcept { /* implementation */ }\n"); REACT_SHOW_METHOD_SPEC_ERRORS( - 30, + 33, "enableNetworkEventReporting", " REACT_SYNC_METHOD(enableNetworkEventReporting) bool enableNetworkEventReporting() noexcept { /* implementation */ }\n" " REACT_SYNC_METHOD(enableNetworkEventReporting) static bool enableNetworkEventReporting() noexcept { /* implementation */ }\n"); REACT_SHOW_METHOD_SPEC_ERRORS( - 31, + 34, "enableNewBackgroundAndBorderDrawables", " REACT_SYNC_METHOD(enableNewBackgroundAndBorderDrawables) bool enableNewBackgroundAndBorderDrawables() noexcept { /* implementation */ }\n" " REACT_SYNC_METHOD(enableNewBackgroundAndBorderDrawables) static bool enableNewBackgroundAndBorderDrawables() noexcept { /* implementation */ }\n"); REACT_SHOW_METHOD_SPEC_ERRORS( - 32, + 35, "enablePreparedTextLayout", " REACT_SYNC_METHOD(enablePreparedTextLayout) bool enablePreparedTextLayout() noexcept { /* implementation */ }\n" " REACT_SYNC_METHOD(enablePreparedTextLayout) static bool enablePreparedTextLayout() noexcept { /* implementation */ }\n"); REACT_SHOW_METHOD_SPEC_ERRORS( - 33, + 36, "enablePropsUpdateReconciliationAndroid", " REACT_SYNC_METHOD(enablePropsUpdateReconciliationAndroid) bool enablePropsUpdateReconciliationAndroid() noexcept { /* implementation */ }\n" " REACT_SYNC_METHOD(enablePropsUpdateReconciliationAndroid) static bool enablePropsUpdateReconciliationAndroid() noexcept { /* implementation */ }\n"); REACT_SHOW_METHOD_SPEC_ERRORS( - 34, + 37, "enableResourceTimingAPI", " REACT_SYNC_METHOD(enableResourceTimingAPI) bool enableResourceTimingAPI() noexcept { /* implementation */ }\n" " REACT_SYNC_METHOD(enableResourceTimingAPI) static bool enableResourceTimingAPI() noexcept { /* implementation */ }\n"); REACT_SHOW_METHOD_SPEC_ERRORS( - 35, - "enableSynchronousStateUpdates", - " REACT_SYNC_METHOD(enableSynchronousStateUpdates) bool enableSynchronousStateUpdates() noexcept { /* implementation */ }\n" - " REACT_SYNC_METHOD(enableSynchronousStateUpdates) static bool enableSynchronousStateUpdates() noexcept { /* implementation */ }\n"); - REACT_SHOW_METHOD_SPEC_ERRORS( - 36, + 38, "enableViewCulling", " REACT_SYNC_METHOD(enableViewCulling) bool enableViewCulling() noexcept { /* implementation */ }\n" " REACT_SYNC_METHOD(enableViewCulling) static bool enableViewCulling() noexcept { /* implementation */ }\n"); REACT_SHOW_METHOD_SPEC_ERRORS( - 37, + 39, "enableViewRecycling", " REACT_SYNC_METHOD(enableViewRecycling) bool enableViewRecycling() noexcept { /* implementation */ }\n" " REACT_SYNC_METHOD(enableViewRecycling) static bool enableViewRecycling() noexcept { /* implementation */ }\n"); REACT_SHOW_METHOD_SPEC_ERRORS( - 38, + 40, "enableViewRecyclingForText", " REACT_SYNC_METHOD(enableViewRecyclingForText) bool enableViewRecyclingForText() noexcept { /* implementation */ }\n" " REACT_SYNC_METHOD(enableViewRecyclingForText) static bool enableViewRecyclingForText() noexcept { /* implementation */ }\n"); REACT_SHOW_METHOD_SPEC_ERRORS( - 39, + 41, "enableViewRecyclingForView", " REACT_SYNC_METHOD(enableViewRecyclingForView) bool enableViewRecyclingForView() noexcept { /* implementation */ }\n" " REACT_SYNC_METHOD(enableViewRecyclingForView) static bool enableViewRecyclingForView() noexcept { /* implementation */ }\n"); REACT_SHOW_METHOD_SPEC_ERRORS( - 40, + 42, "enableVirtualViewDebugFeatures", " REACT_SYNC_METHOD(enableVirtualViewDebugFeatures) bool enableVirtualViewDebugFeatures() noexcept { /* implementation */ }\n" " REACT_SYNC_METHOD(enableVirtualViewDebugFeatures) static bool enableVirtualViewDebugFeatures() noexcept { /* implementation */ }\n"); REACT_SHOW_METHOD_SPEC_ERRORS( - 41, + 43, "enableVirtualViewRenderState", " REACT_SYNC_METHOD(enableVirtualViewRenderState) bool enableVirtualViewRenderState() noexcept { /* implementation */ }\n" " REACT_SYNC_METHOD(enableVirtualViewRenderState) static bool enableVirtualViewRenderState() noexcept { /* implementation */ }\n"); REACT_SHOW_METHOD_SPEC_ERRORS( - 42, + 44, "enableVirtualViewWindowFocusDetection", " REACT_SYNC_METHOD(enableVirtualViewWindowFocusDetection) bool enableVirtualViewWindowFocusDetection() noexcept { /* implementation */ }\n" " REACT_SYNC_METHOD(enableVirtualViewWindowFocusDetection) static bool enableVirtualViewWindowFocusDetection() noexcept { /* implementation */ }\n"); REACT_SHOW_METHOD_SPEC_ERRORS( - 43, + 45, "fixMappingOfEventPrioritiesBetweenFabricAndReact", " REACT_SYNC_METHOD(fixMappingOfEventPrioritiesBetweenFabricAndReact) bool fixMappingOfEventPrioritiesBetweenFabricAndReact() noexcept { /* implementation */ }\n" " REACT_SYNC_METHOD(fixMappingOfEventPrioritiesBetweenFabricAndReact) static bool fixMappingOfEventPrioritiesBetweenFabricAndReact() noexcept { /* implementation */ }\n"); REACT_SHOW_METHOD_SPEC_ERRORS( - 44, + 46, "fuseboxEnabledRelease", " REACT_SYNC_METHOD(fuseboxEnabledRelease) bool fuseboxEnabledRelease() noexcept { /* implementation */ }\n" " REACT_SYNC_METHOD(fuseboxEnabledRelease) static bool fuseboxEnabledRelease() noexcept { /* implementation */ }\n"); REACT_SHOW_METHOD_SPEC_ERRORS( - 45, + 47, "fuseboxNetworkInspectionEnabled", " REACT_SYNC_METHOD(fuseboxNetworkInspectionEnabled) bool fuseboxNetworkInspectionEnabled() noexcept { /* implementation */ }\n" " REACT_SYNC_METHOD(fuseboxNetworkInspectionEnabled) static bool fuseboxNetworkInspectionEnabled() noexcept { /* implementation */ }\n"); REACT_SHOW_METHOD_SPEC_ERRORS( - 46, + 48, "hideOffscreenVirtualViewsOnIOS", " REACT_SYNC_METHOD(hideOffscreenVirtualViewsOnIOS) bool hideOffscreenVirtualViewsOnIOS() noexcept { /* implementation */ }\n" " REACT_SYNC_METHOD(hideOffscreenVirtualViewsOnIOS) static bool hideOffscreenVirtualViewsOnIOS() noexcept { /* implementation */ }\n"); REACT_SHOW_METHOD_SPEC_ERRORS( - 47, + 49, + "perfMonitorV2Enabled", + " REACT_SYNC_METHOD(perfMonitorV2Enabled) bool perfMonitorV2Enabled() noexcept { /* implementation */ }\n" + " REACT_SYNC_METHOD(perfMonitorV2Enabled) static bool perfMonitorV2Enabled() noexcept { /* implementation */ }\n"); + REACT_SHOW_METHOD_SPEC_ERRORS( + 50, "preparedTextCacheSize", " REACT_SYNC_METHOD(preparedTextCacheSize) double preparedTextCacheSize() noexcept { /* implementation */ }\n" " REACT_SYNC_METHOD(preparedTextCacheSize) static double preparedTextCacheSize() noexcept { /* implementation */ }\n"); REACT_SHOW_METHOD_SPEC_ERRORS( - 48, + 51, + "preventShadowTreeCommitExhaustion", + " REACT_SYNC_METHOD(preventShadowTreeCommitExhaustion) bool preventShadowTreeCommitExhaustion() noexcept { /* implementation */ }\n" + " REACT_SYNC_METHOD(preventShadowTreeCommitExhaustion) static bool preventShadowTreeCommitExhaustion() noexcept { /* implementation */ }\n"); + REACT_SHOW_METHOD_SPEC_ERRORS( + 52, + "releaseImageDataWhenConsumed", + " REACT_SYNC_METHOD(releaseImageDataWhenConsumed) bool releaseImageDataWhenConsumed() noexcept { /* implementation */ }\n" + " REACT_SYNC_METHOD(releaseImageDataWhenConsumed) static bool releaseImageDataWhenConsumed() noexcept { /* implementation */ }\n"); + REACT_SHOW_METHOD_SPEC_ERRORS( + 53, + "shouldPressibilityUseW3CPointerEventsForHover", + " REACT_SYNC_METHOD(shouldPressibilityUseW3CPointerEventsForHover) bool shouldPressibilityUseW3CPointerEventsForHover() noexcept { /* implementation */ }\n" + " REACT_SYNC_METHOD(shouldPressibilityUseW3CPointerEventsForHover) static bool shouldPressibilityUseW3CPointerEventsForHover() noexcept { /* implementation */ }\n"); + REACT_SHOW_METHOD_SPEC_ERRORS( + 54, + "skipActivityIdentityAssertionOnHostPause", + " REACT_SYNC_METHOD(skipActivityIdentityAssertionOnHostPause) bool skipActivityIdentityAssertionOnHostPause() noexcept { /* implementation */ }\n" + " REACT_SYNC_METHOD(skipActivityIdentityAssertionOnHostPause) static bool skipActivityIdentityAssertionOnHostPause() noexcept { /* implementation */ }\n"); + REACT_SHOW_METHOD_SPEC_ERRORS( + 55, + "sweepActiveTouchOnChildNativeGesturesAndroid", + " REACT_SYNC_METHOD(sweepActiveTouchOnChildNativeGesturesAndroid) bool sweepActiveTouchOnChildNativeGesturesAndroid() noexcept { /* implementation */ }\n" + " REACT_SYNC_METHOD(sweepActiveTouchOnChildNativeGesturesAndroid) static bool sweepActiveTouchOnChildNativeGesturesAndroid() noexcept { /* implementation */ }\n"); + REACT_SHOW_METHOD_SPEC_ERRORS( + 56, "traceTurboModulePromiseRejectionsOnAndroid", " REACT_SYNC_METHOD(traceTurboModulePromiseRejectionsOnAndroid) bool traceTurboModulePromiseRejectionsOnAndroid() noexcept { /* implementation */ }\n" " REACT_SYNC_METHOD(traceTurboModulePromiseRejectionsOnAndroid) static bool traceTurboModulePromiseRejectionsOnAndroid() noexcept { /* implementation */ }\n"); REACT_SHOW_METHOD_SPEC_ERRORS( - 49, + 57, "updateRuntimeShadowNodeReferencesOnCommit", " REACT_SYNC_METHOD(updateRuntimeShadowNodeReferencesOnCommit) bool updateRuntimeShadowNodeReferencesOnCommit() noexcept { /* implementation */ }\n" " REACT_SYNC_METHOD(updateRuntimeShadowNodeReferencesOnCommit) static bool updateRuntimeShadowNodeReferencesOnCommit() noexcept { /* implementation */ }\n"); REACT_SHOW_METHOD_SPEC_ERRORS( - 50, + 58, "useAlwaysAvailableJSErrorHandling", " REACT_SYNC_METHOD(useAlwaysAvailableJSErrorHandling) bool useAlwaysAvailableJSErrorHandling() noexcept { /* implementation */ }\n" " REACT_SYNC_METHOD(useAlwaysAvailableJSErrorHandling) static bool useAlwaysAvailableJSErrorHandling() noexcept { /* implementation */ }\n"); REACT_SHOW_METHOD_SPEC_ERRORS( - 51, + 59, "useFabricInterop", " REACT_SYNC_METHOD(useFabricInterop) bool useFabricInterop() noexcept { /* implementation */ }\n" " REACT_SYNC_METHOD(useFabricInterop) static bool useFabricInterop() noexcept { /* implementation */ }\n"); REACT_SHOW_METHOD_SPEC_ERRORS( - 52, + 60, + "useNativeEqualsInNativeReadableArrayAndroid", + " REACT_SYNC_METHOD(useNativeEqualsInNativeReadableArrayAndroid) bool useNativeEqualsInNativeReadableArrayAndroid() noexcept { /* implementation */ }\n" + " REACT_SYNC_METHOD(useNativeEqualsInNativeReadableArrayAndroid) static bool useNativeEqualsInNativeReadableArrayAndroid() noexcept { /* implementation */ }\n"); + REACT_SHOW_METHOD_SPEC_ERRORS( + 61, + "useNativeTransformHelperAndroid", + " REACT_SYNC_METHOD(useNativeTransformHelperAndroid) bool useNativeTransformHelperAndroid() noexcept { /* implementation */ }\n" + " REACT_SYNC_METHOD(useNativeTransformHelperAndroid) static bool useNativeTransformHelperAndroid() noexcept { /* implementation */ }\n"); + REACT_SHOW_METHOD_SPEC_ERRORS( + 62, "useNativeViewConfigsInBridgelessMode", " REACT_SYNC_METHOD(useNativeViewConfigsInBridgelessMode) bool useNativeViewConfigsInBridgelessMode() noexcept { /* implementation */ }\n" " REACT_SYNC_METHOD(useNativeViewConfigsInBridgelessMode) static bool useNativeViewConfigsInBridgelessMode() noexcept { /* implementation */ }\n"); REACT_SHOW_METHOD_SPEC_ERRORS( - 53, + 63, "useOptimizedEventBatchingOnAndroid", " REACT_SYNC_METHOD(useOptimizedEventBatchingOnAndroid) bool useOptimizedEventBatchingOnAndroid() noexcept { /* implementation */ }\n" " REACT_SYNC_METHOD(useOptimizedEventBatchingOnAndroid) static bool useOptimizedEventBatchingOnAndroid() noexcept { /* implementation */ }\n"); REACT_SHOW_METHOD_SPEC_ERRORS( - 54, + 64, "useRawPropsJsiValue", " REACT_SYNC_METHOD(useRawPropsJsiValue) bool useRawPropsJsiValue() noexcept { /* implementation */ }\n" " REACT_SYNC_METHOD(useRawPropsJsiValue) static bool useRawPropsJsiValue() noexcept { /* implementation */ }\n"); REACT_SHOW_METHOD_SPEC_ERRORS( - 55, + 65, "useShadowNodeStateOnClone", " REACT_SYNC_METHOD(useShadowNodeStateOnClone) bool useShadowNodeStateOnClone() noexcept { /* implementation */ }\n" " REACT_SYNC_METHOD(useShadowNodeStateOnClone) static bool useShadowNodeStateOnClone() noexcept { /* implementation */ }\n"); REACT_SHOW_METHOD_SPEC_ERRORS( - 56, + 66, "useTurboModuleInterop", " REACT_SYNC_METHOD(useTurboModuleInterop) bool useTurboModuleInterop() noexcept { /* implementation */ }\n" " REACT_SYNC_METHOD(useTurboModuleInterop) static bool useTurboModuleInterop() noexcept { /* implementation */ }\n"); REACT_SHOW_METHOD_SPEC_ERRORS( - 57, + 67, "useTurboModules", " REACT_SYNC_METHOD(useTurboModules) bool useTurboModules() noexcept { /* implementation */ }\n" " REACT_SYNC_METHOD(useTurboModules) static bool useTurboModules() noexcept { /* implementation */ }\n"); REACT_SHOW_METHOD_SPEC_ERRORS( - 58, + 68, "virtualViewPrerenderRatio", " REACT_SYNC_METHOD(virtualViewPrerenderRatio) double virtualViewPrerenderRatio() noexcept { /* implementation */ }\n" " REACT_SYNC_METHOD(virtualViewPrerenderRatio) static double virtualViewPrerenderRatio() noexcept { /* implementation */ }\n"); diff --git a/vnext/codegen/react/components/rnwcore/EventEmitters.cpp b/vnext/codegen/react/components/rnwcore/EventEmitters.cpp index cb8c8986115..413c7604eec 100644 --- a/vnext/codegen/react/components/rnwcore/EventEmitters.cpp +++ b/vnext/codegen/react/components/rnwcore/EventEmitters.cpp @@ -13,6 +13,31 @@ namespace facebook::react { +void VirtualViewExperimentalEventEmitter::onModeChange(OnModeChange event) const { + dispatchEvent("modeChange", [event=std::move(event)](jsi::Runtime &runtime) { + auto payload = jsi::Object(runtime); + payload.setProperty(runtime, "mode", event.mode); +{ + auto targetRect = jsi::Object(runtime); + targetRect.setProperty(runtime, "x", event.targetRect.x); + targetRect.setProperty(runtime, "y", event.targetRect.y); + targetRect.setProperty(runtime, "width", event.targetRect.width); + targetRect.setProperty(runtime, "height", event.targetRect.height); + payload.setProperty(runtime, "targetRect", targetRect); +} +{ + auto thresholdRect = jsi::Object(runtime); + thresholdRect.setProperty(runtime, "x", event.thresholdRect.x); + thresholdRect.setProperty(runtime, "y", event.thresholdRect.y); + thresholdRect.setProperty(runtime, "width", event.thresholdRect.width); + thresholdRect.setProperty(runtime, "height", event.thresholdRect.height); + payload.setProperty(runtime, "thresholdRect", thresholdRect); +} + return payload; + }); +} + + void VirtualViewEventEmitter::onModeChange(OnModeChange event) const { dispatchEvent("modeChange", [event=std::move(event)](jsi::Runtime &runtime) { auto payload = jsi::Object(runtime); diff --git a/vnext/codegen/react/components/rnwcore/EventEmitters.h b/vnext/codegen/react/components/rnwcore/EventEmitters.h index eeff0c9a2a9..b6abdefc88a 100644 --- a/vnext/codegen/react/components/rnwcore/EventEmitters.h +++ b/vnext/codegen/react/components/rnwcore/EventEmitters.h @@ -13,6 +13,31 @@ namespace facebook::react { +class VirtualViewExperimentalEventEmitter : public ViewEventEmitter { + public: + using ViewEventEmitter::ViewEventEmitter; + + struct OnModeChangeTargetRect { + double x; + double y; + double width; + double height; + }; + + struct OnModeChangeThresholdRect { + double x; + double y; + double width; + double height; + }; + + struct OnModeChange { + int mode; + OnModeChangeTargetRect targetRect; + OnModeChangeThresholdRect thresholdRect; + }; + void onModeChange(OnModeChange value) const; +}; class VirtualViewEventEmitter : public ViewEventEmitter { public: using ViewEventEmitter::ViewEventEmitter; diff --git a/vnext/codegen/react/components/rnwcore/Props.cpp b/vnext/codegen/react/components/rnwcore/Props.cpp index b5f355391cb..17962647e33 100644 --- a/vnext/codegen/react/components/rnwcore/Props.cpp +++ b/vnext/codegen/react/components/rnwcore/Props.cpp @@ -14,12 +14,47 @@ namespace facebook::react { +VirtualViewExperimentalProps::VirtualViewExperimentalProps( + const PropsParserContext &context, + const VirtualViewExperimentalProps &sourceProps, + const RawProps &rawProps): ViewProps(context, sourceProps, rawProps), + + initialHidden(convertRawProp(context, rawProps, "initialHidden", sourceProps.initialHidden, {false})), + renderState(convertRawProp(context, rawProps, "renderState", sourceProps.renderState, {0})) {} + +#ifdef RN_SERIALIZABLE_STATE +ComponentName VirtualViewExperimentalProps::getDiffPropsImplementationTarget() const { + return "VirtualViewExperimental"; +} + +folly::dynamic VirtualViewExperimentalProps::getDiffProps( + const Props* prevProps) const { + static const auto defaultProps = VirtualViewExperimentalProps(); + const VirtualViewExperimentalProps* oldProps = prevProps == nullptr + ? &defaultProps + : static_cast(prevProps); + if (this == oldProps) { + return folly::dynamic::object(); + } + folly::dynamic result = HostPlatformViewProps::getDiffProps(prevProps); + + if (initialHidden != oldProps->initialHidden) { + result["initialHidden"] = initialHidden; + } + + if (renderState != oldProps->renderState) { + result["renderState"] = renderState; + } + return result; +} +#endif VirtualViewProps::VirtualViewProps( const PropsParserContext &context, const VirtualViewProps &sourceProps, const RawProps &rawProps): ViewProps(context, sourceProps, rawProps), initialHidden(convertRawProp(context, rawProps, "initialHidden", sourceProps.initialHidden, {false})), + removeClippedSubviews(convertRawProp(context, rawProps, "removeClippedSubviews", sourceProps.removeClippedSubviews, {false})), renderState(convertRawProp(context, rawProps, "renderState", sourceProps.renderState, {0})) {} #ifdef RN_SERIALIZABLE_STATE @@ -42,6 +77,10 @@ folly::dynamic VirtualViewProps::getDiffProps( result["initialHidden"] = initialHidden; } + if (removeClippedSubviews != oldProps->removeClippedSubviews) { + result["removeClippedSubviews"] = removeClippedSubviews; + } + if (renderState != oldProps->renderState) { result["renderState"] = renderState; } @@ -335,7 +374,7 @@ AndroidProgressBarProps::AndroidProgressBarProps( progress(convertRawProp(context, rawProps, "progress", sourceProps.progress, {0.0})), animating(convertRawProp(context, rawProps, "animating", sourceProps.animating, {true})), color(convertRawProp(context, rawProps, "color", sourceProps.color, {})), - testID(convertRawProp(context, rawProps, "testID", sourceProps.testID, {""})) {} + testID(convertRawProp(context, rawProps, "testID", sourceProps.testID, {std::string{""}})) {} #ifdef RN_SERIALIZABLE_STATE ComponentName AndroidProgressBarProps::getDiffPropsImplementationTarget() const { @@ -640,7 +679,7 @@ UnimplementedNativeViewProps::UnimplementedNativeViewProps( const UnimplementedNativeViewProps &sourceProps, const RawProps &rawProps): ViewProps(context, sourceProps, rawProps), - name(convertRawProp(context, rawProps, "name", sourceProps.name, {""})) {} + name(convertRawProp(context, rawProps, "name", sourceProps.name, {std::string{""}})) {} #ifdef RN_SERIALIZABLE_STATE ComponentName UnimplementedNativeViewProps::getDiffPropsImplementationTarget() const { diff --git a/vnext/codegen/react/components/rnwcore/Props.h b/vnext/codegen/react/components/rnwcore/Props.h index 726ded89f25..63fab93e2bd 100644 --- a/vnext/codegen/react/components/rnwcore/Props.h +++ b/vnext/codegen/react/components/rnwcore/Props.h @@ -12,11 +12,31 @@ #include #include #include +#include #include #include namespace facebook::react { +class VirtualViewExperimentalProps final : public ViewProps { + public: + VirtualViewExperimentalProps() = default; + VirtualViewExperimentalProps(const PropsParserContext& context, const VirtualViewExperimentalProps &sourceProps, const RawProps &rawProps); + +#pragma mark - Props + + bool initialHidden{false}; + int renderState{0}; + + #ifdef RN_SERIALIZABLE_STATE + ComponentName getDiffPropsImplementationTarget() const override; + + folly::dynamic getDiffProps(const Props* prevProps) const override; + #endif + + +}; + class VirtualViewProps final : public ViewProps { public: VirtualViewProps() = default; @@ -25,6 +45,7 @@ class VirtualViewProps final : public ViewProps { #pragma mark - Props bool initialHidden{false}; + bool removeClippedSubviews{false}; int renderState{0}; #ifdef RN_SERIALIZABLE_STATE @@ -32,6 +53,8 @@ class VirtualViewProps final : public ViewProps { folly::dynamic getDiffProps(const Props* prevProps) const override; #endif + + }; enum class ActivityIndicatorViewSize { Small, Large }; @@ -73,6 +96,8 @@ class ActivityIndicatorViewProps final : public ViewProps { folly::dynamic getDiffProps(const Props* prevProps) const override; #endif + + }; enum class AndroidDrawerLayoutKeyboardDismissMode { None, OnDrag }; @@ -160,6 +185,8 @@ class AndroidDrawerLayoutProps final : public ViewProps { folly::dynamic getDiffProps(const Props* prevProps) const override; #endif + + }; class AndroidHorizontalScrollContentViewProps final : public ViewProps { @@ -176,6 +203,8 @@ class AndroidHorizontalScrollContentViewProps final : public ViewProps { folly::dynamic getDiffProps(const Props* prevProps) const override; #endif + + }; enum class AndroidSwipeRefreshLayoutSize { Default, Large }; @@ -219,6 +248,8 @@ class AndroidSwipeRefreshLayoutProps final : public ViewProps { folly::dynamic getDiffProps(const Props* prevProps) const override; #endif + + }; class AndroidSwitchProps final : public ViewProps { @@ -243,6 +274,8 @@ class AndroidSwitchProps final : public ViewProps { folly::dynamic getDiffProps(const Props* prevProps) const override; #endif + + }; class DebuggingOverlayProps final : public ViewProps { @@ -259,6 +292,8 @@ class DebuggingOverlayProps final : public ViewProps { folly::dynamic getDiffProps(const Props* prevProps) const override; #endif + + }; class AndroidProgressBarProps final : public ViewProps { @@ -274,13 +309,15 @@ class AndroidProgressBarProps final : public ViewProps { double progress{0.0}; bool animating{true}; SharedColor color{}; - std::string testID{""}; + std::string testID{std::string{""}}; #ifdef RN_SERIALIZABLE_STATE ComponentName getDiffPropsImplementationTarget() const override; folly::dynamic getDiffProps(const Props* prevProps) const override; #endif + + }; class PullToRefreshViewProps final : public ViewProps { @@ -301,6 +338,8 @@ class PullToRefreshViewProps final : public ViewProps { folly::dynamic getDiffProps(const Props* prevProps) const override; #endif + + }; class InputAccessoryProps final : public ViewProps { @@ -317,6 +356,8 @@ class InputAccessoryProps final : public ViewProps { folly::dynamic getDiffProps(const Props* prevProps) const override; #endif + + }; enum class ModalHostViewAnimationType { None, Slide, Fade }; @@ -476,6 +517,8 @@ class ModalHostViewProps final : public ViewProps { folly::dynamic getDiffProps(const Props* prevProps) const override; #endif + + }; class SafeAreaViewProps final : public ViewProps { @@ -492,6 +535,8 @@ class SafeAreaViewProps final : public ViewProps { folly::dynamic getDiffProps(const Props* prevProps) const override; #endif + + }; class SwitchProps final : public ViewProps { @@ -515,6 +560,8 @@ class SwitchProps final : public ViewProps { folly::dynamic getDiffProps(const Props* prevProps) const override; #endif + + }; class UnimplementedNativeViewProps final : public ViewProps { @@ -524,13 +571,15 @@ class UnimplementedNativeViewProps final : public ViewProps { #pragma mark - Props - std::string name{""}; + std::string name{std::string{""}}; #ifdef RN_SERIALIZABLE_STATE ComponentName getDiffPropsImplementationTarget() const override; folly::dynamic getDiffProps(const Props* prevProps) const override; #endif + + }; } // namespace facebook::react diff --git a/vnext/codegen/react/components/rnwcore/VirtualView.g.h b/vnext/codegen/react/components/rnwcore/VirtualView.g.h index d0c7364971c..b95abfa99bd 100644 --- a/vnext/codegen/react/components/rnwcore/VirtualView.g.h +++ b/vnext/codegen/react/components/rnwcore/VirtualView.g.h @@ -26,6 +26,7 @@ struct VirtualViewProps : winrt::implements(); initialHidden = cloneFromProps->initialHidden; + removeClippedSubviews = cloneFromProps->removeClippedSubviews; renderState = cloneFromProps->renderState; } } @@ -37,6 +38,9 @@ struct VirtualViewProps : winrt::implements initialHidden{}; + REACT_FIELD(removeClippedSubviews) + std::optional removeClippedSubviews{}; + REACT_FIELD(renderState) int32_t renderState{}; diff --git a/vnext/codegen/react/components/rnwcore/VirtualViewExperimental.g.h b/vnext/codegen/react/components/rnwcore/VirtualViewExperimental.g.h new file mode 100644 index 00000000000..68e0c7fb24a --- /dev/null +++ b/vnext/codegen/react/components/rnwcore/VirtualViewExperimental.g.h @@ -0,0 +1,226 @@ + +/* + * This file is auto-generated from VirtualViewExperimentalNativeComponent spec file in flow / TypeScript. + */ +// clang-format off +#pragma once + +#include + +#ifdef RNW_NEW_ARCH +#include + +#include +#include +#endif // #ifdef RNW_NEW_ARCH + +#ifdef RNW_NEW_ARCH + +namespace Microsoft::ReactNativeSpecs { + +REACT_STRUCT(VirtualViewExperimentalProps) +struct VirtualViewExperimentalProps : winrt::implements { + VirtualViewExperimentalProps(winrt::Microsoft::ReactNative::ViewProps props, const winrt::Microsoft::ReactNative::IComponentProps& cloneFrom) + : ViewProps(props) + { + if (cloneFrom) { + auto cloneFromProps = cloneFrom.as(); + initialHidden = cloneFromProps->initialHidden; + renderState = cloneFromProps->renderState; + } + } + + void SetProp(uint32_t hash, winrt::hstring propName, winrt::Microsoft::ReactNative::IJSValueReader value) noexcept { + winrt::Microsoft::ReactNative::ReadProp(hash, propName, value, *this); + } + + REACT_FIELD(initialHidden) + std::optional initialHidden{}; + + REACT_FIELD(renderState) + int32_t renderState{}; + + const winrt::Microsoft::ReactNative::ViewProps ViewProps; +}; + +REACT_STRUCT(VirtualViewExperimental_OnModeChange) +struct VirtualViewExperimental_OnModeChange { + REACT_FIELD(mode) + int32_t mode{}; + + REACT_FIELD(targetRect) + VirtualViewExperimentalSpec_onModeChange2 targetRect; + + REACT_FIELD(thresholdRect) + VirtualViewExperimentalSpec_onModeChange3 thresholdRect; +}; + +struct VirtualViewExperimentalEventEmitter { + VirtualViewExperimentalEventEmitter(const winrt::Microsoft::ReactNative::EventEmitter &eventEmitter) + : m_eventEmitter(eventEmitter) {} + + using OnModeChange = VirtualViewExperimental_OnModeChange; + using OnModeChange2 = VirtualViewExperimental_OnModeChange2; + using OnModeChange3 = VirtualViewExperimental_OnModeChange3; + + void onModeChange(OnModeChange &value) const { + m_eventEmitter.DispatchEvent(L"modeChange", [value](const winrt::Microsoft::ReactNative::IJSValueWriter writer) { + winrt::Microsoft::ReactNative::WriteValue(writer, value); + }); + } + + private: + winrt::Microsoft::ReactNative::EventEmitter m_eventEmitter{nullptr}; +}; + +template +struct BaseVirtualViewExperimental { + + virtual void UpdateProps( + const winrt::Microsoft::ReactNative::ComponentView &/*view*/, + const winrt::com_ptr &newProps, + const winrt::com_ptr &/*oldProps*/) noexcept { + m_props = newProps; + } + + // UpdateLayoutMetrics will only be called if this method is overridden + virtual void UpdateLayoutMetrics( + const winrt::Microsoft::ReactNative::ComponentView &/*view*/, + const winrt::Microsoft::ReactNative::LayoutMetrics &/*newLayoutMetrics*/, + const winrt::Microsoft::ReactNative::LayoutMetrics &/*oldLayoutMetrics*/) noexcept { + } + + // UpdateState will only be called if this method is overridden + virtual void UpdateState( + const winrt::Microsoft::ReactNative::ComponentView &/*view*/, + const winrt::Microsoft::ReactNative::IComponentState &/*newState*/) noexcept { + } + + virtual void UpdateEventEmitter(const std::shared_ptr &eventEmitter) noexcept { + m_eventEmitter = eventEmitter; + } + + // MountChildComponentView will only be called if this method is overridden + virtual void MountChildComponentView(const winrt::Microsoft::ReactNative::ComponentView &/*view*/, + const winrt::Microsoft::ReactNative::MountChildComponentViewArgs &/*args*/) noexcept { + } + + // UnmountChildComponentView will only be called if this method is overridden + virtual void UnmountChildComponentView(const winrt::Microsoft::ReactNative::ComponentView &/*view*/, + const winrt::Microsoft::ReactNative::UnmountChildComponentViewArgs &/*args*/) noexcept { + } + + // Initialize will only be called if this method is overridden + virtual void Initialize(const winrt::Microsoft::ReactNative::ComponentView &/*view*/) noexcept { + } + + // CreateVisual will only be called if this method is overridden + virtual winrt::Microsoft::UI::Composition::Visual CreateVisual(const winrt::Microsoft::ReactNative::ComponentView &view) noexcept { + return view.as().Compositor().CreateSpriteVisual(); + } + + // FinalizeUpdate will only be called if this method is overridden + virtual void FinalizeUpdate(const winrt::Microsoft::ReactNative::ComponentView &/*view*/, + winrt::Microsoft::ReactNative::ComponentViewUpdateMask /*mask*/) noexcept { + } + + + + const std::shared_ptr& EventEmitter() const { return m_eventEmitter; } + const winrt::com_ptr& Props() const { return m_props; } + +private: + winrt::com_ptr m_props; + std::shared_ptr m_eventEmitter; +}; + +template +void RegisterVirtualViewExperimentalNativeComponent( + winrt::Microsoft::ReactNative::IReactPackageBuilder const &packageBuilder, + std::function builderCallback) noexcept { + packageBuilder.as().AddViewComponent( + L"VirtualViewExperimental", [builderCallback](winrt::Microsoft::ReactNative::IReactViewComponentBuilder const &builder) noexcept { + auto compBuilder = builder.as(); + + builder.SetCreateProps([](winrt::Microsoft::ReactNative::ViewProps props, + const winrt::Microsoft::ReactNative::IComponentProps& cloneFrom) noexcept { + return winrt::make(props, cloneFrom); + }); + + builder.SetUpdatePropsHandler([](const winrt::Microsoft::ReactNative::ComponentView &view, + const winrt::Microsoft::ReactNative::IComponentProps &newProps, + const winrt::Microsoft::ReactNative::IComponentProps &oldProps) noexcept { + auto userData = view.UserData().as(); + userData->UpdateProps(view, newProps ? newProps.as() : nullptr, oldProps ? oldProps.as() : nullptr); + }); + + compBuilder.SetUpdateLayoutMetricsHandler([](const winrt::Microsoft::ReactNative::ComponentView &view, + const winrt::Microsoft::ReactNative::LayoutMetrics &newLayoutMetrics, + const winrt::Microsoft::ReactNative::LayoutMetrics &oldLayoutMetrics) noexcept { + auto userData = view.UserData().as(); + userData->UpdateLayoutMetrics(view, newLayoutMetrics, oldLayoutMetrics); + }); + + builder.SetUpdateEventEmitterHandler([](const winrt::Microsoft::ReactNative::ComponentView &view, + const winrt::Microsoft::ReactNative::EventEmitter &eventEmitter) noexcept { + auto userData = view.UserData().as(); + userData->UpdateEventEmitter(std::make_shared(eventEmitter)); + }); + + if CONSTEXPR_SUPPORTED_ON_VIRTUAL_FN_ADDRESS (&TUserData::FinalizeUpdate != &BaseVirtualViewExperimental::FinalizeUpdate) { + builder.SetFinalizeUpdateHandler([](const winrt::Microsoft::ReactNative::ComponentView &view, + winrt::Microsoft::ReactNative::ComponentViewUpdateMask mask) noexcept { + auto userData = view.UserData().as(); + userData->FinalizeUpdate(view, mask); + }); + } + + if CONSTEXPR_SUPPORTED_ON_VIRTUAL_FN_ADDRESS (&TUserData::UpdateState != &BaseVirtualViewExperimental::UpdateState) { + builder.SetUpdateStateHandler([](const winrt::Microsoft::ReactNative::ComponentView &view, + const winrt::Microsoft::ReactNative::IComponentState &newState) noexcept { + auto userData = view.UserData().as(); + userData->UpdateState(view, newState); + }); + } + + if CONSTEXPR_SUPPORTED_ON_VIRTUAL_FN_ADDRESS (&TUserData::MountChildComponentView != &BaseVirtualViewExperimental::MountChildComponentView) { + builder.SetMountChildComponentViewHandler([](const winrt::Microsoft::ReactNative::ComponentView &view, + const winrt::Microsoft::ReactNative::MountChildComponentViewArgs &args) noexcept { + auto userData = view.UserData().as(); + return userData->MountChildComponentView(view, args); + }); + } + + if CONSTEXPR_SUPPORTED_ON_VIRTUAL_FN_ADDRESS (&TUserData::UnmountChildComponentView != &BaseVirtualViewExperimental::UnmountChildComponentView) { + builder.SetUnmountChildComponentViewHandler([](const winrt::Microsoft::ReactNative::ComponentView &view, + const winrt::Microsoft::ReactNative::UnmountChildComponentViewArgs &args) noexcept { + auto userData = view.UserData().as(); + return userData->UnmountChildComponentView(view, args); + }); + } + + compBuilder.SetViewComponentViewInitializer([](const winrt::Microsoft::ReactNative::ComponentView &view) noexcept { + auto userData = winrt::make_self(); + if CONSTEXPR_SUPPORTED_ON_VIRTUAL_FN_ADDRESS (&TUserData::Initialize != &BaseVirtualViewExperimental::Initialize) { + userData->Initialize(view); + } + view.UserData(*userData); + }); + + if CONSTEXPR_SUPPORTED_ON_VIRTUAL_FN_ADDRESS (&TUserData::CreateVisual != &BaseVirtualViewExperimental::CreateVisual) { + compBuilder.SetCreateVisualHandler([](const winrt::Microsoft::ReactNative::ComponentView &view) noexcept { + auto userData = view.UserData().as(); + return userData->CreateVisual(view); + }); + } + + // Allow app to further customize the builder + if (builderCallback) { + builderCallback(compBuilder); + } + }); +} + +} // namespace Microsoft::ReactNativeSpecs + +#endif // #ifdef RNW_NEW_ARCH diff --git a/vnext/codegen/rnwcoreJSI-generated.cpp b/vnext/codegen/rnwcoreJSI-generated.cpp index cddc9cff31f..7018a15ae61 100644 --- a/vnext/codegen/rnwcoreJSI-generated.cpp +++ b/vnext/codegen/rnwcoreJSI-generated.cpp @@ -21,8 +21,8 @@ static jsi::Value __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_commonT rt ); } -static jsi::Value __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_animatedShouldSignalBatch(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) { - return static_cast(&turboModule)->animatedShouldSignalBatch( +static jsi::Value __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_cdpInteractionMetricsEnabled(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) { + return static_cast(&turboModule)->cdpInteractionMetricsEnabled( rt ); } @@ -36,8 +36,8 @@ static jsi::Value __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_cxxNati rt ); } -static jsi::Value __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_disableMainQueueSyncDispatchIOS(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) { - return static_cast(&turboModule)->disableMainQueueSyncDispatchIOS( +static jsi::Value __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_disableFabricCommitInCXXAnimated(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) { + return static_cast(&turboModule)->disableFabricCommitInCXXAnimated( rt ); } @@ -46,6 +46,11 @@ static jsi::Value __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_disable rt ); } +static jsi::Value __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_disableOldAndroidAttachmentMetricsWorkarounds(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) { + return static_cast(&turboModule)->disableOldAndroidAttachmentMetricsWorkarounds( + rt + ); +} static jsi::Value __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_disableTextLayoutManagerCacheAndroid(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) { return static_cast(&turboModule)->disableTextLayoutManagerCacheAndroid( rt @@ -91,6 +96,11 @@ static jsi::Value __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_enableD rt ); } +static jsi::Value __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_enableEagerMainQueueModulesOnIOS(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) { + return static_cast(&turboModule)->enableEagerMainQueueModulesOnIOS( + rt + ); +} static jsi::Value __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_enableEagerRootViewAttachment(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) { return static_cast(&turboModule)->enableEagerRootViewAttachment( rt @@ -126,6 +136,16 @@ static jsi::Value __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_enableI rt ); } +static jsi::Value __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_enableImagePrefetchingAndroid(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) { + return static_cast(&turboModule)->enableImagePrefetchingAndroid( + rt + ); +} +static jsi::Value __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_enableImmediateUpdateModeForContentOffsetChanges(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) { + return static_cast(&turboModule)->enableImmediateUpdateModeForContentOffsetChanges( + rt + ); +} static jsi::Value __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_enableInteropViewManagerClassLookUpOptimizationIOS(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) { return static_cast(&turboModule)->enableInteropViewManagerClassLookUpOptimizationIOS( rt @@ -146,11 +166,6 @@ static jsi::Value __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_enableM rt ); } -static jsi::Value __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_enableMainQueueModulesOnIOS(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) { - return static_cast(&turboModule)->enableMainQueueModulesOnIOS( - rt - ); -} static jsi::Value __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_enableModuleArgumentNSNullConversionIOS(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) { return static_cast(&turboModule)->enableModuleArgumentNSNullConversionIOS( rt @@ -186,11 +201,6 @@ static jsi::Value __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_enableR rt ); } -static jsi::Value __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_enableSynchronousStateUpdates(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) { - return static_cast(&turboModule)->enableSynchronousStateUpdates( - rt - ); -} static jsi::Value __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_enableViewCulling(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) { return static_cast(&turboModule)->enableViewCulling( rt @@ -246,11 +256,41 @@ static jsi::Value __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_hideOff rt ); } +static jsi::Value __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_perfMonitorV2Enabled(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) { + return static_cast(&turboModule)->perfMonitorV2Enabled( + rt + ); +} static jsi::Value __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_preparedTextCacheSize(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) { return static_cast(&turboModule)->preparedTextCacheSize( rt ); } +static jsi::Value __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_preventShadowTreeCommitExhaustion(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) { + return static_cast(&turboModule)->preventShadowTreeCommitExhaustion( + rt + ); +} +static jsi::Value __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_releaseImageDataWhenConsumed(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) { + return static_cast(&turboModule)->releaseImageDataWhenConsumed( + rt + ); +} +static jsi::Value __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_shouldPressibilityUseW3CPointerEventsForHover(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) { + return static_cast(&turboModule)->shouldPressibilityUseW3CPointerEventsForHover( + rt + ); +} +static jsi::Value __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_skipActivityIdentityAssertionOnHostPause(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) { + return static_cast(&turboModule)->skipActivityIdentityAssertionOnHostPause( + rt + ); +} +static jsi::Value __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_sweepActiveTouchOnChildNativeGesturesAndroid(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) { + return static_cast(&turboModule)->sweepActiveTouchOnChildNativeGesturesAndroid( + rt + ); +} static jsi::Value __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_traceTurboModulePromiseRejectionsOnAndroid(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) { return static_cast(&turboModule)->traceTurboModulePromiseRejectionsOnAndroid( rt @@ -271,6 +311,16 @@ static jsi::Value __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_useFabr rt ); } +static jsi::Value __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_useNativeEqualsInNativeReadableArrayAndroid(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) { + return static_cast(&turboModule)->useNativeEqualsInNativeReadableArrayAndroid( + rt + ); +} +static jsi::Value __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_useNativeTransformHelperAndroid(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) { + return static_cast(&turboModule)->useNativeTransformHelperAndroid( + rt + ); +} static jsi::Value __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_useNativeViewConfigsInBridgelessMode(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) { return static_cast(&turboModule)->useNativeViewConfigsInBridgelessMode( rt @@ -311,11 +361,12 @@ NativeReactNativeFeatureFlagsCxxSpecJSI::NativeReactNativeFeatureFlagsCxxSpecJSI : TurboModule("NativeReactNativeFeatureFlagsCxx", jsInvoker) { methodMap_["commonTestFlag"] = MethodMetadata {0, __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_commonTestFlag}; methodMap_["commonTestFlagWithoutNativeImplementation"] = MethodMetadata {0, __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_commonTestFlagWithoutNativeImplementation}; - methodMap_["animatedShouldSignalBatch"] = MethodMetadata {0, __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_animatedShouldSignalBatch}; + methodMap_["cdpInteractionMetricsEnabled"] = MethodMetadata {0, __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_cdpInteractionMetricsEnabled}; methodMap_["cxxNativeAnimatedEnabled"] = MethodMetadata {0, __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_cxxNativeAnimatedEnabled}; methodMap_["cxxNativeAnimatedRemoveJsSync"] = MethodMetadata {0, __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_cxxNativeAnimatedRemoveJsSync}; - methodMap_["disableMainQueueSyncDispatchIOS"] = MethodMetadata {0, __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_disableMainQueueSyncDispatchIOS}; + methodMap_["disableFabricCommitInCXXAnimated"] = MethodMetadata {0, __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_disableFabricCommitInCXXAnimated}; methodMap_["disableMountItemReorderingAndroid"] = MethodMetadata {0, __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_disableMountItemReorderingAndroid}; + methodMap_["disableOldAndroidAttachmentMetricsWorkarounds"] = MethodMetadata {0, __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_disableOldAndroidAttachmentMetricsWorkarounds}; methodMap_["disableTextLayoutManagerCacheAndroid"] = MethodMetadata {0, __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_disableTextLayoutManagerCacheAndroid}; methodMap_["enableAccessibilityOrder"] = MethodMetadata {0, __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_enableAccessibilityOrder}; methodMap_["enableAccumulatedUpdatesInRawPropsAndroid"] = MethodMetadata {0, __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_enableAccumulatedUpdatesInRawPropsAndroid}; @@ -325,6 +376,7 @@ NativeReactNativeFeatureFlagsCxxSpecJSI::NativeReactNativeFeatureFlagsCxxSpecJSI methodMap_["enableCustomFocusSearchOnClippedElementsAndroid"] = MethodMetadata {0, __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_enableCustomFocusSearchOnClippedElementsAndroid}; methodMap_["enableDestroyShadowTreeRevisionAsync"] = MethodMetadata {0, __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_enableDestroyShadowTreeRevisionAsync}; methodMap_["enableDoubleMeasurementFixAndroid"] = MethodMetadata {0, __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_enableDoubleMeasurementFixAndroid}; + methodMap_["enableEagerMainQueueModulesOnIOS"] = MethodMetadata {0, __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_enableEagerMainQueueModulesOnIOS}; methodMap_["enableEagerRootViewAttachment"] = MethodMetadata {0, __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_enableEagerRootViewAttachment}; methodMap_["enableFabricLogs"] = MethodMetadata {0, __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_enableFabricLogs}; methodMap_["enableFabricRenderer"] = MethodMetadata {0, __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_enableFabricRenderer}; @@ -332,11 +384,12 @@ NativeReactNativeFeatureFlagsCxxSpecJSI::NativeReactNativeFeatureFlagsCxxSpecJSI methodMap_["enableFontScaleChangesUpdatingLayout"] = MethodMetadata {0, __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_enableFontScaleChangesUpdatingLayout}; methodMap_["enableIOSTextBaselineOffsetPerLine"] = MethodMetadata {0, __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_enableIOSTextBaselineOffsetPerLine}; methodMap_["enableIOSViewClipToPaddingBox"] = MethodMetadata {0, __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_enableIOSViewClipToPaddingBox}; + methodMap_["enableImagePrefetchingAndroid"] = MethodMetadata {0, __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_enableImagePrefetchingAndroid}; + methodMap_["enableImmediateUpdateModeForContentOffsetChanges"] = MethodMetadata {0, __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_enableImmediateUpdateModeForContentOffsetChanges}; methodMap_["enableInteropViewManagerClassLookUpOptimizationIOS"] = MethodMetadata {0, __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_enableInteropViewManagerClassLookUpOptimizationIOS}; methodMap_["enableLayoutAnimationsOnAndroid"] = MethodMetadata {0, __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_enableLayoutAnimationsOnAndroid}; methodMap_["enableLayoutAnimationsOnIOS"] = MethodMetadata {0, __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_enableLayoutAnimationsOnIOS}; methodMap_["enableMainQueueCoordinatorOnIOS"] = MethodMetadata {0, __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_enableMainQueueCoordinatorOnIOS}; - methodMap_["enableMainQueueModulesOnIOS"] = MethodMetadata {0, __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_enableMainQueueModulesOnIOS}; methodMap_["enableModuleArgumentNSNullConversionIOS"] = MethodMetadata {0, __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_enableModuleArgumentNSNullConversionIOS}; methodMap_["enableNativeCSSParsing"] = MethodMetadata {0, __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_enableNativeCSSParsing}; methodMap_["enableNetworkEventReporting"] = MethodMetadata {0, __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_enableNetworkEventReporting}; @@ -344,7 +397,6 @@ NativeReactNativeFeatureFlagsCxxSpecJSI::NativeReactNativeFeatureFlagsCxxSpecJSI methodMap_["enablePreparedTextLayout"] = MethodMetadata {0, __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_enablePreparedTextLayout}; methodMap_["enablePropsUpdateReconciliationAndroid"] = MethodMetadata {0, __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_enablePropsUpdateReconciliationAndroid}; methodMap_["enableResourceTimingAPI"] = MethodMetadata {0, __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_enableResourceTimingAPI}; - methodMap_["enableSynchronousStateUpdates"] = MethodMetadata {0, __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_enableSynchronousStateUpdates}; methodMap_["enableViewCulling"] = MethodMetadata {0, __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_enableViewCulling}; methodMap_["enableViewRecycling"] = MethodMetadata {0, __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_enableViewRecycling}; methodMap_["enableViewRecyclingForText"] = MethodMetadata {0, __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_enableViewRecyclingForText}; @@ -356,11 +408,19 @@ NativeReactNativeFeatureFlagsCxxSpecJSI::NativeReactNativeFeatureFlagsCxxSpecJSI methodMap_["fuseboxEnabledRelease"] = MethodMetadata {0, __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_fuseboxEnabledRelease}; methodMap_["fuseboxNetworkInspectionEnabled"] = MethodMetadata {0, __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_fuseboxNetworkInspectionEnabled}; methodMap_["hideOffscreenVirtualViewsOnIOS"] = MethodMetadata {0, __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_hideOffscreenVirtualViewsOnIOS}; + methodMap_["perfMonitorV2Enabled"] = MethodMetadata {0, __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_perfMonitorV2Enabled}; methodMap_["preparedTextCacheSize"] = MethodMetadata {0, __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_preparedTextCacheSize}; + methodMap_["preventShadowTreeCommitExhaustion"] = MethodMetadata {0, __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_preventShadowTreeCommitExhaustion}; + methodMap_["releaseImageDataWhenConsumed"] = MethodMetadata {0, __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_releaseImageDataWhenConsumed}; + methodMap_["shouldPressibilityUseW3CPointerEventsForHover"] = MethodMetadata {0, __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_shouldPressibilityUseW3CPointerEventsForHover}; + methodMap_["skipActivityIdentityAssertionOnHostPause"] = MethodMetadata {0, __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_skipActivityIdentityAssertionOnHostPause}; + methodMap_["sweepActiveTouchOnChildNativeGesturesAndroid"] = MethodMetadata {0, __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_sweepActiveTouchOnChildNativeGesturesAndroid}; methodMap_["traceTurboModulePromiseRejectionsOnAndroid"] = MethodMetadata {0, __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_traceTurboModulePromiseRejectionsOnAndroid}; methodMap_["updateRuntimeShadowNodeReferencesOnCommit"] = MethodMetadata {0, __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_updateRuntimeShadowNodeReferencesOnCommit}; methodMap_["useAlwaysAvailableJSErrorHandling"] = MethodMetadata {0, __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_useAlwaysAvailableJSErrorHandling}; methodMap_["useFabricInterop"] = MethodMetadata {0, __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_useFabricInterop}; + methodMap_["useNativeEqualsInNativeReadableArrayAndroid"] = MethodMetadata {0, __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_useNativeEqualsInNativeReadableArrayAndroid}; + methodMap_["useNativeTransformHelperAndroid"] = MethodMetadata {0, __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_useNativeTransformHelperAndroid}; methodMap_["useNativeViewConfigsInBridgelessMode"] = MethodMetadata {0, __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_useNativeViewConfigsInBridgelessMode}; methodMap_["useOptimizedEventBatchingOnAndroid"] = MethodMetadata {0, __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_useOptimizedEventBatchingOnAndroid}; methodMap_["useRawPropsJsiValue"] = MethodMetadata {0, __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_useRawPropsJsiValue}; @@ -2976,21 +3036,6 @@ NativeIdleCallbacksCxxSpecJSI::NativeIdleCallbacksCxxSpecJSI(std::shared_ptr(&turboModule)->observe( - rt, - count <= 0 ? throw jsi::JSError(rt, "Expected argument in position 0 to be passed") : args[0].asObject(rt) - ); - return jsi::Value::undefined(); -} -static jsi::Value __hostFunction_NativeIntersectionObserverCxxSpecJSI_unobserve(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) { - static_cast(&turboModule)->unobserve( - rt, - count <= 0 ? throw jsi::JSError(rt, "Expected argument in position 0 to be passed") : args[0].asNumber(), - count <= 1 ? throw jsi::JSError(rt, "Expected argument in position 1 to be passed") : jsi::Value(rt, args[1]) - ); - return jsi::Value::undefined(); -} static jsi::Value __hostFunction_NativeIntersectionObserverCxxSpecJSI_observeV2(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) { return static_cast(&turboModule)->observeV2( rt, @@ -3026,8 +3071,6 @@ static jsi::Value __hostFunction_NativeIntersectionObserverCxxSpecJSI_takeRecord NativeIntersectionObserverCxxSpecJSI::NativeIntersectionObserverCxxSpecJSI(std::shared_ptr jsInvoker) : TurboModule("NativeIntersectionObserverCxx", jsInvoker) { - methodMap_["observe"] = MethodMetadata {1, __hostFunction_NativeIntersectionObserverCxxSpecJSI_observe}; - methodMap_["unobserve"] = MethodMetadata {2, __hostFunction_NativeIntersectionObserverCxxSpecJSI_unobserve}; methodMap_["observeV2"] = MethodMetadata {1, __hostFunction_NativeIntersectionObserverCxxSpecJSI_observeV2}; methodMap_["unobserveV2"] = MethodMetadata {2, __hostFunction_NativeIntersectionObserverCxxSpecJSI_unobserveV2}; methodMap_["connect"] = MethodMetadata {1, __hostFunction_NativeIntersectionObserverCxxSpecJSI_connect}; @@ -3093,34 +3136,31 @@ static jsi::Value __hostFunction_NativePerformanceCxxSpecJSI_now(jsi::Runtime &r rt ); } -static jsi::Value __hostFunction_NativePerformanceCxxSpecJSI_markWithResult(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) { - return static_cast(&turboModule)->markWithResult( +static jsi::Value __hostFunction_NativePerformanceCxxSpecJSI_reportMark(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) { + static_cast(&turboModule)->reportMark( rt, count <= 0 ? throw jsi::JSError(rt, "Expected argument in position 0 to be passed") : args[0].asString(rt), - count <= 1 || args[1].isUndefined() ? std::nullopt : std::make_optional(args[1].asNumber()) + count <= 1 ? throw jsi::JSError(rt, "Expected argument in position 1 to be passed") : args[1].asNumber(), + count <= 2 ? throw jsi::JSError(rt, "Expected argument in position 2 to be passed") : jsi::Value(rt, args[2]) ); + return jsi::Value::undefined(); } -static jsi::Value __hostFunction_NativePerformanceCxxSpecJSI_measure(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) { - return static_cast(&turboModule)->measure( +static jsi::Value __hostFunction_NativePerformanceCxxSpecJSI_reportMeasure(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) { + static_cast(&turboModule)->reportMeasure( rt, count <= 0 ? throw jsi::JSError(rt, "Expected argument in position 0 to be passed") : args[0].asString(rt), - count <= 1 || args[1].isUndefined() ? std::nullopt : std::make_optional(args[1].asNumber()), - count <= 2 || args[2].isUndefined() ? std::nullopt : std::make_optional(args[2].asNumber()), - count <= 3 || args[3].isUndefined() ? std::nullopt : std::make_optional(args[3].asNumber()), - count <= 4 || args[4].isUndefined() ? std::nullopt : std::make_optional(args[4].asString(rt)), - count <= 5 || args[5].isUndefined() ? std::nullopt : std::make_optional(args[5].asString(rt)) + count <= 1 ? throw jsi::JSError(rt, "Expected argument in position 1 to be passed") : args[1].asNumber(), + count <= 2 ? throw jsi::JSError(rt, "Expected argument in position 2 to be passed") : args[2].asNumber(), + count <= 3 ? throw jsi::JSError(rt, "Expected argument in position 3 to be passed") : jsi::Value(rt, args[3]) ); + return jsi::Value::undefined(); } -static jsi::Value __hostFunction_NativePerformanceCxxSpecJSI_measureWithResult(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) { - return static_cast(&turboModule)->measureWithResult( +static jsi::Value __hostFunction_NativePerformanceCxxSpecJSI_getMarkTime(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) { + auto result = static_cast(&turboModule)->getMarkTime( rt, - count <= 0 ? throw jsi::JSError(rt, "Expected argument in position 0 to be passed") : args[0].asString(rt), - count <= 1 ? throw jsi::JSError(rt, "Expected argument in position 1 to be passed") : args[1].asNumber(), - count <= 2 ? throw jsi::JSError(rt, "Expected argument in position 2 to be passed") : args[2].asNumber(), - count <= 3 || args[3].isUndefined() ? std::nullopt : std::make_optional(args[3].asNumber()), - count <= 4 || args[4].isUndefined() ? std::nullopt : std::make_optional(args[4].asString(rt)), - count <= 5 || args[5].isUndefined() ? std::nullopt : std::make_optional(args[5].asString(rt)) + count <= 0 ? throw jsi::JSError(rt, "Expected argument in position 0 to be passed") : args[0].asString(rt) ); + return result ? jsi::Value(std::move(*result)) : jsi::Value::null(); } static jsi::Value __hostFunction_NativePerformanceCxxSpecJSI_clearMarks(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) { static_cast(&turboModule)->clearMarks( @@ -3208,13 +3248,6 @@ static jsi::Value __hostFunction_NativePerformanceCxxSpecJSI_getSupportedPerform rt ); } -static jsi::Value __hostFunction_NativePerformanceCxxSpecJSI_setCurrentTimeStampForTesting(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) { - static_cast(&turboModule)->setCurrentTimeStampForTesting( - rt, - count <= 0 ? throw jsi::JSError(rt, "Expected argument in position 0 to be passed") : args[0].asNumber() - ); - return jsi::Value::undefined(); -} static jsi::Value __hostFunction_NativePerformanceCxxSpecJSI_clearEventCountsForTesting(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) { static_cast(&turboModule)->clearEventCountsForTesting( rt @@ -3225,9 +3258,9 @@ static jsi::Value __hostFunction_NativePerformanceCxxSpecJSI_clearEventCountsFor NativePerformanceCxxSpecJSI::NativePerformanceCxxSpecJSI(std::shared_ptr jsInvoker) : TurboModule("NativePerformanceCxx", jsInvoker) { methodMap_["now"] = MethodMetadata {0, __hostFunction_NativePerformanceCxxSpecJSI_now}; - methodMap_["markWithResult"] = MethodMetadata {2, __hostFunction_NativePerformanceCxxSpecJSI_markWithResult}; - methodMap_["measure"] = MethodMetadata {6, __hostFunction_NativePerformanceCxxSpecJSI_measure}; - methodMap_["measureWithResult"] = MethodMetadata {6, __hostFunction_NativePerformanceCxxSpecJSI_measureWithResult}; + methodMap_["reportMark"] = MethodMetadata {3, __hostFunction_NativePerformanceCxxSpecJSI_reportMark}; + methodMap_["reportMeasure"] = MethodMetadata {4, __hostFunction_NativePerformanceCxxSpecJSI_reportMeasure}; + methodMap_["getMarkTime"] = MethodMetadata {1, __hostFunction_NativePerformanceCxxSpecJSI_getMarkTime}; methodMap_["clearMarks"] = MethodMetadata {1, __hostFunction_NativePerformanceCxxSpecJSI_clearMarks}; methodMap_["clearMeasures"] = MethodMetadata {1, __hostFunction_NativePerformanceCxxSpecJSI_clearMeasures}; methodMap_["getEntries"] = MethodMetadata {0, __hostFunction_NativePerformanceCxxSpecJSI_getEntries}; @@ -3242,7 +3275,6 @@ NativePerformanceCxxSpecJSI::NativePerformanceCxxSpecJSI(std::shared_ptr(&turboModule)->getElementById( + rt, + count <= 0 ? throw jsi::JSError(rt, "Expected argument in position 0 to be passed") : jsi::Value(rt, args[0]), + count <= 1 ? throw jsi::JSError(rt, "Expected argument in position 1 to be passed") : args[1].asString(rt) + ); +} static jsi::Value __hostFunction_NativeDOMCxxSpecJSI_getParentNode(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) { return static_cast(&turboModule)->getParentNode( rt, @@ -3388,6 +3427,7 @@ NativeDOMCxxSpecJSI::NativeDOMCxxSpecJSI(std::shared_ptr jsInvoker) : TurboModule("NativeDOMCxx", jsInvoker) { methodMap_["compareDocumentPosition"] = MethodMetadata {2, __hostFunction_NativeDOMCxxSpecJSI_compareDocumentPosition}; methodMap_["getChildNodes"] = MethodMetadata {1, __hostFunction_NativeDOMCxxSpecJSI_getChildNodes}; + methodMap_["getElementById"] = MethodMetadata {2, __hostFunction_NativeDOMCxxSpecJSI_getElementById}; methodMap_["getParentNode"] = MethodMetadata {1, __hostFunction_NativeDOMCxxSpecJSI_getParentNode}; methodMap_["isConnected"] = MethodMetadata {1, __hostFunction_NativeDOMCxxSpecJSI_isConnected}; methodMap_["getBorderWidth"] = MethodMetadata {1, __hostFunction_NativeDOMCxxSpecJSI_getBorderWidth}; diff --git a/vnext/codegen/rnwcoreJSI.h b/vnext/codegen/rnwcoreJSI.h index 73349b5bed0..6cbeb28b2c2 100644 --- a/vnext/codegen/rnwcoreJSI.h +++ b/vnext/codegen/rnwcoreJSI.h @@ -22,11 +22,12 @@ namespace facebook::react { public: virtual bool commonTestFlag(jsi::Runtime &rt) = 0; virtual bool commonTestFlagWithoutNativeImplementation(jsi::Runtime &rt) = 0; - virtual bool animatedShouldSignalBatch(jsi::Runtime &rt) = 0; + virtual bool cdpInteractionMetricsEnabled(jsi::Runtime &rt) = 0; virtual bool cxxNativeAnimatedEnabled(jsi::Runtime &rt) = 0; virtual bool cxxNativeAnimatedRemoveJsSync(jsi::Runtime &rt) = 0; - virtual bool disableMainQueueSyncDispatchIOS(jsi::Runtime &rt) = 0; + virtual bool disableFabricCommitInCXXAnimated(jsi::Runtime &rt) = 0; virtual bool disableMountItemReorderingAndroid(jsi::Runtime &rt) = 0; + virtual bool disableOldAndroidAttachmentMetricsWorkarounds(jsi::Runtime &rt) = 0; virtual bool disableTextLayoutManagerCacheAndroid(jsi::Runtime &rt) = 0; virtual bool enableAccessibilityOrder(jsi::Runtime &rt) = 0; virtual bool enableAccumulatedUpdatesInRawPropsAndroid(jsi::Runtime &rt) = 0; @@ -36,6 +37,7 @@ namespace facebook::react { virtual bool enableCustomFocusSearchOnClippedElementsAndroid(jsi::Runtime &rt) = 0; virtual bool enableDestroyShadowTreeRevisionAsync(jsi::Runtime &rt) = 0; virtual bool enableDoubleMeasurementFixAndroid(jsi::Runtime &rt) = 0; + virtual bool enableEagerMainQueueModulesOnIOS(jsi::Runtime &rt) = 0; virtual bool enableEagerRootViewAttachment(jsi::Runtime &rt) = 0; virtual bool enableFabricLogs(jsi::Runtime &rt) = 0; virtual bool enableFabricRenderer(jsi::Runtime &rt) = 0; @@ -43,11 +45,12 @@ namespace facebook::react { virtual bool enableFontScaleChangesUpdatingLayout(jsi::Runtime &rt) = 0; virtual bool enableIOSTextBaselineOffsetPerLine(jsi::Runtime &rt) = 0; virtual bool enableIOSViewClipToPaddingBox(jsi::Runtime &rt) = 0; + virtual bool enableImagePrefetchingAndroid(jsi::Runtime &rt) = 0; + virtual bool enableImmediateUpdateModeForContentOffsetChanges(jsi::Runtime &rt) = 0; virtual bool enableInteropViewManagerClassLookUpOptimizationIOS(jsi::Runtime &rt) = 0; virtual bool enableLayoutAnimationsOnAndroid(jsi::Runtime &rt) = 0; virtual bool enableLayoutAnimationsOnIOS(jsi::Runtime &rt) = 0; virtual bool enableMainQueueCoordinatorOnIOS(jsi::Runtime &rt) = 0; - virtual bool enableMainQueueModulesOnIOS(jsi::Runtime &rt) = 0; virtual bool enableModuleArgumentNSNullConversionIOS(jsi::Runtime &rt) = 0; virtual bool enableNativeCSSParsing(jsi::Runtime &rt) = 0; virtual bool enableNetworkEventReporting(jsi::Runtime &rt) = 0; @@ -55,7 +58,6 @@ namespace facebook::react { virtual bool enablePreparedTextLayout(jsi::Runtime &rt) = 0; virtual bool enablePropsUpdateReconciliationAndroid(jsi::Runtime &rt) = 0; virtual bool enableResourceTimingAPI(jsi::Runtime &rt) = 0; - virtual bool enableSynchronousStateUpdates(jsi::Runtime &rt) = 0; virtual bool enableViewCulling(jsi::Runtime &rt) = 0; virtual bool enableViewRecycling(jsi::Runtime &rt) = 0; virtual bool enableViewRecyclingForText(jsi::Runtime &rt) = 0; @@ -67,11 +69,19 @@ namespace facebook::react { virtual bool fuseboxEnabledRelease(jsi::Runtime &rt) = 0; virtual bool fuseboxNetworkInspectionEnabled(jsi::Runtime &rt) = 0; virtual bool hideOffscreenVirtualViewsOnIOS(jsi::Runtime &rt) = 0; + virtual bool perfMonitorV2Enabled(jsi::Runtime &rt) = 0; virtual double preparedTextCacheSize(jsi::Runtime &rt) = 0; + virtual bool preventShadowTreeCommitExhaustion(jsi::Runtime &rt) = 0; + virtual bool releaseImageDataWhenConsumed(jsi::Runtime &rt) = 0; + virtual bool shouldPressibilityUseW3CPointerEventsForHover(jsi::Runtime &rt) = 0; + virtual bool skipActivityIdentityAssertionOnHostPause(jsi::Runtime &rt) = 0; + virtual bool sweepActiveTouchOnChildNativeGesturesAndroid(jsi::Runtime &rt) = 0; virtual bool traceTurboModulePromiseRejectionsOnAndroid(jsi::Runtime &rt) = 0; virtual bool updateRuntimeShadowNodeReferencesOnCommit(jsi::Runtime &rt) = 0; virtual bool useAlwaysAvailableJSErrorHandling(jsi::Runtime &rt) = 0; virtual bool useFabricInterop(jsi::Runtime &rt) = 0; + virtual bool useNativeEqualsInNativeReadableArrayAndroid(jsi::Runtime &rt) = 0; + virtual bool useNativeTransformHelperAndroid(jsi::Runtime &rt) = 0; virtual bool useNativeViewConfigsInBridgelessMode(jsi::Runtime &rt) = 0; virtual bool useOptimizedEventBatchingOnAndroid(jsi::Runtime &rt) = 0; virtual bool useRawPropsJsiValue(jsi::Runtime &rt) = 0; @@ -125,13 +135,13 @@ class JSI_EXPORT NativeReactNativeFeatureFlagsCxxSpec : public TurboModule { return bridging::callFromJs( rt, &T::commonTestFlagWithoutNativeImplementation, jsInvoker_, instance_); } - bool animatedShouldSignalBatch(jsi::Runtime &rt) override { + bool cdpInteractionMetricsEnabled(jsi::Runtime &rt) override { static_assert( - bridging::getParameterCount(&T::animatedShouldSignalBatch) == 1, - "Expected animatedShouldSignalBatch(...) to have 1 parameters"); + bridging::getParameterCount(&T::cdpInteractionMetricsEnabled) == 1, + "Expected cdpInteractionMetricsEnabled(...) to have 1 parameters"); return bridging::callFromJs( - rt, &T::animatedShouldSignalBatch, jsInvoker_, instance_); + rt, &T::cdpInteractionMetricsEnabled, jsInvoker_, instance_); } bool cxxNativeAnimatedEnabled(jsi::Runtime &rt) override { static_assert( @@ -149,13 +159,13 @@ class JSI_EXPORT NativeReactNativeFeatureFlagsCxxSpec : public TurboModule { return bridging::callFromJs( rt, &T::cxxNativeAnimatedRemoveJsSync, jsInvoker_, instance_); } - bool disableMainQueueSyncDispatchIOS(jsi::Runtime &rt) override { + bool disableFabricCommitInCXXAnimated(jsi::Runtime &rt) override { static_assert( - bridging::getParameterCount(&T::disableMainQueueSyncDispatchIOS) == 1, - "Expected disableMainQueueSyncDispatchIOS(...) to have 1 parameters"); + bridging::getParameterCount(&T::disableFabricCommitInCXXAnimated) == 1, + "Expected disableFabricCommitInCXXAnimated(...) to have 1 parameters"); return bridging::callFromJs( - rt, &T::disableMainQueueSyncDispatchIOS, jsInvoker_, instance_); + rt, &T::disableFabricCommitInCXXAnimated, jsInvoker_, instance_); } bool disableMountItemReorderingAndroid(jsi::Runtime &rt) override { static_assert( @@ -165,6 +175,14 @@ class JSI_EXPORT NativeReactNativeFeatureFlagsCxxSpec : public TurboModule { return bridging::callFromJs( rt, &T::disableMountItemReorderingAndroid, jsInvoker_, instance_); } + bool disableOldAndroidAttachmentMetricsWorkarounds(jsi::Runtime &rt) override { + static_assert( + bridging::getParameterCount(&T::disableOldAndroidAttachmentMetricsWorkarounds) == 1, + "Expected disableOldAndroidAttachmentMetricsWorkarounds(...) to have 1 parameters"); + + return bridging::callFromJs( + rt, &T::disableOldAndroidAttachmentMetricsWorkarounds, jsInvoker_, instance_); + } bool disableTextLayoutManagerCacheAndroid(jsi::Runtime &rt) override { static_assert( bridging::getParameterCount(&T::disableTextLayoutManagerCacheAndroid) == 1, @@ -237,6 +255,14 @@ class JSI_EXPORT NativeReactNativeFeatureFlagsCxxSpec : public TurboModule { return bridging::callFromJs( rt, &T::enableDoubleMeasurementFixAndroid, jsInvoker_, instance_); } + bool enableEagerMainQueueModulesOnIOS(jsi::Runtime &rt) override { + static_assert( + bridging::getParameterCount(&T::enableEagerMainQueueModulesOnIOS) == 1, + "Expected enableEagerMainQueueModulesOnIOS(...) to have 1 parameters"); + + return bridging::callFromJs( + rt, &T::enableEagerMainQueueModulesOnIOS, jsInvoker_, instance_); + } bool enableEagerRootViewAttachment(jsi::Runtime &rt) override { static_assert( bridging::getParameterCount(&T::enableEagerRootViewAttachment) == 1, @@ -293,6 +319,22 @@ class JSI_EXPORT NativeReactNativeFeatureFlagsCxxSpec : public TurboModule { return bridging::callFromJs( rt, &T::enableIOSViewClipToPaddingBox, jsInvoker_, instance_); } + bool enableImagePrefetchingAndroid(jsi::Runtime &rt) override { + static_assert( + bridging::getParameterCount(&T::enableImagePrefetchingAndroid) == 1, + "Expected enableImagePrefetchingAndroid(...) to have 1 parameters"); + + return bridging::callFromJs( + rt, &T::enableImagePrefetchingAndroid, jsInvoker_, instance_); + } + bool enableImmediateUpdateModeForContentOffsetChanges(jsi::Runtime &rt) override { + static_assert( + bridging::getParameterCount(&T::enableImmediateUpdateModeForContentOffsetChanges) == 1, + "Expected enableImmediateUpdateModeForContentOffsetChanges(...) to have 1 parameters"); + + return bridging::callFromJs( + rt, &T::enableImmediateUpdateModeForContentOffsetChanges, jsInvoker_, instance_); + } bool enableInteropViewManagerClassLookUpOptimizationIOS(jsi::Runtime &rt) override { static_assert( bridging::getParameterCount(&T::enableInteropViewManagerClassLookUpOptimizationIOS) == 1, @@ -325,14 +367,6 @@ class JSI_EXPORT NativeReactNativeFeatureFlagsCxxSpec : public TurboModule { return bridging::callFromJs( rt, &T::enableMainQueueCoordinatorOnIOS, jsInvoker_, instance_); } - bool enableMainQueueModulesOnIOS(jsi::Runtime &rt) override { - static_assert( - bridging::getParameterCount(&T::enableMainQueueModulesOnIOS) == 1, - "Expected enableMainQueueModulesOnIOS(...) to have 1 parameters"); - - return bridging::callFromJs( - rt, &T::enableMainQueueModulesOnIOS, jsInvoker_, instance_); - } bool enableModuleArgumentNSNullConversionIOS(jsi::Runtime &rt) override { static_assert( bridging::getParameterCount(&T::enableModuleArgumentNSNullConversionIOS) == 1, @@ -389,14 +423,6 @@ class JSI_EXPORT NativeReactNativeFeatureFlagsCxxSpec : public TurboModule { return bridging::callFromJs( rt, &T::enableResourceTimingAPI, jsInvoker_, instance_); } - bool enableSynchronousStateUpdates(jsi::Runtime &rt) override { - static_assert( - bridging::getParameterCount(&T::enableSynchronousStateUpdates) == 1, - "Expected enableSynchronousStateUpdates(...) to have 1 parameters"); - - return bridging::callFromJs( - rt, &T::enableSynchronousStateUpdates, jsInvoker_, instance_); - } bool enableViewCulling(jsi::Runtime &rt) override { static_assert( bridging::getParameterCount(&T::enableViewCulling) == 1, @@ -485,6 +511,14 @@ class JSI_EXPORT NativeReactNativeFeatureFlagsCxxSpec : public TurboModule { return bridging::callFromJs( rt, &T::hideOffscreenVirtualViewsOnIOS, jsInvoker_, instance_); } + bool perfMonitorV2Enabled(jsi::Runtime &rt) override { + static_assert( + bridging::getParameterCount(&T::perfMonitorV2Enabled) == 1, + "Expected perfMonitorV2Enabled(...) to have 1 parameters"); + + return bridging::callFromJs( + rt, &T::perfMonitorV2Enabled, jsInvoker_, instance_); + } double preparedTextCacheSize(jsi::Runtime &rt) override { static_assert( bridging::getParameterCount(&T::preparedTextCacheSize) == 1, @@ -493,6 +527,46 @@ class JSI_EXPORT NativeReactNativeFeatureFlagsCxxSpec : public TurboModule { return bridging::callFromJs( rt, &T::preparedTextCacheSize, jsInvoker_, instance_); } + bool preventShadowTreeCommitExhaustion(jsi::Runtime &rt) override { + static_assert( + bridging::getParameterCount(&T::preventShadowTreeCommitExhaustion) == 1, + "Expected preventShadowTreeCommitExhaustion(...) to have 1 parameters"); + + return bridging::callFromJs( + rt, &T::preventShadowTreeCommitExhaustion, jsInvoker_, instance_); + } + bool releaseImageDataWhenConsumed(jsi::Runtime &rt) override { + static_assert( + bridging::getParameterCount(&T::releaseImageDataWhenConsumed) == 1, + "Expected releaseImageDataWhenConsumed(...) to have 1 parameters"); + + return bridging::callFromJs( + rt, &T::releaseImageDataWhenConsumed, jsInvoker_, instance_); + } + bool shouldPressibilityUseW3CPointerEventsForHover(jsi::Runtime &rt) override { + static_assert( + bridging::getParameterCount(&T::shouldPressibilityUseW3CPointerEventsForHover) == 1, + "Expected shouldPressibilityUseW3CPointerEventsForHover(...) to have 1 parameters"); + + return bridging::callFromJs( + rt, &T::shouldPressibilityUseW3CPointerEventsForHover, jsInvoker_, instance_); + } + bool skipActivityIdentityAssertionOnHostPause(jsi::Runtime &rt) override { + static_assert( + bridging::getParameterCount(&T::skipActivityIdentityAssertionOnHostPause) == 1, + "Expected skipActivityIdentityAssertionOnHostPause(...) to have 1 parameters"); + + return bridging::callFromJs( + rt, &T::skipActivityIdentityAssertionOnHostPause, jsInvoker_, instance_); + } + bool sweepActiveTouchOnChildNativeGesturesAndroid(jsi::Runtime &rt) override { + static_assert( + bridging::getParameterCount(&T::sweepActiveTouchOnChildNativeGesturesAndroid) == 1, + "Expected sweepActiveTouchOnChildNativeGesturesAndroid(...) to have 1 parameters"); + + return bridging::callFromJs( + rt, &T::sweepActiveTouchOnChildNativeGesturesAndroid, jsInvoker_, instance_); + } bool traceTurboModulePromiseRejectionsOnAndroid(jsi::Runtime &rt) override { static_assert( bridging::getParameterCount(&T::traceTurboModulePromiseRejectionsOnAndroid) == 1, @@ -525,6 +599,22 @@ class JSI_EXPORT NativeReactNativeFeatureFlagsCxxSpec : public TurboModule { return bridging::callFromJs( rt, &T::useFabricInterop, jsInvoker_, instance_); } + bool useNativeEqualsInNativeReadableArrayAndroid(jsi::Runtime &rt) override { + static_assert( + bridging::getParameterCount(&T::useNativeEqualsInNativeReadableArrayAndroid) == 1, + "Expected useNativeEqualsInNativeReadableArrayAndroid(...) to have 1 parameters"); + + return bridging::callFromJs( + rt, &T::useNativeEqualsInNativeReadableArrayAndroid, jsInvoker_, instance_); + } + bool useNativeTransformHelperAndroid(jsi::Runtime &rt) override { + static_assert( + bridging::getParameterCount(&T::useNativeTransformHelperAndroid) == 1, + "Expected useNativeTransformHelperAndroid(...) to have 1 parameters"); + + return bridging::callFromJs( + rt, &T::useNativeTransformHelperAndroid, jsInvoker_, instance_); + } bool useNativeViewConfigsInBridgelessMode(jsi::Runtime &rt) override { static_assert( bridging::getParameterCount(&T::useNativeViewConfigsInBridgelessMode) == 1, @@ -8358,8 +8448,6 @@ class JSI_EXPORT NativeIntersectionObserverCxxSpecJSI : public TurboModule { NativeIntersectionObserverCxxSpecJSI(std::shared_ptr jsInvoker); public: - virtual void observe(jsi::Runtime &rt, jsi::Object options) = 0; - virtual void unobserve(jsi::Runtime &rt, double intersectionObserverId, jsi::Value targetShadowNode) = 0; virtual jsi::Value observeV2(jsi::Runtime &rt, jsi::Object options) = 0; virtual void unobserveV2(jsi::Runtime &rt, double intersectionObserverId, jsi::Value token) = 0; virtual void connect(jsi::Runtime &rt, jsi::Function notifyIntersectionObserversCallback) = 0; @@ -8395,22 +8483,6 @@ class JSI_EXPORT NativeIntersectionObserverCxxSpec : public TurboModule { } - void observe(jsi::Runtime &rt, jsi::Object options) override { - static_assert( - bridging::getParameterCount(&T::observe) == 2, - "Expected observe(...) to have 2 parameters"); - - return bridging::callFromJs( - rt, &T::observe, jsInvoker_, instance_, std::move(options)); - } - void unobserve(jsi::Runtime &rt, double intersectionObserverId, jsi::Value targetShadowNode) override { - static_assert( - bridging::getParameterCount(&T::unobserve) == 3, - "Expected unobserve(...) to have 3 parameters"); - - return bridging::callFromJs( - rt, &T::unobserve, jsInvoker_, instance_, std::move(intersectionObserverId), std::move(targetShadowNode)); - } jsi::Value observeV2(jsi::Runtime &rt, jsi::Object options) override { static_assert( bridging::getParameterCount(&T::observeV2) == 2, @@ -8950,9 +9022,9 @@ class JSI_EXPORT NativePerformanceCxxSpecJSI : public TurboModule { public: virtual double now(jsi::Runtime &rt) = 0; - virtual double markWithResult(jsi::Runtime &rt, jsi::String name, std::optional startTime) = 0; - virtual jsi::Array measure(jsi::Runtime &rt, jsi::String name, std::optional startTime, std::optional endTime, std::optional duration, std::optional startMark, std::optional endMark) = 0; - virtual jsi::Array measureWithResult(jsi::Runtime &rt, jsi::String name, double startTime, double endTime, std::optional duration, std::optional startMark, std::optional endMark) = 0; + virtual void reportMark(jsi::Runtime &rt, jsi::String name, double startTime, jsi::Value entry) = 0; + virtual void reportMeasure(jsi::Runtime &rt, jsi::String name, double startTime, double duration, jsi::Value entry) = 0; + virtual std::optional getMarkTime(jsi::Runtime &rt, jsi::String name) = 0; virtual void clearMarks(jsi::Runtime &rt, std::optional entryName) = 0; virtual void clearMeasures(jsi::Runtime &rt, std::optional entryName) = 0; virtual jsi::Array getEntries(jsi::Runtime &rt) = 0; @@ -8967,7 +9039,6 @@ class JSI_EXPORT NativePerformanceCxxSpecJSI : public TurboModule { virtual void disconnect(jsi::Runtime &rt, jsi::Value observer) = 0; virtual jsi::Array takeRecords(jsi::Runtime &rt, jsi::Value observer, bool sort) = 0; virtual jsi::Array getSupportedPerformanceEntryTypes(jsi::Runtime &rt) = 0; - virtual void setCurrentTimeStampForTesting(jsi::Runtime &rt, double timeStamp) = 0; virtual void clearEventCountsForTesting(jsi::Runtime &rt) = 0; }; @@ -9007,29 +9078,29 @@ class JSI_EXPORT NativePerformanceCxxSpec : public TurboModule { return bridging::callFromJs( rt, &T::now, jsInvoker_, instance_); } - double markWithResult(jsi::Runtime &rt, jsi::String name, std::optional startTime) override { + void reportMark(jsi::Runtime &rt, jsi::String name, double startTime, jsi::Value entry) override { static_assert( - bridging::getParameterCount(&T::markWithResult) == 3, - "Expected markWithResult(...) to have 3 parameters"); + bridging::getParameterCount(&T::reportMark) == 4, + "Expected reportMark(...) to have 4 parameters"); - return bridging::callFromJs( - rt, &T::markWithResult, jsInvoker_, instance_, std::move(name), std::move(startTime)); + return bridging::callFromJs( + rt, &T::reportMark, jsInvoker_, instance_, std::move(name), std::move(startTime), std::move(entry)); } - jsi::Array measure(jsi::Runtime &rt, jsi::String name, std::optional startTime, std::optional endTime, std::optional duration, std::optional startMark, std::optional endMark) override { + void reportMeasure(jsi::Runtime &rt, jsi::String name, double startTime, double duration, jsi::Value entry) override { static_assert( - bridging::getParameterCount(&T::measure) == 7, - "Expected measure(...) to have 7 parameters"); + bridging::getParameterCount(&T::reportMeasure) == 5, + "Expected reportMeasure(...) to have 5 parameters"); - return bridging::callFromJs( - rt, &T::measure, jsInvoker_, instance_, std::move(name), std::move(startTime), std::move(endTime), std::move(duration), std::move(startMark), std::move(endMark)); + return bridging::callFromJs( + rt, &T::reportMeasure, jsInvoker_, instance_, std::move(name), std::move(startTime), std::move(duration), std::move(entry)); } - jsi::Array measureWithResult(jsi::Runtime &rt, jsi::String name, double startTime, double endTime, std::optional duration, std::optional startMark, std::optional endMark) override { + std::optional getMarkTime(jsi::Runtime &rt, jsi::String name) override { static_assert( - bridging::getParameterCount(&T::measureWithResult) == 7, - "Expected measureWithResult(...) to have 7 parameters"); + bridging::getParameterCount(&T::getMarkTime) == 2, + "Expected getMarkTime(...) to have 2 parameters"); - return bridging::callFromJs( - rt, &T::measureWithResult, jsInvoker_, instance_, std::move(name), std::move(startTime), std::move(endTime), std::move(duration), std::move(startMark), std::move(endMark)); + return bridging::callFromJs>( + rt, &T::getMarkTime, jsInvoker_, instance_, std::move(name)); } void clearMarks(jsi::Runtime &rt, std::optional entryName) override { static_assert( @@ -9143,14 +9214,6 @@ class JSI_EXPORT NativePerformanceCxxSpec : public TurboModule { return bridging::callFromJs( rt, &T::getSupportedPerformanceEntryTypes, jsInvoker_, instance_); } - void setCurrentTimeStampForTesting(jsi::Runtime &rt, double timeStamp) override { - static_assert( - bridging::getParameterCount(&T::setCurrentTimeStampForTesting) == 2, - "Expected setCurrentTimeStampForTesting(...) to have 2 parameters"); - - return bridging::callFromJs( - rt, &T::setCurrentTimeStampForTesting, jsInvoker_, instance_, std::move(timeStamp)); - } void clearEventCountsForTesting(jsi::Runtime &rt) override { static_assert( bridging::getParameterCount(&T::clearEventCountsForTesting) == 1, @@ -9176,6 +9239,7 @@ class JSI_EXPORT NativePerformanceCxxSpec : public TurboModule { public: virtual double compareDocumentPosition(jsi::Runtime &rt, jsi::Value nativeNodeReference, jsi::Value otherNativeNodeReference) = 0; virtual jsi::Array getChildNodes(jsi::Runtime &rt, jsi::Value nativeNodeReference) = 0; + virtual jsi::Value getElementById(jsi::Runtime &rt, jsi::Value nativeNodeReference, jsi::String id) = 0; virtual jsi::Value getParentNode(jsi::Runtime &rt, jsi::Value nativeNodeReference) = 0; virtual bool isConnected(jsi::Runtime &rt, jsi::Value nativeNodeReference) = 0; virtual jsi::Array getBorderWidth(jsi::Runtime &rt, jsi::Value nativeElementReference) = 0; @@ -9240,6 +9304,14 @@ class JSI_EXPORT NativeDOMCxxSpec : public TurboModule { return bridging::callFromJs( rt, &T::getChildNodes, jsInvoker_, instance_, std::move(nativeNodeReference)); } + jsi::Value getElementById(jsi::Runtime &rt, jsi::Value nativeNodeReference, jsi::String id) override { + static_assert( + bridging::getParameterCount(&T::getElementById) == 3, + "Expected getElementById(...) to have 3 parameters"); + + return bridging::callFromJs( + rt, &T::getElementById, jsInvoker_, instance_, std::move(nativeNodeReference), std::move(id)); + } jsi::Value getParentNode(jsi::Runtime &rt, jsi::Value nativeNodeReference) override { static_assert( bridging::getParameterCount(&T::getParentNode) == 2, diff --git a/vnext/overrides.json b/vnext/overrides.json index e19a1624f0a..734d6badfe2 100644 --- a/vnext/overrides.json +++ b/vnext/overrides.json @@ -8,13 +8,13 @@ "**/__snapshots__/**", "src-win/rntypes/**" ], - "baseVersion": "0.81.0-nightly-20250709-6892dde36", + "baseVersion": "0.82.0-nightly-20250819-25104de5c", "overrides": [ { "type": "derived", "file": ".flowconfig", "baseFile": ".flowconfig", - "baseHash": "a5a50b87e779ba343919454cb5f7c1e77c2db982" + "baseHash": "85187f6c2ae01185505e2dc8d14587e9e887e519" }, { "type": "derived", @@ -26,7 +26,7 @@ "type": "derived", "file": "Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputShadowNode.cpp", "baseFile": "packages/react-native/ReactCommon/react/renderer/components/textinput/platform/android/react/renderer/components/androidtextinput/AndroidTextInputShadowNode.cpp", - "baseHash": "93a2173cac85b2bbfb0610ec3ab130d0b5a6eb89" + "baseHash": "98920c4a259ff3bd2b4b8237beb2e732bc03d0a3" }, { "type": "derived", @@ -58,35 +58,35 @@ "type": "patch", "file": "ReactCommon/TEMP_UntilReactCommonUpdate/cxxreact/CxxNativeModule.cpp", "baseFile": "packages/react-native/ReactCommon/cxxreact/CxxNativeModule.cpp", - "baseHash": "049869e49bb156253685974564b0bcea135115a7", + "baseHash": "b60f126f5aecad971e1d9c75e4f1e9e1bda9b0d0", "issue": 14819 }, { "type": "patch", "file": "ReactCommon/TEMP_UntilReactCommonUpdate/cxxreact/NativeToJsBridge.cpp", "baseFile": "packages/react-native/ReactCommon/cxxreact/NativeToJsBridge.cpp", - "baseHash": "79f9b18be17a0ba42d2d01dd28991ce27a75e1bb", + "baseHash": "1e4d9b9053dd74a3bea6719c98d8511de0ff8f73", "issue": 13172 }, { "type": "patch", "file": "ReactCommon/TEMP_UntilReactCommonUpdate/cxxreact/TraceSection.h", "baseFile": "packages/react-native/ReactCommon/cxxreact/TraceSection.h", - "baseHash": "0eac478d62ce71a7b81c2a2a15da0927c1b0eff9", + "baseHash": "005ef905a0ae986ef5933ff5c9322004b7b34ec6", "issue": 14819 }, { "type": "patch", "file": "ReactCommon/TEMP_UntilReactCommonUpdate/jsi/jsi/test/testlib.cpp", "baseFile": "packages/react-native/ReactCommon/jsi/jsi/test/testlib.cpp", - "baseHash": "cb7d748b3408859515a1cf4a969c65adf9d8f631", + "baseHash": "80c95f0c0635f68a77e8a61380484389d771bf9e", "issue": 12210 }, { "type": "patch", "file": "ReactCommon/TEMP_UntilReactCommonUpdate/jsinspector-modern/NetworkIOAgent.cpp", "baseFile": "packages/react-native/ReactCommon/jsinspector-modern/NetworkIOAgent.cpp", - "baseHash": "d8cf95191866699c484f1ab71201974fbe661239", + "baseHash": "898517c74357e110025445fa0698ca7343b16018", "issue": 13587 }, { @@ -100,7 +100,7 @@ "type": "patch", "file": "ReactCommon/TEMP_UntilReactCommonUpdate/jsinspector-modern/Utf8.h", "baseFile": "packages/react-native/ReactCommon/jsinspector-modern/Utf8.h", - "baseHash": "d961f37983356cbc64622db6194cd4b2a9a4e05c", + "baseHash": "1d81aa08f37619a8e9e05c2cf3d76f8f878fb9df", "issue": 13587 }, { @@ -128,7 +128,7 @@ "type": "patch", "file": "ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/core/ReactCommon/TurboModule.h", "baseFile": "packages/react-native/ReactCommon/react/nativemodule/core/ReactCommon/TurboModule.h", - "baseHash": "e82eb139eab8a6e122421416fb724811bfadd6fb", + "baseHash": "a0bc700b3960f771cf6d4e63be30ab45f6ef3683", "issue": 14128 }, { @@ -142,28 +142,28 @@ "type": "patch", "file": "ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/dom/NativeDOM.cpp", "baseFile": "packages/react-native/ReactCommon/react/nativemodule/dom/NativeDOM.cpp", - "baseHash": "3c3c6d95134449d63baefbf8b83d97d87a5a422d", + "baseHash": "3c59e9dc8fd3a6a1dc80737a01795eff5c5849c6", "issue": 14257 }, { "type": "patch", "file": "ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/dom/NativeDOM.h", "baseFile": "packages/react-native/ReactCommon/react/nativemodule/dom/NativeDOM.h", - "baseHash": "0501da7595760e3bc7a61708168650c47c787127", + "baseHash": "cd1204f9544fa50672c57966ef2d4f66a5559067", "issue": 14654 }, { "type": "patch", "file": "ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/componentregistry/ComponentDescriptorRegistry.cpp", "baseFile": "packages/react-native/ReactCommon/react/renderer/componentregistry/ComponentDescriptorRegistry.cpp", - "baseHash": "5157ead9e3526366c1900af19615ba3818975b66", + "baseHash": "de0bf0822d85f7519ba09baa623831bd52a12ea3", "issue": 14204 }, { "type": "patch", "file": "ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/text/ParagraphShadowNode.cpp", "baseFile": "packages/react-native/ReactCommon/react/renderer/components/text/ParagraphShadowNode.cpp", - "baseHash": "252ffb1b0765e0527282d214f0415184cc568dd3", + "baseHash": "ca2837abba807293b91b6877b9287241c7a64e4d", "issue": 15132 }, { @@ -177,13 +177,13 @@ "type": "derived", "file": "ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/view/AccessibilityPrimitives.h", "baseFile": "packages/react-native/ReactCommon/react/renderer/components/view/AccessibilityPrimitives.h", - "baseHash": "6a66bfa6f1a36ac0b1d3c114d0c4d11496c4f82e" + "baseHash": "ba36ba3603cf0325982afd08475c08d07cb9d231" }, { "type": "patch", "file": "ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/view/AccessibilityProps.cpp", "baseFile": "packages/react-native/ReactCommon/react/renderer/components/view/AccessibilityProps.cpp", - "baseHash": "84c725e0fcd477def9d5f6ae0e5bf14fd6e89d5c", + "baseHash": "741c1a72fe1340dd4c9598cc72ad530b29d5003a", "issue": 14845 }, { @@ -196,23 +196,16 @@ "type": "derived", "file": "ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/core/DynamicEventPayload.cpp", "baseFile": "packages/react-native/ReactCommon/react/renderer/core/DynamicEventPayload.cpp", - "baseHash": "4fa9c00291790a3b7eca1d38aeb5c28bc081143c", + "baseHash": "1c366627baabc46264b0cdf8653a3ade25fab492", "issue": 14797 }, { "type": "patch", "file": "ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/core/ShadowNode.cpp", "baseFile": "packages/react-native/ReactCommon/react/renderer/core/ShadowNode.cpp", - "baseHash": "d0335398782289db2de5b350de24373458180c4d", + "baseHash": "b56e467ee394e08d4e0dd0a8d71a8a9919603ff9", "issue": 15292 }, - { - "type": "patch", - "file": "ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/css/CSSHexColor.h", - "baseFile": "packages/react-native/ReactCommon/react/renderer/css/CSSHexColor.h", - "baseHash": "7ff0d621afc16dbee0b2959bb07c78418506b59c", - "issue": 14666 - }, { "type": "patch", "file": "ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/css/CSSTokenizer.h", @@ -224,21 +217,21 @@ "type": "patch", "file": "ReactCommon/TEMP_UntilReactCommonUpdate/react/runtime/ReactInstance.cpp", "baseFile": "packages/react-native/ReactCommon/react/runtime/ReactInstance.cpp", - "baseHash": "afe347f12a7e291a1207f5f1f55facd9c5a83ba8", + "baseHash": "f7a058ced6474e42e0ed805a2875a99c420e8398", "issue": 13172 }, { "type": "copy", "directory": "ReactCopies/IntegrationTests", "baseDirectory": "packages/rn-tester/IntegrationTests", - "baseHash": "aabf033b596a472c9da8b3eb4ab82d2a55acd5da", + "baseHash": "adc1fa5169a78fd21ed5c634fd66e5243e1e9f07", "issue": 4054 }, { "type": "derived", "file": "src-win/index.windows.js", "baseFile": "packages/react-native/index.js", - "baseHash": "c5d0dfd40d0fb7c197790b1f23f4f8b9ca835047" + "baseHash": "88aa62f2d86a810631bcbc871f45c28c53fceec7" }, { "type": "platform", @@ -284,7 +277,7 @@ "type": "copy", "file": "src-win/jest/setup.js", "baseFile": "packages/react-native/jest/setup.js", - "baseHash": "ecbd0b61c05ec4e048a5850c7bacb8fa1689efdb", + "baseHash": "32ae37ecc3e9a2be6fc078a78e969fbd0f2b55b5", "issue": 14929 }, { @@ -313,7 +306,7 @@ "type": "patch", "file": "src-win/Libraries/Components/AccessibilityInfo/AccessibilityInfo.windows.js", "baseFile": "packages/react-native/Libraries/Components/AccessibilityInfo/AccessibilityInfo.js", - "baseHash": "5a43c9cf537c5cb89e7f634e45be708f4b021493", + "baseHash": "b77b87e32a86265a3c8c29ebbbee46558596aec8", "issue": 4578 }, { @@ -334,7 +327,7 @@ "type": "derived", "file": "src-win/Libraries/Components/Button.windows.js", "baseFile": "packages/react-native/Libraries/Components/Button.js", - "baseHash": "5b293a6dbfdf16309c7cbfe71d61f143fa9fa2a2" + "baseHash": "26d3afc77f82939021f848eb8185b3b441fb3c7d" }, { "type": "platform", @@ -384,7 +377,7 @@ "type": "patch", "file": "src-win/Libraries/Components/Pressable/Pressable.windows.js", "baseFile": "packages/react-native/Libraries/Components/Pressable/Pressable.js", - "baseHash": "5909b509ee835f2b6eb0dbd3e223180efe602f98" + "baseHash": "08a6e1c0dd895af70ea1c8448a3be028d9cd2587" }, { "type": "patch", @@ -396,7 +389,7 @@ "type": "derived", "file": "src-win/Libraries/Components/ScrollView/ScrollView.windows.js", "baseFile": "packages/react-native/Libraries/Components/ScrollView/ScrollView.js", - "baseHash": "ef4edc51e3a0a99ffc3d86b608902e45ecc539ec" + "baseHash": "fa9ba225cb89bd30f74c8220bea043760fdce86c" }, { "type": "derived", @@ -408,7 +401,7 @@ "type": "derived", "file": "src-win/Libraries/Components/Switch/Switch.windows.js", "baseFile": "packages/react-native/Libraries/Components/Switch/Switch.js", - "baseHash": "38b0a2bd22fdbfb327271411867a382f46db0d61" + "baseHash": "c470803da7ac52c64c0a4745a4b41f1af0949a30" }, { "type": "derived", @@ -420,7 +413,7 @@ "type": "patch", "file": "src-win/Libraries/Components/TextInput/TextInput.windows.js", "baseFile": "packages/react-native/Libraries/Components/TextInput/TextInput.js", - "baseHash": "b6289ef53abc941f6f0aed50f80d3852b6682215" + "baseHash": "ed5d48ce62056182bf81dfa2d22d511d611d5201" }, { "type": "patch", @@ -444,31 +437,31 @@ "type": "derived", "file": "src-win/Libraries/Components/Touchable/TouchableBounce.windows.js", "baseFile": "packages/react-native/Libraries/Components/Touchable/TouchableBounce.js", - "baseHash": "238611b005166f97d3d3e22dea5f56b3641cf71b" + "baseHash": "26b3622e95229f4943f2d8a3dfa7782b7425646e" }, { "type": "patch", "file": "src-win/Libraries/Components/Touchable/TouchableHighlight.windows.js", "baseFile": "packages/react-native/Libraries/Components/Touchable/TouchableHighlight.js", - "baseHash": "92cf589672dab551b1c544fe5449c4f8bd29d5c7" + "baseHash": "d2b4ee0540944a25d7acb35759318d352eddfa1f" }, { "type": "derived", "file": "src-win/Libraries/Components/Touchable/TouchableNativeFeedback.windows.js", "baseFile": "packages/react-native/Libraries/Components/Touchable/TouchableNativeFeedback.js", - "baseHash": "5608d67cf2684b855fb32403fea01b8c22c66f3b" + "baseHash": "2ded2efb727d7544aa8a0b249dd3f2502bb57129" }, { "type": "patch", "file": "src-win/Libraries/Components/Touchable/TouchableOpacity.windows.js", "baseFile": "packages/react-native/Libraries/Components/Touchable/TouchableOpacity.js", - "baseHash": "4775a668c5c1c201c2338b7496604b3e5a1c98f9" + "baseHash": "f8c26819c8412926a504084fc64117caf9a40466" }, { "type": "patch", "file": "src-win/Libraries/Components/Touchable/TouchableWithoutFeedback.windows.js", "baseFile": "packages/react-native/Libraries/Components/Touchable/TouchableWithoutFeedback.js", - "baseHash": "f22cce74573326eaf0fa2f9bc06710d407f92706" + "baseHash": "dca4ad0284644ab841356441dd24dfe2671bd22c" }, { "type": "patch", @@ -481,7 +474,7 @@ "type": "patch", "file": "src-win/Libraries/Components/View/View.windows.js", "baseFile": "packages/react-native/Libraries/Components/View/View.js", - "baseHash": "83a4fc8e982845619abb121bb860ad63366260c7" + "baseHash": "60eab5df574b43200494005fc3f00d11576d515b" }, { "type": "derived", @@ -511,7 +504,7 @@ "type": "patch", "file": "src-win/Libraries/Core/Devtools/loadBundleFromServer.windows.js", "baseFile": "packages/react-native/Libraries/Core/Devtools/loadBundleFromServer.js", - "baseHash": "ac08c96a4bebd677597a40ea1525a2d5d1ee8742", + "baseHash": "5177ecc736e9bebd4e798dcc2c6dd19c38b0a937", "issue": 12704 }, { @@ -535,7 +528,7 @@ "type": "patch", "file": "src-win/Libraries/Image/resolveAssetSource.windows.js", "baseFile": "packages/react-native/Libraries/Image/resolveAssetSource.js", - "baseHash": "5d34037f3a870c1380b34041cf9b5439ef066bcb", + "baseHash": "a2554bb81afe4e6f046a971347cd7311d61f8cae", "issue": 10619 }, { @@ -572,7 +565,7 @@ "type": "derived", "file": "src-win/Libraries/Modal/Modal.windows.js", "baseFile": "packages/react-native/Libraries/Modal/Modal.js", - "baseHash": "549f5fae51d934cac370682072151bd071ca7beb" + "baseHash": "e56d191d9bc53a00aec9f8c5f32a34700d1eeb9d" }, { "type": "derived", @@ -590,7 +583,7 @@ "type": "copy", "file": "src-win/Libraries/Network/RCTNetworking.windows.js", "baseFile": "packages/react-native/Libraries/Network/RCTNetworking.ios.js", - "baseHash": "975cb78ed40d162be73144bafcaee9bcd057bd44" + "baseHash": "1c7dcc3e3cf7339c3450e7722b7b0a355266a001" }, { "type": "platform", @@ -607,7 +600,7 @@ "type": "patch", "file": "src-win/Libraries/Pressability/Pressability.windows.js", "baseFile": "packages/react-native/Libraries/Pressability/Pressability.js", - "baseHash": "54f2a508c9378c1d9240ff27a460a8815e2b8ebd", + "baseHash": "a4205b3bea276e65da3ce0aeb6753bc8e7c5ead0", "issue": 4379 }, { @@ -637,7 +630,7 @@ "type": "derived", "file": "src-win/Libraries/Text/Text.windows.js", "baseFile": "packages/react-native/Libraries/Text/Text.js", - "baseHash": "fb6f5390b49eb22085ac1618becde3a5208ba167" + "baseHash": "14367e55fca8889783f7dea94ec2c09205960c3c" }, { "type": "derived", @@ -668,13 +661,13 @@ "type": "derived", "file": "src-win/Libraries/Utilities/Platform.windows.js", "baseFile": "packages/react-native/Libraries/Utilities/Platform.android.js", - "baseHash": "d3c78d9d5e43a65ec67505b84a1f25f1647530c8" + "baseHash": "6497ec623691b34885e226e4d05bc55ba582a135" }, { "type": "derived", "file": "src-win/Libraries/Utilities/PlatformTypes.js", "baseFile": "packages/react-native/Libraries/Utilities/PlatformTypes.js", - "baseHash": "c2f607691db07cf1d43c42d048e8513b5515757b", + "baseHash": "f4859039e2bf991ff60d38308c25456ec752191f", "issue": 14686 }, { @@ -687,7 +680,7 @@ "type": "patch", "file": "src-win/src/private/featureflags/ReactNativeFeatureFlagsBase.js", "baseFile": "packages/react-native/src/private/featureflags/ReactNativeFeatureFlagsBase.js", - "baseHash": "ed87cf338bea97b7b4aba393fcc457900e3c73d9" + "baseHash": "b3f30f3392ed9acd6918007eba024968f372eb95" }, { "type": "patch", diff --git a/vnext/package.json b/vnext/package.json index 50fea7e7393..42e3eba48fd 100644 --- a/vnext/package.json +++ b/vnext/package.json @@ -84,7 +84,7 @@ "just-scripts": "^1.3.3", "prettier": "2.8.8", "react": "19.1.0", - "react-native": "0.81.0-nightly-20250709-6892dde36", + "react-native": "0.82.0-nightly-20250819-25104de5c", "react-native-platform-override": "^1.9.59", "react-refresh": "^0.14.0", "typescript": "5.0.4" diff --git a/vnext/src-win/Libraries/Components/AccessibilityInfo/AccessibilityInfo.windows.js b/vnext/src-win/Libraries/Components/AccessibilityInfo/AccessibilityInfo.windows.js index 1eef24e33a2..29e10c8c057 100644 --- a/vnext/src-win/Libraries/Components/AccessibilityInfo/AccessibilityInfo.windows.js +++ b/vnext/src-win/Libraries/Components/AccessibilityInfo/AccessibilityInfo.windows.js @@ -407,13 +407,13 @@ const AccessibilityInfo = { */ addEventListener>( eventName: K, - // $FlowIssue[incompatible-type] - Flow bug with unions and generics (T128099423) + // $FlowFixMe[incompatible-type] - Flow bug with unions and generics (T128099423) handler: (...AccessibilityEventDefinitions[K]) => void, ): EventSubscription { const deviceEventName = EventNames.get(eventName); return deviceEventName == null ? {remove(): void {}} - : // $FlowFixMe[incompatible-call] + : // $FlowFixMe[incompatible-type] RCTDeviceEventEmitter.addListener(deviceEventName, handler); }, diff --git a/vnext/src-win/Libraries/Components/Button.windows.js b/vnext/src-win/Libraries/Components/Button.windows.js index 52beddb4d57..1cb40e3bc2a 100644 --- a/vnext/src-win/Libraries/Components/Button.windows.js +++ b/vnext/src-win/Libraries/Components/Button.windows.js @@ -408,6 +408,41 @@ const Button: component( importantForAccessibility === 'no' ? 'no-hide-descendants' : importantForAccessibility; +<<<<<<< Upstream + + return ( + + + + {formattedTitle} + + + + ); +======= // [Windows if (Platform.OS === 'windows') { return ( @@ -545,6 +580,7 @@ const Button: component( ); } // Windows] +>>>>>>> Override }; Button.displayName = 'Button'; diff --git a/vnext/src-win/Libraries/Components/Pressable/Pressable.windows.js b/vnext/src-win/Libraries/Components/Pressable/Pressable.windows.js index b5aa60f12af..165088336d3 100644 --- a/vnext/src-win/Libraries/Components/Pressable/Pressable.windows.js +++ b/vnext/src-win/Libraries/Components/Pressable/Pressable.windows.js @@ -122,6 +122,12 @@ type PressableBaseProps = $ReadOnly<{ onPressOut?: ?(event: GestureResponderEvent) => mixed, /** +<<<<<<< Upstream + * Whether to prevent any other native components from becoming responder + * while this pressable is responder. + */ + blockNativeResponder?: ?boolean, +======= * Called after the element loses focus. */ onBlur?: ?(event: BlurEvent) => mixed, @@ -160,6 +166,7 @@ type PressableBaseProps = $ReadOnly<{ * Called in the tunneling phase after a key up event is detected. */ onKeyUpCapture?: ?(event: KeyEvent) => void, +>>>>>>> Override /** * Either view styles or a function that receives a boolean reflecting whether @@ -228,9 +235,13 @@ function Pressable({ 'aria-expanded': ariaExpanded, 'aria-label': ariaLabel, 'aria-selected': ariaSelected, +<<<<<<< Upstream + blockNativeResponder, +======= 'aria-readonly': ariaReadOnly, 'aria-multiselectable': ariaMultiselectable, // Windows 'aria-required': ariaRequired, // Windows +>>>>>>> Override cancelable, children, delayHoverIn, @@ -291,7 +302,7 @@ function Pressable({ }; const accessibilityLiveRegion = - ariaLive === 'off' ? 'none' : ariaLive ?? props.accessibilityLiveRegion; + ariaLive === 'off' ? 'none' : (ariaLive ?? props.accessibilityLiveRegion); const accessibilityLabel = ariaLabel ?? props.accessibilityLabel; const restPropsWithDefaults: React.ElementConfig = { @@ -350,14 +361,19 @@ function Pressable({ onPressOut(event); } }, +<<<<<<< Upstream + blockNativeResponder, +======= // [Windows onKeyDown, onKeyUp, // Windows] +>>>>>>> Override }), [ android_disableSound, android_rippleConfig, + blockNativeResponder, cancelable, delayHoverIn, delayHoverOut, diff --git a/vnext/src-win/Libraries/Components/ScrollView/ScrollView.windows.js b/vnext/src-win/Libraries/Components/ScrollView/ScrollView.windows.js index 2e76546b52e..c8f965f2fd7 100644 --- a/vnext/src-win/Libraries/Components/ScrollView/ScrollView.windows.js +++ b/vnext/src-win/Libraries/Components/ScrollView/ScrollView.windows.js @@ -1169,7 +1169,12 @@ class ScrollView extends React.Component { // they are callable from the ref. // $FlowFixMe[prop-missing] - Known issue with appending custom methods. +<<<<<<< Upstream + // $FlowFixMe[incompatible-type] + // $FlowFixMe[unsafe-object-assign] +======= // $FlowFixMe[unsafe-object-assign] - Using Object.assign to append methods to native instance +>>>>>>> Override const publicInstance: PublicScrollViewInstance = Object.assign( nativeInstance, { @@ -1837,7 +1842,7 @@ class ScrollView extends React.Component { // Note: we should split props.style on the inner and outer props // however, the ScrollView still needs the baseStyle to be scrollable const {outer, inner} = splitLayoutProps(flattenStyle(props.style)); - // $FlowFixMe[incompatible-call] + // $FlowFixMe[incompatible-type] return cloneElement( refreshControl, {style: StyleSheet.compose(baseStyle, outer)}, diff --git a/vnext/src-win/Libraries/Components/Switch/Switch.windows.js b/vnext/src-win/Libraries/Components/Switch/Switch.windows.js index 322934af9a3..7375db8c974 100644 --- a/vnext/src-win/Libraries/Components/Switch/Switch.windows.js +++ b/vnext/src-win/Libraries/Components/Switch/Switch.windows.js @@ -223,7 +223,7 @@ const Switch: component( native.value != null && native.value !== jsValue; if ( shouldUpdateNativeSwitch && - // $FlowIssue[method-unbinding] + // $FlowFixMe[method-unbinding] nativeSwitchRef.current?.setNativeProps != null ) { if (Platform.OS === 'android') { diff --git a/vnext/src-win/Libraries/Components/TextInput/TextInput.windows.js b/vnext/src-win/Libraries/Components/TextInput/TextInput.windows.js index b43352e8a05..86e7b9b9f96 100644 --- a/vnext/src-win/Libraries/Components/TextInput/TextInput.windows.js +++ b/vnext/src-win/Libraries/Components/TextInput/TextInput.windows.js @@ -517,7 +517,7 @@ function InternalTextInput(props: TextInputProps): React.Node { [mostRecentEventCount, viewCommands], ); - // $FlowExpectedError[incompatible-call] + // $FlowExpectedError[incompatible-type] const ref = useMergeRefs(setLocalRef, props.forwardedRef); const _onChange = (event: TextInputChangeEvent) => { @@ -734,6 +734,9 @@ function InternalTextInput(props: TextInputProps): React.Node { const _accessibilityPosInSet = ariaPosinset ?? accessibilityPosInSet; // Windows const _accessibilitySetSize = ariaSetsize ?? accessibilitySetSize; // Windows + const _accessibilityLabel = + props?.['aria-label'] ?? props?.accessibilityLabel; + let _accessibilityState; if ( accessibilityState != null || @@ -767,7 +770,7 @@ function InternalTextInput(props: TextInputProps): React.Node { if (typeof flattenedStyle?.fontWeight === 'number') { overrides = overrides || ({}: {...TextStyleInternal}); overrides.fontWeight = - // $FlowFixMe[incompatible-cast] + // $FlowFixMe[incompatible-type] (flattenedStyle.fontWeight.toString(): TextStyleInternal['fontWeight']); } @@ -804,7 +807,11 @@ function InternalTextInput(props: TextInputProps): React.Node { {...otherProps} {...eventHandlers} acceptDragAndDropTypes={props.experimental_acceptDragAndDropTypes} +<<<<<<< Upstream + accessibilityLabel={_accessibilityLabel} +======= accessibilityErrorMessage={accessibilityErrorMessage} +>>>>>>> Override accessibilityState={_accessibilityState} accessible={accessible} submitBehavior={submitBehavior} @@ -868,9 +875,14 @@ function InternalTextInput(props: TextInputProps): React.Node { {...otherProps} {...colorProps} {...eventHandlers} +<<<<<<< Upstream + accessibilityLabel={_accessibilityLabel} +======= accessibilityErrorMessage={accessibilityErrorMessage} accessibilityState={_accessibilityState} +>>>>>>> Override accessibilityLabelledBy={_accessibilityLabelledBy} + accessibilityState={_accessibilityState} accessible={accessible} acceptDragAndDropTypes={props.experimental_acceptDragAndDropTypes} autoCapitalize={autoCapitalize} @@ -888,7 +900,7 @@ function InternalTextInput(props: TextInputProps): React.Node { /* $FlowFixMe[prop-missing] the types for AndroidTextInput don't match * up exactly with the props for TextInput. This will need to get fixed */ - /* $FlowFixMe[incompatible-type-arg] the types for AndroidTextInput + /* $FlowFixMe[incompatible-type] the types for AndroidTextInput * don't match up exactly with the props for TextInput. This will need * to get fixed */ onScroll={_onScroll} @@ -1086,9 +1098,16 @@ const TextInput: component( } autoComplete={ Platform.OS === 'android' +<<<<<<< Upstream + ? // $FlowFixMe[invalid-computed-prop] + // $FlowFixMe[prop-missing] + (autoCompleteWebToAutoCompleteAndroidMap[autoComplete] ?? + autoComplete) +======= ? // $FlowFixMe autoCompleteWebToAutoCompleteAndroidMap[autoComplete] ?? autoComplete +>>>>>>> Override : undefined } textContentType={ diff --git a/vnext/src-win/Libraries/Components/Touchable/TouchableBounce.windows.js b/vnext/src-win/Libraries/Components/Touchable/TouchableBounce.windows.js index b2ba024078f..d99d7b41886 100644 --- a/vnext/src-win/Libraries/Components/Touchable/TouchableBounce.windows.js +++ b/vnext/src-win/Libraries/Components/Touchable/TouchableBounce.windows.js @@ -138,7 +138,7 @@ class TouchableBounce extends React.Component< const accessibilityLiveRegion = this.props['aria-live'] === 'off' ? 'none' - : this.props['aria-live'] ?? this.props.accessibilityLiveRegion; + : (this.props['aria-live'] ?? this.props.accessibilityLiveRegion); const _accessibilityState = { busy: this.props['aria-busy'] ?? this.props.accessibilityState?.busy, checked: diff --git a/vnext/src-win/Libraries/Components/Touchable/TouchableHighlight.windows.js b/vnext/src-win/Libraries/Components/Touchable/TouchableHighlight.windows.js index 420b30258b7..07067516279 100644 --- a/vnext/src-win/Libraries/Components/Touchable/TouchableHighlight.windows.js +++ b/vnext/src-win/Libraries/Components/Touchable/TouchableHighlight.windows.js @@ -345,7 +345,7 @@ class TouchableHighlightImpl extends React.Component< const accessibilityLiveRegion = this.props['aria-live'] === 'off' ? 'none' - : this.props['aria-live'] ?? this.props.accessibilityLiveRegion; + : (this.props['aria-live'] ?? this.props.accessibilityLiveRegion); const accessibilityLabel = this.props['aria-label'] ?? this.props.accessibilityLabel; diff --git a/vnext/src-win/Libraries/Components/Touchable/TouchableNativeFeedback.windows.js b/vnext/src-win/Libraries/Components/Touchable/TouchableNativeFeedback.windows.js index b7ff67e9552..86c2a0a7ec6 100644 --- a/vnext/src-win/Libraries/Components/Touchable/TouchableNativeFeedback.windows.js +++ b/vnext/src-win/Libraries/Components/Touchable/TouchableNativeFeedback.windows.js @@ -339,7 +339,7 @@ class TouchableNativeFeedback extends React.Component< const accessibilityLiveRegion = this.props['aria-live'] === 'off' ? 'none' - : this.props['aria-live'] ?? this.props.accessibilityLiveRegion; + : (this.props['aria-live'] ?? this.props.accessibilityLiveRegion); const accessibilityLabel = this.props['aria-label'] ?? this.props.accessibilityLabel; diff --git a/vnext/src-win/Libraries/Components/Touchable/TouchableOpacity.windows.js b/vnext/src-win/Libraries/Components/Touchable/TouchableOpacity.windows.js index 7939790580d..fd43d571651 100644 --- a/vnext/src-win/Libraries/Components/Touchable/TouchableOpacity.windows.js +++ b/vnext/src-win/Libraries/Components/Touchable/TouchableOpacity.windows.js @@ -308,7 +308,7 @@ class TouchableOpacity extends React.Component< const accessibilityLiveRegion = this.props['aria-live'] === 'off' ? 'none' - : this.props['aria-live'] ?? this.props.accessibilityLiveRegion; + : (this.props['aria-live'] ?? this.props.accessibilityLiveRegion); const accessibilityLabel = this.props['aria-label'] ?? this.props.accessibilityLabel; diff --git a/vnext/src-win/Libraries/Components/Touchable/TouchableWithoutFeedback.windows.js b/vnext/src-win/Libraries/Components/Touchable/TouchableWithoutFeedback.windows.js index 116faa16f63..f2e80398586 100644 --- a/vnext/src-win/Libraries/Components/Touchable/TouchableWithoutFeedback.windows.js +++ b/vnext/src-win/Libraries/Components/Touchable/TouchableWithoutFeedback.windows.js @@ -220,7 +220,7 @@ const TouchableWithoutFeedback: React.AbstractComponent< disabled: disabled !== null ? disabled - : ariaDisabled ?? accessibilityState?.disabled, + : (ariaDisabled ?? accessibilityState?.disabled), hitSlop: hitSlop, delayLongPress: delayLongPress, delayPressIn: delayPressIn, @@ -312,7 +312,7 @@ const TouchableWithoutFeedback: React.AbstractComponent< ? 'no-hide-descendants' : props.importantForAccessibility, accessibilityLiveRegion: - ariaLive === 'off' ? 'none' : ariaLive ?? props.accessibilityLiveRegion, + ariaLive === 'off' ? 'none' : (ariaLive ?? props.accessibilityLiveRegion), nativeID: props.id ?? props.nativeID, }; @@ -322,9 +322,15 @@ const TouchableWithoutFeedback: React.AbstractComponent< } } +<<<<<<< Upstream + // $FlowFixMe[incompatible-type] + return cloneElement(element, elementProps, ...children); +} +======= // $FlowFixMe[incompatible-call] return cloneElement(element, {...elementProps, ref}, ...children); }); export default TouchableWithoutFeedback; // Windows] +>>>>>>> Override diff --git a/vnext/src-win/Libraries/Components/View/View.windows.js b/vnext/src-win/Libraries/Components/View/View.windows.js index 4330b6603d8..31b8760524b 100644 --- a/vnext/src-win/Libraries/Components/View/View.windows.js +++ b/vnext/src-win/Libraries/Components/View/View.windows.js @@ -10,8 +10,12 @@ import type {ViewProps} from './ViewPropTypes'; +<<<<<<< Upstream +import TextAncestorContext from '../../Text/TextAncestorContext'; +======= import * as ReactNativeFeatureFlags from '../../../src/private/featureflags/ReactNativeFeatureFlags'; import TextAncestor from '../../Text/TextAncestor'; +>>>>>>> Override import ViewNativeComponent from './ViewNativeComponent'; import * as React from 'react'; import {use} from 'react'; @@ -64,7 +68,7 @@ const childrenWithImportantForAccessibility = children => { * * @see https://reactnative.dev/docs/view */ -export default component View( +component View( ref?: React.RefSetter>, ...props: ViewProps ) { @@ -266,6 +270,36 @@ export default component View( ? 'no-hide-descendants' : importantForAccessibility; +<<<<<<< Upstream + const { + accessibilityState, + accessibilityValue, + 'aria-busy': ariaBusy, + 'aria-checked': ariaChecked, + 'aria-disabled': ariaDisabled, + 'aria-expanded': ariaExpanded, + 'aria-hidden': ariaHidden, + 'aria-label': ariaLabel, + 'aria-labelledby': ariaLabelledBy, + 'aria-live': ariaLive, + 'aria-selected': ariaSelected, + 'aria-valuemax': ariaValueMax, + 'aria-valuemin': ariaValueMin, + 'aria-valuenow': ariaValueNow, + 'aria-valuetext': ariaValueText, + id, + tabIndex, + ...otherProps + } = props; + + // Since we destructured props, we can now treat it as mutable + const processedProps = otherProps as {...ViewProps}; + + const parsedAriaLabelledBy = ariaLabelledBy?.split(/\s*,\s*/g); + if (parsedAriaLabelledBy !== undefined) { + processedProps.accessibilityLabelledBy = parsedAriaLabelledBy; + } +======= let actualView; if (ReactNativeFeatureFlags.reduceDefaultPropsInView()) { //Destructured props at function scope, just create processedProps @@ -275,23 +309,29 @@ export default component View( if (parsedAriaLabelledBy !== undefined) { processedProps.accessibilityLabelledBy = parsedAriaLabelledBy; } +>>>>>>> Override - if (ariaLabel !== undefined) { - processedProps.accessibilityLabel = ariaLabel; - } + if (ariaLabel !== undefined) { + processedProps.accessibilityLabel = ariaLabel; + } - if (ariaLive !== undefined) { - processedProps.accessibilityLiveRegion = - ariaLive === 'off' ? 'none' : ariaLive; - } + if (ariaLive !== undefined) { + processedProps.accessibilityLiveRegion = + ariaLive === 'off' ? 'none' : ariaLive; + } - if (ariaHidden !== undefined) { - processedProps.accessibilityElementsHidden = ariaHidden; - if (ariaHidden === true) { - processedProps.importantForAccessibility = 'no-hide-descendants'; - } + if (ariaHidden !== undefined) { + processedProps.accessibilityElementsHidden = ariaHidden; + if (ariaHidden === true) { + processedProps.importantForAccessibility = 'no-hide-descendants'; } + } +<<<<<<< Upstream + if (id !== undefined) { + processedProps.nativeID = id; + } +======= // Windows accessibility properties if (ariaLevel !== undefined) { processedProps.accessibilityLevel = ariaLevel; @@ -340,11 +380,30 @@ export default component View( if (id !== undefined) { processedProps.nativeID = id; } +>>>>>>> Override - if (tabIndex !== undefined) { - processedProps.focusable = !tabIndex; - } + if (tabIndex !== undefined) { + processedProps.focusable = !tabIndex; + } +<<<<<<< Upstream + if ( + accessibilityState != null || + ariaBusy != null || + ariaChecked != null || + ariaDisabled != null || + ariaExpanded != null || + ariaSelected != null + ) { + processedProps.accessibilityState = { + busy: ariaBusy ?? accessibilityState?.busy, + checked: ariaChecked ?? accessibilityState?.checked, + disabled: ariaDisabled ?? accessibilityState?.disabled, + expanded: ariaExpanded ?? accessibilityState?.expanded, + selected: ariaSelected ?? accessibilityState?.selected, + }; + } +======= if ( accessibilityState != null || ariaBusy != null || @@ -368,22 +427,30 @@ export default component View( required: ariaRequired ?? accessibilityState?.required, // Windows }; } +>>>>>>> Override - if ( - accessibilityValue != null || - ariaValueMax != null || - ariaValueMin != null || - ariaValueNow != null || - ariaValueText != null - ) { - processedProps.accessibilityValue = { - max: ariaValueMax ?? accessibilityValue?.max, - min: ariaValueMin ?? accessibilityValue?.min, - now: ariaValueNow ?? accessibilityValue?.now, - text: ariaValueText ?? accessibilityValue?.text, - }; - } + if ( + accessibilityValue != null || + ariaValueMax != null || + ariaValueMin != null || + ariaValueNow != null || + ariaValueText != null + ) { + processedProps.accessibilityValue = { + max: ariaValueMax ?? accessibilityValue?.max, + min: ariaValueMin ?? accessibilityValue?.min, + now: ariaValueNow ?? accessibilityValue?.now, + text: ariaValueText ?? accessibilityValue?.text, + }; + } +<<<<<<< Upstream + const actualView = + ref == null ? ( + + ) : ( + +======= // [Windows key event processing and accessible property if (otherProps.keyDownEvents || otherProps.onKeyDown) { processedProps.onKeyDown = event => { @@ -511,8 +578,8 @@ export default component View( children={otherProps.children} // Windows] /> +>>>>>>> Override ); - } // [Windows - Paper doesn't support Views in Text while Fabric does if (global.RN$Bridgeless !== true) { @@ -583,3 +650,7 @@ export default component View( return actualView; } + +View.displayName = 'View'; + +export default View; diff --git a/vnext/src-win/Libraries/Core/Devtools/loadBundleFromServer.windows.js b/vnext/src-win/Libraries/Core/Devtools/loadBundleFromServer.windows.js index 4c8e5e57006..99ac2a59124 100644 --- a/vnext/src-win/Libraries/Core/Devtools/loadBundleFromServer.windows.js +++ b/vnext/src-win/Libraries/Core/Devtools/loadBundleFromServer.windows.js @@ -103,7 +103,7 @@ function asyncRequest( ), ); } else { - //$FlowFixMe[incompatible-call] + //$FlowFixMe[incompatible-type] resolve({body: responseText, headers}); } } diff --git a/vnext/src-win/Libraries/Image/resolveAssetSource.windows.js b/vnext/src-win/Libraries/Image/resolveAssetSource.windows.js index 070b1398a04..6dd3be6d444 100644 --- a/vnext/src-win/Libraries/Image/resolveAssetSource.windows.js +++ b/vnext/src-win/Libraries/Image/resolveAssetSource.windows.js @@ -116,7 +116,7 @@ function addCustomSourceTransformer( function resolveAssetSource(source: ?ImageSource): ?ResolvedAssetSource { if (source == null || typeof source === 'object') { // $FlowFixMe[incompatible-exact] `source` doesn't exactly match `ResolvedAssetSource` - // $FlowFixMe[incompatible-return] `source` doesn't exactly match `ResolvedAssetSource` + // $FlowFixMe[incompatible-type] `source` doesn't exactly match `ResolvedAssetSource` return source; } diff --git a/vnext/src-win/Libraries/Modal/Modal.windows.js b/vnext/src-win/Libraries/Modal/Modal.windows.js index 9ef3b9f83d1..b24de508339 100644 --- a/vnext/src-win/Libraries/Modal/Modal.windows.js +++ b/vnext/src-win/Libraries/Modal/Modal.windows.js @@ -301,7 +301,7 @@ class Modal extends React.Component { backgroundColor: this.props.transparent === true ? 'transparent' - : this.props.backdropColor ?? 'white', + : (this.props.backdropColor ?? 'white'), }; let animationType = this.props.animationType || 'none'; @@ -384,13 +384,13 @@ const styles = StyleSheet.create({ modal: { position: 'absolute', }, - /* $FlowFixMe[incompatible-call] Natural Inference rollout. See + /* $FlowFixMe[incompatible-type] Natural Inference rollout. See * https://fburl.com/workplace/6291gfvu */ container: { /* $FlowFixMe[invalid-computed-prop] (>=0.111.0 site=react_native_fb) This * comment suppresses an error found when Flow v0.111 was deployed. To see * the error, delete this comment and run Flow. */ - // $FlowFixMe[incompatible-call] + // $FlowFixMe[incompatible-type] [side]: 0, top: 0, flex: 1, diff --git a/vnext/src-win/Libraries/Network/RCTNetworking.windows.js b/vnext/src-win/Libraries/Network/RCTNetworking.windows.js index dcabadec9fd..ee9364e5b50 100644 --- a/vnext/src-win/Libraries/Network/RCTNetworking.windows.js +++ b/vnext/src-win/Libraries/Network/RCTNetworking.windows.js @@ -23,7 +23,7 @@ const RCTNetworking = { listener: (...RCTNetworkingEventDefinitions[K]) => mixed, context?: mixed, ): EventSubscription { - // $FlowFixMe[incompatible-call] + // $FlowFixMe[incompatible-type] return RCTDeviceEventEmitter.addListener(eventType, listener, context); }, diff --git a/vnext/src-win/Libraries/Pressability/Pressability.windows.js b/vnext/src-win/Libraries/Pressability/Pressability.windows.js index c85cc421952..71718c27f9b 100644 --- a/vnext/src-win/Libraries/Pressability/Pressability.windows.js +++ b/vnext/src-win/Libraries/Pressability/Pressability.windows.js @@ -17,8 +17,8 @@ import type { KeyEvent, // [Windows] } from '../Types/CoreEventTypes'; +import * as ReactNativeFeatureFlags from '../../src/private/featureflags/ReactNativeFeatureFlags'; import SoundManager from '../Components/Sound/SoundManager'; -import ReactNativeFeatureFlags from '../ReactNative/ReactNativeFeatureFlags'; import UIManager from '../ReactNative/UIManager'; import {type RectOrSize, normalizeRect} from '../StyleSheet/Rect'; import {type PointerEvent} from '../Types/CoreEventTypes'; diff --git a/vnext/src-win/Libraries/Text/Text.windows.js b/vnext/src-win/Libraries/Text/Text.windows.js index 401cee9e4e4..6df37c663c0 100644 --- a/vnext/src-win/Libraries/Text/Text.windows.js +++ b/vnext/src-win/Libraries/Text/Text.windows.js @@ -14,6 +14,7 @@ import type {GestureResponderEvent} from '../Types/CoreEventTypes'; import type {NativeTextProps} from './TextNativeComponent'; import type {PressRetentionOffset, TextProps} from './TextProps'; +import * as ReactNativeFeatureFlags from '../../src/private/featureflags/ReactNativeFeatureFlags'; import * as PressabilityDebug from '../Pressability/PressabilityDebug'; import usePressability from '../Pressability/usePressability'; import flattenStyle from '../StyleSheet/flattenStyle'; @@ -38,6 +39,204 @@ type TextForwardRef = React.ElementRef< * * @see https://reactnative.dev/docs/text */ +<<<<<<< Upstream +let _TextImpl; +if (ReactNativeFeatureFlags.reduceDefaultPropsInText()) { + const TextImplNoDefaultProps: component( + ref?: React.RefSetter, + ...props: TextProps + ) = ({ + ref: forwardedRef, + accessible, + accessibilityLabel, + accessibilityState, + allowFontScaling, + 'aria-busy': ariaBusy, + 'aria-checked': ariaChecked, + 'aria-disabled': ariaDisabled, + 'aria-expanded': ariaExpanded, + 'aria-label': ariaLabel, + 'aria-selected': ariaSelected, + children, + ellipsizeMode, + disabled, + id, + nativeID, + numberOfLines, + onLongPress, + onPress, + onPressIn, + onPressOut, + onResponderGrant, + onResponderMove, + onResponderRelease, + onResponderTerminate, + onResponderTerminationRequest, + onStartShouldSetResponder, + pressRetentionOffset, + selectable, + selectionColor, + suppressHighlighting, + style, + ...restProps + }: { + ref?: React.RefSetter, + ...TextProps, + }) => { + const processedProps = restProps as { + ...NativeTextProps, + }; + const _accessibilityLabel = ariaLabel ?? accessibilityLabel; + let _accessibilityState: ?TextProps['accessibilityState'] = + accessibilityState; + if ( + ariaBusy != null || + ariaChecked != null || + ariaDisabled != null || + ariaExpanded != null || + ariaSelected != null + ) { + if (_accessibilityState != null) { + _accessibilityState = { + busy: ariaBusy ?? _accessibilityState.busy, + checked: ariaChecked ?? _accessibilityState.checked, + disabled: ariaDisabled ?? _accessibilityState.disabled, + expanded: ariaExpanded ?? _accessibilityState.expanded, + selected: ariaSelected ?? _accessibilityState.selected, + }; + } else { + _accessibilityState = { + busy: ariaBusy, + checked: ariaChecked, + disabled: ariaDisabled, + expanded: ariaExpanded, + selected: ariaSelected, + }; + } + } + + const _accessibilityStateDisabled = _accessibilityState?.disabled; + const _disabled = disabled ?? _accessibilityStateDisabled; + + // If the disabled prop and accessibilityState.disabled are out of sync but not both in + // falsy states we need to update the accessibilityState object to use the disabled prop. + if ( + _accessibilityState != null && + _disabled !== _accessibilityStateDisabled && + ((_disabled != null && _disabled !== false) || + (_accessibilityStateDisabled != null && + _accessibilityStateDisabled !== false)) + ) { + _accessibilityState.disabled = _disabled; + } + + const _accessible = Platform.select({ + ios: accessible !== false, + android: + accessible == null + ? onPress != null || onLongPress != null + : accessible, + default: accessible, + }); + + const isPressable = + (onPress != null || + onLongPress != null || + onStartShouldSetResponder != null) && + _disabled !== true; + + // TODO: Move this processing to the view configuration. + const _selectionColor = + selectionColor != null ? processColor(selectionColor) : undefined; + + let _style = style; + if (__DEV__) { + if (PressabilityDebug.isEnabled() && onPress != null) { + _style = [style, {color: 'magenta'}]; + } + } + + let _numberOfLines = numberOfLines; + if (_numberOfLines != null && !(_numberOfLines >= 0)) { + if (__DEV__) { + console.error( + `'numberOfLines' in must be a non-negative number, received: ${_numberOfLines}. The value will be set to 0.`, + ); + } + _numberOfLines = 0; + } + + let _selectable = selectable; + + let processedStyle = flattenStyle(_style); + if (processedStyle != null) { + let overrides: ?{...TextStyleInternal} = null; + if (typeof processedStyle.fontWeight === 'number') { + overrides = overrides || ({}: {...TextStyleInternal}); + overrides.fontWeight = + // $FlowFixMe[incompatible-type] + (String(processedStyle.fontWeight): TextStyleInternal['fontWeight']); + } + + if (processedStyle.userSelect != null) { + _selectable = userSelectToSelectableMap[processedStyle.userSelect]; + overrides = overrides || ({}: {...TextStyleInternal}); + overrides.userSelect = undefined; + } + + if (processedStyle.verticalAlign != null) { + overrides = overrides || ({}: {...TextStyleInternal}); + overrides.textAlignVertical = + verticalAlignToTextAlignVerticalMap[processedStyle.verticalAlign]; + overrides.verticalAlign = undefined; + } + + if (overrides != null) { + // $FlowFixMe[incompatible-type] + _style = [_style, overrides]; + } + } + + const _nativeID = id ?? nativeID; + + if (_accessibilityLabel !== undefined) { + processedProps.accessibilityLabel = _accessibilityLabel; + } + if (_accessibilityState !== undefined) { + processedProps.accessibilityState = _accessibilityState; + } + if (_nativeID !== undefined) { + processedProps.nativeID = _nativeID; + } + if (_numberOfLines !== undefined) { + processedProps.numberOfLines = _numberOfLines; + } + if (_selectable !== undefined) { + processedProps.selectable = _selectable; + } + if (_style !== undefined) { + processedProps.style = _style; + } + if (_selectionColor !== undefined) { + processedProps.selectionColor = _selectionColor; + } + + let textPressabilityProps: ?TextPressabilityProps; + if (isPressable) { + textPressabilityProps = { + onLongPress, + onPress, + onPressIn, + onPressOut, + onResponderGrant, + onResponderMove, + onResponderRelease, + onResponderTerminate, + onResponderTerminationRequest, + onStartShouldSetResponder, + pressRetentionOffset, + suppressHighlighting, +======= const TextImpl: component( ref?: React.RefSetter, ...props: TextProps @@ -127,93 +326,312 @@ const TextImpl: component( readOnly: ariaReadOnly, // Windows multiselectable: ariaMultiselectable, // Windows required: ariaRequired, // Windows +>>>>>>> Override }; } - } - const _accessibilityStateDisabled = _accessibilityState?.disabled; - const _disabled = disabled ?? _accessibilityStateDisabled; + const hasTextAncestor = useContext(TextAncestorContext); + if (hasTextAncestor) { + processedProps.disabled = disabled; + processedProps.children = children; + if (isPressable) { + return ( + + ); + } + return ; + } - const isPressable = - (onPress != null || - onLongPress != null || - onStartShouldSetResponder != null) && - _disabled !== true; + let nativeText = null; - // TODO: Move this processing to the view configuration. - const _selectionColor = - selectionColor != null ? processColor(selectionColor) : undefined; + processedProps.accessible = _accessible; + processedProps.allowFontScaling = allowFontScaling !== false; + processedProps.disabled = _disabled; + processedProps.ellipsizeMode = ellipsizeMode ?? 'tail'; + processedProps.children = children; - let _style = style; - if (__DEV__) { - if (PressabilityDebug.isEnabled() && onPress != null) { - _style = [style, {color: 'magenta'}]; + if (isPressable) { + nativeText = ( + + ); + } else { + nativeText = ; } - } - let _numberOfLines = numberOfLines; - if (_numberOfLines != null && !(_numberOfLines >= 0)) { - if (__DEV__) { - console.error( - `'numberOfLines' in must be a non-negative number, received: ${_numberOfLines}. The value will be set to 0.`, - ); + if (children == null) { + return nativeText; + } + + // If the children do not contain a JSX element it would not be possible to have a + // nested `Text` component so we can skip adding the `TextAncestorContext` context wrapper + // which has a performance overhead. Since we do this for performance reasons we need + // to keep the check simple to avoid regressing overall perf. For this reason the + // `children.length` constant is set to `3`, this should be a reasonable tradeoff + // to capture the majority of `Text` uses but also not make this check too expensive. + if (Array.isArray(children) && children.length <= 3) { + let hasNonTextChild = false; + for (let child of children) { + if (child != null && typeof child === 'object') { + hasNonTextChild = true; + break; + } + } + if (!hasNonTextChild) { + return nativeText; + } + } else if (typeof children !== 'object') { + return nativeText; } - _numberOfLines = 0; - } - let _selectable = selectable; + return {nativeText}; + }; + _TextImpl = TextImplNoDefaultProps; +} else { + const TextImplLegacy: component( + ref?: React.RefSetter, + ...props: TextProps + ) = ({ + ref: forwardedRef, + accessible, + accessibilityLabel, + accessibilityState, + allowFontScaling, + 'aria-busy': ariaBusy, + 'aria-checked': ariaChecked, + 'aria-disabled': ariaDisabled, + 'aria-expanded': ariaExpanded, + 'aria-label': ariaLabel, + 'aria-selected': ariaSelected, + children, + ellipsizeMode, + disabled, + id, + nativeID, + numberOfLines, + onLongPress, + onPress, + onPressIn, + onPressOut, + onResponderGrant, + onResponderMove, + onResponderRelease, + onResponderTerminate, + onResponderTerminationRequest, + onStartShouldSetResponder, + pressRetentionOffset, + selectable, + selectionColor, + suppressHighlighting, + style, + ...restProps + }: { + ref?: React.RefSetter, + ...TextProps, + }) => { + const _accessibilityLabel = ariaLabel ?? accessibilityLabel; - let processedStyle = flattenStyle(_style); - if (processedStyle != null) { - let overrides: ?{...TextStyleInternal} = null; - if (typeof processedStyle.fontWeight === 'number') { - overrides = overrides || ({}: {...TextStyleInternal}); - overrides.fontWeight = - // $FlowFixMe[incompatible-cast] - (processedStyle.fontWeight.toString(): TextStyleInternal['fontWeight']); + let _accessibilityState: ?TextProps['accessibilityState'] = + accessibilityState; + if ( + ariaBusy != null || + ariaChecked != null || + ariaDisabled != null || + ariaExpanded != null || + ariaSelected != null + ) { + if (_accessibilityState != null) { + _accessibilityState = { + busy: ariaBusy ?? _accessibilityState.busy, + checked: ariaChecked ?? _accessibilityState.checked, + disabled: ariaDisabled ?? _accessibilityState.disabled, + expanded: ariaExpanded ?? _accessibilityState.expanded, + selected: ariaSelected ?? _accessibilityState.selected, + }; + } else { + _accessibilityState = { + busy: ariaBusy, + checked: ariaChecked, + disabled: ariaDisabled, + expanded: ariaExpanded, + selected: ariaSelected, + }; + } } - if (processedStyle.userSelect != null) { - _selectable = userSelectToSelectableMap[processedStyle.userSelect]; - overrides = overrides || ({}: {...TextStyleInternal}); - overrides.userSelect = undefined; + const _accessibilityStateDisabled = _accessibilityState?.disabled; + const _disabled = disabled ?? _accessibilityStateDisabled; + + const isPressable = + (onPress != null || + onLongPress != null || + onStartShouldSetResponder != null) && + _disabled !== true; + + // TODO: Move this processing to the view configuration. + const _selectionColor = + selectionColor != null ? processColor(selectionColor) : undefined; + + let _style = style; + if (__DEV__) { + if (PressabilityDebug.isEnabled() && onPress != null) { + _style = [style, {color: 'magenta'}]; + } + } + + let _numberOfLines = numberOfLines; + if (_numberOfLines != null && !(_numberOfLines >= 0)) { + if (__DEV__) { + console.error( + `'numberOfLines' in must be a non-negative number, received: ${_numberOfLines}. The value will be set to 0.`, + ); + } + _numberOfLines = 0; + } + + let _selectable = selectable; + + let processedStyle = flattenStyle(_style); + if (processedStyle != null) { + let overrides: ?{...TextStyleInternal} = null; + if (typeof processedStyle.fontWeight === 'number') { + overrides = overrides || ({}: {...TextStyleInternal}); + overrides.fontWeight = + // $FlowFixMe[incompatible-type] + (processedStyle.fontWeight.toString(): TextStyleInternal['fontWeight']); + } + + if (processedStyle.userSelect != null) { + _selectable = userSelectToSelectableMap[processedStyle.userSelect]; + overrides = overrides || ({}: {...TextStyleInternal}); + overrides.userSelect = undefined; + } + + if (processedStyle.verticalAlign != null) { + overrides = overrides || ({}: {...TextStyleInternal}); + overrides.textAlignVertical = + verticalAlignToTextAlignVerticalMap[processedStyle.verticalAlign]; + overrides.verticalAlign = undefined; + } + + if (overrides != null) { + // $FlowFixMe[incompatible-type] + _style = [_style, overrides]; + } } - if (processedStyle.verticalAlign != null) { - overrides = overrides || ({}: {...TextStyleInternal}); - overrides.textAlignVertical = - verticalAlignToTextAlignVerticalMap[processedStyle.verticalAlign]; - overrides.verticalAlign = undefined; + const _nativeID = id ?? nativeID; + + const hasTextAncestor = useContext(TextAncestorContext); + if (hasTextAncestor) { + if (isPressable) { + return ( + + ); + } + + return ( + + {children} + + ); } - if (overrides != null) { - // $FlowFixMe[incompatible-type] - _style = [_style, overrides]; + // If the disabled prop and accessibilityState.disabled are out of sync but not both in + // falsy states we need to update the accessibilityState object to use the disabled prop. + if ( + _disabled !== _accessibilityStateDisabled && + ((_disabled != null && _disabled !== false) || + (_accessibilityStateDisabled != null && + _accessibilityStateDisabled !== false)) + ) { + _accessibilityState = {..._accessibilityState, disabled: _disabled}; } - } - const _nativeID = id ?? nativeID; + const _accessible = Platform.select({ + ios: accessible !== false, + android: + accessible == null + ? onPress != null || onLongPress != null + : accessible, + default: accessible, + }); +<<<<<<< Upstream + let nativeText = null; +======= const hasTextAncestor = useContext(TextAncestor); if (hasTextAncestor) { +>>>>>>> Override if (isPressable) { - return ( - >>>>>> Override nativeID: _nativeID, numberOfLines: _numberOfLines, selectable: _selectable, selectionColor: _selectionColor, style: _style, - disabled: disabled, children, }} textPressabilityProps={{ @@ -232,8 +650,31 @@ const TextImpl: component( }} /> ); + } else { + nativeText = ( + + {children} + + ); } +<<<<<<< Upstream + if (children == null) { + return nativeText; +======= return ( >>>>>> Override } - if (!hasNonTextChild) { + + // If the children do not contain a JSX element it would not be possible to have a + // nested `Text` component so we can skip adding the `TextAncestorContext` context wrapper + // which has a performance overhead. Since we do this for performance reasons we need + // to keep the check simple to avoid regressing overall perf. For this reason the + // `children.length` constant is set to `3`, this should be a reasonable tradeoff + // to capture the majority of `Text` uses but also not make this check too expensive. + if (Array.isArray(children) && children.length <= 3) { + let hasNonTextChild = false; + for (let child of children) { + if (child != null && typeof child === 'object') { + hasNonTextChild = true; + break; + } + } + if (!hasNonTextChild) { + return nativeText; + } + } else if (typeof children !== 'object') { return nativeText; } - } else if (typeof children !== 'object') { - return nativeText; - } +<<<<<<< Upstream + return {nativeText}; + }; + _TextImpl = TextImplLegacy; +} + +const TextImpl: component( + ref?: React.RefSetter, + ...props: TextProps +) = _TextImpl; +======= return ( {nativeText} ); }; +>>>>>>> Override TextImpl.displayName = 'Text'; diff --git a/vnext/src-win/Libraries/Utilities/Platform.windows.js b/vnext/src-win/Libraries/Utilities/Platform.windows.js index 445a203c4f8..e4f6c42cc02 100644 --- a/vnext/src-win/Libraries/Utilities/Platform.windows.js +++ b/vnext/src-win/Libraries/Utilities/Platform.windows.js @@ -63,13 +63,19 @@ const Platform: PlatformType = { return false; }, select: (spec: PlatformSelectSpec): T => +<<<<<<< Upstream + 'android' in spec + ? // $FlowFixMe[incompatible-type] + spec.android +======= 'windows' in spec ? // $FlowFixMe[incompatible-return] spec.windows +>>>>>>> Override : 'native' in spec - ? // $FlowFixMe[incompatible-return] + ? // $FlowFixMe[incompatible-type] spec.native - : // $FlowFixMe[incompatible-return] + : // $FlowFixMe[incompatible-type] spec.default, }; diff --git a/vnext/src-win/Libraries/Utilities/PlatformTypes.js b/vnext/src-win/Libraries/Utilities/PlatformTypes.js index 824ac6ddc04..add80d374f4 100644 --- a/vnext/src-win/Libraries/Utilities/PlatformTypes.js +++ b/vnext/src-win/Libraries/Utilities/PlatformTypes.js @@ -159,7 +159,7 @@ type MacOSPlatform = { type WebPlatform = { OS: 'web', // $FlowFixMe[unsafe-getters-setters] - get Version(): void, + get Version(): string, // $FlowFixMe[unsafe-getters-setters] get constants(): { reactNativeVersion: { diff --git a/vnext/src-win/index.windows.js b/vnext/src-win/index.windows.js index 2c0a5342941..bf672758862 100644 --- a/vnext/src-win/index.windows.js +++ b/vnext/src-win/index.windows.js @@ -173,14 +173,14 @@ module.exports = { /** * @deprecated SafeAreaView has been deprecated and will be removed in a future release. * Please use 'react-native-safe-area-context' instead. - * See https://github.com/th3rdwave/react-native-safe-area-context + * See https://github.com/AppAndFlow/react-native-safe-area-context */ get SafeAreaView(): SafeAreaView { warnOnce( 'safe-area-view-deprecated', 'SafeAreaView has been deprecated and will be removed in a future release. ' + "Please use 'react-native-safe-area-context' instead. " + - 'See https://github.com/th3rdwave/react-native-safe-area-context', + 'See https://github.com/AppAndFlow/react-native-safe-area-context', ); return require('./Libraries/Components/SafeAreaView/SafeAreaView').default; }, @@ -319,7 +319,14 @@ module.exports = { get NativeAppEventEmitter(): RCTNativeAppEventEmitter { return require('./Libraries/EventEmitter/RCTNativeAppEventEmitter').default; }, +<<<<<<< Upstream + get NativeComponentRegistry() { + return require('./Libraries/NativeComponent/NativeComponentRegistry'); + }, + get NativeDialogManagerAndroid() { +======= get NativeDialogManagerAndroid(): NativeDialogManagerAndroid { +>>>>>>> Override return require('./Libraries/NativeModules/specs/NativeDialogManagerAndroid') .default; }, @@ -369,7 +376,14 @@ module.exports = { ) => HostComponent { return require('./Libraries/ReactNative/requireNativeComponent').default; }, +<<<<<<< Upstream + get ReactNativeVersion() { + return require('./Libraries/Core/ReactNativeVersion').default; + }, + get RootTagContext() { +======= get RootTagContext(): RootTagContext { +>>>>>>> Override return require('./Libraries/ReactNative/RootTag').RootTagContext; }, get Settings(): Settings { diff --git a/vnext/src-win/jest/setup.js b/vnext/src-win/jest/setup.js index 9af8d76313d..e2ca79a151d 100644 --- a/vnext/src-win/jest/setup.js +++ b/vnext/src-win/jest/setup.js @@ -17,7 +17,7 @@ import '@react-native/js-polyfills/error-guard'; import mock from './mock'; -// $FlowIgnore[cannot-write] +// $FlowFixMe[cannot-write] Object.defineProperties(global, { __DEV__: { configurable: true, @@ -43,7 +43,7 @@ Object.defineProperties(global, { configurable: true, enumerable: true, value: { - // $FlowIgnore[method-unbinding] + // $FlowFixMe[method-unbinding] now: jest.fn(Date.now), }, writable: true, @@ -70,7 +70,18 @@ Object.defineProperties(global, { }, }); -// $FlowFixMe[incompatible-call] - `./mocks/AppState` is incomplete. +/** + * Prettier v3 uses import (cjs/mjs) file formats that jest-runtime does not + * support. To work around this we need to bypass the jest module system by + * using the orginal node `require` function. + */ +jest.mock('prettier', () => { + // $FlowExpectedError[underconstrained-implicit-instantiation] + const module = jest.requireActual('module'); + return module.prototype.require(require.resolve('prettier')); +}); + +// $FlowFixMe[incompatible-type] - `./mocks/AppState` is incomplete. mock('m#../Libraries/AppState/AppState', 'm#./mocks/AppState'); mock('m#../Libraries/BatchedBridge/NativeModules', 'm#./mocks/NativeModules'); mock( @@ -84,41 +95,41 @@ mock( mock('m#../Libraries/Components/Clipboard/Clipboard', 'm#./mocks/Clipboard'); mock( 'm#../Libraries/Components/RefreshControl/RefreshControl', - // $FlowFixMe[incompatible-call] - `../Libraries/Components/RefreshControl/RefreshControl` should export a component type. + // $FlowFixMe[incompatible-type] - `../Libraries/Components/RefreshControl/RefreshControl` should export a component type. 'm#./mocks/RefreshControl', ); // $FlowFixMe[incompatible-exact] - `../Libraries/Components/ScrollView/ScrollView` is... I don't even. -// $FlowFixMe[prop-missing] +// $FlowFixMe[incompatible-type] mock('m#../Libraries/Components/ScrollView/ScrollView', 'm#./mocks/ScrollView'); mock('m#../Libraries/Components/TextInput/TextInput', 'm#./mocks/TextInput'); mock('m#../Libraries/Components/View/View', 'm#./mocks/View'); mock( 'm#../Libraries/Components/View/ViewNativeComponent', - // $FlowFixMe[incompatible-call] - `./mocks/ViewNativeComponent` is incomplete. + // $FlowFixMe[incompatible-type] - `./mocks/ViewNativeComponent` is incomplete. // $FlowFixMe[prop-missing] 'm#./mocks/ViewNativeComponent', ); mock('m#../Libraries/Core/InitializeCore', 'm#./mocks/InitializeCore'); mock('m#../Libraries/Core/NativeExceptionsManager'); mock('m#../Libraries/Image/Image', 'm#./mocks/Image'); -// $FlowFixMe[incompatible-call] - `./mocks/Linking` is incomplete. +// $FlowFixMe[incompatible-type] - `./mocks/Linking` is incomplete. mock('m#../Libraries/Linking/Linking', 'm#./mocks/Linking'); -// $FlowFixMe[incompatible-call] - `../Libraries/Modal/Modal` should export a component type. +// $FlowFixMe[incompatible-type] - `../Libraries/Modal/Modal` should export a component type. mock('m#../Libraries/Modal/Modal', 'm#./mocks/Modal'); mock( 'm#../Libraries/NativeComponent/NativeComponentRegistry', - // $FlowFixMe[prop-missing] - `./mocks/NativeComponentRegistry` should export named functions. + // $FlowFixMe[incompatible-type] - `./mocks/NativeComponentRegistry` should export named functions. 'm#./mocks/NativeComponentRegistry', ); -// $FlowFixMe[prop-missing] - `./mocks/RendererProxy` is incomplete. +// $FlowFixMe[incompatible-type] - `./mocks/RendererProxy` is incomplete. mock('m#../Libraries/ReactNative/RendererProxy', 'm#./mocks/RendererProxy'); mock( 'm#../Libraries/ReactNative/requireNativeComponent', 'm#./mocks/requireNativeComponent', ); -// $FlowFixMe[prop-missing] - `./mocks/UIManager` is incomplete. +// $FlowFixMe[incompatible-type] - `./mocks/UIManager` is incomplete. mock('m#../Libraries/ReactNative/UIManager', 'm#./mocks/UIManager'); mock('m#../Libraries/Text/Text', 'm#./mocks/Text'); mock('m#../Libraries/Utilities/useColorScheme', 'm#./mocks/useColorScheme'); -// $FlowFixMe[incompatible-call] +// $FlowFixMe[incompatible-type] mock('m#../Libraries/Vibration/Vibration', 'm#./mocks/Vibration'); diff --git a/vnext/src-win/src/private/featureflags/ReactNativeFeatureFlagsBase.js b/vnext/src-win/src/private/featureflags/ReactNativeFeatureFlagsBase.js index ec4dbc8ddad..ada4facdea9 100644 --- a/vnext/src-win/src/private/featureflags/ReactNativeFeatureFlagsBase.js +++ b/vnext/src-win/src/private/featureflags/ReactNativeFeatureFlagsBase.js @@ -18,6 +18,10 @@ import NativeReactNativeFeatureFlags from './specs/NativeReactNativeFeatureFlags const accessedFeatureFlags: Set = new Set(); let overrides: ?ReactNativeFeatureFlagsJsOnlyOverrides; +// This is a list of functions to clear the cached value for each feature flag +// getter. This is only used in development. +const clearCachedValuesFns: Array<() => void> = []; + export type Getter = () => T; // This defines the types for the overrides object, whose methods also receive @@ -33,6 +37,12 @@ function createGetter( ): Getter { let cachedValue: ?T; + if (__DEV__) { + clearCachedValuesFns.push(() => { + cachedValue = undefined; + }); + } + return () => { if (cachedValue == null) { cachedValue = customValueGetter() ?? defaultValue; @@ -118,3 +128,12 @@ function maybeLogUnavailableNativeModuleError(configName: string): void { ); } } + +export function dangerouslyResetForTesting(): void { + if (__DEV__) { + overrides = null; + accessedFeatureFlags.clear(); + reportedConfigNames.clear(); + clearCachedValuesFns.forEach(fn => fn()); + } +} diff --git a/yarn.lock b/yarn.lock index fdba3105a82..291c24448ea 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2096,10 +2096,10 @@ prompts "^2.4.2" semver "^7.5.2" -"@react-native-community/template@0.81.0-nightly-202578-011c586": - version "0.81.0-nightly-202578-011c586" - resolved "https://registry.yarnpkg.com/@react-native-community/template/-/template-0.81.0-nightly-202578-011c586.tgz#84b2873039e596663fb70548f5917e72ce0058cc" - integrity sha512-qBBrakf6b4132m0tyP/eftSkyXeAh6uCv3HgOzSwGQbaBNfsOaHyFP6UC5Cpl5Ak9YwsQJcjGlc7iYqIRUB0lA== +"@react-native-community/template@0.81.0-nightly-2025819-246871d": + version "0.82.0-nightly-2025819-1022601" + resolved "https://registry.yarnpkg.com/@react-native-community/template/-/template-0.82.0-nightly-2025819-1022601.tgz#24efec918b433720c982d67227928de6f20c0d76" + integrity sha512-sJpOeMk86VFU6XUrIxNYXMkLcxoFYldR5zpyP1adkQl4W2OsMtrguI1OHD75EhA0/UCTCXCgDyLQ4JZOkScEYQ== "@react-native-picker/picker@^2.5.1": version "2.11.4" @@ -2111,6 +2111,11 @@ resolved "https://registry.yarnpkg.com/@react-native/assets-registry/-/assets-registry-0.81.0-nightly-20250709-6892dde36.tgz#25a5f901732ff2a1a5c161a8459f3ff876968d3f" integrity sha512-dTVO+10qEqLZFuxjfnhw17ntjLlEUNxANpXLNuAxKf3Hiaj1xTgLBK3imR+ewSyD/P5sP4s91/IW+zYqEULB7g== +"@react-native/assets-registry@0.82.0-nightly-20250819-25104de5c": + version "0.82.0-nightly-20250819-25104de5c" + resolved "https://registry.yarnpkg.com/@react-native/assets-registry/-/assets-registry-0.82.0-nightly-20250819-25104de5c.tgz#7a8b590e34b277c3fbdf855b5b6b72e016c1ff00" + integrity sha512-KyCiztYjo1cTaDYWMvJ5VKvwYGHbyt4/mJxT1ymPHS9vv1ubinu9G4VVtlCl3YdP/nIvdjb2aPpq8L79YMIhAA== + "@react-native/assets@1.0.0": version "1.0.0" resolved "https://registry.yarnpkg.com/@react-native/assets/-/assets-1.0.0.tgz#c6f9bf63d274bafc8e970628de24986b30a55c8e" @@ -2256,6 +2261,19 @@ nullthrows "^1.1.1" yargs "^17.6.2" +"@react-native/codegen@0.82.0-nightly-20250819-25104de5c": + version "0.82.0-nightly-20250819-25104de5c" + resolved "https://registry.yarnpkg.com/@react-native/codegen/-/codegen-0.82.0-nightly-20250819-25104de5c.tgz#6063e2d5cb4ef011cbc1a500b980b72b7915a3ba" + integrity sha512-oKAHmVmDh0H6BsFfiqdia2v68Ygt1CU/xA5EYOnZ0qobCoaDZA4tx6RaWrhfvHvN3H/rUhF9Z1t0udTp+xzM+g== + dependencies: + "@babel/core" "^7.25.2" + "@babel/parser" "^7.25.3" + glob "^7.1.1" + hermes-parser "0.31.2" + invariant "^2.2.4" + nullthrows "^1.1.1" + yargs "^17.6.2" + "@react-native/community-cli-plugin@0.81.0-nightly-20250709-6892dde36": version "0.81.0-nightly-20250709-6892dde36" resolved "https://registry.yarnpkg.com/@react-native/community-cli-plugin/-/community-cli-plugin-0.81.0-nightly-20250709-6892dde36.tgz#ce62c7125724054e7da3731751c44b2883054c97" @@ -2269,11 +2287,29 @@ metro-core "^0.82.5" semver "^7.1.3" +"@react-native/community-cli-plugin@0.82.0-nightly-20250819-25104de5c": + version "0.82.0-nightly-20250819-25104de5c" + resolved "https://registry.yarnpkg.com/@react-native/community-cli-plugin/-/community-cli-plugin-0.82.0-nightly-20250819-25104de5c.tgz#713e3f3f40a6d589ae7eb68033fa7e6e60b58ccf" + integrity sha512-p0XRBg4pFP82ZUDT8HWn2Tpqx2GBoRpCfN5rHUqVykn59pvtW9bO0GhSnywpZ0jFyQl3int5qpA0FmA/pdifVw== + dependencies: + "@react-native/dev-middleware" "0.82.0-nightly-20250819-25104de5c" + debug "^4.4.0" + invariant "^2.2.4" + metro "^0.83.1" + metro-config "^0.83.1" + metro-core "^0.83.1" + semver "^7.1.3" + "@react-native/debugger-frontend@0.81.0-nightly-20250709-6892dde36": version "0.81.0-nightly-20250709-6892dde36" resolved "https://registry.yarnpkg.com/@react-native/debugger-frontend/-/debugger-frontend-0.81.0-nightly-20250709-6892dde36.tgz#f58e9a8baade491b7d639f6150b3b010e7e23edd" integrity sha512-Y2c2wAi5q73sWFLv8c++xJN/Gzl/kHrjmuewS7M1CoimbL8U42O7Wbu67B9WMqoJpyvwEYEerUbuy7NGAUds7g== +"@react-native/debugger-frontend@0.82.0-nightly-20250819-25104de5c": + version "0.82.0-nightly-20250819-25104de5c" + resolved "https://registry.yarnpkg.com/@react-native/debugger-frontend/-/debugger-frontend-0.82.0-nightly-20250819-25104de5c.tgz#3899939be74873e4dc865be22174cb04fcdd9d33" + integrity sha512-EgNKwxPd4L+an1Z6zogE/Gx5AkBbdSLBQagECkOzQx5ySq+UUP7mWWrvKbGOieoXRTax4+zWhaC0ZZC2xZP5ag== + "@react-native/dev-middleware@0.81.0-nightly-20250709-6892dde36": version "0.81.0-nightly-20250709-6892dde36" resolved "https://registry.yarnpkg.com/@react-native/dev-middleware/-/dev-middleware-0.81.0-nightly-20250709-6892dde36.tgz#753fc9a2b558ea835183134d824cd94723ac9433" @@ -2291,6 +2327,23 @@ serve-static "^1.16.2" ws "^6.2.3" +"@react-native/dev-middleware@0.82.0-nightly-20250819-25104de5c": + version "0.82.0-nightly-20250819-25104de5c" + resolved "https://registry.yarnpkg.com/@react-native/dev-middleware/-/dev-middleware-0.82.0-nightly-20250819-25104de5c.tgz#899748cb19f8fd3286592b9902bd19b37c3a6b01" + integrity sha512-RRY57wQOZiGgU+bS6nNwTv0CmuhaRMlqCn5uHhQMdKQybK5StcQP7WOZDemWx461DcgDDD2SZS+gYPHY5hMoVw== + dependencies: + "@isaacs/ttlcache" "^1.4.1" + "@react-native/debugger-frontend" "0.82.0-nightly-20250819-25104de5c" + chrome-launcher "^0.15.2" + chromium-edge-launcher "^0.2.0" + connect "^3.6.5" + debug "^4.4.0" + invariant "^2.2.4" + nullthrows "^1.1.1" + open "^7.0.3" + serve-static "^1.16.2" + ws "^6.2.3" + "@react-native/eslint-config@0.79.0-nightly-20250123-d1028885e": version "0.79.0-nightly-20250123-d1028885e" resolved "https://registry.yarnpkg.com/@react-native/eslint-config/-/eslint-config-0.79.0-nightly-20250123-d1028885e.tgz#a4c538e720e9474a7cabdca8d93a266006f53de0" @@ -2319,6 +2372,11 @@ resolved "https://registry.yarnpkg.com/@react-native/gradle-plugin/-/gradle-plugin-0.81.0-nightly-20250709-6892dde36.tgz#e8154919987ef6f997a7f4ba9c9aad0aa9322421" integrity sha512-KUi43W/R9rkRLYkq6A6Bc7XiBxWBuRPxEKo4LTXPVhj6oLz2YKWcjXhuSzIMDkh2KeFhrDdZ7aFNOoj5ua3OVg== +"@react-native/gradle-plugin@0.82.0-nightly-20250819-25104de5c": + version "0.82.0-nightly-20250819-25104de5c" + resolved "https://registry.yarnpkg.com/@react-native/gradle-plugin/-/gradle-plugin-0.82.0-nightly-20250819-25104de5c.tgz#8c7fffc93c1051022b41797853e483db2b801d5f" + integrity sha512-RiDt9Jnc3t9bxwejsfPYKO1myuvuZL1UIDvbWGGvxdsHjzUAa5oUoZZMfzFdBKbKieH4ENVL9xPvhJGe6EGkkQ== + "@react-native/js-polyfills@0.80.0-nightly-20250506-3ac16dd6a": version "0.80.0-nightly-20250506-3ac16dd6a" resolved "https://registry.yarnpkg.com/@react-native/js-polyfills/-/js-polyfills-0.80.0-nightly-20250506-3ac16dd6a.tgz#f2c36c596e817f66ad6ff0084f5e0261876252f5" @@ -2329,6 +2387,11 @@ resolved "https://registry.yarnpkg.com/@react-native/js-polyfills/-/js-polyfills-0.81.0-nightly-20250709-6892dde36.tgz#52f97dabb0c87565fa49d704e7f0691ff3f7c465" integrity sha512-Kmge3ec+3L5Dm/heBYodx2OUUqCzf6SIyng2eSP2Nd55/JmrMR5NR86RDh3ApFtXtgxDd9KRwulhva21H2IeTQ== +"@react-native/js-polyfills@0.82.0-nightly-20250819-25104de5c": + version "0.82.0-nightly-20250819-25104de5c" + resolved "https://registry.yarnpkg.com/@react-native/js-polyfills/-/js-polyfills-0.82.0-nightly-20250819-25104de5c.tgz#97802a888e28e5d8d7331d28d456d75caaba85e1" + integrity sha512-xHItDJ+76l8g9I4sDJRiklSn3be5Ue/x7rT7gq3I2uyyCs9Ld85rG5ORu6MYzRgXc9ktOWTF8nirT9BWLS15sQ== + "@react-native/metro-babel-transformer@0.80.0-nightly-20250506-3ac16dd6a": version "0.80.0-nightly-20250506-3ac16dd6a" resolved "https://registry.yarnpkg.com/@react-native/metro-babel-transformer/-/metro-babel-transformer-0.80.0-nightly-20250506-3ac16dd6a.tgz#b15eceae51b4e381d7ef81dec90374eeaae8e682" @@ -2379,6 +2442,11 @@ resolved "https://registry.yarnpkg.com/@react-native/normalize-colors/-/normalize-colors-0.81.0-nightly-20250709-6892dde36.tgz#72138cce819e836ef626abc5fc18dc169e40cef2" integrity sha512-l/haekyBuz9Uy6aRcp2RQssEa81kCPmtm8kET5BpjtFDyPYvWAkMCMoSFVl+ZvWUNobL1jsen1r1xkqgdG1ckw== +"@react-native/normalize-colors@0.82.0-nightly-20250819-25104de5c": + version "0.82.0-nightly-20250819-25104de5c" + resolved "https://registry.yarnpkg.com/@react-native/normalize-colors/-/normalize-colors-0.82.0-nightly-20250819-25104de5c.tgz#509e90ed3ea5cffb51359dc84332d8f72ff15a1a" + integrity sha512-zsvPGprhLUAfW2KKW/loj06o2+1xWa9Swdcl5o60293RT0clnyGgpQ9eCCIjxDi9dOG1Bvypuwokp5dkoH2HfA== + "@react-native/popup-menu-android@0.81.0-nightly-20250709-6892dde36": version "0.81.0-nightly-20250709-6892dde36" resolved "https://registry.yarnpkg.com/@react-native/popup-menu-android/-/popup-menu-android-0.81.0-nightly-20250709-6892dde36.tgz#970136c5631d4191db9d46653ea6e683a9eb5e99" @@ -2394,6 +2462,14 @@ invariant "^2.2.4" nullthrows "^1.1.1" +"@react-native/virtualized-lists@0.82.0-nightly-20250819-25104de5c": + version "0.82.0-nightly-20250819-25104de5c" + resolved "https://registry.yarnpkg.com/@react-native/virtualized-lists/-/virtualized-lists-0.82.0-nightly-20250819-25104de5c.tgz#4585ed2b154d4dbdc401c231f0a5223313d91ae4" + integrity sha512-/EBIpwAWfHbSHNPkxa1RiBtK+emLrtTLmC/jRckep56x9jO5RMmNWJzMWkDpEB79Jc/fCldGvR+v/uGnJdfHmg== + dependencies: + invariant "^2.2.4" + nullthrows "^1.1.1" + "@rnx-kit/align-deps@^2.5.0": version "2.5.5" resolved "https://registry.yarnpkg.com/@rnx-kit/align-deps/-/align-deps-2.5.5.tgz#708b4fd65941699e1ef33c728d34bc568e648b73" @@ -3979,6 +4055,13 @@ babel-plugin-syntax-hermes-parser@0.29.1: dependencies: hermes-parser "0.29.1" +babel-plugin-syntax-hermes-parser@0.31.2: + version "0.31.2" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-hermes-parser/-/babel-plugin-syntax-hermes-parser-0.31.2.tgz#c8045b43fac805e2d0103a32726ee631b7d48812" + integrity sha512-0MTUPIzzBCJCQ2o04T+IIR+JUG62abqetmw0u5TGHM7mT8jOl17bPgzb/2zknQXQjcGvCPai0wPSNDgcd1oRAw== + dependencies: + hermes-parser "0.31.2" + babel-plugin-transform-define@^2.1.4: version "2.1.4" resolved "https://registry.yarnpkg.com/babel-plugin-transform-define/-/babel-plugin-transform-define-2.1.4.tgz#8f7088211176a55a72788d584ceea9f691a021c1" @@ -6739,6 +6822,16 @@ hermes-estree@0.29.1: resolved "https://registry.yarnpkg.com/hermes-estree/-/hermes-estree-0.29.1.tgz#043c7db076e0e8ef8c5f6ed23828d1ba463ebcc5" integrity sha512-jl+x31n4/w+wEqm0I2r4CMimukLbLQEYpisys5oCre611CI5fc9TxhqkBBCJ1edDG4Kza0f7CgNz8xVMLZQOmQ== +hermes-estree@0.31.2: + version "0.31.2" + resolved "https://registry.yarnpkg.com/hermes-estree/-/hermes-estree-0.31.2.tgz#ff93f089e95db1f9e8fa4e46976f444b766bd4ed" + integrity sha512-dTKRygGxE9v7tsUTN1FeWcz+BKSxPdSfLSVFPe4fSPYTXCZFdXtDDQjjDqo+4JlRP0H+fFSdRQ2NeZ/vcTjsCw== + +hermes-estree@0.32.0: + version "0.32.0" + resolved "https://registry.yarnpkg.com/hermes-estree/-/hermes-estree-0.32.0.tgz#bb7da6613ab8e67e334a1854ea1e209f487d307b" + integrity sha512-KWn3BqnlDOl97Xe1Yviur6NbgIZ+IP+UVSpshlZWkq+EtoHg6/cwiDj/osP9PCEgFE15KBm1O55JRwbMEm5ejQ== + hermes-parser@0.21.1: version "0.21.1" resolved "https://registry.yarnpkg.com/hermes-parser/-/hermes-parser-0.21.1.tgz#b2ab42b6ee1bed8c659ed61a03d3f61a63183ada" @@ -6767,6 +6860,20 @@ hermes-parser@0.29.1: dependencies: hermes-estree "0.29.1" +hermes-parser@0.31.2: + version "0.31.2" + resolved "https://registry.yarnpkg.com/hermes-parser/-/hermes-parser-0.31.2.tgz#6a8a3bf4ef3bb0a52e0bc278b5fd8f0751b5fbc8" + integrity sha512-xNPkdJeeuuxmaHgc1bjb0+gCWjTPg0G6p2kHd2xIidkrRjtpDTEO3aj0V0NhnEyLTB1ILZVIyswmRllB5tb7ng== + dependencies: + hermes-estree "0.31.2" + +hermes-parser@0.32.0: + version "0.32.0" + resolved "https://registry.yarnpkg.com/hermes-parser/-/hermes-parser-0.32.0.tgz#7916984ef6fdce62e7415d354cf35392061cd303" + integrity sha512-g4nBOWFpuiTqjR3LZdRxKUkij9iyveWeuks7INEsMX741f3r9xxrOe8TeQfUxtda0eXmiIFiMQzoeSQEno33Hw== + dependencies: + hermes-estree "0.32.0" + hermes-transform@0.29.1: version "0.29.1" resolved "https://registry.yarnpkg.com/hermes-transform/-/hermes-transform-0.29.1.tgz#eefee947d2099411c05397b1649ef11151830c8a" @@ -8627,6 +8734,16 @@ metro-babel-transformer@0.82.5: hermes-parser "0.29.1" nullthrows "^1.1.1" +metro-babel-transformer@0.83.3: + version "0.83.3" + resolved "https://registry.yarnpkg.com/metro-babel-transformer/-/metro-babel-transformer-0.83.3.tgz#d8c134615530c9ee61364526d44ca4bb0c5343ea" + integrity sha512-1vxlvj2yY24ES1O5RsSIvg4a4WeL7PFXgKOHvXTXiW0deLvQr28ExXj6LjwCCDZ4YZLhq6HddLpZnX4dEdSq5g== + dependencies: + "@babel/core" "^7.25.2" + flow-enums-runtime "^0.0.6" + hermes-parser "0.32.0" + nullthrows "^1.1.1" + metro-cache-key@0.82.5: version "0.82.5" resolved "https://registry.yarnpkg.com/metro-cache-key/-/metro-cache-key-0.82.5.tgz#290a0054b28a708266fb91c8028cf94be04f99c9" @@ -8634,6 +8751,13 @@ metro-cache-key@0.82.5: dependencies: flow-enums-runtime "^0.0.6" +metro-cache-key@0.83.3: + version "0.83.3" + resolved "https://registry.yarnpkg.com/metro-cache-key/-/metro-cache-key-0.83.3.tgz#ae6c5d4eb1ad8d06a92bf7294ca730a8d880b573" + integrity sha512-59ZO049jKzSmvBmG/B5bZ6/dztP0ilp0o988nc6dpaDsU05Cl1c/lRf+yx8m9WW/JVgbmfO5MziBU559XjI5Zw== + dependencies: + flow-enums-runtime "^0.0.6" + metro-cache@0.82.5: version "0.82.5" resolved "https://registry.yarnpkg.com/metro-cache/-/metro-cache-0.82.5.tgz#4c8fe58cd5fa30b87db0b2b6a650a771ec6fe162" @@ -8644,6 +8768,16 @@ metro-cache@0.82.5: https-proxy-agent "^7.0.5" metro-core "0.82.5" +metro-cache@0.83.3: + version "0.83.3" + resolved "https://registry.yarnpkg.com/metro-cache/-/metro-cache-0.83.3.tgz#f1245cc48570c47d8944495e61d67f0228f10172" + integrity sha512-3jo65X515mQJvKqK3vWRblxDEcgY55Sk3w4xa6LlfEXgQ9g1WgMh9m4qVZVwgcHoLy0a2HENTPCCX4Pk6s8c8Q== + dependencies: + exponential-backoff "^3.1.1" + flow-enums-runtime "^0.0.6" + https-proxy-agent "^7.0.5" + metro-core "0.83.3" + metro-config@0.82.5, metro-config@^0.82.2, metro-config@^0.82.5: version "0.82.5" resolved "https://registry.yarnpkg.com/metro-config/-/metro-config-0.82.5.tgz#07366f32c3fe6203d630af7df4781900816c7c85" @@ -8658,6 +8792,20 @@ metro-config@0.82.5, metro-config@^0.82.2, metro-config@^0.82.5: metro-core "0.82.5" metro-runtime "0.82.5" +metro-config@0.83.3, metro-config@^0.83.1: + version "0.83.3" + resolved "https://registry.yarnpkg.com/metro-config/-/metro-config-0.83.3.tgz#a30e7a69b5cf8c4ac4c4b68b1b4c33649ae129a2" + integrity sha512-mTel7ipT0yNjKILIan04bkJkuCzUUkm2SeEaTads8VfEecCh+ltXchdq6DovXJqzQAXuR2P9cxZB47Lg4klriA== + dependencies: + connect "^3.6.5" + flow-enums-runtime "^0.0.6" + jest-validate "^29.7.0" + metro "0.83.3" + metro-cache "0.83.3" + metro-core "0.83.3" + metro-runtime "0.83.3" + yaml "^2.6.1" + metro-core@0.82.5, metro-core@^0.82.5: version "0.82.5" resolved "https://registry.yarnpkg.com/metro-core/-/metro-core-0.82.5.tgz#fda1b2f7365e3a09055dd72ba1681f8fc1f6f492" @@ -8667,6 +8815,15 @@ metro-core@0.82.5, metro-core@^0.82.5: lodash.throttle "^4.1.1" metro-resolver "0.82.5" +metro-core@0.83.3, metro-core@^0.83.1: + version "0.83.3" + resolved "https://registry.yarnpkg.com/metro-core/-/metro-core-0.83.3.tgz#007e93f7d1983777da8988dfb103ad897c9835b8" + integrity sha512-M+X59lm7oBmJZamc96usuF1kusd5YimqG/q97g4Ac7slnJ3YiGglW5CsOlicTR5EWf8MQFxxjDoB6ytTqRe8Hw== + dependencies: + flow-enums-runtime "^0.0.6" + lodash.throttle "^4.1.1" + metro-resolver "0.83.3" + metro-file-map@0.82.5: version "0.82.5" resolved "https://registry.yarnpkg.com/metro-file-map/-/metro-file-map-0.82.5.tgz#3e47410a9ce8f6c913480970226a17371c2d2974" @@ -8682,6 +8839,21 @@ metro-file-map@0.82.5: nullthrows "^1.1.1" walker "^1.0.7" +metro-file-map@0.83.3: + version "0.83.3" + resolved "https://registry.yarnpkg.com/metro-file-map/-/metro-file-map-0.83.3.tgz#3d79fbb1d379ab178dd895ce54cb5ecb183d74a2" + integrity sha512-jg5AcyE0Q9Xbbu/4NAwwZkmQn7doJCKGW0SLeSJmzNB9Z24jBe0AL2PHNMy4eu0JiKtNWHz9IiONGZWq7hjVTA== + dependencies: + debug "^4.4.0" + fb-watchman "^2.0.0" + flow-enums-runtime "^0.0.6" + graceful-fs "^4.2.4" + invariant "^2.2.4" + jest-worker "^29.7.0" + micromatch "^4.0.4" + nullthrows "^1.1.1" + walker "^1.0.7" + metro-memory-fs@^0.82.4: version "0.82.5" resolved "https://registry.yarnpkg.com/metro-memory-fs/-/metro-memory-fs-0.82.5.tgz#ae6c4c251cd6dc9cf44540c3b1356cff54db875e" @@ -8697,6 +8869,14 @@ metro-minify-terser@0.82.5: flow-enums-runtime "^0.0.6" terser "^5.15.0" +metro-minify-terser@0.83.3: + version "0.83.3" + resolved "https://registry.yarnpkg.com/metro-minify-terser/-/metro-minify-terser-0.83.3.tgz#c1c70929c86b14c8bf03e6321b4f9310bc8dbe87" + integrity sha512-O2BmfWj6FSfzBLrNCXt/rr2VYZdX5i6444QJU0fFoc7Ljg+Q+iqebwE3K0eTvkI6TRjELsXk1cjU+fXwAR4OjQ== + dependencies: + flow-enums-runtime "^0.0.6" + terser "^5.15.0" + metro-resolver@0.82.5: version "0.82.5" resolved "https://registry.yarnpkg.com/metro-resolver/-/metro-resolver-0.82.5.tgz#cb810038d488a47334df444312b23f0090eca5c3" @@ -8704,6 +8884,13 @@ metro-resolver@0.82.5: dependencies: flow-enums-runtime "^0.0.6" +metro-resolver@0.83.3: + version "0.83.3" + resolved "https://registry.yarnpkg.com/metro-resolver/-/metro-resolver-0.83.3.tgz#06207bdddc280b9335722a8c992aeec017413942" + integrity sha512-0js+zwI5flFxb1ktmR///bxHYg7OLpRpWZlBBruYG8OKYxeMP7SV0xQ/o/hUelrEMdK4LJzqVtHAhBm25LVfAQ== + dependencies: + flow-enums-runtime "^0.0.6" + metro-runtime@0.82.5, metro-runtime@^0.82.2, metro-runtime@^0.82.5: version "0.82.5" resolved "https://registry.yarnpkg.com/metro-runtime/-/metro-runtime-0.82.5.tgz#97840760e4cee49f08948dd918dbeba08dd0d0ec" @@ -8712,7 +8899,15 @@ metro-runtime@0.82.5, metro-runtime@^0.82.2, metro-runtime@^0.82.5: "@babel/runtime" "^7.25.0" flow-enums-runtime "^0.0.6" -metro-source-map@0.82.5, metro-source-map@^0.82.2, metro-source-map@^0.82.5: +metro-runtime@0.83.3, metro-runtime@^0.83.1: + version "0.83.3" + resolved "https://registry.yarnpkg.com/metro-runtime/-/metro-runtime-0.83.3.tgz#ff504df5d93f38b1af396715b327e589ba8d184d" + integrity sha512-JHCJb9ebr9rfJ+LcssFYA2x1qPYuSD/bbePupIGhpMrsla7RCwC/VL3yJ9cSU+nUhU4c9Ixxy8tBta+JbDeZWw== + dependencies: + "@babel/runtime" "^7.25.0" + flow-enums-runtime "^0.0.6" + +metro-source-map@0.82.5, metro-source-map@^0.82.2: version "0.82.5" resolved "https://registry.yarnpkg.com/metro-source-map/-/metro-source-map-0.82.5.tgz#85e2e9672bff6d6cefb3b65b96fcc69f929c69c6" integrity sha512-wH+awTOQJVkbhn2SKyaw+0cd+RVSCZ3sHVgyqJFQXIee/yLs3dZqKjjeKKhhVeudgjXo7aE/vSu/zVfcQEcUfw== @@ -8728,6 +8923,22 @@ metro-source-map@0.82.5, metro-source-map@^0.82.2, metro-source-map@^0.82.5: source-map "^0.5.6" vlq "^1.0.0" +metro-source-map@0.83.3, metro-source-map@^0.83.1: + version "0.83.3" + resolved "https://registry.yarnpkg.com/metro-source-map/-/metro-source-map-0.83.3.tgz#04bb464f7928ea48bcdfd18912c8607cf317c898" + integrity sha512-xkC3qwUBh2psVZgVavo8+r2C9Igkk3DibiOXSAht1aYRRcztEZNFtAMtfSB7sdO2iFMx2Mlyu++cBxz/fhdzQg== + dependencies: + "@babel/traverse" "^7.25.3" + "@babel/traverse--for-generate-function-map" "npm:@babel/traverse@^7.25.3" + "@babel/types" "^7.25.2" + flow-enums-runtime "^0.0.6" + invariant "^2.2.4" + metro-symbolicate "0.83.3" + nullthrows "^1.1.1" + ob1 "0.83.3" + source-map "^0.5.6" + vlq "^1.0.0" + metro-symbolicate@0.82.5: version "0.82.5" resolved "https://registry.yarnpkg.com/metro-symbolicate/-/metro-symbolicate-0.82.5.tgz#b53255cad11f1e6795f319ca4b41857bfe295d65" @@ -8740,6 +8951,18 @@ metro-symbolicate@0.82.5: source-map "^0.5.6" vlq "^1.0.0" +metro-symbolicate@0.83.3: + version "0.83.3" + resolved "https://registry.yarnpkg.com/metro-symbolicate/-/metro-symbolicate-0.83.3.tgz#67af03950f0dfe19a7c059e3983e39a31e95d03a" + integrity sha512-F/YChgKd6KbFK3eUR5HdUsfBqVsanf5lNTwFd4Ca7uuxnHgBC3kR/Hba/RGkenR3pZaGNp5Bu9ZqqP52Wyhomw== + dependencies: + flow-enums-runtime "^0.0.6" + invariant "^2.2.4" + metro-source-map "0.83.3" + nullthrows "^1.1.1" + source-map "^0.5.6" + vlq "^1.0.0" + metro-transform-plugins@0.82.5, metro-transform-plugins@^0.82.4: version "0.82.5" resolved "https://registry.yarnpkg.com/metro-transform-plugins/-/metro-transform-plugins-0.82.5.tgz#678da4d0f9085b2a3fc0b4350062f19cc625c5fc" @@ -8752,6 +8975,18 @@ metro-transform-plugins@0.82.5, metro-transform-plugins@^0.82.4: flow-enums-runtime "^0.0.6" nullthrows "^1.1.1" +metro-transform-plugins@0.83.3: + version "0.83.3" + resolved "https://registry.yarnpkg.com/metro-transform-plugins/-/metro-transform-plugins-0.83.3.tgz#2c59ba841e269363cf3acb13138cb992f0c75013" + integrity sha512-eRGoKJU6jmqOakBMH5kUB7VitEWiNrDzBHpYbkBXW7C5fUGeOd2CyqrosEzbMK5VMiZYyOcNFEphvxk3OXey2A== + dependencies: + "@babel/core" "^7.25.2" + "@babel/generator" "^7.25.0" + "@babel/template" "^7.25.0" + "@babel/traverse" "^7.25.3" + flow-enums-runtime "^0.0.6" + nullthrows "^1.1.1" + metro-transform-worker@0.82.5: version "0.82.5" resolved "https://registry.yarnpkg.com/metro-transform-worker/-/metro-transform-worker-0.82.5.tgz#aabdccf17aaa584ec0fd97b5283e806958fb3418" @@ -8771,6 +9006,25 @@ metro-transform-worker@0.82.5: metro-transform-plugins "0.82.5" nullthrows "^1.1.1" +metro-transform-worker@0.83.3: + version "0.83.3" + resolved "https://registry.yarnpkg.com/metro-transform-worker/-/metro-transform-worker-0.83.3.tgz#ca6ae4a02b0f61b33299e6e56bacaba32dcd607f" + integrity sha512-Ztekew9t/gOIMZX1tvJOgX7KlSLL5kWykl0Iwu2cL2vKMKVALRl1hysyhUw0vjpAvLFx+Kfq9VLjnHIkW32fPA== + dependencies: + "@babel/core" "^7.25.2" + "@babel/generator" "^7.25.0" + "@babel/parser" "^7.25.3" + "@babel/types" "^7.25.2" + flow-enums-runtime "^0.0.6" + metro "0.83.3" + metro-babel-transformer "0.83.3" + metro-cache "0.83.3" + metro-cache-key "0.83.3" + metro-minify-terser "0.83.3" + metro-source-map "0.83.3" + metro-transform-plugins "0.83.3" + nullthrows "^1.1.1" + metro@0.82.5, metro@^0.82.5: version "0.82.5" resolved "https://registry.yarnpkg.com/metro/-/metro-0.82.5.tgz#a27fbc08dd283a14ae58496288c10adaae65f461" @@ -8817,6 +9071,52 @@ metro@0.82.5, metro@^0.82.5: ws "^7.5.10" yargs "^17.6.2" +metro@0.83.3, metro@^0.83.1: + version "0.83.3" + resolved "https://registry.yarnpkg.com/metro/-/metro-0.83.3.tgz#1e7e04c15519af746f8932c7f9c553d92c39e922" + integrity sha512-+rP+/GieOzkt97hSJ0MrPOuAH/jpaS21ZDvL9DJ35QYRDlQcwzcvUlGUf79AnQxq/2NPiS/AULhhM4TKutIt8Q== + dependencies: + "@babel/code-frame" "^7.24.7" + "@babel/core" "^7.25.2" + "@babel/generator" "^7.25.0" + "@babel/parser" "^7.25.3" + "@babel/template" "^7.25.0" + "@babel/traverse" "^7.25.3" + "@babel/types" "^7.25.2" + accepts "^1.3.7" + chalk "^4.0.0" + ci-info "^2.0.0" + connect "^3.6.5" + debug "^4.4.0" + error-stack-parser "^2.0.6" + flow-enums-runtime "^0.0.6" + graceful-fs "^4.2.4" + hermes-parser "0.32.0" + image-size "^1.0.2" + invariant "^2.2.4" + jest-worker "^29.7.0" + jsc-safe-url "^0.2.2" + lodash.throttle "^4.1.1" + metro-babel-transformer "0.83.3" + metro-cache "0.83.3" + metro-cache-key "0.83.3" + metro-config "0.83.3" + metro-core "0.83.3" + metro-file-map "0.83.3" + metro-resolver "0.83.3" + metro-runtime "0.83.3" + metro-source-map "0.83.3" + metro-symbolicate "0.83.3" + metro-transform-plugins "0.83.3" + metro-transform-worker "0.83.3" + mime-types "^2.1.27" + nullthrows "^1.1.1" + serialize-error "^2.1.0" + source-map "^0.5.6" + throat "^5.0.0" + ws "^7.5.10" + yargs "^17.6.2" + micromark-core-commonmark@2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/micromark-core-commonmark/-/micromark-core-commonmark-2.0.2.tgz#6a45bbb139e126b3f8b361a10711ccc7c6e15e93" @@ -9480,6 +9780,13 @@ ob1@0.82.5: dependencies: flow-enums-runtime "^0.0.6" +ob1@0.83.3: + version "0.83.3" + resolved "https://registry.yarnpkg.com/ob1/-/ob1-0.83.3.tgz#2208e20c9070e9beff3ad067f2db458fa6b07014" + integrity sha512-egUxXCDwoWG06NGCS5s5AdcpnumHKJlfd3HH06P3m9TEMwwScfcY35wpQxbm9oHof+dM/lVH9Rfyu1elTVelSA== + dependencies: + flow-enums-runtime "^0.0.6" + object-assign@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" @@ -10275,24 +10582,24 @@ react-native-xaml@^0.0.80: dependencies: "@types/react" "^19.0.0" -react-native@0.81.0-nightly-20250709-6892dde36: - version "0.81.0-nightly-20250709-6892dde36" - resolved "https://registry.yarnpkg.com/react-native/-/react-native-0.81.0-nightly-20250709-6892dde36.tgz#bf22886f41bee07677c3adf32986f99fc080cc31" - integrity sha512-HQrBpJF2K7y1M62NkwbDxVEanUSTSxjUC+BIKzamhx6dRObgRhrRX64ukH26pdCUz3kHg0c0mfAugdkeGRwDPA== +react-native@0.82.0-nightly-20250819-25104de5c: + version "0.82.0-nightly-20250819-25104de5c" + resolved "https://registry.yarnpkg.com/react-native/-/react-native-0.82.0-nightly-20250819-25104de5c.tgz#e6ba7b7f323549c4da8099ae736e195680ed7059" + integrity sha512-DZNMX6sOadEp1jiwIJfCeK3L0K2euB3OQqX7w58Mc/xi4Is6fNlaTuXRCa8/qPQiSNCmRIbtd8lpAzqjkLX2cw== dependencies: "@jest/create-cache-key-function" "^29.7.0" - "@react-native/assets-registry" "0.81.0-nightly-20250709-6892dde36" - "@react-native/codegen" "0.81.0-nightly-20250709-6892dde36" - "@react-native/community-cli-plugin" "0.81.0-nightly-20250709-6892dde36" - "@react-native/gradle-plugin" "0.81.0-nightly-20250709-6892dde36" - "@react-native/js-polyfills" "0.81.0-nightly-20250709-6892dde36" - "@react-native/normalize-colors" "0.81.0-nightly-20250709-6892dde36" - "@react-native/virtualized-lists" "0.81.0-nightly-20250709-6892dde36" + "@react-native/assets-registry" "0.82.0-nightly-20250819-25104de5c" + "@react-native/codegen" "0.82.0-nightly-20250819-25104de5c" + "@react-native/community-cli-plugin" "0.82.0-nightly-20250819-25104de5c" + "@react-native/gradle-plugin" "0.82.0-nightly-20250819-25104de5c" + "@react-native/js-polyfills" "0.82.0-nightly-20250819-25104de5c" + "@react-native/normalize-colors" "0.82.0-nightly-20250819-25104de5c" + "@react-native/virtualized-lists" "0.82.0-nightly-20250819-25104de5c" abort-controller "^3.0.0" anser "^1.4.9" ansi-regex "^5.0.0" babel-jest "^29.7.0" - babel-plugin-syntax-hermes-parser "0.29.1" + babel-plugin-syntax-hermes-parser "0.31.2" base64-js "^1.5.1" commander "^12.0.0" flow-enums-runtime "^0.0.6" @@ -10300,8 +10607,8 @@ react-native@0.81.0-nightly-20250709-6892dde36: invariant "^2.2.4" jest-environment-node "^29.7.0" memoize-one "^5.0.0" - metro-runtime "^0.82.5" - metro-source-map "^0.82.5" + metro-runtime "^0.83.1" + metro-source-map "^0.83.1" nullthrows "^1.1.1" pretty-format "^29.7.0" promise "^8.3.0" @@ -12267,6 +12574,11 @@ yaml@^2.2.1: resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.6.0.tgz#14059ad9d0b1680d0f04d3a60fe00f3a857303c3" integrity sha512-a6ae//JvKDEra2kdi1qzCyrJW/WZCgFi8ydDV+eXExl95t+5R+ijnqHJbz9tmMh8FUjx3iv2fCQ4dclAQlO2UQ== +yaml@^2.6.1: + version "2.8.1" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.8.1.tgz#1870aa02b631f7e8328b93f8bc574fac5d6c4d79" + integrity sha512-lcYcMxX2PO9XMGvAJkJ3OsNMw+/7FKes7/hgerGUYWIoWu5j/+YQqcZr5JnPZWzOsEBgMbSbiSTn/dv/69Mkpw== + yargs-parser@^18.1.2: version "18.1.3" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0"