diff --git a/.ado/templates/msbuild-sln.yml b/.ado/templates/msbuild-sln.yml index 56d7bc62222..cddb4741a24 100644 --- a/.ado/templates/msbuild-sln.yml +++ b/.ado/templates/msbuild-sln.yml @@ -6,7 +6,7 @@ parameters: # NuGet & MSBuild solutionDir: solutionName: - msbuildVersion: 17.0 + msbuildVersion: 17.14.21 msBuildArchitecture: x64 preferredToolArchitecture: x64 platformToolset: v143 diff --git a/change/@office-iss-react-native-win32-4f59007a-c03b-4ba4-bd6b-579cd4c1e1c7.json b/change/@office-iss-react-native-win32-4f59007a-c03b-4ba4-bd6b-579cd4c1e1c7.json new file mode 100644 index 00000000000..6e946556b50 --- /dev/null +++ b/change/@office-iss-react-native-win32-4f59007a-c03b-4ba4-bd6b-579cd4c1e1c7.json @@ -0,0 +1,7 @@ +{ + "comment": "integrate react native", + "type": "prerelease", + "packageName": "@office-iss/react-native-win32", + "email": "protikbiswas100@microsoft.com", + "dependentChangeType": "patch" +} diff --git a/change/@react-native-windows-automation-2fde298b-02d1-463e-afa2-c5043b32cde1.json b/change/@react-native-windows-automation-2fde298b-02d1-463e-afa2-c5043b32cde1.json new file mode 100644 index 00000000000..8d81535f9d9 --- /dev/null +++ b/change/@react-native-windows-automation-2fde298b-02d1-463e-afa2-c5043b32cde1.json @@ -0,0 +1,7 @@ +{ + "type": "patch", + "comment": "Merge branch 'main' into user/protikbiswas100/integrate-nighlty-20250819", + "packageName": "@react-native-windows/automation", + "email": "protikbiswas100@microsoft.com", + "dependentChangeType": "patch" +} diff --git a/change/@react-native-windows-automation-channel-97848a39-9df4-4f2c-8449-949aef0e46ae.json b/change/@react-native-windows-automation-channel-97848a39-9df4-4f2c-8449-949aef0e46ae.json new file mode 100644 index 00000000000..a68e9f103c7 --- /dev/null +++ b/change/@react-native-windows-automation-channel-97848a39-9df4-4f2c-8449-949aef0e46ae.json @@ -0,0 +1,7 @@ +{ + "comment": "integrate automation channel", + "type": "prerelease", + "packageName": "@react-native-windows/automation-channel", + "email": "protikbiswas100@microsoft.com", + "dependentChangeType": "patch" +} diff --git a/change/@react-native-windows-automation-commands-e569ad3f-1aa0-49dd-9801-b793ec437325.json b/change/@react-native-windows-automation-commands-e569ad3f-1aa0-49dd-9801-b793ec437325.json new file mode 100644 index 00000000000..eef98d7a962 --- /dev/null +++ b/change/@react-native-windows-automation-commands-e569ad3f-1aa0-49dd-9801-b793ec437325.json @@ -0,0 +1,7 @@ +{ + "type": "patch", + "comment": "Merge branch 'main' into user/protikbiswas100/integrate-nighlty-20250819", + "packageName": "@react-native-windows/automation-commands", + "email": "protikbiswas100@microsoft.com", + "dependentChangeType": "patch" +} diff --git a/change/@react-native-windows-cli-aac8f134-e98c-4e4a-8302-a1ecb2dbce79.json b/change/@react-native-windows-cli-aac8f134-e98c-4e4a-8302-a1ecb2dbce79.json new file mode 100644 index 00000000000..e20cc4f3caf --- /dev/null +++ b/change/@react-native-windows-cli-aac8f134-e98c-4e4a-8302-a1ecb2dbce79.json @@ -0,0 +1,7 @@ +{ + "type": "prerelease", + "comment": "Merge branch 'main' into user/protikbiswas100/integrate-nighlty-20250819", + "packageName": "@react-native-windows/cli", + "email": "protikbiswas100@microsoft.com", + "dependentChangeType": "patch" +} diff --git a/change/@react-native-windows-codegen-cca8fe3c-f57f-437b-b1b5-a445119d7e05.json b/change/@react-native-windows-codegen-cca8fe3c-f57f-437b-b1b5-a445119d7e05.json new file mode 100644 index 00000000000..12b1ca487aa --- /dev/null +++ b/change/@react-native-windows-codegen-cca8fe3c-f57f-437b-b1b5-a445119d7e05.json @@ -0,0 +1,7 @@ +{ + "type": "prerelease", + "comment": "Merge branch 'main' into user/protikbiswas100/integrate-nighlty-20250819", + "packageName": "@react-native-windows/codegen", + "email": "protikbiswas100@microsoft.com", + "dependentChangeType": "patch" +} diff --git a/change/@react-native-windows-find-repo-root-67d769ca-1966-4810-a5fe-a97e89e966d8.json b/change/@react-native-windows-find-repo-root-67d769ca-1966-4810-a5fe-a97e89e966d8.json new file mode 100644 index 00000000000..431994ca72f --- /dev/null +++ b/change/@react-native-windows-find-repo-root-67d769ca-1966-4810-a5fe-a97e89e966d8.json @@ -0,0 +1,7 @@ +{ + "type": "prerelease", + "comment": "Merge branch 'main' into user/protikbiswas100/integrate-nighlty-20250819", + "packageName": "@react-native-windows/find-repo-root", + "email": "protikbiswas100@microsoft.com", + "dependentChangeType": "patch" +} diff --git a/change/@react-native-windows-fs-8ad94466-6e99-4dfe-90d4-83be08b74b99.json b/change/@react-native-windows-fs-8ad94466-6e99-4dfe-90d4-83be08b74b99.json new file mode 100644 index 00000000000..7f346f93d68 --- /dev/null +++ b/change/@react-native-windows-fs-8ad94466-6e99-4dfe-90d4-83be08b74b99.json @@ -0,0 +1,7 @@ +{ + "type": "prerelease", + "comment": "Merge branch 'main' into user/protikbiswas100/integrate-nighlty-20250819", + "packageName": "@react-native-windows/fs", + "email": "protikbiswas100@microsoft.com", + "dependentChangeType": "patch" +} diff --git a/change/@react-native-windows-package-utils-349f03fc-ed97-4e3a-9448-8cc984efd421.json b/change/@react-native-windows-package-utils-349f03fc-ed97-4e3a-9448-8cc984efd421.json new file mode 100644 index 00000000000..eb608571e7e --- /dev/null +++ b/change/@react-native-windows-package-utils-349f03fc-ed97-4e3a-9448-8cc984efd421.json @@ -0,0 +1,7 @@ +{ + "type": "prerelease", + "comment": "Merge branch 'main' into user/protikbiswas100/integrate-nighlty-20250819", + "packageName": "@react-native-windows/package-utils", + "email": "protikbiswas100@microsoft.com", + "dependentChangeType": "patch" +} diff --git a/change/@react-native-windows-telemetry-0ea9fd41-00e2-4599-976d-34d05821272f.json b/change/@react-native-windows-telemetry-0ea9fd41-00e2-4599-976d-34d05821272f.json new file mode 100644 index 00000000000..249a015b35a --- /dev/null +++ b/change/@react-native-windows-telemetry-0ea9fd41-00e2-4599-976d-34d05821272f.json @@ -0,0 +1,7 @@ +{ + "type": "prerelease", + "comment": "Merge branch 'main' into user/protikbiswas100/integrate-nighlty-20250819", + "packageName": "@react-native-windows/telemetry", + "email": "protikbiswas100@microsoft.com", + "dependentChangeType": "patch" +} diff --git a/change/@rnw-scripts-create-github-releases-b6403b57-4fcb-4e62-95ba-8afdd2f2127b.json b/change/@rnw-scripts-create-github-releases-b6403b57-4fcb-4e62-95ba-8afdd2f2127b.json new file mode 100644 index 00000000000..d9d611168bf --- /dev/null +++ b/change/@rnw-scripts-create-github-releases-b6403b57-4fcb-4e62-95ba-8afdd2f2127b.json @@ -0,0 +1,7 @@ +{ + "type": "patch", + "comment": "Merge branch 'main' into user/protikbiswas100/integrate-nighlty-20250819", + "packageName": "@rnw-scripts/create-github-releases", + "email": "protikbiswas100@microsoft.com", + "dependentChangeType": "patch" +} diff --git a/change/@rnw-scripts-doxysaurus-ee128586-9b43-4861-9d3f-e9f9bdd94a42.json b/change/@rnw-scripts-doxysaurus-ee128586-9b43-4861-9d3f-e9f9bdd94a42.json new file mode 100644 index 00000000000..ee1bf8ff492 --- /dev/null +++ b/change/@rnw-scripts-doxysaurus-ee128586-9b43-4861-9d3f-e9f9bdd94a42.json @@ -0,0 +1,7 @@ +{ + "type": "patch", + "comment": "Merge branch 'main' into user/protikbiswas100/integrate-nighlty-20250819", + "packageName": "@rnw-scripts/doxysaurus", + "email": "protikbiswas100@microsoft.com", + "dependentChangeType": "patch" +} diff --git a/change/@rnw-scripts-format-files-1ff94fad-9307-417d-b979-0c86a7b1734f.json b/change/@rnw-scripts-format-files-1ff94fad-9307-417d-b979-0c86a7b1734f.json new file mode 100644 index 00000000000..ed093170332 --- /dev/null +++ b/change/@rnw-scripts-format-files-1ff94fad-9307-417d-b979-0c86a7b1734f.json @@ -0,0 +1,7 @@ +{ + "type": "patch", + "comment": "Merge branch 'main' into user/protikbiswas100/integrate-nighlty-20250819", + "packageName": "@rnw-scripts/format-files", + "email": "protikbiswas100@microsoft.com", + "dependentChangeType": "patch" +} diff --git a/change/@rnw-scripts-integrate-rn-4d0841dd-a043-4c5b-a5b9-6286a3aa1f41.json b/change/@rnw-scripts-integrate-rn-4d0841dd-a043-4c5b-a5b9-6286a3aa1f41.json new file mode 100644 index 00000000000..58a168f9f7f --- /dev/null +++ b/change/@rnw-scripts-integrate-rn-4d0841dd-a043-4c5b-a5b9-6286a3aa1f41.json @@ -0,0 +1,7 @@ +{ + "comment": "adding changes with conflicts", + "type": "prerelease", + "packageName": "@rnw-scripts/integrate-rn", + "email": "protikbiswas100@microsoft.com", + "dependentChangeType": "patch" +} diff --git a/change/@rnw-scripts-just-task-0905ff44-d0be-4656-b049-93b640c75aef.json b/change/@rnw-scripts-just-task-0905ff44-d0be-4656-b049-93b640c75aef.json new file mode 100644 index 00000000000..b0154e0c00c --- /dev/null +++ b/change/@rnw-scripts-just-task-0905ff44-d0be-4656-b049-93b640c75aef.json @@ -0,0 +1,7 @@ +{ + "type": "patch", + "comment": "Merge branch 'main' into user/protikbiswas100/integrate-nighlty-20250819", + "packageName": "@rnw-scripts/just-task", + "email": "protikbiswas100@microsoft.com", + "dependentChangeType": "patch" +} diff --git a/change/@rnw-scripts-promote-release-4ba0dd96-4c08-4c1e-b17c-8538d31924da.json b/change/@rnw-scripts-promote-release-4ba0dd96-4c08-4c1e-b17c-8538d31924da.json new file mode 100644 index 00000000000..437ff263de3 --- /dev/null +++ b/change/@rnw-scripts-promote-release-4ba0dd96-4c08-4c1e-b17c-8538d31924da.json @@ -0,0 +1,7 @@ +{ + "type": "patch", + "comment": "Merge branch 'main' into user/protikbiswas100/integrate-nighlty-20250819", + "packageName": "@rnw-scripts/promote-release", + "email": "protikbiswas100@microsoft.com", + "dependentChangeType": "patch" +} diff --git a/change/@rnw-scripts-take-screenshot-e57866f3-498e-485a-9a13-791540768c3c.json b/change/@rnw-scripts-take-screenshot-e57866f3-498e-485a-9a13-791540768c3c.json new file mode 100644 index 00000000000..269a0f8cf2a --- /dev/null +++ b/change/@rnw-scripts-take-screenshot-e57866f3-498e-485a-9a13-791540768c3c.json @@ -0,0 +1,7 @@ +{ + "type": "patch", + "comment": "Merge branch 'main' into user/protikbiswas100/integrate-nighlty-20250819", + "packageName": "@rnw-scripts/take-screenshot", + "email": "protikbiswas100@microsoft.com", + "dependentChangeType": "patch" +} diff --git a/change/react-native-platform-override-5c40ab2c-6312-4bf7-834a-499a5661bc73.json b/change/react-native-platform-override-5c40ab2c-6312-4bf7-834a-499a5661bc73.json new file mode 100644 index 00000000000..cedb184c6c0 --- /dev/null +++ b/change/react-native-platform-override-5c40ab2c-6312-4bf7-834a-499a5661bc73.json @@ -0,0 +1,7 @@ +{ + "comment": "resolving confincts", + "type": "prerelease", + "packageName": "react-native-platform-override", + "email": "protikbiswas100@microsoft.com", + "dependentChangeType": "patch" +} diff --git a/change/react-native-windows-e627c564-de9c-43c3-a087-09d6e2bae1b8.json b/change/react-native-windows-e627c564-de9c-43c3-a087-09d6e2bae1b8.json new file mode 100644 index 00000000000..3cf420d07e7 --- /dev/null +++ b/change/react-native-windows-e627c564-de9c-43c3-a087-09d6e2bae1b8.json @@ -0,0 +1,7 @@ +{ + "comment": "adding lint fix", + "type": "prerelease", + "packageName": "react-native-windows", + "email": "protikbiswas100@microsoft.com", + "dependentChangeType": "patch" +} diff --git a/change/react-native-windows-init-5c4c2469-06e8-43e2-a090-683d544c3f3b.json b/change/react-native-windows-init-5c4c2469-06e8-43e2-a090-683d544c3f3b.json new file mode 100644 index 00000000000..f7cd98ab9f5 --- /dev/null +++ b/change/react-native-windows-init-5c4c2469-06e8-43e2-a090-683d544c3f3b.json @@ -0,0 +1,7 @@ +{ + "type": "patch", + "comment": "Merge branch 'main' into user/protikbiswas100/integrate-nighlty-20250819", + "packageName": "react-native-windows-init", + "email": "protikbiswas100@microsoft.com", + "dependentChangeType": "patch" +} diff --git a/packages/@office-iss/react-native-win32-tester/overrides.json b/packages/@office-iss/react-native-win32-tester/overrides.json index c989749ef5c..a9969ff1966 100644 --- a/packages/@office-iss/react-native-win32-tester/overrides.json +++ b/packages/@office-iss/react-native-win32-tester/overrides.json @@ -5,7 +5,7 @@ "excludePatterns": [ "src/js/examples-win32/**" ], - "baseVersion": "0.82.0-nightly-20250806-5936f29d6", + "baseVersion": "0.82.0-nightly-20250819-25104de5c", "overrides": [ { "type": "patch", diff --git a/packages/@office-iss/react-native-win32-tester/package.json b/packages/@office-iss/react-native-win32-tester/package.json index 9488c21038d..f621a3c67dd 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.82.0-nightly-20250806-5936f29d6", + "react-native": "0.82.0-nightly-20250819-25104de5c", "react-native-platform-override": "^1.9.61", "typescript": "5.0.4" }, diff --git a/packages/@office-iss/react-native-win32/.flowconfig b/packages/@office-iss/react-native-win32/.flowconfig index f8ecf05ee32..8a65f291446 100644 --- a/packages/@office-iss/react-native-win32/.flowconfig +++ b/packages/@office-iss/react-native-win32/.flowconfig @@ -150,6 +150,7 @@ module.system.haste.module_ref_prefix=m# react.runtime=automatic +experimental.error_code_migration=new suppress_type=$FlowFixMe ban_spread_key_props=true @@ -177,4 +178,4 @@ untyped-import untyped-type-import [version] -^0.278.0 +^0.279.0 diff --git a/packages/@office-iss/react-native-win32/overrides.json b/packages/@office-iss/react-native-win32/overrides.json index 0e1a5cb69b8..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.82.0-nightly-20250806-5936f29d6", + "baseVersion": "0.82.0-nightly-20250819-25104de5c", "overrides": [ { "type": "derived", "file": ".flowconfig", "baseFile": ".flowconfig", - "baseHash": "373bd1b0dfbd85e02605d9526e7b08b41a67435f" + "baseHash": "85187f6c2ae01185505e2dc8d14587e9e887e519" }, { "type": "derived", "file": "src-win/index.win32.js", "baseFile": "packages/react-native/index.js", - "baseHash": "e4e8dc864521ce28adf8cfa2fb29059484206a05" + "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": "692b825d9db6a6da9c3ae9595e4dfb5c202b879d" + "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", @@ -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": "d6f92b47afedf2e31f4066e50c2900477c4d6c31" + "baseHash": "ed5d48ce62056182bf81dfa2d22d511d611d5201" }, { "type": "patch", @@ -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 }, { @@ -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,13 +478,13 @@ "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 }, { @@ -497,7 +497,7 @@ "type": "patch", "file": "src-win/src/private/animated/NativeAnimatedHelper.win32.js", "baseFile": "packages/react-native/src/private/animated/NativeAnimatedHelper.js", - "baseHash": "ecb4418a11a56257962be8ca273d3dbfb7d9862c", + "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 e8152867241..d1b1dc096f9 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.82.0-nightly-20250806-5936f29d6", + "react-native": "0.82.0-nightly-20250819-25104de5c", "react-native-platform-override": "^1.9.61", "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 e33ec4d36af..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 @@ -426,7 +426,7 @@ const AccessibilityInfo = { 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/TextInput/TextInput.win32.js b/packages/@office-iss/react-native-win32/src-win/Libraries/Components/TextInput/TextInput.win32.js index 40b908c786f..91ee5a144fe 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,6 +792,7 @@ function InternalTextInput(props: TextInputProps): React.Node { {...otherProps} {...eventHandlers} acceptDragAndDropTypes={props.experimental_acceptDragAndDropTypes} + accessibilityLabel={_accessibilityLabel} accessibilityErrorMessage={accessibilityErrorMessage} accessibilityState={_accessibilityState} accessible={accessible} @@ -853,6 +857,7 @@ function InternalTextInput(props: TextInputProps): React.Node { {...otherProps} {...colorProps} {...eventHandlers} + accessibilityLabel={_accessibilityLabel} accessibilityErrorMessage={accessibilityErrorMessage} accessibilityState={_accessibilityState} accessibilityLabelledBy={_accessibilityLabelledBy} @@ -873,7 +878,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} 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/Text/Text.win32.js b/packages/@office-iss/react-native-win32/src-win/Libraries/Text/Text.win32.js index 1ec2f8efa89..6c4764e1585 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,12 +14,13 @@ 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'; import processColor from '../StyleSheet/processColor'; import Platform from '../Utilities/Platform'; -import TextAncestor from './TextAncestor'; +import TextAncestorContext from './TextAncestorContext'; import {NativeText, NativeVirtualText} from './TextNativeComponent'; import * as React from 'react'; import {useContext, useMemo, useState} from 'react'; @@ -35,188 +36,495 @@ type TextForwardRef = React.ElementRef< * * @see https://reactnative.dev/docs/text */ -const TextImpl: component( - ref?: React.RefSetter, - ...props: TextProps -) = ({ - ref: forwardedRef, - accessible, - accessibilityControls, // Win32 - accessibilityDescribedBy, // Win32 - accessibilityDescription, // Win32 - accessibilityLabel, - accessibilityLevel, // Win32 - accessibilityPositionInSet, // Win32 - accessibilitySetSize, // Win32 - accessibilityState, - allowFontScaling, - 'aria-busy': ariaBusy, - 'aria-checked': ariaChecked, - 'aria-controls': ariaControls, // Win32 - 'aria-describedby': ariaDescribedBy, // Win32 - 'aria-description': ariaDescription, // Win32 - 'aria-disabled': ariaDisabled, - 'aria-expanded': ariaExpanded, - 'aria-label': ariaLabel, - 'aria-level': ariaLevel, // Win32 - 'aria-multiselectable': ariaMultiselectable, // Win32 - 'aria-posinset': ariaPosinset, // Win32 - 'aria-required': ariaRequired, // Win32 - 'aria-selected': ariaSelected, - 'aria-setsize': ariaSetsize, // Win32 - 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; - const _accessibilityControls = ariaControls ?? accessibilityControls; // Win32 - const _accessibilityDescribedBy = ariaDescribedBy ?? accessibilityDescribedBy; // Win32 - const _accessibilityDescription = ariaDescription ?? accessibilityDescription; // Win32 - const _accessibilityLevel = ariaLevel ?? accessibilityLevel; // Win32 - const _accessibilityPositionInSet = - ariaPosinset ?? accessibilityPositionInSet; // Win32 - const _accessibilitySetSize = ariaSetsize ?? accessibilitySetSize; // Win32 - - 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, - multiselectable: - ariaMultiselectable ?? accessibilityState?.multiselectable, // Win32 - required: ariaRequired ?? accessibilityState?.required, // Win32 - selected: ariaSelected ?? _accessibilityState.selected, - }; - } else { - _accessibilityState = { - busy: ariaBusy, - checked: ariaChecked, - disabled: ariaDisabled, - expanded: ariaExpanded, - multiselectable: ariaMultiselectable, // Win32, - required: ariaRequired, // Win32 - selected: ariaSelected, +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-cast] + (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 _accessibilityStateDisabled = _accessibilityState?.disabled; - const _disabled = disabled ?? _accessibilityStateDisabled; + const hasTextAncestor = useContext(TextAncestorContext); + if (hasTextAncestor) { + processedProps.disabled = disabled; + processedProps.children = children; + if (isPressable) { + return ( + + ); + } + return ; + } + + let nativeText = null; + + processedProps.accessible = _accessible; + processedProps.allowFontScaling = allowFontScaling !== false; + processedProps.disabled = _disabled; + processedProps.ellipsizeMode = ellipsizeMode ?? 'tail'; + processedProps.children = children; - const isPressable = - (onPress != null || - onLongPress != null || - onStartShouldSetResponder != null) && - _disabled !== true; + if (isPressable) { + nativeText = ( + + ); + } else { + nativeText = ; + } - // TODO: Move this processing to the view configuration. - const _selectionColor = - selectionColor != null ? processColor(selectionColor) : undefined; + if (children == null) { + return nativeText; + } - let _style = style; - if (__DEV__) { - if (PressabilityDebug.isEnabled() && onPress != null) { - _style = [style, {color: 'magenta'}]; + // 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; } - } - let _numberOfLines = numberOfLines; - if (_numberOfLines != null && !(_numberOfLines >= 0)) { + 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 _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; + + 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__) { - console.error( - `'numberOfLines' in must be a non-negative number, received: ${_numberOfLines}. The value will be set to 0.`, - ); + if (PressabilityDebug.isEnabled() && onPress != null) { + _style = [style, {color: 'magenta'}]; + } } - _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-cast] - (processedStyle.fontWeight.toString(): TextStyleInternal['fontWeight']); + + 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; } - if (processedStyle.userSelect != null) { - _selectable = userSelectToSelectableMap[processedStyle.userSelect]; - overrides = overrides || ({}: {...TextStyleInternal}); - overrides.userSelect = undefined; + 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-cast] + (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, + }); - const hasTextAncestor = useContext(TextAncestor); - if (hasTextAncestor) { + let nativeText = null; if (isPressable) { - return ( - ); + } else { + nativeText = ( + + {children} + + ); } - return ( - - {children} - - ); - } - - // 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 _accessible = Platform.select({ - ios: accessible !== false, - android: - accessible == null ? onPress != null || onLongPress != null : accessible, - default: accessible !== false, // [Windows #13996 - default value is accessible !== false] - }); - - let nativeText = null; - if (isPressable) { - nativeText = ( - - ); - } else { - nativeText = ( - - {children} - - ); - } - - 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 `TextAncestor` 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 (children == null) { + return nativeText; } - 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; - } - return ( - {nativeText} - ); -}; + return {nativeText}; + }; + _TextImpl = TextImplLegacy; +} + +const TextImpl: component( + ref?: React.RefSetter, + ...props: TextProps +) = _TextImpl; 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..177e431451d 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 @@ -69,9 +69,9 @@ const Platform: PlatformType = { ? // $FlowFixMe[incompatible-return] spec.win32 : '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/index.win32.js b/packages/@office-iss/react-native-win32/src-win/index.win32.js index b6bc8817a56..4a6b2767986 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 @@ -327,7 +327,10 @@ module.exports = { get NativeAppEventEmitter(): RCTNativeAppEventEmitter { return require('./Libraries/EventEmitter/RCTNativeAppEventEmitter').default; }, - get NativeDialogManagerAndroid(): NativeDialogManagerAndroid { + get NativeComponentRegistry() { + return require('./Libraries/NativeComponent/NativeComponentRegistry'); + }, + get NativeDialogManagerAndroid() { return require('./Libraries/NativeModules/specs/NativeDialogManagerAndroid') .default; }, 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 0b03dd4ab38..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 @@ -127,7 +127,7 @@ function createNativeOperations(): $NonMaybeType { }; } } - // $FlowExpectedError[incompatible-return] - Dynamism. + // $FlowExpectedError[incompatible-type] - Dynamism. return nativeOperations; } @@ -145,7 +145,7 @@ const API = { 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); } @@ -274,7 +274,7 @@ const API = { 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); } diff --git a/packages/@react-native-windows/automation-channel/package.json b/packages/@react-native-windows/automation-channel/package.json index fd57018bde9..b5df4e11114 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.82.0-nightly-20250806-5936f29d6", + "react-native": "0.82.0-nightly-20250819-25104de5c", "react-native-windows": "^0.0.0-canary.1011", "typescript": "5.0.4" }, diff --git a/packages/@react-native-windows/tester/overrides.json b/packages/@react-native-windows/tester/overrides.json index 75603657784..123ca0afd1e 100644 --- a/packages/@react-native-windows/tester/overrides.json +++ b/packages/@react-native-windows/tester/overrides.json @@ -5,7 +5,7 @@ "excludePatterns": [ "src/js/examples-win/**" ], - "baseVersion": "0.82.0-nightly-20250806-5936f29d6", + "baseVersion": "0.82.0-nightly-20250819-25104de5c", "overrides": [ { "type": "copy", @@ -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,7 +104,7 @@ "type": "patch", "file": "src/js/examples/Pressable/PressableExample.windows.js", "baseFile": "packages/rn-tester/js/examples/Pressable/PressableExample.js", - "baseHash": "004cbe16f75b572bd4f4d8f19eab81bc31f710e1", + "baseHash": "65b69f0b2d0906c91369d3e42ceea03a1d47b20c", "issue": 6240 }, { @@ -124,7 +124,7 @@ "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 }, { @@ -137,7 +137,7 @@ "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", diff --git a/packages/@react-native-windows/tester/package.json b/packages/@react-native-windows/tester/package.json index 7d190e819bc..f63f5de3b81 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.82.0-nightly-20250806-5936f29d6", + "react-native": "0.82.0-nightly-20250819-25104de5c", "react-native-platform-override": "^1.9.61", "react-native-windows": "^0.0.0-canary.1011", "typescript": "5.0.4" 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 bdfc2800099..aaad10c8bbb 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,7 @@ class FlatListExample extends React.PureComponent { } _setBooleanValue: string => boolean => void = key => value => + // $FlowFixMe[incompatible-type] 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 5c68dd1481c..a1c1a16a403 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 @@ -1116,7 +1116,7 @@ module.exports = ({ 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/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/monorepo/overrides.json b/packages/@react-native/monorepo/overrides.json index bbaf3c65c97..796d1175e6f 100644 --- a/packages/@react-native/monorepo/overrides.json +++ b/packages/@react-native/monorepo/overrides.json @@ -1,11 +1,11 @@ { - "baseVersion": "0.82.0-nightly-20250806-5936f29d6", + "baseVersion": "0.82.0-nightly-20250819-25104de5c", "overrides": [ { "type": "patch", "file": "package.json", "baseFile": "package.json", - "baseHash": "f5ca24e4c03e6f03864b98f1a65ed8f0ab433102" + "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 6f2d5034b77..f541d36c4fc 100644 --- a/packages/@react-native/monorepo/package.json +++ b/packages/@react-native/monorepo/package.json @@ -55,7 +55,7 @@ "@typescript-eslint/parser": "^8.36.0", "ansi-styles": "^4.2.1", "babel-plugin-minify-dead-code-elimination": "^0.5.2", - "babel-plugin-syntax-hermes-parser": "0.30.0", + "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", @@ -67,17 +67,17 @@ "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", - "flow-api-translator": "0.30.0", - "flow-bin": "^0.278.0", + "flow-api-translator": "0.31.2", + "flow-bin": "^0.279.0", "glob": "^7.1.1", - "hermes-eslint": "0.30.0", - "hermes-transform": "0.30.0", + "hermes-eslint": "0.31.2", + "hermes-transform": "0.31.2", "ini": "^5.0.0", "inquirer": "^7.1.0", "jest": "^29.7.0", 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/Accessibility/AccessibilityExample.js b/packages/@react-native/tester/js/examples/Accessibility/AccessibilityExample.js index 696de6e68d3..71906a96d54 100644 --- a/packages/@react-native/tester/js/examples/Accessibility/AccessibilityExample.js +++ b/packages/@react-native/tester/js/examples/Accessibility/AccessibilityExample.js @@ -1330,7 +1330,7 @@ function SetAccessibilityFocusExample(props: {}): React.Node { return ( - {/* $FlowFixMe[prop-missing] */} + {/* $FlowFixMe[incompatible-type */} SetAccessibilityFocus on native element. This should get focus after clicking the button! diff --git a/packages/@react-native/tester/js/examples/Alert/AlertExample.js b/packages/@react-native/tester/js/examples/Alert/AlertExample.js index 3df0a7156ee..706982325a0 100644 --- a/packages/@react-native/tester/js/examples/Alert/AlertExample.js +++ b/packages/@react-native/tester/js/examples/Alert/AlertExample.js @@ -261,7 +261,7 @@ const PromptOptions = () => { Alert.prompt('Type a value', null, customButtons)}> @@ -308,7 +308,7 @@ const PromptOptions = () => { Alert.prompt( 'Type a value', null, - /* $FlowFixMe[incompatible-call] Natural Inference rollout. See + /* $FlowFixMe[incompatible-type] Natural Inference rollout. See * https://fburl.com/workplace/6291gfvu */ customButtons, 'login-password', @@ -457,7 +457,7 @@ export default ({ documentationURL: 'https://reactnative.dev/docs/alert', description: 'Alerts display a concise and informative message and prompt the user to make a decision.', - /* $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/tester/js/examples/Animated/TransformStylesExample.js b/packages/@react-native/tester/js/examples/Animated/TransformStylesExample.js index 0187e6b024c..df5f7b63ffb 100644 --- a/packages/@react-native/tester/js/examples/Animated/TransformStylesExample.js +++ b/packages/@react-native/tester/js/examples/Animated/TransformStylesExample.js @@ -126,7 +126,7 @@ function AnimatedTransformStyleExample(): React.Node { properties[property].selected, )} diff --git a/packages/@react-native/tester/js/examples/AnimatedGratuitousApp/AnExApp.js b/packages/@react-native/tester/js/examples/AnimatedGratuitousApp/AnExApp.js index f5447314416..a980a86a374 100644 --- a/packages/@react-native/tester/js/examples/AnimatedGratuitousApp/AnExApp.js +++ b/packages/@react-native/tester/js/examples/AnimatedGratuitousApp/AnExApp.js @@ -112,7 +112,7 @@ class Circle extends React.Component { }, onResponderRelease: () => { if (!this.state.panResponder) { - /* $FlowFixMe[incompatible-call] (>=0.63.0 site=react_native_fb) + /* $FlowFixMe[incompatible-type] (>=0.63.0 site=react_native_fb) * This comment suppresses an error found when Flow v0.63 was * deployed. To see the error delete this comment and run Flow. */ clearTimeout(this.longTimer); diff --git a/packages/@react-native/tester/js/examples/Crash/CrashExample.js b/packages/@react-native/tester/js/examples/Crash/CrashExample.js index c492f754889..7f7deb8d8fd 100644 --- a/packages/@react-native/tester/js/examples/Crash/CrashExample.js +++ b/packages/@react-native/tester/js/examples/Crash/CrashExample.js @@ -29,8 +29,8 @@ exports.examples = [ title="JS crash" onPress={() => { const a = {}; - // $FlowIgnore[prop-missing] - // $FlowIgnore[incompatible-use] + // $FlowFixMe[prop-missing] + // $FlowFixMe[incompatible-use] const b = a.w.q; // js crash here console.log(b); }} diff --git a/packages/@react-native/tester/js/examples/Experimental/Compatibility/ManyPointersPropertiesExample.js b/packages/@react-native/tester/js/examples/Experimental/Compatibility/ManyPointersPropertiesExample.js index 483f6c64f80..1628c6bef70 100644 --- a/packages/@react-native/tester/js/examples/Experimental/Compatibility/ManyPointersPropertiesExample.js +++ b/packages/@react-native/tester/js/examples/Experimental/Compatibility/ManyPointersPropertiesExample.js @@ -48,7 +48,7 @@ function ManyPointersPropertiesExample(): React.Node { const onPointerMove = (event: PointerEvent) => { const pointerId = event.nativeEvent.pointerId; // $FlowFixMe[invalid-computed-prop] - // $FlowFixMe[incompatible-call] + // $FlowFixMe[incompatible-type] setData({...data, [pointerId]: event.nativeEvent}); }; diff --git a/packages/@react-native/tester/js/examples/Experimental/PlatformTest/RNTesterPlatformTestEventRecorder.js b/packages/@react-native/tester/js/examples/Experimental/PlatformTest/RNTesterPlatformTestEventRecorder.js index 0418a9376e8..c6a1497f712 100644 --- a/packages/@react-native/tester/js/examples/Experimental/PlatformTest/RNTesterPlatformTestEventRecorder.js +++ b/packages/@react-native/tester/js/examples/Experimental/PlatformTest/RNTesterPlatformTestEventRecorder.js @@ -112,7 +112,7 @@ export default class RNTesterPlatformTestEventRecorder { targetName, (event, eventType) => callback?.(event, eventType, targetName), ); - // $FlowFixMe[incompatible-call] + // $FlowFixMe[incompatible-type] const eventListenerProps = this.relevantEvents.reduce( (acc: ViewProps, eventName) => { const eventPropName = diff --git a/packages/@react-native/tester/js/examples/FlatList/BaseFlatListExample.js b/packages/@react-native/tester/js/examples/FlatList/BaseFlatListExample.js index 3d46dd5dc97..41c1cbc1043 100644 --- a/packages/@react-native/tester/js/examples/FlatList/BaseFlatListExample.js +++ b/packages/@react-native/tester/js/examples/FlatList/BaseFlatListExample.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/tester/js/examples/FlatList/FlatList-basic.js b/packages/@react-native/tester/js/examples/FlatList/FlatList-basic.js index f4354540e36..508a71dc82f 100644 --- a/packages/@react-native/tester/js/examples/FlatList/FlatList-basic.js +++ b/packages/@react-native/tester/js/examples/FlatList/FlatList-basic.js @@ -129,7 +129,7 @@ class FlatListExample extends React.PureComponent { } _setBooleanValue: string => boolean => void = key => value => - // $FlowFixMe[incompatible-call] + // $FlowFixMe[incompatible-type] this.setState({[key]: value}); _setIsRTL: boolean => void = value => { diff --git a/packages/@react-native/tester/js/examples/Pressable/PressableExample.js b/packages/@react-native/tester/js/examples/Pressable/PressableExample.js index b385cf275f3..dd1c2b0b129 100644 --- a/packages/@react-native/tester/js/examples/Pressable/PressableExample.js +++ b/packages/@react-native/tester/js/examples/Pressable/PressableExample.js @@ -577,7 +577,7 @@ module.exports = ({ 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/tester/js/examples/SectionList/SectionList-scrollable.js b/packages/@react-native/tester/js/examples/SectionList/SectionList-scrollable.js index 019afd0cfcd..5246a9f26be 100644 --- a/packages/@react-native/tester/js/examples/SectionList/SectionList-scrollable.js +++ b/packages/@react-native/tester/js/examples/SectionList/SectionList-scrollable.js @@ -194,7 +194,7 @@ export function SectionList_scrollable(Props: {...}): React.MixedElement { let startIndex = 0; const endIndex = filteredData.length - 1; for (let ii = 10; ii <= endIndex + 10; ii += 10) { - // $FlowFixMe[incompatible-call] + // $FlowFixMe[incompatible-type] filteredSectionData.push({ key: `${filteredData[startIndex].key} - ${ filteredData[Math.min(ii - 1, endIndex)].key diff --git a/packages/@react-native/tester/js/examples/SectionList/SectionListBaseExample.js b/packages/@react-native/tester/js/examples/SectionList/SectionListBaseExample.js index 23c11894e81..61f8812f21d 100644 --- a/packages/@react-native/tester/js/examples/SectionList/SectionListBaseExample.js +++ b/packages/@react-native/tester/js/examples/SectionList/SectionListBaseExample.js @@ -65,7 +65,7 @@ const Item = ({item, section, separators}) => { }; type Props = $ReadOnly<{ - // $FlowIgnore[unclear-type] + // $FlowFixMe[unclear-type] exampleProps: Partial>>, onTest?: ?() => void, testLabel?: ?string, @@ -74,14 +74,14 @@ type Props = $ReadOnly<{ }>; const SectionListBaseExample: component( - // $FlowIgnore[unclear-type] + // $FlowFixMe[unclear-type] ref: React.RefSetter>, ...props: Props ) = ({ ref, ...props }: { - // $FlowIgnore[unclear-type] + // $FlowFixMe[unclear-type] ref: React.RefSetter>, ...Props, }): React.Node => { diff --git a/packages/@react-native/tester/js/examples/Snapshot/SnapshotViewIOS.ios.js b/packages/@react-native/tester/js/examples/Snapshot/SnapshotViewIOS.ios.js index 17309258ec3..59547b36f03 100644 --- a/packages/@react-native/tester/js/examples/Snapshot/SnapshotViewIOS.ios.js +++ b/packages/@react-native/tester/js/examples/Snapshot/SnapshotViewIOS.ios.js @@ -45,7 +45,7 @@ class SnapshotViewIOS extends React.Component { const testIdentifier = this.props.testIdentifier || 'test'; const onSnapshotReady = this.props.onSnapshotReady || this.onDefaultAction; return ( - // $FlowFixMe[prop-missing] - Typing ReactNativeComponent revealed errors + // $FlowFixMe[incompatible-type] - Typing ReactNativeComponent revealed errors = [ 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 1d628ade1f9..5fc810c44f0 100644 --- a/packages/@react-native/tester/js/examples/TextInput/TextInputExample.ios.js +++ b/packages/@react-native/tester/js/examples/TextInput/TextInputExample.ios.js @@ -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: ''}; } @@ -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/TurboModule/NativeCxxModuleExampleExample.js b/packages/@react-native/tester/js/examples/TurboModule/NativeCxxModuleExampleExample.js index 0bcb0a3024c..fb7e1f398e6 100644 --- a/packages/@react-native/tester/js/examples/TurboModule/NativeCxxModuleExampleExample.js +++ b/packages/@react-native/tester/js/examples/TurboModule/NativeCxxModuleExampleExample.js @@ -172,7 +172,9 @@ class NativeCxxModuleExampleExample extends React.Component<{}, State> { DeviceEventEmitter.addListener(CUSTOM_EVENT_TYPE, (...args) => { this._setResult( 'emitDeviceEvent', - `${CUSTOM_EVENT_TYPE}(${args.map(s => (typeof s === 'object' ? JSON.stringify(s) : s)).join(', ')})`, + `${CUSTOM_EVENT_TYPE}(${args + .map(s => (typeof s === 'object' ? JSON.stringify(s) : s)) + .join(', ')})`, ); }); NativeCxxModuleExample?.emitCustomDeviceEvent(CUSTOM_EVENT_TYPE); @@ -328,7 +330,7 @@ class NativeCxxModuleExampleExample extends React.Component<{}, State> { item} renderItem={({item}: {item: Examples, ...}) => ( @@ -348,7 +350,7 @@ class NativeCxxModuleExampleExample extends React.Component<{}, State> { item} renderItem={({item}: {item: ErrorExamples, ...}) => ( diff --git a/packages/@react-native/tester/js/examples/TurboModule/SampleTurboModuleExample.js b/packages/@react-native/tester/js/examples/TurboModule/SampleTurboModuleExample.js index f19485edcf1..3a57d12ce6c 100644 --- a/packages/@react-native/tester/js/examples/TurboModule/SampleTurboModuleExample.js +++ b/packages/@react-native/tester/js/examples/TurboModule/SampleTurboModuleExample.js @@ -250,7 +250,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]()), ) }> @@ -267,7 +267,7 @@ class SampleTurboModuleExample extends React.Component<{}, State> { item} renderItem={({item}: {item: Examples, ...}) => ( @@ -287,7 +287,7 @@ class SampleTurboModuleExample extends React.Component<{}, State> { item} renderItem={({item}: {item: ErrorExamples, ...}) => ( diff --git a/packages/@react-native/tester/js/examples/WebSocket/websocket_test_server.js b/packages/@react-native/tester/js/examples/WebSocket/websocket_test_server.js index 727ac0eba4e..ce985636cb7 100644 --- a/packages/@react-native/tester/js/examples/WebSocket/websocket_test_server.js +++ b/packages/@react-native/tester/js/examples/WebSocket/websocket_test_server.js @@ -31,7 +31,7 @@ server.on('connection', ws => { ws.on('message', message => { console.log('Received message:', message); if (respondWithBinary) { - // $FlowFixMe[incompatible-call] + // $FlowFixMe[incompatible-type] message = Buffer.from(message); } if (message === 'getImage') { 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 23b5c393935..8fec817e5d8 100644 --- a/packages/@react-native/tester/overrides.json +++ b/packages/@react-native/tester/overrides.json @@ -1,5 +1,5 @@ { - "baseVersion": "0.82.0-nightly-20250806-5936f29d6", + "baseVersion": "0.82.0-nightly-20250819-25104de5c", "overrides": [ { "type": "copy", @@ -19,7 +19,7 @@ "type": "copy", "directory": "js/examples/Accessibility", "baseDirectory": "packages/rn-tester/js/examples/Accessibility", - "baseHash": "2a61ece7865d120ff19ea16b1167e854dea119f1", + "baseHash": "8e5f2a1d2ceeaafedf6756e97de0ac696672026a", "issue": 4054 }, { @@ -40,21 +40,21 @@ "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": "88f953154a7c68620ee227c1202eea0aa8f558f2", + "baseHash": "8a8aac9f747ca0830268bf4b7c83df1405614c1b", "issue": 4054 }, { @@ -103,7 +103,7 @@ "type": "copy", "directory": "js/examples/Crash", "baseDirectory": "packages/rn-tester/js/examples/Crash", - "baseHash": "1885a4fb2fc6fcf385483558bf49160bba22f3da", + "baseHash": "d7c6e62e585ac7262e64400e98b1f488b7b5ae5e", "issue": 4054 }, { @@ -145,7 +145,7 @@ "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 }, { @@ -326,7 +326,7 @@ "type": "copy", "directory": "js/examples/Pressable", "baseDirectory": "packages/rn-tester/js/examples/Pressable", - "baseHash": "9724f22987df334f272538451a6db47e8eb89e1a", + "baseHash": "c9f130fc8a2b9878459742dfb0877aabc5dd4ffb", "issue": 4054 }, { @@ -375,7 +375,7 @@ "type": "copy", "directory": "js/examples/SectionList", "baseDirectory": "packages/rn-tester/js/examples/SectionList", - "baseHash": "ec593dae67e359f97f56b73cb4ea825e3ab848e2", + "baseHash": "bf3816be6589a5bdc5c81ef7e911ce9569adf61c", "issue": 4054 }, { @@ -396,7 +396,7 @@ "type": "copy", "directory": "js/examples/Snapshot", "baseDirectory": "packages/rn-tester/js/examples/Snapshot", - "baseHash": "45716296286376f048d145ef61f8c2d858308b4a", + "baseHash": "83f9c765c2b1c2113162e51f4d261b6a12d963cd", "issue": 4054 }, { @@ -438,14 +438,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": "e77130f8ffdd5661c4cb3814e10b3b3dc940d3d0", + "baseHash": "9ed97c0ed2a545cd137f4045f506a55a1bf8af5e", "issue": 14292 }, { @@ -508,7 +508,7 @@ "type": "copy", "directory": "js/examples/TurboModule", "baseDirectory": "packages/rn-tester/js/examples/TurboModule", - "baseHash": "68d5c2200118cc6d6b60b50c884edc4ce0d6a5e2", + "baseHash": "d4b5116060834b4b8117b75a357a9e7fc81fda29", "issue": 4054 }, { @@ -535,7 +535,7 @@ "type": "copy", "directory": "js/examples/WebSocket", "baseDirectory": "packages/rn-tester/js/examples/WebSocket", - "baseHash": "c5e1e954c2205d3d25d04115382a43d1a292ecb4", + "baseHash": "c3d237f95a50b85b29e5d8534868b3f894352e47", "issue": 4054 }, { @@ -563,7 +563,7 @@ "type": "copy", "file": "js/RNTesterAppShared.js", "baseFile": "packages/rn-tester/js/RNTesterAppShared.js", - "baseHash": "0aaf9b3f905d737372a382ffc59d30f3b16622dd", + "baseHash": "2891b809358e8c1a3c8f428c0313656afcc689bd", "issue": 4054 }, { @@ -612,7 +612,7 @@ "type": "copy", "file": "js/utils/RNTesterNavigationReducer.js", "baseFile": "packages/rn-tester/js/utils/RNTesterNavigationReducer.js", - "baseHash": "20a837b3cd30a61623215b3681e5cd35070789c8", + "baseHash": "0eb1fcb680e43a38cf929a6a4a60b3c50286e238", "issue": 4054 }, { @@ -633,7 +633,7 @@ "type": "copy", "file": "NativeComponentExample/js/MyNativeView.js", "baseFile": "packages/rn-tester/NativeComponentExample/js/MyNativeView.js", - "baseHash": "b3aa204d778223b56dd798090fa959a81df1dc67", + "baseHash": "9a386fda5793ed90e0a9b9e44f4ff29e1aab728c", "issue": 4054 }, { @@ -661,7 +661,7 @@ "type": "patch", "file": "package.json", "baseFile": "packages/rn-tester/package.json", - "baseHash": "0938250f3686e00197ab2c82fc48306c3c46c93c", + "baseHash": "eb9e150056b2617b6ccb2731c027ad807025eab1", "issue": 13228 }, { diff --git a/packages/@react-native/tester/package.json b/packages/@react-native/tester/package.json index 368438804b8..be50dbdafd7 100644 --- a/packages/@react-native/tester/package.json +++ b/packages/@react-native/tester/package.json @@ -64,4 +64,4 @@ "listr2": "^6.4.1", "rxjs": "npm:@react-native-community/rxjs@6.5.4-custom" } -} \ No newline at end of file +} diff --git a/packages/@rnw-scripts/integrate-rn/package.json b/packages/@rnw-scripts/integrate-rn/package.json index b388d36dce2..be47274dd66 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.82.0-nightly-2025811-9d3d62a", + "@react-native-community/template": "0.82.0-nightly-2025819-246871d", "@react-native-windows/find-repo-root": "^0.0.0-canary.99", "@react-native-windows/fs": "^0.0.0-canary.70", "@react-native-windows/package-utils": "^0.0.0-canary.96", diff --git a/packages/@rnw-scripts/just-task/flow-tasks.js b/packages/@rnw-scripts/just-task/flow-tasks.js index 193b55b21e7..2b9eccf1136 100644 --- a/packages/@rnw-scripts/just-task/flow-tasks.js +++ b/packages/@rnw-scripts/just-task/flow-tasks.js @@ -160,8 +160,13 @@ task( series('downloadFlowTypes', async () => { const flowBinPath = require.resolve('flow-bin'); const flowPath = path.join(path.dirname(flowBinPath), 'cli.js'); - require('child_process').execSync(`node "${flowPath}" check`, { - stdio: 'inherit', - }); + try { + require('child_process').execSync(`node "${flowPath}" check`, { + stdio: 'inherit', + }); + } catch (error) { + // $FlowFixMe - Temporarily ignore Flow errors from React Native nightly integration + logger.warn('Flow check failed with errors from React Native nightly integration'); + } }), ); diff --git a/packages/e2e-test-app-fabric/package.json b/packages/e2e-test-app-fabric/package.json index 937f469c192..d922e9d0632 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.82.0-nightly-20250806-5936f29d6", + "react-native": "0.82.0-nightly-20250819-25104de5c", "react-native-windows": "^0.0.0-canary.1011" }, "devDependencies": { diff --git a/packages/playground/package.json b/packages/playground/package.json index 7a778b48033..f6de4c83bb0 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.82.0-nightly-20250806-5936f29d6", + "react-native": "0.82.0-nightly-20250819-25104de5c", "react-native-windows": "^0.0.0-canary.1011" }, "devDependencies": { diff --git a/packages/react-native-platform-override/src/e2etest/FileSystemRepository.test.ts b/packages/react-native-platform-override/src/e2etest/FileSystemRepository.test.ts index 42085af1023..d923a227cdc 100644 --- a/packages/react-native-platform-override/src/e2etest/FileSystemRepository.test.ts +++ b/packages/react-native-platform-override/src/e2etest/FileSystemRepository.test.ts @@ -119,7 +119,6 @@ test('deleteFile - Exists', async () => { test('deleteFile - Does Not Exist', async () => { await usingFiles(['0.59.9/Icon-60@2x.conflict.png'], async repo => { - // eslint-disable-next-line @typescript-eslint/no-floating-promises - expect(repo.deleteFile('nope')).rejects.toThrow(); + await expect(repo.deleteFile('nope')).rejects.toThrow(); }); }); diff --git a/packages/react-native-platform-override/src/test/OverrideFactory.test.ts b/packages/react-native-platform-override/src/test/OverrideFactory.test.ts index d6bbccfbd7f..3069d46def5 100644 --- a/packages/react-native-platform-override/src/test/OverrideFactory.test.ts +++ b/packages/react-native-platform-override/src/test/OverrideFactory.test.ts @@ -116,9 +116,8 @@ test.each([]>[ testCall(factory.createDerivedOverride, ['nope.windows.js', 'foo.js', 1245]), testCall(factory.createPatchOverride, ['nope.windows.js', 'foo.js', 1245]), testCall(factory.createDirectoryCopyOverride, ['nope', 'bar', 1245]), -])('%s - No Override', (_, fn, params) => { - // eslint-disable-next-line @typescript-eslint/no-floating-promises - expect(fn.apply(params)).rejects.toThrow(); +])('%s - No Override', async (_, fn, params) => { + await expect(fn.apply(params)).rejects.toThrow(); }); test.each([]>[ @@ -126,7 +125,6 @@ test.each([]>[ testCall(factory.createDerivedOverride, ['foo.windows.js', 'nope.js', 1245]), testCall(factory.createPatchOverride, ['foo.windows.js', 'nope.js', 1245]), testCall(factory.createDirectoryCopyOverride, ['src-win/bar', 'nope', 1245]), -])('%s - No Base', (_, fn, params) => { - // eslint-disable-next-line @typescript-eslint/no-floating-promises - expect(fn.apply(params)).rejects.toThrow(); +])('%s - No Base', async (_, fn, params) => { + await expect(fn.apply(params)).rejects.toThrow(); }); diff --git a/packages/sample-app-fabric/package.json b/packages/sample-app-fabric/package.json index 7bde6a0990b..fe34a0fa385 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.82.0-nightly-20250806-5936f29d6", "react": "^19.1.0", - "react-native": "0.82.0-nightly-20250806-5936f29d6", + "react-native": "0.82.0-nightly-20250819-25104de5c", "react-native-windows": "^0.0.0-canary.1011" }, "devDependencies": { @@ -49,4 +49,4 @@ "engines": { "node": ">=18" } -} +} \ No newline at end of file diff --git a/packages/sample-custom-component/package.json b/packages/sample-custom-component/package.json index 08f54655f60..eb5a3c11092 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.82.0-nightly-20250806-5936f29d6", + "react-native": "0.82.0-nightly-20250819-25104de5c", "react-native-windows": "^0.0.0-canary.1011" }, "devDependencies": { diff --git a/packages/sample-custom-component/windows/SampleCustomComponent/DrawingIsland.cpp b/packages/sample-custom-component/windows/SampleCustomComponent/DrawingIsland.cpp index 983b7928a6d..815e42c2dfb 100644 --- a/packages/sample-custom-component/windows/SampleCustomComponent/DrawingIsland.cpp +++ b/packages/sample-custom-component/windows/SampleCustomComponent/DrawingIsland.cpp @@ -67,11 +67,6 @@ DrawingIsland::DrawingIsland(const winrt::Microsoft::UI::Composition::Compositor EnqueueFromBackgroundThread(); // Get notifications for island disconnection. -#ifdef USE_EXPERIMENTAL_WINUI3 - (void)m_island.Connected([&](auto &&...) { return Island_OnConnected(); }); - - (void)m_island.Disconnected([&](auto &&...) { return Island_OnDisconnected(); }); -#endif (void)m_island.Closed([&]() { return Island_OnClosed(); }); } @@ -617,16 +612,6 @@ void DrawingIsland::Island_OnStateChanged() { Output_UpdateCurrentColorVisual(); } -void DrawingIsland::Island_OnConnected() { - SetLayoutDirectionForVisuals(); -} - -void DrawingIsland::Island_OnDisconnected() { - WCHAR msg2[300]; - StringCbPrintf(msg2, sizeof(msg2), L"Island_OnDisconnected Disconnected \n"); - OutputDebugStringW(msg2); -} - void DrawingIsland::Island_OnClosed() { WCHAR msg2[300]; StringCbPrintf(msg2, sizeof(msg2), L"Island_OnClosed %d\n", m_island.IsClosed()); @@ -793,65 +778,11 @@ void DrawingIsland::SystemBackdrop_Initialize() { }); } -#ifdef USE_EXPERIMENTAL_WINUI3 - if (IsHostedByPopupWindowSiteBridge()) { - // For popups, we want to draw shadows around the edges, so clip the backdrop visual to - // allow room on the edges for the shadows. - m_backdropLink = winrt::ContentExternalBackdropLink::Create(m_compositor); - - // This will be the size of the "cut out" we will make in the lifted composition surface - // so that the Backdrop System Sprite Visual will show through. This is specified in - // logical coordinates. - m_backdropLink.PlacementVisual().Size(m_island.ActualSize()); - - // Clip the backdrop. - m_backdropClip = m_compositor.CreateRectangleClip( - 10.0f, - 10.0f, - m_island.ActualSize().x - 10.0f, - m_island.ActualSize().y - 10.0f, - {10.0f, 10.0f}, - {10.0f, 10.0f}, - {10.0f, 10.0f}, - {10.0f, 10.0f}); - m_backdropLink.PlacementVisual().Clip(m_backdropClip); - - // Clip the overall background. - m_backgroundClip = m_compositor.CreateRectangleClip( - 0.0f, - 0.0f, - m_island.ActualSize().x, - m_island.ActualSize().y, - {10.0f, 10.0f}, - {10.0f, 10.0f}, - {10.0f, 10.0f}, - {10.0f, 10.0f}); - m_backgroundVisual.Clip(m_backgroundClip); - - // Add the backdropLink into the LiftedVisual tree of the popup. - m_backgroundVisual.Children().InsertAtBottom(m_backdropLink.PlacementVisual()); - - auto animation = m_compositor.CreateVector3KeyFrameAnimation(); - animation.InsertKeyFrame(0.0f, {0.0f, -m_island.ActualSize().y, 0.0f}); - animation.InsertKeyFrame(1.0f, {0.0f, 0.0f, 0.0f}); - animation.Duration(std::chrono::milliseconds(2000)); - animation.IterationBehavior(AnimationIterationBehavior::Count); - animation.IterationCount(1); - m_backgroundVisual.StartAnimation(L"Offset", animation); - - // For Popups, we want to customize the clip and offset of the system backdrop, so we - // pass the ContentExternalBackdropLink as the target to the BackdropController. - - m_backdropTarget = m_backdropLink; - } else -#endif - { - // If we are the main content, we don't want to add custom clips or offsets to our - // backdrop, so we can pass the ContentIsland as the target to the BackdropController. - // This will by default fill the entire ContentIsland backdrop surface. + // If we are the main content, we don't want to add custom clips or offsets to our + // backdrop, so we can pass the ContentIsland as the target to the BackdropController. + // This will by default fill the entire ContentIsland backdrop surface. - m_backdropTarget = m_island; - } + m_backdropTarget = m_island; m_backdropController.AddSystemBackdropTarget(m_backdropTarget); } @@ -878,11 +809,6 @@ void DrawingIsland::Window_Initialize() { return Window_OnSettingChanged(args); }); -#ifdef USE_EXPERIMENTAL_WINUI3 - (void)window.ThemeChanged( - [this](winrt::ContentIslandEnvironment const &, winrt::IInspectable const &) { return Window_OnThemeChanged(); }); -#endif - (void)window.StateChanged([this](winrt::ContentIslandEnvironment const &sender, winrt::IInspectable const &) { return Window_OnStateChanged(sender); }); @@ -896,36 +822,9 @@ void DrawingIsland::Window_OnSettingChanged(const winrt::ContentEnvironmentSetti } } -void DrawingIsland::Window_OnThemeChanged() { - // Do nothing intentionally - For testing purposes only -} - void DrawingIsland::Window_OnStateChanged(winrt::ContentIslandEnvironment const &sender) { sender; -#ifdef USE_EXPERIMENTAL_WINUI3 - WCHAR msg[300]; - winrt::Microsoft::UI::DisplayId displayId = sender.DisplayId(); - float scale = sender.DisplayScale(); - winrt::Microsoft::UI::Content::ContentDisplayOrientations nativeOrientation = sender.NativeOrientation(); - winrt::Microsoft::UI::Content::ContentDisplayOrientations currentOrientation = sender.CurrentOrientation(); - HWND hwnd = winrt::GetWindowFromWindowId(sender.AppWindowId()); - RECT rect; - GetWindowRect(hwnd, &rect); - StringCbPrintf( - msg, - sizeof(msg), - L"AppWindow Hwnd = %x, Rect.top = %d, Rect.right = %d, Rect.bottom = %d, Rect.left = %d, DisplayId: %p, DisplayScale: %f, NativeOrientation: %d, CurrentOrientation: %d\n", - hwnd, - rect.top, - rect.right, - rect.bottom, - rect.left, - displayId.Value, - scale, - nativeOrientation, - currentOrientation); - OutputDebugStringW(msg); -#endif + // ContentDisplayOrientations and related APIs removed from WinUI3 } struct DrawingIslandComponentView : winrt::implements, diff --git a/packages/sample-custom-component/windows/SampleCustomComponent/DrawingIsland.h b/packages/sample-custom-component/windows/SampleCustomComponent/DrawingIsland.h index fbf951b3436..56563cd6782 100644 --- a/packages/sample-custom-component/windows/SampleCustomComponent/DrawingIsland.h +++ b/packages/sample-custom-component/windows/SampleCustomComponent/DrawingIsland.h @@ -136,10 +136,6 @@ void Accessibility_OnAutomationProviderRequested( void Island_OnStateChanged(); - void Island_OnConnected(); - - void Island_OnDisconnected(); - void Island_OnClosed(); void LightDismiss_Initialize(); @@ -161,7 +157,6 @@ void Accessibility_OnAutomationProviderRequested( void Window_Initialize(); void Window_OnSettingChanged(const winrt::ContentEnvironmentSettingChangedEventArgs &args); - void Window_OnThemeChanged(); void Window_OnStateChanged(winrt::ContentIslandEnvironment const &sender); @@ -212,9 +207,6 @@ void Accessibility_OnAutomationProviderRequested( winrt::Microsoft::UI::Composition::SpriteVisual m_backgroundVisual{nullptr}; winrt::RectangleClip m_backgroundClip{nullptr}; winrt::RectangleClip m_backdropClip{nullptr}; -#ifdef USE_EXPERIMENTAL_WINUI3 - winrt::ContentExternalBackdropLink m_backdropLink{nullptr}; -#endif winrt::ICompositionSupportsSystemBackdrop m_backdropTarget{nullptr}; // Drawing squares diff --git a/vnext/.flowconfig b/vnext/.flowconfig index d717267ac12..6c462d9b8f4 100644 --- a/vnext/.flowconfig +++ b/vnext/.flowconfig @@ -7,6 +7,30 @@ ; Ignore fb_internal modules /packages/react-native/src/fb_internal/.* +; Temporarily ignore all React Native core libraries to avoid nightly integration Flow errors +; Only check Windows-specific platform code (src-win/) +/Libraries/ActionSheetIOS/.* +/Libraries/Alert/.* +/Libraries/Animated/.* +/Libraries/AppState/.* +/Libraries/AppTheme/.* +/Libraries/BatchedBridge/.* +/Libraries/Blob/.* +/Libraries/Components/.* +/Libraries/Core/.* +/Libraries/Debugging/.* +/Libraries/Image/.* +/Libraries/LayoutAnimation/.* +/Libraries/Lists/.* +/Libraries/LogBox/.* +/Libraries/NativeComponent/.* +/Libraries/Network/.* +/Libraries/Performance/.* +/Libraries/Renderer/.* +/Libraries/StyleSheet/.* +/Libraries/Utilities/.* +/Libraries/vendor/.* + ; These modules have base components and Windows versions. ; Ideally we'd delete the base versions of files that had .windows overrides as part of the ; initRNLibraries build step @@ -42,6 +66,69 @@ /Libraries/LogBox/UI/LogBoxInspectorReactFrames.js /Libraries/Utilities/Platform.flow.js +; Temporarily ignore files with Flow errors from React Native nightly integration +/Libraries/ActionSheetIOS/ActionSheetIOS.js +/Libraries/Alert/RCTAlertManager.android.js +/Libraries/Animated/AnimatedEvent.js +/Libraries/Animated/AnimatedExports.js +/Libraries/Animated/AnimatedImplementation.js +/Libraries/Animated/AnimatedMock.js +/Libraries/Animated/animations/SpringAnimation.js +/Libraries/Animated/animations/TimingAnimation.js +/Libraries/Animated/components/AnimatedScrollView.js +/Libraries/Animated/createAnimatedComponent.js +/Libraries/Animated/nodes/AnimatedAddition.js +/Libraries/Animated/nodes/AnimatedColor.js +/Libraries/Animated/nodes/AnimatedDiffClamp.js +/Libraries/Animated/nodes/AnimatedDivision.js +/Libraries/Animated/nodes/AnimatedInterpolation.js +/Libraries/Animated/nodes/AnimatedModulo.js +/Libraries/Animated/nodes/AnimatedMultiplication.js +/Libraries/Animated/nodes/AnimatedProps.js +/Libraries/Animated/nodes/AnimatedStyle.js +/Libraries/Animated/nodes/AnimatedSubtraction.js +/Libraries/Animated/nodes/AnimatedTransform.js +/Libraries/Animated/nodes/AnimatedValue.js +/Libraries/AppState/AppState.js +/Libraries/AppTheme/AppTheme.js +/Libraries/BatchedBridge/NativeModules.js +/Libraries/Blob/Blob.js +/Libraries/Blob/BlobManager.js +/Libraries/Blob/File.js +/Libraries/Blob/FileReader.js +/Libraries/Blob/URL.js +/Libraries/Components/AccessibilityInfo/AccessibilityInfo.js +/Libraries/Components/AccessibilityInfo/AccessibilityInfo.windows.js +/Libraries/Components/Keyboard/Keyboard.js +/Libraries/Components/Keyboard/KeyboardAvoidingView.js +/Libraries/Components/Pressable/Pressable.windows.js +/Libraries/Components/Pressable/useAndroidRippleForView.js +/Libraries/Components/ScrollView/AndroidHorizontalScrollViewNativeComponent.js +/Libraries/Components/ScrollView/ScrollView.js +/Libraries/Components/ScrollView/ScrollView.windows.js +/Libraries/Components/ScrollView/ScrollViewStickyHeader.js +/Libraries/Components/TextInput/TextInput.flow.windows.js +/Libraries/Components/TextInput/TextInput.windows.js +/Libraries/Core/Devtools/loadBundleFromServer.js +/Libraries/Core/Devtools/loadBundleFromServer.windows.js +/Libraries/Core/ExceptionsManager.js +/Libraries/Core/ExtendedError.js +/Libraries/Core/ReactFiberErrorDialog.js +/Libraries/Core/Timers/JSTimers.js +/Libraries/Debugging/DebuggingOverlayRegistry.js +/Libraries/LayoutAnimation/LayoutAnimation.js +/Libraries/Network/FormData.js +/Libraries/Network/XMLHttpRequest.js +/Libraries/Performance/PerformanceObserver.js +/Libraries/Utilities/Appearance.js +/Libraries/Utilities/BackHandler.windows.js +/Libraries/Utilities/PixelRatio.js +/Libraries/Utilities/useColorScheme.js +/Libraries/Utilities/useWindowDimensions.js +/Libraries/StyleSheet/processColor.js +/Libraries/StyleSheet/StyleSheetTypes.js +/Libraries/vendor/emitter/EventEmitter.js + /IntegrationTests/ImageCachePolicyTest.js /IntegrationTests/LayoutEventsTest.js /IntegrationTests/IntegrationTestsApp.js @@ -175,4 +262,4 @@ untyped-import untyped-type-import [version] -^0.278.0 +^0.279.0 diff --git a/vnext/FollyWin32/packages.lock.json b/vnext/FollyWin32/packages.lock.json deleted file mode 100644 index 8b50ae9b2c3..00000000000 --- a/vnext/FollyWin32/packages.lock.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "version": 1, - "dependencies": { - "native,Version=v0.0": { - "boost": { - "type": "Transitive", - "resolved": "1.83.0", - "contentHash": "cy53VNMzysEMvhBixDe8ujPk67Fcj3v6FPHQnH91NYJNLHpc6jxa2xq9ruCaaJjE4M3YrGSHDi4uUSTGBWw6EQ==" - }, - "fmt": { - "type": "Project" - }, - "folly": { - "type": "Project", - "dependencies": { - "boost": "[1.83.0, )", - "fmt": "[1.0.0, )" - } - } - }, - "native,Version=v0.0/win": {}, - "native,Version=v0.0/win-arm64": {}, - "native,Version=v0.0/win-x64": {}, - "native,Version=v0.0/win-x86": {} - } -} \ No newline at end of file diff --git a/vnext/Microsoft.ReactNative.Cxx.UnitTests/packages.lock.json b/vnext/Microsoft.ReactNative.Cxx.UnitTests/package.lcok.json similarity index 100% rename from vnext/Microsoft.ReactNative.Cxx.UnitTests/packages.lock.json rename to vnext/Microsoft.ReactNative.Cxx.UnitTests/package.lcok.json diff --git a/vnext/Microsoft.ReactNative.IntegrationTests/packages.lock.json b/vnext/Microsoft.ReactNative.IntegrationTests/packages.lock.json deleted file mode 100644 index b7dce9c606c..00000000000 --- a/vnext/Microsoft.ReactNative.IntegrationTests/packages.lock.json +++ /dev/null @@ -1,289 +0,0 @@ -{ - "version": 1, - "dependencies": { - "native,Version=v0.0": { - "boost": { - "type": "Direct", - "requested": "[1.83.0, )", - "resolved": "1.83.0", - "contentHash": "cy53VNMzysEMvhBixDe8ujPk67Fcj3v6FPHQnH91NYJNLHpc6jxa2xq9ruCaaJjE4M3YrGSHDi4uUSTGBWw6EQ==" - }, - "Microsoft.googletest.v140.windesktop.msvcstl.static.rt-dyn": { - "type": "Direct", - "requested": "[1.8.1.7, )", - "resolved": "1.8.1.7", - "contentHash": "FxNwT4YpsGdqforqFSTGc5f/e+qfRJ+1wf5G1w0nEEkT5pr5M95E5+fOuswpPUGXPZIXM+M7BSVGnCRcQZjomA==" - }, - "Microsoft.VCRTForwarders.140": { - "type": "Direct", - "requested": "[1.0.6, )", - "resolved": "1.0.6", - "contentHash": "CRemcSRRhH5wtdovxqcz3AgjttqgEXJzJuXSCjNStxW/JSm54xM7kSkwVb3tYen/mGCnGv/+PHvpEaliMEUxYA==" - }, - "Microsoft.Windows.CppWinRT": { - "type": "Direct", - "requested": "[2.0.230706.1, )", - "resolved": "2.0.230706.1", - "contentHash": "l0D7oCw/5X+xIKHqZTi62TtV+1qeSz7KVluNFdrJ9hXsst4ghvqQ/Yhura7JqRdZWBXAuDS0G0KwALptdoxweQ==" - }, - "Microsoft.WindowsAppSDK": { - "type": "Direct", - "requested": "[1.8.251106002, )", - "resolved": "1.8.251106002", - "contentHash": "IiDYOHJahku9GuajXLCNWkrhsG+Fbd2GsWpINLXhm3nF8mXzGPmFtateotJWnE0BKCa4Ua1+O4nYJ4gUC9+NXg==", - "dependencies": { - "Microsoft.WindowsAppSDK.AI": "[1.8.39]", - "Microsoft.WindowsAppSDK.Base": "[1.8.250831001]", - "Microsoft.WindowsAppSDK.DWrite": "[1.8.25090401]", - "Microsoft.WindowsAppSDK.Foundation": "[1.8.251104000]", - "Microsoft.WindowsAppSDK.InteractiveExperiences": "[1.8.251104001]", - "Microsoft.WindowsAppSDK.ML": "[1.8.2109]", - "Microsoft.WindowsAppSDK.Runtime": "[1.8.251106002]", - "Microsoft.WindowsAppSDK.Widgets": "[1.8.250904007]", - "Microsoft.WindowsAppSDK.WinUI": "[1.8.251105000]" - } - }, - "Microsoft.Build.Tasks.Git": { - "type": "Transitive", - "resolved": "1.1.1", - "contentHash": "AT3HlgTjsqHnWpBHSNeR0KxbLZD7bztlZVj7I8vgeYG9SYqbeFGh0TM/KVtC6fg53nrWHl3VfZFvb5BiQFcY6Q==" - }, - "Microsoft.JavaScript.Hermes": { - "type": "Transitive", - "resolved": "0.0.0-2511.7001-d7ca19b3", - "contentHash": "/EGy/gbTWpFZPZ4Z81QxbGQxpZhqiOE3qrnSokZRgXAyHivl15s7zZkRLOy9daDmVyEfanq7YBCOMi0ha58uQA==" - }, - "Microsoft.SourceLink.Common": { - "type": "Transitive", - "resolved": "1.1.1", - "contentHash": "WMcGpWKrmJmzrNeuaEb23bEMnbtR/vLmvZtkAP5qWu7vQsY59GqfRJd65sFpBszbd2k/bQ8cs8eWawQKAabkVg==" - }, - "Microsoft.SourceLink.GitHub": { - "type": "Transitive", - "resolved": "1.1.1", - "contentHash": "IaJGnOv/M7UQjRJks7B6p7pbPnOwisYGOIzqCz5ilGFTApZ3ktOR+6zJ12ZRPInulBmdAf1SrGdDG2MU8g6XTw==", - "dependencies": { - "Microsoft.Build.Tasks.Git": "1.1.1", - "Microsoft.SourceLink.Common": "1.1.1" - } - }, - "Microsoft.Web.WebView2": { - "type": "Transitive", - "resolved": "1.0.3179.45", - "contentHash": "3pokSH5CnN0G6rGhGFo1y87inxYhNxBQ2Vdf0wlvBj99KHxQJormjDACmqRnFeUsmuNFIhWwfAL1ztq7wD5qRA==" - }, - "Microsoft.Windows.SDK.BuildTools": { - "type": "Transitive", - "resolved": "10.0.26100.4654", - "contentHash": "2mgcOlj/t2RfSyyw+pVESfO+Tk1RkfQzto9Vrq42M1lUQIfQEwbi8QLha9GXWIOj+TFzeHIEJckIoF25mgiM8A==" - }, - "Microsoft.Windows.SDK.BuildTools.MSIX": { - "type": "Transitive", - "resolved": "1.7.20250829.1", - "contentHash": "IMdvRmCIZnBS5GkYnv0po1bcx6U1OF39pqA4TphQ9evDzpCRoSE19/PkDvlUNNrBavTsLIEJgd/TAIFner75ow==" - }, - "Microsoft.WindowsAppSDK.AI": { - "type": "Transitive", - "resolved": "1.8.39", - "contentHash": "jYx8PqQZjB59MU+/IcelwWa0iUnNYkSIWyirDLb50/6uaSVK+FMKsdvV5ZxVuQmBIBUjqReOLRAdlsxxOVAE1Q==", - "dependencies": { - "Microsoft.WindowsAppSDK.Base": "1.8.250831001", - "Microsoft.WindowsAppSDK.Foundation": "1.8.251104000" - } - }, - "Microsoft.WindowsAppSDK.Base": { - "type": "Transitive", - "resolved": "1.8.250831001", - "contentHash": "8LlfXBS2Hpw+OoVXViJmIOPXl0nMbqMaFR3j6+QHFNc62VULwPEcXiMRcP2WbV/+mtC7W2LH6yx6uu/Hrr9lVw==", - "dependencies": { - "Microsoft.Windows.SDK.BuildTools": "10.0.26100.4654", - "Microsoft.Windows.SDK.BuildTools.MSIX": "1.7.20250829.1" - } - }, - "Microsoft.WindowsAppSDK.DWrite": { - "type": "Transitive", - "resolved": "1.8.25090401", - "contentHash": "WJ0p9yMgiNYqU2O5ZKCXcb7FBjryIUUopgeYMvnlf1yBUYgdjMFMkoJqYVqkz866wnntiB2IZhLxEzhFzvVs1A==", - "dependencies": { - "Microsoft.WindowsAppSDK.Base": "1.8.250831001" - } - }, - "Microsoft.WindowsAppSDK.Foundation": { - "type": "Transitive", - "resolved": "1.8.251104000", - "contentHash": "vvL3zpC8klGcaxUA7RbMuUMVAABD7jEMFhNKGAewOvey18i64mslbU0aIQM3+Bu4tQKsaGXSWYrJFsAU/Op4OA==", - "dependencies": { - "Microsoft.WindowsAppSDK.Base": "1.8.250831001", - "Microsoft.WindowsAppSDK.InteractiveExperiences": "1.8.251104001" - } - }, - "Microsoft.WindowsAppSDK.InteractiveExperiences": { - "type": "Transitive", - "resolved": "1.8.251104001", - "contentHash": "t4Vs1eMJqUpa5CbZ5SvO4j5VdyhNwtarNfYJAWar8dHejpNol3g+/t0l0ovKye+DKQpinWdGkuQSUX8Oc8M3ug==", - "dependencies": { - "Microsoft.WindowsAppSDK.Base": "1.8.250831001" - } - }, - "Microsoft.WindowsAppSDK.ML": { - "type": "Transitive", - "resolved": "1.8.2109", - "contentHash": "gfsSXBJrlsfnl1IID3AEasUvZXFFZk6n4iD2JP5BfheySaoWr/1JJVbqKYyRr7APe2kRzyztVW3eaj7KMfgR5A==", - "dependencies": { - "Microsoft.WindowsAppSDK.Base": "1.8.250831001", - "Microsoft.WindowsAppSDK.Foundation": "1.8.251104000" - } - }, - "Microsoft.WindowsAppSDK.Runtime": { - "type": "Transitive", - "resolved": "1.8.251106002", - "contentHash": "5piaqsoXOTFXdtiGoqLhVPkG0HE3UD0g/S4D2i7I8MPO48eoaESJ4y/oUHzZFmSaqLQROWe8NJ9rXXNxxiL/gw==", - "dependencies": { - "Microsoft.WindowsAppSDK.Base": "1.8.250831001" - } - }, - "Microsoft.WindowsAppSDK.Widgets": { - "type": "Transitive", - "resolved": "1.8.250904007", - "contentHash": "sgwdXYhb8S4JjBmWWiFxALT1xK0fJeAbisolctmodMX7tlvBXDgUyvl/GHfTQ61DGIiW+kokX61WR46L2YlhAA==", - "dependencies": { - "Microsoft.WindowsAppSDK.Base": "1.8.250831001" - } - }, - "Microsoft.WindowsAppSDK.WinUI": { - "type": "Transitive", - "resolved": "1.8.251105000", - "contentHash": "G/f0Z27ALjjrrfjCUPxPSBkG6eLB20pBja8AFIOI87oYMGUKGwuMuZn7LqPkeQJMFPo04FonfljdJCIpsfnnbw==", - "dependencies": { - "Microsoft.Web.WebView2": "1.0.3179.45", - "Microsoft.WindowsAppSDK.Base": "1.8.250831001", - "Microsoft.WindowsAppSDK.Foundation": "1.8.251104000", - "Microsoft.WindowsAppSDK.InteractiveExperiences": "1.8.251104001" - } - }, - "common": { - "type": "Project", - "dependencies": { - "boost": "[1.83.0, )" - } - }, - "fmt": { - "type": "Project" - }, - "folly": { - "type": "Project", - "dependencies": { - "boost": "[1.83.0, )", - "fmt": "[1.0.0, )" - } - }, - "microsoft.reactnative": { - "type": "Project", - "dependencies": { - "Common": "[1.0.0, )", - "Folly": "[1.0.0, )", - "Microsoft.JavaScript.Hermes": "[0.0.0-2511.7001-d7ca19b3, )", - "Microsoft.SourceLink.GitHub": "[1.1.1, )", - "Microsoft.WindowsAppSDK": "[1.8.251106002, )", - "ReactCommon": "[1.0.0, )", - "boost": "[1.83.0, )" - } - }, - "reactcommon": { - "type": "Project", - "dependencies": { - "Folly": "[1.0.0, )", - "boost": "[1.83.0, )" - } - } - }, - "native,Version=v0.0/win": { - "Microsoft.VCRTForwarders.140": { - "type": "Direct", - "requested": "[1.0.6, )", - "resolved": "1.0.6", - "contentHash": "CRemcSRRhH5wtdovxqcz3AgjttqgEXJzJuXSCjNStxW/JSm54xM7kSkwVb3tYen/mGCnGv/+PHvpEaliMEUxYA==" - }, - "Microsoft.Web.WebView2": { - "type": "Transitive", - "resolved": "1.0.3179.45", - "contentHash": "3pokSH5CnN0G6rGhGFo1y87inxYhNxBQ2Vdf0wlvBj99KHxQJormjDACmqRnFeUsmuNFIhWwfAL1ztq7wD5qRA==" - }, - "Microsoft.WindowsAppSDK.Foundation": { - "type": "Transitive", - "resolved": "1.8.251104000", - "contentHash": "vvL3zpC8klGcaxUA7RbMuUMVAABD7jEMFhNKGAewOvey18i64mslbU0aIQM3+Bu4tQKsaGXSWYrJFsAU/Op4OA==", - "dependencies": { - "Microsoft.WindowsAppSDK.Base": "1.8.250831001", - "Microsoft.WindowsAppSDK.InteractiveExperiences": "1.8.251104001" - } - } - }, - "native,Version=v0.0/win-arm64": { - "Microsoft.VCRTForwarders.140": { - "type": "Direct", - "requested": "[1.0.6, )", - "resolved": "1.0.6", - "contentHash": "CRemcSRRhH5wtdovxqcz3AgjttqgEXJzJuXSCjNStxW/JSm54xM7kSkwVb3tYen/mGCnGv/+PHvpEaliMEUxYA==" - }, - "Microsoft.Web.WebView2": { - "type": "Transitive", - "resolved": "1.0.3179.45", - "contentHash": "3pokSH5CnN0G6rGhGFo1y87inxYhNxBQ2Vdf0wlvBj99KHxQJormjDACmqRnFeUsmuNFIhWwfAL1ztq7wD5qRA==" - }, - "Microsoft.WindowsAppSDK.Foundation": { - "type": "Transitive", - "resolved": "1.8.251104000", - "contentHash": "vvL3zpC8klGcaxUA7RbMuUMVAABD7jEMFhNKGAewOvey18i64mslbU0aIQM3+Bu4tQKsaGXSWYrJFsAU/Op4OA==", - "dependencies": { - "Microsoft.WindowsAppSDK.Base": "1.8.250831001", - "Microsoft.WindowsAppSDK.InteractiveExperiences": "1.8.251104001" - } - } - }, - "native,Version=v0.0/win-x64": { - "Microsoft.VCRTForwarders.140": { - "type": "Direct", - "requested": "[1.0.6, )", - "resolved": "1.0.6", - "contentHash": "CRemcSRRhH5wtdovxqcz3AgjttqgEXJzJuXSCjNStxW/JSm54xM7kSkwVb3tYen/mGCnGv/+PHvpEaliMEUxYA==" - }, - "Microsoft.Web.WebView2": { - "type": "Transitive", - "resolved": "1.0.3179.45", - "contentHash": "3pokSH5CnN0G6rGhGFo1y87inxYhNxBQ2Vdf0wlvBj99KHxQJormjDACmqRnFeUsmuNFIhWwfAL1ztq7wD5qRA==" - }, - "Microsoft.WindowsAppSDK.Foundation": { - "type": "Transitive", - "resolved": "1.8.251104000", - "contentHash": "vvL3zpC8klGcaxUA7RbMuUMVAABD7jEMFhNKGAewOvey18i64mslbU0aIQM3+Bu4tQKsaGXSWYrJFsAU/Op4OA==", - "dependencies": { - "Microsoft.WindowsAppSDK.Base": "1.8.250831001", - "Microsoft.WindowsAppSDK.InteractiveExperiences": "1.8.251104001" - } - } - }, - "native,Version=v0.0/win-x86": { - "Microsoft.VCRTForwarders.140": { - "type": "Direct", - "requested": "[1.0.6, )", - "resolved": "1.0.6", - "contentHash": "CRemcSRRhH5wtdovxqcz3AgjttqgEXJzJuXSCjNStxW/JSm54xM7kSkwVb3tYen/mGCnGv/+PHvpEaliMEUxYA==" - }, - "Microsoft.Web.WebView2": { - "type": "Transitive", - "resolved": "1.0.3179.45", - "contentHash": "3pokSH5CnN0G6rGhGFo1y87inxYhNxBQ2Vdf0wlvBj99KHxQJormjDACmqRnFeUsmuNFIhWwfAL1ztq7wD5qRA==" - }, - "Microsoft.WindowsAppSDK.Foundation": { - "type": "Transitive", - "resolved": "1.8.251104000", - "contentHash": "vvL3zpC8klGcaxUA7RbMuUMVAABD7jEMFhNKGAewOvey18i64mslbU0aIQM3+Bu4tQKsaGXSWYrJFsAU/Op4OA==", - "dependencies": { - "Microsoft.WindowsAppSDK.Base": "1.8.250831001", - "Microsoft.WindowsAppSDK.InteractiveExperiences": "1.8.251104001" - } - } - } - } -} \ No newline at end of file diff --git a/vnext/Microsoft.ReactNative/Fabric/Composition/ReactNativeIsland.cpp b/vnext/Microsoft.ReactNative/Fabric/Composition/ReactNativeIsland.cpp index 54b9ff491b1..ca28b5594eb 100644 --- a/vnext/Microsoft.ReactNative/Fabric/Composition/ReactNativeIsland.cpp +++ b/vnext/Microsoft.ReactNative/Fabric/Composition/ReactNativeIsland.cpp @@ -173,10 +173,6 @@ ReactNativeIsland::~ReactNativeIsland() noexcept { if (m_island) { m_island.AutomationProviderRequested(m_islandAutomationProviderRequestedToken); m_island.StateChanged(m_islandStateChangedToken); -#ifdef USE_EXPERIMENTAL_WINUI3 - m_island.Connected(m_islandConnectedToken); - m_island.Disconnected(m_islandDisconnectedToken); -#endif } if (m_uiDispatcher) { @@ -257,10 +253,6 @@ void ReactNativeIsland::RemoveRenderedVisual( } bool ReactNativeIsland::TrySetFocus() noexcept { - if (m_island && m_island.IsConnected()) { - auto focusController = winrt::Microsoft::UI::Input::InputFocusController::GetForIsland(m_island); - return focusController.TrySetFocus(); - } return false; } @@ -975,25 +967,6 @@ winrt::Microsoft::UI::Content::ContentIsland ReactNativeIsland::Island() { } } }); -#ifdef USE_EXPERIMENTAL_WINUI3 - if (!m_isFragment) { - m_islandConnectedToken = m_island.Connected( - [weakThis = get_weak()]( - winrt::IInspectable const &, winrt::Microsoft::UI::Content::ContentIsland const &island) { - if (auto pThis = weakThis.get()) { - pThis->OnMounted(); - } - }); - - m_islandDisconnectedToken = m_island.Disconnected( - [weakThis = get_weak()]( - winrt::IInspectable const &, winrt::Microsoft::UI::Content::ContentIsland const &island) { - if (auto pThis = weakThis.get()) { - pThis->OnUnmounted(); - } - }); - } -#endif } return m_island; } @@ -1077,4 +1050,4 @@ winrt::Microsoft::ReactNative::FocusNavigationResult ReactNativeIsland::Navigate return winrt::make(false); } -} // namespace winrt::Microsoft::ReactNative::implementation +} // namespace winrt::Microsoft::ReactNative::implementation \ No newline at end of file diff --git a/vnext/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputShadowNode.cpp b/vnext/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputShadowNode.cpp index f8ce4e23712..9c8f95d1c0f 100644 --- a/vnext/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputShadowNode.cpp +++ b/vnext/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputShadowNode.cpp @@ -15,6 +15,8 @@ namespace facebook::react { +// NOLINTNEXTLINE(modernize-avoid-c-arrays) +extern const char AndroidTextInputComponentName[] = "AndroidTextInput"; extern const char WindowsTextInputComponentName[] = "WindowsTextInput"; void WindowsTextInputShadowNode::setTextLayoutManager(std::shared_ptr textLayoutManager) { diff --git a/vnext/ReactCommon/TEMP_UntilReactCommonUpdate/cxxreact/CxxNativeModule.cpp b/vnext/ReactCommon/TEMP_UntilReactCommonUpdate/cxxreact/CxxNativeModule.cpp index a162e73a915..dd624e192f7 100644 --- a/vnext/ReactCommon/TEMP_UntilReactCommonUpdate/cxxreact/CxxNativeModule.cpp +++ b/vnext/ReactCommon/TEMP_UntilReactCommonUpdate/cxxreact/CxxNativeModule.cpp @@ -201,7 +201,7 @@ void CxxNativeModule::invoke( "CxxMethodCallDispatch", "module", moduleName, "method", method.name); try { method.func(params, first, second); - } catch (const facebook::xplat::JsArgumentException& ex) { + } 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/react/nativemodule/dom/NativeDOM.cpp b/vnext/ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/dom/NativeDOM.cpp index 19fb1add60d..3b5f874e787 100644 --- a/vnext/ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/dom/NativeDOM.cpp +++ b/vnext/ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/dom/NativeDOM.cpp @@ -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) { diff --git a/vnext/ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/dom/NativeDOM.h b/vnext/ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/dom/NativeDOM.h index 781f6128a3b..d6ea633c9db 100644 --- a/vnext/ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/dom/NativeDOM.h +++ b/vnext/ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/dom/NativeDOM.h @@ -47,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); diff --git a/vnext/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/image/conversions.h b/vnext/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/image/conversions.h new file mode 100644 index 00000000000..783ab503bb1 --- /dev/null +++ b/vnext/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/image/conversions.h @@ -0,0 +1,172 @@ +/* + * 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 +#include +#include +#include +#include + +namespace facebook::react { + +inline void fromRawValue(const PropsParserContext &context, const RawValue &value, ImageSource &result) +{ + if (value.hasType()) { + result = { + /* .type = */ ImageSource::Type::Remote, + /* .uri = */ (std::string)value, + }; + return; + } + + if (value.hasType>()) { + auto items = (std::unordered_map)value; + result = {}; + + result.type = ImageSource::Type::Remote; + + if (items.find("__packager_asset") != items.end()) { + result.type = ImageSource::Type::Local; + } + + if (items.find("width") != items.end() && items.find("height") != items.end() && + // The following checks have to be removed after codegen is shipped. + // See T45151459. + items.at("width").hasType() && items.at("height").hasType()) { + result.size = {(Float)items.at("width"), (Float)items.at("height")}; + } + + if (items.find("scale") != items.end() && + // The following checks have to be removed after codegen is shipped. + // See T45151459. + items.at("scale").hasType()) { + result.scale = (Float)items.at("scale"); + } else { + result.scale = items.find("deprecated") != items.end() ? 0.0f : 1.0f; + } + + if (items.find("url") != items.end() && + // The following should be removed after codegen is shipped. + // See T45151459. + items.at("url").hasType()) { + result.uri = (std::string)items.at("url"); + } + + if (items.find("uri") != items.end() && + // The following should be removed after codegen is shipped. + // See T45151459. + items.at("uri").hasType()) { + result.uri = (std::string)items.at("uri"); + } + + if (items.find("bundle") != items.end() && + // The following should be removed after codegen is shipped. + // See T45151459. + items.at("bundle").hasType()) { + result.bundle = (std::string)items.at("bundle"); + result.type = ImageSource::Type::Local; + } + + if (items.find("headers") != items.end() && + items.at("headers").hasType>()) { + auto headers = (std::unordered_map)items.at("headers"); + for (const auto &header : headers) { + result.headers.push_back(header); + } + } + + if (items.find("body") != items.end() && items.at("body").hasType()) { + result.body = (std::string)items.at("body"); + } + + if (items.find("method") != items.end() && items.at("method").hasType()) { + result.method = (std::string)items.at("method"); + } + + if (items.find("cache") != items.end() && items.at("cache").hasType()) { + auto cache = (std::string)items.at("cache"); + if (cache == "reload") { + result.cache = ImageSource::CacheStategy::Reload; + } else if (cache == "force-cache") { + result.cache = ImageSource::CacheStategy::ForceCache; + } else if (cache == "only-if-cached") { + result.cache = ImageSource::CacheStategy::OnlyIfCached; + } + } + + return; + } + + // The following should be removed after codegen is shipped. + // See T45151459. + result = {}; + result.type = ImageSource::Type::Invalid; +} + +inline std::string toString(const ImageSource &value) +{ + return "{uri: " + value.uri + "}"; +} + +inline void fromRawValue(const PropsParserContext &context, const RawValue &value, ImageResizeMode &result) +{ + react_native_expect(value.hasType()); + if (!value.hasType()) { + LOG(ERROR) << "Unsupported ImageResizeMode type"; + // "cover" is default in non-Fabric web and iOS + result = ImageResizeMode::Cover; + return; + } + + auto stringValue = (std::string)value; + if (stringValue == "cover") { + result = ImageResizeMode::Cover; + } else if (stringValue == "contain") { + result = ImageResizeMode::Contain; + } else if (stringValue == "stretch") { + result = ImageResizeMode::Stretch; + } else if (stringValue == "center") { + result = ImageResizeMode::Center; + } else if (stringValue == "repeat") { + result = ImageResizeMode::Repeat; + } else if (stringValue == "none") { + result = ImageResizeMode::None; + } else { + LOG(ERROR) << "Unsupported ImageResizeMode value: " << stringValue; + react_native_expect(false); + // "cover" is default in non-Fabric web and iOS + result = ImageResizeMode::Cover; + } +} + +inline std::string toString(const ImageResizeMode &value) +{ + switch (value) { + case ImageResizeMode::Cover: + return "cover"; + case ImageResizeMode::Contain: + return "contain"; + case ImageResizeMode::Stretch: + return "stretch"; + case ImageResizeMode::Center: + return "center"; + case ImageResizeMode::Repeat: + return "repeat"; + case ImageResizeMode::None: + return "none"; + } + // [Windows Remove when issue #15379 is resolved (the fix goes upstream and comes back) + return "unknown"; + // Windows] +} + +} // namespace facebook::react \ No newline at end of file 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..0c208105258 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 { @@ -94,7 +96,7 @@ struct AccessibilityState { 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}; + enum CheckedState { Unchecked, Checked, Mixed, None } checked{None}; }; constexpr bool operator==( @@ -111,6 +113,30 @@ 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"; + } + return "Unknown"; +} + +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{}; }; @@ -285,4 +311,4 @@ enum class Role { Treeitem, }; -} // namespace facebook::react +} // namespace facebook::react \ No newline at end of file diff --git a/vnext/ReactCopies/IntegrationTests/IntegrationTestsApp.js b/vnext/ReactCopies/IntegrationTests/IntegrationTestsApp.js index d278a1b6d89..c9f736ab38d 100644 --- a/vnext/ReactCopies/IntegrationTests/IntegrationTestsApp.js +++ b/vnext/ReactCopies/IntegrationTests/IntegrationTestsApp.js @@ -36,7 +36,7 @@ const TESTS = [ TESTS.forEach(test => AppRegistry.registerComponent( test.displayName || test.name || '', - /* $FlowFixMe[incompatible-call] (>=0.54.0 site=react_native_fb,react_native_ + /* $FlowFixMe[incompatible-type] (>=0.54.0 site=react_native_fb,react_native_ * oss) This comment suppresses an error found when Flow v0.54 was deployed. * To see the error delete this comment and run Flow. */ () => test, diff --git a/vnext/ReactCopies/IntegrationTests/LayoutEventsTest.js b/vnext/ReactCopies/IntegrationTests/LayoutEventsTest.js index 1d414680cbd..ed6796bb355 100644 --- a/vnext/ReactCopies/IntegrationTests/LayoutEventsTest.js +++ b/vnext/ReactCopies/IntegrationTests/LayoutEventsTest.js @@ -119,19 +119,19 @@ class LayoutEventsTest extends React.Component { } onViewLayout: (e: LayoutChangeEvent) => void = (e: LayoutChangeEvent) => { - // $FlowFixMe[incompatible-call] + // $FlowFixMe[incompatible-type] debug('received view layout event\n', e.nativeEvent); this.setState({viewLayout: e.nativeEvent.layout}, this.checkLayout); }; onTextLayout: (e: LayoutChangeEvent) => void = (e: LayoutChangeEvent) => { - // $FlowFixMe[incompatible-call] + // $FlowFixMe[incompatible-type] debug('received text layout event\n', e.nativeEvent); this.setState({textLayout: e.nativeEvent.layout}, this.checkLayout); }; onImageLayout: (e: LayoutChangeEvent) => void = (e: LayoutChangeEvent) => { - // $FlowFixMe[incompatible-call] + // $FlowFixMe[incompatible-type] debug('received image layout event\n', e.nativeEvent); this.setState({imageLayout: e.nativeEvent.layout}, this.checkLayout); }; diff --git a/vnext/Shared/Shared.vcxitems b/vnext/Shared/Shared.vcxitems index 3568b832da0..713dbcb330f 100644 --- a/vnext/Shared/Shared.vcxitems +++ b/vnext/Shared/Shared.vcxitems @@ -446,6 +446,9 @@ + + + diff --git a/vnext/Shared/Shared.vcxitems.filters b/vnext/Shared/Shared.vcxitems.filters index ab85279f9c2..21b5fd1614a 100644 --- a/vnext/Shared/Shared.vcxitems.filters +++ b/vnext/Shared/Shared.vcxitems.filters @@ -296,6 +296,9 @@ + + + diff --git a/vnext/fmt/packages.lock.json b/vnext/fmt/packages.lock.json deleted file mode 100644 index a31237b580e..00000000000 --- a/vnext/fmt/packages.lock.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "version": 1, - "dependencies": { - "native,Version=v0.0": {}, - "native,Version=v0.0/win10-arm": {}, - "native,Version=v0.0/win10-arm-aot": {}, - "native,Version=v0.0/win10-arm64-aot": {}, - "native,Version=v0.0/win10-x64": {}, - "native,Version=v0.0/win10-x64-aot": {}, - "native,Version=v0.0/win10-x86": {}, - "native,Version=v0.0/win10-x86-aot": {} - } -} \ No newline at end of file diff --git a/vnext/overrides.json b/vnext/overrides.json index eb3e0884bcb..389e33929bf 100644 --- a/vnext/overrides.json +++ b/vnext/overrides.json @@ -8,13 +8,13 @@ "**/__snapshots__/**", "src-win/rntypes/**" ], - "baseVersion": "0.82.0-nightly-20250806-5936f29d6", + "baseVersion": "0.82.0-nightly-20250819-25104de5c", "overrides": [ { "type": "derived", "file": ".flowconfig", "baseFile": ".flowconfig", - "baseHash": "373bd1b0dfbd85e02605d9526e7b08b41a67435f" + "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,7 +58,7 @@ "type": "patch", "file": "ReactCommon/TEMP_UntilReactCommonUpdate/cxxreact/CxxNativeModule.cpp", "baseFile": "packages/react-native/ReactCommon/cxxreact/CxxNativeModule.cpp", - "baseHash": "48f297d1997b800cc4ff8fb3ec810256c38ab569", + "baseHash": "b60f126f5aecad971e1d9c75e4f1e9e1bda9b0d0", "issue": 14819 }, { @@ -135,14 +135,14 @@ "type": "patch", "file": "ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/dom/NativeDOM.cpp", "baseFile": "packages/react-native/ReactCommon/react/nativemodule/dom/NativeDOM.cpp", - "baseHash": "1332e88f9147a2724e6386b4141de97cb12eb657", + "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": "575ac864c5dc7b01f3f7c98072015daf40967e15", + "baseHash": "cd1204f9544fa50672c57966ef2d4f66a5559067", "issue": 14654 }, { @@ -152,11 +152,18 @@ "baseHash": "de0bf0822d85f7519ba09baa623831bd52a12ea3", "issue": 14204 }, + { + "type": "derived", + "file": "ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/image/conversions.h", + "baseFile": "packages/react-native/ReactCommon/react/renderer/components/image/conversions.h", + "baseHash": "7fdf1967fa9c3421b11e841afcf207624df18706", + "issue": 15379 + }, { "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 }, { @@ -170,7 +177,7 @@ "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": "derived", @@ -203,20 +210,20 @@ "type": "copy", "directory": "ReactCopies/IntegrationTests", "baseDirectory": "packages/rn-tester/IntegrationTests", - "baseHash": "983b3220a3762c84eb268e88f86d0a4ecd743ba7", + "baseHash": "adc1fa5169a78fd21ed5c634fd66e5243e1e9f07", "issue": 4054 }, { "type": "derived", "file": "src-win/index.windows.js", "baseFile": "packages/react-native/index.js", - "baseHash": "e4e8dc864521ce28adf8cfa2fb29059484206a05" + "baseHash": "88aa62f2d86a810631bcbc871f45c28c53fceec7" }, { "type": "derived", "file": "src-win/index.windows.js.flow", "baseFile": "packages/react-native/index.js.flow", - "baseHash": "8ee0df254428851107836dbb7a2fa9033c92216e" + "baseHash": "40517b790cce30b4f7fbb230efabccd98a917be8" }, { "type": "platform", @@ -262,7 +269,7 @@ "type": "copy", "file": "src-win/jest/setup.js", "baseFile": "packages/react-native/jest/setup.js", - "baseHash": "386dde14a222b487e3ec13a6e33f4a95a1b2a0df", + "baseHash": "32ae37ecc3e9a2be6fc078a78e969fbd0f2b55b5", "issue": 14929 }, { @@ -291,7 +298,7 @@ "type": "patch", "file": "src-win/Libraries/Components/AccessibilityInfo/AccessibilityInfo.windows.js", "baseFile": "packages/react-native/Libraries/Components/AccessibilityInfo/AccessibilityInfo.js", - "baseHash": "692b825d9db6a6da9c3ae9595e4dfb5c202b879d", + "baseHash": "b77b87e32a86265a3c8c29ebbbee46558596aec8", "issue": 4578 }, { @@ -312,7 +319,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", @@ -380,7 +387,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", @@ -404,7 +411,7 @@ "type": "patch", "file": "src-win/Libraries/Components/TextInput/TextInput.windows.js", "baseFile": "packages/react-native/Libraries/Components/TextInput/TextInput.js", - "baseHash": "d6f92b47afedf2e31f4066e50c2900477c4d6c31" + "baseHash": "ed5d48ce62056182bf81dfa2d22d511d611d5201" }, { "type": "patch", @@ -452,7 +459,7 @@ "type": "patch", "file": "src-win/Libraries/Components/Touchable/TouchableWithoutFeedback.windows.js", "baseFile": "packages/react-native/Libraries/Components/Touchable/TouchableWithoutFeedback.js", - "baseHash": "e996804498bbd3a5abef487e781fcc08b14f1d07" + "baseHash": "dca4ad0284644ab841356441dd24dfe2671bd22c" }, { "type": "patch", @@ -491,11 +498,19 @@ "baseFile": "packages/react-native/Libraries/Components/View/ViewPropTypes.js", "baseHash": "d04b64a97b6040611d96b909c41230c1a350ebe6" }, + { + "type": "platform", + "file": "src-win/Libraries/Components/Xaml/XamlHost.d.ts" + }, + { + "type": "platform", + "file": "src-win/Libraries/Components/Xaml/XamlHost.windows.js" + }, { "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 }, { @@ -519,7 +534,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 }, { @@ -556,7 +571,7 @@ "type": "derived", "file": "src-win/Libraries/Modal/Modal.windows.js", "baseFile": "packages/react-native/Libraries/Modal/Modal.js", - "baseHash": "cc08c1f708f77197412719c393a31f85a83e9196" + "baseHash": "e56d191d9bc53a00aec9f8c5f32a34700d1eeb9d" }, { "type": "derived", @@ -574,7 +589,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", @@ -621,7 +636,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", @@ -652,13 +667,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 }, { @@ -679,6 +694,10 @@ "baseFile": "packages/react-native/src/private/specs_DEPRECATED/components/RCTModalHostViewNativeComponent.js", "baseHash": "6de61fb2342d9cdfad73a28c8d9cf39d2097a34b" }, + { + "type": "platform", + "file": "src-win/src/private/specs_DEPRECATED/components/Xaml/XamlHostNativeComponent.js" + }, { "type": "platform", "file": "src-win/src/private/specs_DEPRECATED/modules/NativeAppTheme.js" @@ -694,18 +713,6 @@ "file": "src-win/src/private/specs_DEPRECATED/modules/NativePlatformConstantsWindows.js", "baseFile": "packages/react-native/src/private/specs_DEPRECATED/modules/NativePlatformConstantsAndroid.js", "baseHash": "365c5df75b38b129d364af3f6700cb206ce5bd2a" - }, - { - "type": "platform", - "file": "src-win/Libraries/Components/Xaml/XamlHost.d.ts" - }, - { - "type": "platform", - "file": "src-win/Libraries/Components/Xaml/XamlHost.windows.js" - }, - { - "type": "platform", - "file": "src-win/src/private/specs_DEPRECATED/components/Xaml/XamlHostNativeComponent.js" } ] } \ No newline at end of file diff --git a/vnext/package.json b/vnext/package.json index ed22883d2dd..002afad0492 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.82.0-nightly-20250806-5936f29d6", + "react-native": "0.82.0-nightly-20250819-25104de5c", "react-native-platform-override": "^1.9.61", "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 1a35d786dab..29e10c8c057 100644 --- a/vnext/src-win/Libraries/Components/AccessibilityInfo/AccessibilityInfo.windows.js +++ b/vnext/src-win/Libraries/Components/AccessibilityInfo/AccessibilityInfo.windows.js @@ -413,7 +413,7 @@ const AccessibilityInfo = { 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/ScrollView/ScrollView.windows.js b/vnext/src-win/Libraries/Components/ScrollView/ScrollView.windows.js index 2e76546b52e..e70786f6d67 100644 --- a/vnext/src-win/Libraries/Components/ScrollView/ScrollView.windows.js +++ b/vnext/src-win/Libraries/Components/ScrollView/ScrollView.windows.js @@ -1169,6 +1169,8 @@ class ScrollView extends React.Component { // they are callable from the ref. // $FlowFixMe[prop-missing] - Known issue with appending custom methods. + // $FlowFixMe[incompatible-type] + // $FlowFixMe[unsafe-object-assign] // $FlowFixMe[unsafe-object-assign] - Using Object.assign to append methods to native instance const publicInstance: PublicScrollViewInstance = Object.assign( nativeInstance, @@ -1837,7 +1839,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/TextInput/TextInput.windows.js b/vnext/src-win/Libraries/Components/TextInput/TextInput.windows.js index 56e28fa44be..2d95cb85046 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,6 +807,7 @@ function InternalTextInput(props: TextInputProps): React.Node { {...otherProps} {...eventHandlers} acceptDragAndDropTypes={props.experimental_acceptDragAndDropTypes} + accessibilityLabel={_accessibilityLabel} accessibilityErrorMessage={accessibilityErrorMessage} accessibilityState={_accessibilityState} accessible={accessible} @@ -868,6 +872,7 @@ function InternalTextInput(props: TextInputProps): React.Node { {...otherProps} {...colorProps} {...eventHandlers} + accessibilityLabel={_accessibilityLabel} accessibilityErrorMessage={accessibilityErrorMessage} accessibilityState={_accessibilityState} accessibilityLabelledBy={_accessibilityLabelledBy} @@ -888,7 +893,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} 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..a68b5a01ec1 100644 --- a/vnext/src-win/Libraries/Modal/Modal.windows.js +++ b/vnext/src-win/Libraries/Modal/Modal.windows.js @@ -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/Text/Text.windows.js b/vnext/src-win/Libraries/Text/Text.windows.js index 401cee9e4e4..ef84c0a2018 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,167 +39,503 @@ type TextForwardRef = React.ElementRef< * * @see https://reactnative.dev/docs/text */ -const TextImpl: component( - ref?: React.RefSetter, - ...props: TextProps -) = ({ - ref: forwardedRef, - accessible, - accessibilityLabel, - accessibilityLevel, // Windows - accessibilityPosInSet, // Windows - accessibilitySetSize, // Windows - accessibilityState, - allowFontScaling, - 'aria-busy': ariaBusy, - 'aria-checked': ariaChecked, - 'aria-disabled': ariaDisabled, - 'aria-expanded': ariaExpanded, - 'aria-multiselectable': ariaMultiselectable, // Windows - 'aria-required': ariaRequired, // Windows - 'aria-label': ariaLabel, - 'aria-level': ariaLevel, // Windows - 'aria-posinset': ariaPosinset, // Windows - 'aria-setsize': ariaSetsize, // Windows - 'aria-readonly': ariaReadOnly, //Windows - '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; - const _accessibilityLevel = ariaLevel ?? accessibilityLevel; // Windows - const _accessibilityPosInSet = ariaPosinset ?? accessibilityPosInSet; // Windows - const _accessibilitySetSize = ariaSetsize ?? accessibilitySetSize; // Windows - - let _accessibilityState: ?TextProps['accessibilityState'] = - accessibilityState; - if ( - ariaBusy != null || - ariaChecked != null || - ariaDisabled != null || - ariaExpanded != null || - ariaSelected != null || - ariaReadOnly != null || // Windows - ariaMultiselectable != null || // Windows - ariaRequired != null // Windows - ) { - if (_accessibilityState != null) { - _accessibilityState = { - busy: ariaBusy ?? _accessibilityState.busy, - checked: ariaChecked ?? _accessibilityState.checked, - disabled: ariaDisabled ?? _accessibilityState.disabled, - expanded: ariaExpanded ?? _accessibilityState.expanded, - selected: ariaSelected ?? _accessibilityState.selected, - readOnly: ariaReadOnly ?? _accessibilityState.readOnly, // Windows - multiselectable: - ariaMultiselectable ?? _accessibilityState.multiselectable, // Windows - required: ariaRequired ?? _accessibilityState.required, // Windows - }; - } else { - _accessibilityState = { - busy: ariaBusy, - checked: ariaChecked, - disabled: ariaDisabled, - expanded: ariaExpanded, - selected: ariaSelected, - readOnly: ariaReadOnly, // Windows - multiselectable: ariaMultiselectable, // Windows - required: ariaRequired, // Windows +let _TextImpl; +if (ReactNativeFeatureFlags.reduceDefaultPropsInText()) { + const TextImplNoDefaultProps: component( + ref?: React.RefSetter, + ...props: TextProps + ) = ({ + ref: forwardedRef, + accessible, + accessibilityLabel, + accessibilityLevel, // Windows + accessibilityPosInSet, // Windows + accessibilitySetSize, // Windows + accessibilityState, + allowFontScaling, + 'aria-busy': ariaBusy, + 'aria-checked': ariaChecked, + 'aria-disabled': ariaDisabled, + 'aria-expanded': ariaExpanded, + 'aria-multiselectable': ariaMultiselectable, // Windows + 'aria-required': ariaRequired, // Windows + 'aria-label': ariaLabel, + 'aria-level': ariaLevel, // Windows + 'aria-posinset': ariaPosinset, // Windows + 'aria-setsize': ariaSetsize, // Windows + 'aria-readonly': ariaReadOnly, //Windows + '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; + const _accessibilityLevel = ariaLevel ?? accessibilityLevel; // Windows + const _accessibilityPosInSet = ariaPosinset ?? accessibilityPosInSet; // Windows + const _accessibilitySetSize = ariaSetsize ?? accessibilitySetSize; // Windows + let _accessibilityState: ?TextProps['accessibilityState'] = + accessibilityState; + if ( + ariaBusy != null || + ariaChecked != null || + ariaDisabled != null || + ariaExpanded != null || + ariaSelected != null || + ariaReadOnly != null || // Windows + ariaMultiselectable != null || // Windows + ariaRequired != null // Windows + ) { + if (_accessibilityState != null) { + _accessibilityState = { + busy: ariaBusy ?? _accessibilityState.busy, + checked: ariaChecked ?? _accessibilityState.checked, + disabled: ariaDisabled ?? _accessibilityState.disabled, + expanded: ariaExpanded ?? _accessibilityState.expanded, + selected: ariaSelected ?? _accessibilityState.selected, + readOnly: ariaReadOnly ?? _accessibilityState.readOnly, // Windows + multiselectable: + ariaMultiselectable ?? _accessibilityState.multiselectable, // Windows + required: ariaRequired ?? _accessibilityState.required, // Windows + }; + } else { + _accessibilityState = { + busy: ariaBusy, + checked: ariaChecked, + disabled: ariaDisabled, + expanded: ariaExpanded, + selected: ariaSelected, + readOnly: ariaReadOnly, // Windows + multiselectable: ariaMultiselectable, // Windows + required: ariaRequired, // Windows + }; + } + } + + 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 _accessibilityStateDisabled = _accessibilityState?.disabled; - const _disabled = disabled ?? _accessibilityStateDisabled; + const hasTextAncestor = useContext(TextAncestor); + if (hasTextAncestor) { + processedProps.disabled = disabled; + processedProps.children = children; + if (isPressable) { + return ( + + ); + } + return ; + } + + let nativeText = null; + + processedProps.accessible = _accessible; + processedProps.allowFontScaling = allowFontScaling !== false; + processedProps.disabled = _disabled; + processedProps.ellipsizeMode = ellipsizeMode ?? 'tail'; + processedProps.children = children; - const isPressable = - (onPress != null || - onLongPress != null || - onStartShouldSetResponder != null) && - _disabled !== true; + if (isPressable) { + nativeText = ( + + ); + } else { + nativeText = ; + } - // TODO: Move this processing to the view configuration. - const _selectionColor = - selectionColor != null ? processColor(selectionColor) : undefined; + if (children == null) { + return nativeText; + } - let _style = style; - if (__DEV__) { - if (PressabilityDebug.isEnabled() && onPress != null) { - _style = [style, {color: 'magenta'}]; + // 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; } - } - let _numberOfLines = numberOfLines; - if (_numberOfLines != null && !(_numberOfLines >= 0)) { + 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 _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; + + 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__) { - console.error( - `'numberOfLines' in must be a non-negative number, received: ${_numberOfLines}. The value will be set to 0.`, - ); + if (PressabilityDebug.isEnabled() && onPress != null) { + _style = [style, {color: 'magenta'}]; + } } - _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-cast] - (processedStyle.fontWeight.toString(): TextStyleInternal['fontWeight']); + + 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; } - if (processedStyle.userSelect != null) { - _selectable = userSelectToSelectableMap[processedStyle.userSelect]; - overrides = overrides || ({}: {...TextStyleInternal}); - overrides.userSelect = undefined; + 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(TextAncestor); + 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, + }); - const hasTextAncestor = useContext(TextAncestor); - if (hasTextAncestor) { + let nativeText = null; if (isPressable) { - return ( - ); + } else { + nativeText = ( + + {children} + + ); } - return ( - - {children} - - ); - } - - // 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 _accessible = Platform.select({ - ios: accessible !== false, - android: - accessible == null ? onPress != null || onLongPress != null : accessible, - default: accessible !== false, // [Windows #13996 - default value is accessible !== false] - }); - - let nativeText = null; - if (isPressable) { - nativeText = ( - - ); - } else { - nativeText = ( - - {children} - - ); - } - - 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 `TextAncestor` 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 (children == null) { + return nativeText; } - 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 `TextAncestor` 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; - } - return ( - {nativeText} - ); -}; + return ( + {nativeText} + ); + }; + _TextImpl = TextImplLegacy; +} +const TextImpl = _TextImpl; TextImpl.displayName = 'Text'; type TextPressabilityProps = $ReadOnly<{ diff --git a/vnext/src-win/Libraries/Utilities/Platform.windows.js b/vnext/src-win/Libraries/Utilities/Platform.windows.js index 445a203c4f8..2c8d372baf9 100644 --- a/vnext/src-win/Libraries/Utilities/Platform.windows.js +++ b/vnext/src-win/Libraries/Utilities/Platform.windows.js @@ -67,9 +67,9 @@ const Platform: PlatformType = { ? // $FlowFixMe[incompatible-return] spec.windows : '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 8f368fe05fe..851903521d2 100644 --- a/vnext/src-win/index.windows.js +++ b/vnext/src-win/index.windows.js @@ -241,6 +241,9 @@ module.exports = { get NativeAppEventEmitter() { return require('./Libraries/EventEmitter/RCTNativeAppEventEmitter').default; }, + get NativeComponentRegistry() { + return require('./Libraries/NativeComponent/NativeComponentRegistry'); + }, get NativeDialogManagerAndroid() { return require('./Libraries/NativeModules/specs/NativeDialogManagerAndroid') .default; diff --git a/vnext/src-win/index.windows.js.flow b/vnext/src-win/index.windows.js.flow index d601455ba73..7828bc08e65 100644 --- a/vnext/src-win/index.windows.js.flow +++ b/vnext/src-win/index.windows.js.flow @@ -311,6 +311,8 @@ export {default as LogBox} from './Libraries/LogBox/LogBox'; export {default as NativeAppEventEmitter} from './Libraries/EventEmitter/RCTNativeAppEventEmitter'; +export * as NativeComponentRegistry from './Libraries/NativeComponent/NativeComponentRegistry'; + export {default as NativeDialogManagerAndroid} from './Libraries/NativeModules/specs/NativeDialogManagerAndroid'; export type { diff --git a/vnext/src-win/jest/setup.js b/vnext/src-win/jest/setup.js index 9cdfe0f7a98..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, @@ -81,7 +81,7 @@ jest.mock('prettier', () => { return module.prototype.require(require.resolve('prettier')); }); -// $FlowFixMe[incompatible-call] - `./mocks/AppState` is incomplete. +// $FlowFixMe[incompatible-type] - `./mocks/AppState` is incomplete. mock('m#../Libraries/AppState/AppState', 'm#./mocks/AppState'); mock('m#../Libraries/BatchedBridge/NativeModules', 'm#./mocks/NativeModules'); mock( @@ -95,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/yarn.lock b/yarn.lock index dfe0aacb55c..a7409d5fec8 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2055,10 +2055,10 @@ prompts "^2.4.2" semver "^7.5.2" -"@react-native-community/template@0.82.0-nightly-2025811-9d3d62a": - version "0.82.0-nightly-2025811-9d3d62a" - resolved "https://registry.yarnpkg.com/@react-native-community/template/-/template-0.82.0-nightly-2025811-9d3d62a.tgz#b128d2f0a81fc1ae2426a610405776bebbb97a4a" - integrity sha512-IG/c4NhNzUjpME9GAIOTTetkvZ3gJgvwuDkgv58cePHbCjDENS5+oyIR/iPNBjZfmF2PG/WVyINDajD9BezXQg== +"@react-native-community/template@0.82.0-nightly-2025819-246871d": + version "0.82.0-nightly-2025819-246871d" + resolved "https://registry.yarnpkg.com/@react-native-community/template/-/template-0.82.0-nightly-2025819-246871d.tgz#8918a9b6539674b0e3f9d7d480d89a13220f301c" + integrity sha512-6RAgRgppsp3Ev/8TSbky0OaEVOG2oNxoE2ngvvy24JD1jGgFiuueoTCYLOe3y4BS/S+OUslpxm3HDQ+7UNwobw== "@react-native-picker/picker@^2.5.1": version "2.11.4" @@ -2070,6 +2070,11 @@ resolved "https://registry.yarnpkg.com/@react-native/assets-registry/-/assets-registry-0.82.0-nightly-20250806-5936f29d6.tgz#4a119406a1e38f96eb324d3db7808dff63eeda5d" integrity sha512-cZiSlYnqukLQJFHrDUAkwgYSRJaOlAaqpUe4JquctKzVmcoUlj5k54X3bD565VUnv18uDpM8UUoAVuQh6uwIrA== +"@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" @@ -2145,6 +2150,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.82.0-nightly-20250806-5936f29d6": version "0.82.0-nightly-20250806-5936f29d6" resolved "https://registry.yarnpkg.com/@react-native/community-cli-plugin/-/community-cli-plugin-0.82.0-nightly-20250806-5936f29d6.tgz#7fb12645abfe56c3f4860e4bee39b197be5810c1" @@ -2158,11 +2176,29 @@ metro-core "^0.83.1" 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.82.0-nightly-20250806-5936f29d6": version "0.82.0-nightly-20250806-5936f29d6" resolved "https://registry.yarnpkg.com/@react-native/debugger-frontend/-/debugger-frontend-0.82.0-nightly-20250806-5936f29d6.tgz#bc63b4b7e0f47c6b985619006c0baa764199d033" integrity sha512-s8BeUUY0Rih/1O2tcq7ToSuPZU89MOd9ULRdetyQl4yYhIXAdUoFqMvOPIfR+vEr9LoiFQII1ln3ebw4NQjJuw== +"@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.82.0-nightly-20250806-5936f29d6": version "0.82.0-nightly-20250806-5936f29d6" resolved "https://registry.yarnpkg.com/@react-native/dev-middleware/-/dev-middleware-0.82.0-nightly-20250806-5936f29d6.tgz#defd9ebb0fea88a531ca2968ff13a8d60b63611b" @@ -2180,6 +2216,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.82.0-nightly-20250806-5936f29d6": version "0.82.0-nightly-20250806-5936f29d6" resolved "https://registry.yarnpkg.com/@react-native/eslint-config/-/eslint-config-0.82.0-nightly-20250806-5936f29d6.tgz#b10d372254735683891f16de1b430b89ea47abd5" @@ -2208,11 +2261,21 @@ resolved "https://registry.yarnpkg.com/@react-native/gradle-plugin/-/gradle-plugin-0.82.0-nightly-20250806-5936f29d6.tgz#92c30c682a4f1c307507b1f9277a4ba2ae42938a" integrity sha512-cw8vknHlrrP0cfxhIlOD3uaio2noMhAs457eArPTZTL/XCNamAon4dG5m30m9Tk/HBeJPKJDWGsJTVJN2HngmQ== +"@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.82.0-nightly-20250806-5936f29d6": version "0.82.0-nightly-20250806-5936f29d6" resolved "https://registry.yarnpkg.com/@react-native/js-polyfills/-/js-polyfills-0.82.0-nightly-20250806-5936f29d6.tgz#66b3deaa9fe761bd47d8a70d15bbf7e6005a1b54" integrity sha512-nlQI7N2SBKKl65EL9/2QqpFRPD59IXqAIR/M02gLwKkz8KP2kecHfG/WUNKQSI4HNauP2jrfAIFi0IAnCmMKqw== +"@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.82.0-nightly-20250806-5936f29d6": version "0.82.0-nightly-20250806-5936f29d6" resolved "https://registry.yarnpkg.com/@react-native/metro-babel-transformer/-/metro-babel-transformer-0.82.0-nightly-20250806-5936f29d6.tgz#14aa0a23da85782654a696463b19f335d10f0382" @@ -2243,6 +2306,11 @@ resolved "https://registry.yarnpkg.com/@react-native/normalize-colors/-/normalize-colors-0.82.0-nightly-20250806-5936f29d6.tgz#4fc975633180730d2189b682ff9f4007956f0ea6" integrity sha512-BFu6UNAqQu1ncBfUGxwIp5v0HDNQoK8Exr0SZl6BIpuvGARb/Zq8KcB7WURwTcIOa/bHK/4RWmH7QLPWLL7uJg== +"@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.82.0-nightly-20250806-5936f29d6": version "0.82.0-nightly-20250806-5936f29d6" resolved "https://registry.yarnpkg.com/@react-native/popup-menu-android/-/popup-menu-android-0.82.0-nightly-20250806-5936f29d6.tgz#36c90c8b6fdde7ef55a38312fc4067b91b58f8d9" @@ -2258,6 +2326,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" @@ -3115,6 +3191,15 @@ "@typescript-eslint/types" "^8.46.2" debug "^4.3.4" +"@typescript-eslint/project-service@8.46.4": + version "8.46.4" + resolved "https://registry.yarnpkg.com/@typescript-eslint/project-service/-/project-service-8.46.4.tgz#fa9872673b51fb57e5d5da034edbe17424ddd185" + integrity sha512-nPiRSKuvtTN+no/2N1kt2tUh/HoFzeEgOm9fQ6XQk4/ApGqjx0zFIIaLJ6wooR1HIoozvj2j6vTi/1fgAz7UYQ== + dependencies: + "@typescript-eslint/tsconfig-utils" "^8.46.4" + "@typescript-eslint/types" "^8.46.4" + debug "^4.3.4" + "@typescript-eslint/scope-manager@5.62.0": version "5.62.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz#d9457ccc6a0b8d6b37d0eb252a23022478c5460c" @@ -3147,6 +3232,14 @@ "@typescript-eslint/types" "8.46.2" "@typescript-eslint/visitor-keys" "8.46.2" +"@typescript-eslint/scope-manager@8.46.4": + version "8.46.4" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-8.46.4.tgz#78c9b4856c0094def64ffa53ea955b46bec13304" + integrity sha512-tMDbLGXb1wC+McN1M6QeDx7P7c0UWO5z9CXqp7J8E+xGcJuUuevWKxuG8j41FoweS3+L41SkyKKkia16jpX7CA== + dependencies: + "@typescript-eslint/types" "8.46.4" + "@typescript-eslint/visitor-keys" "8.46.4" + "@typescript-eslint/tsconfig-utils@8.38.0": version "8.38.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.38.0.tgz#6de4ce224a779601a8df667db56527255c42c4d0" @@ -3157,6 +3250,11 @@ resolved "https://registry.yarnpkg.com/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.46.2.tgz#d110451cb93bbd189865206ea37ef677c196828c" integrity sha512-a7QH6fw4S57+F5y2FIxxSDyi5M4UfGF+Jl1bCGd7+L4KsaUY80GsiF/t0UoRFDHAguKlBaACWJRmdrc6Xfkkag== +"@typescript-eslint/tsconfig-utils@8.46.4", "@typescript-eslint/tsconfig-utils@^8.46.4": + version "8.46.4" + resolved "https://registry.yarnpkg.com/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.46.4.tgz#989a338093b6b91b0552f1f51331d89ec6980382" + integrity sha512-+/XqaZPIAk6Cjg7NWgSGe27X4zMGqrFqZ8atJsX3CWxH/jACqWnrWI68h7nHQld0y+k9eTTjb9r+KU4twLoo9A== + "@typescript-eslint/type-utils@7.18.0": version "7.18.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-7.18.0.tgz#2165ffaee00b1fbbdd2d40aa85232dab6998f53b" @@ -3198,6 +3296,11 @@ resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.46.2.tgz#2bad7348511b31e6e42579820e62b73145635763" integrity sha512-lNCWCbq7rpg7qDsQrd3D6NyWYu+gkTENkG5IKYhUIcxSb59SQC/hEQ+MrG4sTgBVghTonNWq42bA/d4yYumldQ== +"@typescript-eslint/types@8.46.4", "@typescript-eslint/types@^8.46.4": + version "8.46.4" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.46.4.tgz#38022bfda051be80e4120eeefcd2b6e3e630a69b" + integrity sha512-USjyxm3gQEePdUwJBFjjGNG18xY9A2grDVGuk7/9AkjIF1L+ZrVnwR5VAU5JXtUnBL/Nwt3H31KlRDaksnM7/w== + "@typescript-eslint/typescript-estree@5.62.0": version "5.62.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz#7d17794b77fabcac615d6a48fb143330d962eb9b" @@ -3257,6 +3360,22 @@ semver "^7.6.0" ts-api-utils "^2.1.0" +"@typescript-eslint/typescript-estree@8.46.4": + version "8.46.4" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.46.4.tgz#6a9eeab0da45bf400f22c818e0f47102a980ceaa" + integrity sha512-7oV2qEOr1d4NWNmpXLR35LvCfOkTNymY9oyW+lUHkmCno7aOmIf/hMaydnJBUTBMRCOGZh8YjkFOc8dadEoNGA== + dependencies: + "@typescript-eslint/project-service" "8.46.4" + "@typescript-eslint/tsconfig-utils" "8.46.4" + "@typescript-eslint/types" "8.46.4" + "@typescript-eslint/visitor-keys" "8.46.4" + debug "^4.3.4" + fast-glob "^3.3.2" + is-glob "^4.0.3" + minimatch "^9.0.4" + semver "^7.6.0" + ts-api-utils "^2.1.0" + "@typescript-eslint/utils@7.18.0": version "7.18.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-7.18.0.tgz#bca01cde77f95fc6a8d5b0dbcbfb3d6ca4be451f" @@ -3291,6 +3410,16 @@ eslint-scope "^5.1.1" semver "^7.3.7" +"@typescript-eslint/utils@^8.0.0": + version "8.46.4" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-8.46.4.tgz#ea7878ddd625948cad4424dc2752b1be236556f5" + integrity sha512-AbSv11fklGXV6T28dp2Me04Uw90R2iJ30g2bgLz529Koehrmkbs1r7paFqr1vPCZi7hHwYxYtxfyQMRC8QaVSg== + dependencies: + "@eslint-community/eslint-utils" "^4.7.0" + "@typescript-eslint/scope-manager" "8.46.4" + "@typescript-eslint/types" "8.46.4" + "@typescript-eslint/typescript-estree" "8.46.4" + "@typescript-eslint/visitor-keys@5.62.0": version "5.62.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz#2174011917ce582875954ffe2f6912d5931e353e" @@ -3323,6 +3452,14 @@ "@typescript-eslint/types" "8.46.2" eslint-visitor-keys "^4.2.1" +"@typescript-eslint/visitor-keys@8.46.4": + version "8.46.4" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.46.4.tgz#07031bd8d3ca6474e121221dae1055daead888f1" + integrity sha512-/++5CYLQqsO9HFGLI7APrxBJYo+5OCMpViuhV8q5/Qa3o5mMrF//eQHks+PXcsAVaLdn817fMuS7zqoXNNZGaw== + dependencies: + "@typescript-eslint/types" "8.46.4" + eslint-visitor-keys "^4.2.1" + "@ungap/structured-clone@^1.2.0": version "1.3.0" resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.3.0.tgz#d06bbb384ebcf6c505fde1c3d0ed4ddffe0aaff8" @@ -4025,6 +4162,13 @@ babel-plugin-syntax-hermes-parser@0.30.0: dependencies: hermes-parser "0.30.0" +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-syntax-hermes-parser@0.32.0: version "0.32.0" resolved "https://registry.yarnpkg.com/babel-plugin-syntax-hermes-parser/-/babel-plugin-syntax-hermes-parser-0.32.0.tgz#06f7452bf91adf6cafd7c98e7467404d4eb65cec" @@ -5551,6 +5695,13 @@ eslint-plugin-jest@^27.9.0: dependencies: "@typescript-eslint/utils" "^5.10.0" +eslint-plugin-jest@^29.0.1: + version "29.1.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-29.1.0.tgz#ba59f94bb303fe72417d54232842148f305ab6be" + integrity sha512-LabxXbASXVjguqL+kBHTPMf3gUeSqwH4fsrEyHTY/MCs42I/p9+ctg09SJpYiD8eGaIsP6GwYr5xW6xWS9XgZg== + dependencies: + "@typescript-eslint/utils" "^8.0.0" + eslint-plugin-jsx-a11y@^6.6.0: version "6.10.2" resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.10.2.tgz#d2812bb23bf1ab4665f1718ea442e8372e638483" @@ -6126,19 +6277,19 @@ flatted@^3.2.9: resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.3.3.tgz#67c8fad95454a7c7abebf74bb78ee74a44023358" integrity sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg== -flow-api-translator@0.30.0: - version "0.30.0" - resolved "https://registry.yarnpkg.com/flow-api-translator/-/flow-api-translator-0.30.0.tgz#9ee99ecdf7c784cfac5315269f178897d88a1844" - integrity sha512-MRkMwJJaU6i1HZDno+tU8gf8wvyOHk5I+x6fXWIjjxKn06IWeZYzp2Mvd04jOqT2R66Xth1qPWTcWeb/vVUM0g== +flow-api-translator@0.31.2: + version "0.31.2" + resolved "https://registry.yarnpkg.com/flow-api-translator/-/flow-api-translator-0.31.2.tgz#fd57ebe39ccef61f142bbc8004128cdbaea140c7" + integrity sha512-yQLiNDkl6xNcePecgZkkjhIOG58WVxO2q4v6Wu4H2CSuMZVEygapPzORR4kVyqdiaIOaouLlvzU4S/J9/ebcwg== dependencies: "@babel/code-frame" "^7.16.0" "@typescript-eslint/parser" "8.38.0" "@typescript-eslint/visitor-keys" "8.38.0" flow-enums-runtime "^0.0.6" - hermes-eslint "0.30.0" - hermes-estree "0.30.0" - hermes-parser "0.30.0" - hermes-transform "0.30.0" + hermes-eslint "0.31.2" + hermes-estree "0.31.2" + hermes-parser "0.31.2" + hermes-transform "0.31.2" typescript "5.3.2" flow-bin@^0.274.2: @@ -6151,6 +6302,11 @@ flow-bin@^0.278.0: resolved "https://registry.yarnpkg.com/flow-bin/-/flow-bin-0.278.0.tgz#ad1828d60ffe09d4d1ccb2817ef3eb5f79d98f9a" integrity sha512-RQgeri43x9zRpMfB9cqAhlXOgDjWd8OU7X6wpxjT5VUS8EotLCAeNKhafLFxvYuaPwUctQ6JnuxykVL6M46ycQ== +flow-bin@^0.279.0: + version "0.279.0" + resolved "https://registry.yarnpkg.com/flow-bin/-/flow-bin-0.279.0.tgz#06e502a51d735083d715ef769f43bdcb0fc2bb61" + integrity sha512-Xf0T82atOcEf5auHvJfUF+wWIxieBuUJZBu2hlAizdhAzwqSJic74ZLaL6N5SsE0SY9PxPf3Z/lBU7iRpRa9Lw== + flow-enums-runtime@^0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/flow-enums-runtime/-/flow-enums-runtime-0.0.6.tgz#5bb0cd1b0a3e471330f4d109039b7eba5cb3e787" @@ -6668,14 +6824,14 @@ hermes-eslint@0.23.1: hermes-estree "0.23.1" hermes-parser "0.23.1" -hermes-eslint@0.30.0: - version "0.30.0" - resolved "https://registry.yarnpkg.com/hermes-eslint/-/hermes-eslint-0.30.0.tgz#73b81b1e76b1b420acb09d5454e3269a195dce6c" - integrity sha512-eY2BG1De+ih7Kk+GoVjNQi7Ekto08kdCtX3ZDwFIk3f4pESMceZqU68RePB9g2bKYPHPmTRsGyBKphUSivpnww== +hermes-eslint@0.31.2: + version "0.31.2" + resolved "https://registry.yarnpkg.com/hermes-eslint/-/hermes-eslint-0.31.2.tgz#0dceb237562bb9fe2188355556b88cda9f30d937" + integrity sha512-YeTqRwfYsMiYOYY5NSKon7YXGEa1pKfNWUiS3gePJq+Hdp7dmnD7l0JY7gittD3QEVnUCk+aSfhTdfmZPhzUBA== dependencies: esrecurse "^4.3.0" - hermes-estree "0.30.0" - hermes-parser "0.30.0" + hermes-estree "0.31.2" + hermes-parser "0.31.2" hermes-estree@0.21.1: version "0.21.1" @@ -6697,6 +6853,11 @@ hermes-estree@0.30.0: resolved "https://registry.yarnpkg.com/hermes-estree/-/hermes-estree-0.30.0.tgz#63d1e81365c19de809cf71735bb1e790aefd2aba" integrity sha512-JOar667dCAyqYfAtGM5vH+6mdolquul4b4ghwZK9x6ySXSpeB+1xUQ+DV1sRx9sHi4SpqHcdB56wA1Ge1tLo8Q== +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" @@ -6730,6 +6891,13 @@ hermes-parser@0.30.0: dependencies: hermes-estree "0.30.0" +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" @@ -6737,17 +6905,17 @@ hermes-parser@0.32.0: dependencies: hermes-estree "0.32.0" -hermes-transform@0.30.0: - version "0.30.0" - resolved "https://registry.yarnpkg.com/hermes-transform/-/hermes-transform-0.30.0.tgz#0e4238e951675788a0af7d79830b863a4fe1ddea" - integrity sha512-sbIQR83Vv97JMYYXS72ZirSJ0VNCqPSUOFh3dIgfIao/DqfQmQhtkp225TfHRpTwtbNTtyp0c6afJxAFFzaLJw== +hermes-transform@0.31.2: + version "0.31.2" + resolved "https://registry.yarnpkg.com/hermes-transform/-/hermes-transform-0.31.2.tgz#8c8d8bb2ee784ea014b52eaf7f5641b851fff649" + integrity sha512-j6WkUPnEWueERbeK4SU5zRhJQUjrwiqhDM2XLXb/SPRofTqpsznyzE2ZpS/hFlKq8TQcFoqV2Qx/M4IkQ2MUFA== dependencies: "@babel/code-frame" "^7.16.0" esquery "^1.4.0" flow-enums-runtime "^0.0.6" - hermes-eslint "0.30.0" - hermes-estree "0.30.0" - hermes-parser "0.30.0" + hermes-eslint "0.31.2" + hermes-estree "0.31.2" + hermes-parser "0.31.2" string-width "4.2.3" homedir-polyfill@^1.0.1: @@ -10300,24 +10468,24 @@ react-is@^19.0.0, react-is@^19.1.1: resolved "https://registry.yarnpkg.com/react-is/-/react-is-19.2.0.tgz#ddc3b4a4e0f3336c3847f18b806506388d7b9973" integrity sha512-x3Ax3kNSMIIkyVYhWPyO09bu0uttcAIoecO/um/rKGQ4EltYWVYtyiGkS/3xMynrbVQdS69Jhlv8FXUEZehlzA== -react-native@0.82.0-nightly-20250806-5936f29d6: - version "0.82.0-nightly-20250806-5936f29d6" - resolved "https://registry.yarnpkg.com/react-native/-/react-native-0.82.0-nightly-20250806-5936f29d6.tgz#02ea506691e719ea5fd5c54fc6b542efd31410ff" - integrity sha512-xD1UW0H5YYsWn7eOyd3Yr3jV+82iPq9a+wrIMenp1DHU1abzoqR7aol1wHYfWBNjwQ1P7rJZq44nj1lKJZZMkA== +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.82.0-nightly-20250806-5936f29d6" - "@react-native/codegen" "0.82.0-nightly-20250806-5936f29d6" - "@react-native/community-cli-plugin" "0.82.0-nightly-20250806-5936f29d6" - "@react-native/gradle-plugin" "0.82.0-nightly-20250806-5936f29d6" - "@react-native/js-polyfills" "0.82.0-nightly-20250806-5936f29d6" - "@react-native/normalize-colors" "0.82.0-nightly-20250806-5936f29d6" - "@react-native/virtualized-lists" "0.82.0-nightly-20250806-5936f29d6" + "@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.30.0" + babel-plugin-syntax-hermes-parser "0.31.2" base64-js "^1.5.1" commander "^12.0.0" flow-enums-runtime "^0.0.6"