diff --git a/config/eslint/eslint.seatbelt.tsv b/config/eslint/eslint.seatbelt.tsv index 760a7d64bdef..cc375a0707d4 100644 --- a/config/eslint/eslint.seatbelt.tsv +++ b/config/eslint/eslint.seatbelt.tsv @@ -835,6 +835,8 @@ "../../src/libs/Navigation/linkingConfig/RELATIONS/index.ts" "@typescript-eslint/no-unsafe-type-assertion" 3 "../../src/libs/Navigation/Navigation.ts" "@typescript-eslint/no-unsafe-type-assertion" 10 "../../src/libs/Navigation/OnyxTabNavigator.tsx" "@typescript-eslint/no-unsafe-type-assertion" 3 +"../../src/libs/Navigation/PlatformStackNavigation/createPlatformStackNavigatorComponent/index.native.tsx" "@typescript-eslint/no-deprecated/NavigationContent" 1 +"../../src/libs/Navigation/PlatformStackNavigation/createPlatformStackNavigatorComponent/index.tsx" "@typescript-eslint/no-deprecated/NavigationContent" 1 "../../src/libs/Navigation/PlatformStackNavigation/navigationOptions/animation/withAnimation.ts" "@typescript-eslint/no-unsafe-type-assertion" 6 "../../src/libs/Navigation/PlatformStackNavigation/ScreenLayout.tsx" "@typescript-eslint/no-unsafe-type-assertion" 1 "../../src/libs/NetSuiteUtils.ts" "@typescript-eslint/no-unsafe-type-assertion" 1 diff --git a/package-lock.json b/package-lock.json index 89357a4e533a..bd607d28c084 100644 --- a/package-lock.json +++ b/package-lock.json @@ -43,12 +43,12 @@ "@react-native-firebase/app": "^22.2.1", "@react-native-google-signin/google-signin": "^10.0.1", "@react-native-picker/picker": "2.11.3", - "@react-navigation/bottom-tabs": "7.18.16", - "@react-navigation/core": "7.21.12", - "@react-navigation/material-top-tabs": "7.4.19", - "@react-navigation/native": "7.3.16", - "@react-navigation/native-stack": "7.14.5", - "@react-navigation/stack": "7.8.5", + "@react-navigation/bottom-tabs": "7.19.2", + "@react-navigation/core": "7.22.1", + "@react-navigation/material-top-tabs": "7.7.2", + "@react-navigation/native": "7.4.1", + "@react-navigation/native-stack": "7.19.2", + "@react-navigation/stack": "7.11.2", "@react-ng/bounds-observer": "^0.2.1", "@rnmapbox/maps": "10.3.2", "@sbaiahmed1/react-native-biometrics": "0.15.0", @@ -186,7 +186,7 @@ "@react-native-community/cli-platform-ios": "20.1.0", "@react-native/babel-preset": "0.86.0", "@react-native/metro-config": "0.86.0", - "@react-navigation/devtools": "7.0.52", + "@react-navigation/devtools": "7.1.15", "@rock-js/platform-android": "0.13.4", "@rock-js/platform-ios": "0.13.4", "@rock-js/plugin-metro": "0.13.4", @@ -14687,17 +14687,17 @@ } }, "node_modules/@react-navigation/bottom-tabs": { - "version": "7.18.16", - "resolved": "https://registry.npmjs.org/@react-navigation/bottom-tabs/-/bottom-tabs-7.18.16.tgz", - "integrity": "sha512-5tBFuxvsCQBvYauDZK6u/uPdD86i/caWgBzABlZfTh8W2J7YZSHjT9SWOsquSMmR6dpcNj6idMd4utCNzuOnZg==", + "version": "7.19.2", + "resolved": "https://registry.npmjs.org/@react-navigation/bottom-tabs/-/bottom-tabs-7.19.2.tgz", + "integrity": "sha512-sXUS7cySIj2cLwD1trdTnbqAm3TWYiF6L9i0VNES2+4ssUyBDgkIdmm7uxjhJ8ZSjzpWj8uSfLHkkSx0j0MpmA==", "license": "MIT", "dependencies": { - "@react-navigation/elements": "^2.9.38", + "@react-navigation/elements": "^2.9.43", "color": "^4.2.3", "sf-symbols-typescript": "^2.1.0" }, "peerDependencies": { - "@react-navigation/native": "^7.3.16", + "@react-navigation/native": "^7.4.1", "react": ">= 18.2.0", "react-native": "*", "react-native-safe-area-context": ">= 4.0.0", @@ -14705,16 +14705,15 @@ } }, "node_modules/@react-navigation/core": { - "version": "7.21.12", - "resolved": "https://registry.npmjs.org/@react-navigation/core/-/core-7.21.12.tgz", - "integrity": "sha512-FopGMGy5df+IMqUYg9w7ygwK0oP4RaQbMnpb7VFP30+vZdd8MqsAGc+bZZwdiVSnzK9hzhgJtZV9XF0ZFlUYOQ==", + "version": "7.22.1", + "resolved": "https://registry.npmjs.org/@react-navigation/core/-/core-7.22.1.tgz", + "integrity": "sha512-6JAaYM4u6RPtVMUjN5ovX5DNBdBZtDqebk7kEwlncUP6fP4P94+qEYv1bRmtxSFs7UxiZwQQs+jzTsBaW2WeyA==", "license": "MIT", "dependencies": { "@react-navigation/routers": "^7.6.4", "escape-string-regexp": "^4.0.0", "fast-deep-equal": "^3.1.3", "nanoid": "^3.3.11", - "query-string": "^7.1.3", "react-is": "^19.1.0", "use-latest-callback": "^0.2.4", "use-sync-external-store": "^1.5.0" @@ -14724,15 +14723,15 @@ } }, "node_modules/@react-navigation/core/node_modules/react-is": { - "version": "19.2.4", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-19.2.4.tgz", - "integrity": "sha512-W+EWGn2v0ApPKgKKCy/7s7WHXkboGcsrXE+2joLyVxkbyVQfO3MUEaUQDHoSmb8TFFrSKYa9mw64WZHNHSDzYA==", + "version": "19.3.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-19.3.0.tgz", + "integrity": "sha512-UpMYezM4v5/18F28aC66AEsjXIgE02kyEMH6yLdgLXu/UTfa1Ntwck/nNLrbqJsEXW7gPb0coNO9FQse9WTovA==", "license": "MIT" }, "node_modules/@react-navigation/devtools": { - "version": "7.0.52", - "resolved": "https://registry.npmjs.org/@react-navigation/devtools/-/devtools-7.0.52.tgz", - "integrity": "sha512-YqSr1c4USLCdTttltfwOXoPNHlEhnLmSSehGPt7j7yrXDXj55qRQA4aNF0p02paTN2phN17oBaBPcC2nSbqtfw==", + "version": "7.1.15", + "resolved": "https://registry.npmjs.org/@react-navigation/devtools/-/devtools-7.1.15.tgz", + "integrity": "sha512-NLwHCr4vcQ7hvUaFol+GyOje0oMCTMIRCITFVkcpST6auejSpwT3/obk8lI2b+k+B9J4vb7gKy+3inW1ZlqG/A==", "dev": true, "license": "MIT", "dependencies": { @@ -14745,9 +14744,9 @@ } }, "node_modules/@react-navigation/elements": { - "version": "2.9.38", - "resolved": "https://registry.npmjs.org/@react-navigation/elements/-/elements-2.9.38.tgz", - "integrity": "sha512-M/2HWDiSO4zO7VyfAnovrTPWOAzTC+1DnVT7ZWZW93+/KVRF9OYlqixIUpPenQ0iQh2j1EaQ4zOe/134Arisqw==", + "version": "2.9.43", + "resolved": "https://registry.npmjs.org/@react-navigation/elements/-/elements-2.9.43.tgz", + "integrity": "sha512-XOYpRfgT9RPV2VIoXeEfTVdmXwEPpHwkezDkZVsVNEN6rTWDo07BPyLmWsvXooczyMf3jHe9AB2p/U9lJArtiQ==", "license": "MIT", "dependencies": { "color": "^4.2.3", @@ -14756,7 +14755,7 @@ }, "peerDependencies": { "@react-native-masked-view/masked-view": ">= 0.2.0", - "@react-navigation/native": "^7.3.16", + "@react-navigation/native": "^7.4.1", "react": ">= 18.2.0", "react-native": "*", "react-native-safe-area-context": ">= 4.0.0" @@ -14768,17 +14767,17 @@ } }, "node_modules/@react-navigation/material-top-tabs": { - "version": "7.4.19", - "resolved": "https://registry.npmjs.org/@react-navigation/material-top-tabs/-/material-top-tabs-7.4.19.tgz", - "integrity": "sha512-jYGgItg51bjy3ypKeLm7sNEmGh0tFLn0VLV/p06iUprwKzuIvQESFin9M2+HUHa0pE1+g5tnf/ECKQJiAw712Q==", + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/@react-navigation/material-top-tabs/-/material-top-tabs-7.7.2.tgz", + "integrity": "sha512-8BhfaB4a2VWRnuzu9hwKomICtxT/O03q8/S+f210Dx1KZxj4KdynSueSTHul5eH+3GaYodmpRffMXinHDG2B2A==", "license": "MIT", "dependencies": { - "@react-navigation/elements": "^2.9.10", + "@react-navigation/elements": "^2.9.43", "color": "^4.2.3", - "react-native-tab-view": "^4.3.0" + "react-native-tab-view": "^4.3.2" }, "peerDependencies": { - "@react-navigation/native": "^7.1.33", + "@react-navigation/native": "^7.4.1", "react": ">= 18.2.0", "react-native": "*", "react-native-pager-view": ">= 6.0.0", @@ -14786,12 +14785,12 @@ } }, "node_modules/@react-navigation/native": { - "version": "7.3.16", - "resolved": "https://registry.npmjs.org/@react-navigation/native/-/native-7.3.16.tgz", - "integrity": "sha512-Wy/6mai2HpA5AEVFk7JFfvv4RUArwuN2UenP/fc3NK7kOyfSlNu1tmb/3JDPpMzPIRbF1MPB8PKAHjVB29qNEQ==", + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/@react-navigation/native/-/native-7.4.1.tgz", + "integrity": "sha512-pEnu5XzAXV6RWr6A6pmZ7qLB+O6TJWMhBO25AjckMdr596UWulMPHQCtBcnOUfg6K+2h9ZUctHF2E5Xu4vcOrQ==", "license": "MIT", "dependencies": { - "@react-navigation/core": "^7.21.12", + "@react-navigation/core": "^7.22.1", "escape-string-regexp": "^4.0.0", "fast-deep-equal": "^3.1.3", "nanoid": "^3.3.11", @@ -14804,18 +14803,18 @@ } }, "node_modules/@react-navigation/native-stack": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@react-navigation/native-stack/-/native-stack-7.14.5.tgz", - "integrity": "sha512-NuyMf21kKk3jODvYgpcDA+HwyWr/KEj72ciqquyEupZlsmQ3WNUGgdaixEB3A19+iPOvHLQzDLcoTrrqZk8Leg==", + "version": "7.19.2", + "resolved": "https://registry.npmjs.org/@react-navigation/native-stack/-/native-stack-7.19.2.tgz", + "integrity": "sha512-D6hmtgpMZz1x8R0PLbfqqKh5ajEkb13DguE7X/MNNKYL4riY4zD3TrjbcesUC2EZklpQ/EoJ6h6HAhMNfCCsoQ==", "license": "MIT", "dependencies": { - "@react-navigation/elements": "^2.9.10", + "@react-navigation/elements": "^2.9.43", "color": "^4.2.3", "sf-symbols-typescript": "^2.1.0", "warn-once": "^0.1.1" }, "peerDependencies": { - "@react-navigation/native": "^7.1.33", + "@react-navigation/native": "^7.4.1", "react": ">= 18.2.0", "react-native": "*", "react-native-safe-area-context": ">= 4.0.0", @@ -14832,17 +14831,17 @@ } }, "node_modules/@react-navigation/stack": { - "version": "7.8.5", - "resolved": "https://registry.npmjs.org/@react-navigation/stack/-/stack-7.8.5.tgz", - "integrity": "sha512-ZOD1gUhWpbI+1PD5mKZFnLBh3Vfq2bqhO5/NeEruaQwNdXkiiHpi59OUKMnFRQURjjYXf/skTM9hJa6zHdiyFw==", + "version": "7.11.2", + "resolved": "https://registry.npmjs.org/@react-navigation/stack/-/stack-7.11.2.tgz", + "integrity": "sha512-uz5RtTCTmcSsH1Lwas20wE8puW/DCTuKjQ/UBKk2obp+dSPreTCcJZG2W6sTIaz6WBp1zcUZWsajhDMfH6+CvA==", "license": "MIT", "dependencies": { - "@react-navigation/elements": "^2.9.10", + "@react-navigation/elements": "^2.9.43", "color": "^4.2.3", "use-latest-callback": "^0.2.4" }, "peerDependencies": { - "@react-navigation/native": "^7.1.33", + "@react-navigation/native": "^7.4.1", "react": ">= 18.2.0", "react-native": "*", "react-native-gesture-handler": ">= 2.0.0", @@ -24508,15 +24507,6 @@ "dev": true, "license": "MIT" }, - "node_modules/decode-uri-component": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz", - "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==", - "license": "MIT", - "engines": { - "node": ">=0.10" - } - }, "node_modules/dedent": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", @@ -27523,15 +27513,6 @@ "node": ">=8" } }, - "node_modules/filter-obj": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/filter-obj/-/filter-obj-1.1.0.tgz", - "integrity": "sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/find-babel-config": { "version": "2.0.0", "dev": true, @@ -36414,24 +36395,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/query-string": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/query-string/-/query-string-7.1.3.tgz", - "integrity": "sha512-hh2WYhq4fi8+b+/2Kg9CEge4fDPvHS534aOOvOZeQ3+Vf2mCFsaFBYj0i+iXcAq6I9Vzp5fjMFBlONvayDC1qg==", - "license": "MIT", - "dependencies": { - "decode-uri-component": "^0.2.2", - "filter-obj": "^1.1.0", - "split-on-first": "^1.0.0", - "strict-uri-encode": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/querystringify": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", @@ -37706,9 +37669,9 @@ } }, "node_modules/react-native-tab-view": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/react-native-tab-view/-/react-native-tab-view-4.3.0.tgz", - "integrity": "sha512-qPMF75uz/7+MuVG2g+YETdGMzlWZnhC6iI4h/7EBbwIBwNBIBi2z4OA6KhY3IOOBwGHXEIz5IyA6doDqifYBHg==", + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/react-native-tab-view/-/react-native-tab-view-4.3.2.tgz", + "integrity": "sha512-QCHX9bTGMeME5pt4jJ1/H7oshX7Z2nA/Ts3m7FpKUbWfPPIL8rlNLZwkedgV273Eqau8jj8deRtfSZl9LCctCw==", "license": "MIT", "dependencies": { "use-latest-callback": "^0.2.4" @@ -39604,15 +39567,6 @@ "integrity": "sha512-D50hKrjZgBzqD3FT2Ek53f2dcDLAQT8SSGrzj3vidNH5ISRgceeGVJ2dQIthKOuayqFXfFjXheHNo4bbt9LhRQ==", "license": "MIT" }, - "node_modules/split-on-first": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/split-on-first/-/split-on-first-1.1.0.tgz", - "integrity": "sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, "node_modules/split-string": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", @@ -40523,15 +40477,6 @@ "node": ">= 0.10.0" } }, - "node_modules/strict-uri-encode": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz", - "integrity": "sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ==", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, "node_modules/string_decoder": { "version": "1.1.1", "devOptional": true, diff --git a/package.json b/package.json index 1f8ea314f0fb..ecd0e55419e2 100644 --- a/package.json +++ b/package.json @@ -119,12 +119,12 @@ "@react-native-firebase/app": "^22.2.1", "@react-native-google-signin/google-signin": "^10.0.1", "@react-native-picker/picker": "2.11.3", - "@react-navigation/bottom-tabs": "7.18.16", - "@react-navigation/core": "7.21.12", - "@react-navigation/material-top-tabs": "7.4.19", - "@react-navigation/native": "7.3.16", - "@react-navigation/native-stack": "7.14.5", - "@react-navigation/stack": "7.8.5", + "@react-navigation/bottom-tabs": "7.19.2", + "@react-navigation/core": "7.22.1", + "@react-navigation/material-top-tabs": "7.7.2", + "@react-navigation/native": "7.4.1", + "@react-navigation/native-stack": "7.19.2", + "@react-navigation/stack": "7.11.2", "@react-ng/bounds-observer": "^0.2.1", "@rnmapbox/maps": "10.3.2", "@sbaiahmed1/react-native-biometrics": "0.15.0", @@ -262,7 +262,7 @@ "@react-native-community/cli-platform-ios": "20.1.0", "@react-native/babel-preset": "0.86.0", "@react-native/metro-config": "0.86.0", - "@react-navigation/devtools": "7.0.52", + "@react-navigation/devtools": "7.1.15", "@rock-js/platform-android": "0.13.4", "@rock-js/platform-ios": "0.13.4", "@rock-js/plugin-metro": "0.13.4", @@ -414,7 +414,6 @@ "node-abi": "^3.78.0", "pdfjs-dist": "5.5.207", "lightningcss": "1.30.1", - "@react-navigation/elements": "2.9.38", "@fullstory/react-native": { "expo": "57.0.8" }, diff --git a/patches/react-native-tab-view/details.md b/patches/react-native-tab-view/details.md index c6952b53e27b..1edc11f5121c 100644 --- a/patches/react-native-tab-view/details.md +++ b/patches/react-native-tab-view/details.md @@ -1,6 +1,6 @@ # `react-native-tab-view` patches -### [react-native-tab-view+4.3.0+001+fix-tab-animation.patch](react-native-tab-view+4.3.0+001+fix-tab-animation.patch) +### [react-native-tab-view+4.3.2+001+fix-tab-animation.patch](react-native-tab-view+4.3.2+001+fix-tab-animation.patch) - Reason: @@ -13,18 +13,22 @@ - E/App issue: 🛑 - PR Introducing Patch: [#39854](https://github.com/Expensify/App/pull/39854) -### [react-native-tab-view+4.3.0+002+fix-glitching-on-initial-load.patch](react-native-tab-view+4.3.0+002+fix-glitching-on-initial-load.patch) +### [react-native-tab-view+4.3.2+002+fix-glitching-on-initial-load.patch](react-native-tab-view+4.3.2+002+fix-glitching-on-initial-load.patch) - Reason: ``` There was a visible glitching on initial load. The glitch was visible because two animated values: position and translateX were equal to 0 for a brief moment before changing to a proper value. ``` + + The 4.3.2 re-port dropped the `lib/typescript/src/PanResponderAdapter.d.ts.map` hunk. It only rewrites a + source map for declaration files, which nothing at runtime reads, and its base content changed in 4.3.2. + The `PanResponderAdapter.js` and `.js.map` hunks are carried over unchanged. - Upstream PR/issue: https://github.com/react-navigation/react-navigation/pull/12627#issuecomment-2945055209 - E/App issue: https://github.com/Expensify/App/issues/62346 - PR Introducing Patch: [#63570](https://github.com/Expensify/App/pull/63570) -### [react-native-tab-view+4.3.0+003+fix-web-onTabSelect-on-mount.patch](react-native-tab-view+4.3.0+003+fix-web-onTabSelect-on-mount.patch) +### [react-native-tab-view+4.3.2+003+fix-web-onTabSelect-on-mount.patch](react-native-tab-view+4.3.2+003+fix-web-onTabSelect-on-mount.patch) - Reason: ``` @@ -35,7 +39,7 @@ - E/App issue: https://github.com/Expensify/App/issues/71913#issuecomment-3584103273 - PR Introducing Patch: [#76586](https://github.com/Expensify/App/pull/76586) -### [react-native-tab-view+4.3.0+004+fix-native-onTabSelect-on-mount.patch](react-native-tab-view+4.3.0+004+fix-native-onTabSelect-on-mount.patch) +### [react-native-tab-view+4.3.2+004+fix-native-onTabSelect-on-mount.patch](react-native-tab-view+4.3.2+004+fix-native-onTabSelect-on-mount.patch) - Reason: ``` @@ -46,7 +50,7 @@ - Upstream PR/issue: 🛑 (must merge https://github.com/react-navigation/react-navigation/pull/12627 first) - E/App issue: https://github.com/Expensify/App/issues/83010 -### [react-native-tab-view+4.3.0+005+fix-pager-scrollleft-91610.patch](react-native-tab-view+4.3.0+005+fix-pager-scrollleft-91610.patch) +### [react-native-tab-view+4.3.2+005+fix-pager-scrollleft-91610.patch](react-native-tab-view+4.3.2+005+fix-pager-scrollleft-91610.patch) - Reason: ``` diff --git a/patches/react-native-tab-view/react-native-tab-view+4.3.0+001+fix-tab-animation.patch b/patches/react-native-tab-view/react-native-tab-view+4.3.2+001+fix-tab-animation.patch similarity index 84% rename from patches/react-native-tab-view/react-native-tab-view+4.3.0+001+fix-tab-animation.patch rename to patches/react-native-tab-view/react-native-tab-view+4.3.2+001+fix-tab-animation.patch index ff7f28cbb451..688814ff9bc4 100644 --- a/patches/react-native-tab-view/react-native-tab-view+4.3.0+001+fix-tab-animation.patch +++ b/patches/react-native-tab-view/react-native-tab-view+4.3.2+001+fix-tab-animation.patch @@ -1,5 +1,5 @@ diff --git a/node_modules/react-native-tab-view/src/PagerViewAdapter.tsx b/node_modules/react-native-tab-view/src/PagerViewAdapter.tsx -index d4a0a0e..0000001 100644 +index d4a0a0e..d66b0cb 100644 --- a/node_modules/react-native-tab-view/src/PagerViewAdapter.tsx +++ b/node_modules/react-native-tab-view/src/PagerViewAdapter.tsx @@ -134,9 +134,10 @@ export function PagerViewAdapter({ @@ -14,10 +14,7 @@ index d4a0a0e..0000001 100644 ); return children({ -@@ -163,9 +164,11 @@ export function PagerViewAdapter({ - ], - { useNativeDriver } - )} +@@ -166,6 +167,8 @@ export function PagerViewAdapter({ onPageSelected={(e) => { const index = e.nativeEvent.position; indexRef.current = index; diff --git a/patches/react-native-tab-view/react-native-tab-view+4.3.0+002+fix-glitching-on-initial-load.patch b/patches/react-native-tab-view/react-native-tab-view+4.3.2+002+fix-glitching-on-initial-load.patch similarity index 90% rename from patches/react-native-tab-view/react-native-tab-view+4.3.0+002+fix-glitching-on-initial-load.patch rename to patches/react-native-tab-view/react-native-tab-view+4.3.2+002+fix-glitching-on-initial-load.patch index bb6e9c1a5857..01e6a306a1f5 100644 --- a/patches/react-native-tab-view/react-native-tab-view+4.3.0+002+fix-glitching-on-initial-load.patch +++ b/patches/react-native-tab-view/react-native-tab-view+4.3.2+002+fix-glitching-on-initial-load.patch @@ -1,5 +1,5 @@ diff --git a/node_modules/react-native-tab-view/lib/module/PanResponderAdapter.js b/node_modules/react-native-tab-view/lib/module/PanResponderAdapter.js -index 22c1705..0000002 100644 +index 22c1705..fdb8c83 100644 --- a/node_modules/react-native-tab-view/lib/module/PanResponderAdapter.js +++ b/node_modules/react-native-tab-view/lib/module/PanResponderAdapter.js @@ -79,10 +79,38 @@ export function PanResponderAdapter({ @@ -85,12 +85,3 @@ index 95b628e..2a31760 100644 -{"version":3,"names":["React","Animated","Keyboard","PanResponder","StyleSheet","View","useLatestCallback","useAnimatedValue","jsx","_jsx","DEAD_ZONE","DefaultTransitionSpec","timing","spring","stiffness","damping","mass","overshootClamping","PanResponderAdapter","layout","keyboardDismissMode","swipeEnabled","navigationState","onIndexChange","onTabSelect","onSwipeStart","onSwipeEnd","children","style","animationEnabled","layoutDirection","routes","index","panX","listenersRef","useRef","navigationStateRef","layoutRef","onIndexChangeRef","onTabSelectRef","currentIndexRef","pendingIndexRef","undefined","swipeVelocityThreshold","swipeDistanceThreshold","width","jumpToIndex","animate","offset","current","transitionConfig","parallel","toValue","useNativeDriver","start","finished","setValue","useEffect","useLayoutEffect","dismiss","isMovingHorizontally","_","gestureState","Math","abs","dx","dy","vx","vy","canMoveScreen","event","diffX","length","startGesture","stopAnimation","setOffset","_value","respondToGesture","position","_offset","next","ceil","floor","forEach","listener","finishGesture","flattenOffset","currentIndex","nextIndex","round","min","max","isFinite","addEnterListener","push","indexOf","splice","jumpTo","key","findIndex","route","panResponder","create","onMoveShouldSetPanResponder","onMoveShouldSetPanResponderCapture","onPanResponderGrant","onPanResponderMove","onPanResponderTerminate","onPanResponderRelease","onPanResponderTerminationRequest","maxTranslate","translateX","multiply","interpolate","inputRange","outputRange","extrapolate","useMemo","divide","Value","render","styles","sheet","transform","panHandlers","Children","map","child","i","focused","absoluteFill","flex","flexDirection","alignItems"],"sourceRoot":"../../src","sources":["PanResponderAdapter.tsx"],"mappings":";;AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAC9B,SACEC,QAAQ,EAERC,QAAQ,EACRC,YAAY,EAEZC,UAAU,EACVC,IAAI,QACC,cAAc;AACrB,OAAOC,iBAAiB,MAAM,qBAAqB;AAUnD,SAASC,gBAAgB,QAAQ,uBAAoB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAsBtD,MAAMC,SAAS,GAAG,EAAE;AAEpB,MAAMC,qBAAqB,GAAG;EAC5BC,MAAM,EAAEX,QAAQ,CAACY,MAAM;EACvBC,SAAS,EAAE,IAAI;EACfC,OAAO,EAAE,GAAG;EACZC,IAAI,EAAE,CAAC;EACPC,iBAAiB,EAAE;AACrB,CAAC;AAED,OAAO,SAASC,mBAAmBA,CAAkB;EACnDC,MAAM;EACNC,mBAAmB,GAAG,MAAM;EAC5BC,YAAY,GAAG,IAAI;EACnBC,eAAe;EACfC,aAAa;EACbC,WAAW;EACXC,YAAY;EACZC,UAAU;EACVC,QAAQ;EACRC,KAAK;EACLC,gBAAgB,GAAG,KAAK;EACxBC,eAAe,GAAG;AACV,CAAC,EAAE;EACX,MAAM;IAAEC,MAAM;IAAEC;EAAM,CAAC,GAAGV,eAAe;EAEzC,MAAMW,IAAI,GAAG1B,gBAAgB,CAAC,CAAC,CAAC;EAEhC,MAAM2B,YAAY,GAAGlC,KAAK,CAACmC,MAAM,CAAa,EAAE,CAAC;EAEjD,MAAMC,kBAAkB,GAAGpC,KAAK,CAACmC,MAAM,CAACb,eAAe,CAAC;EACxD,MAAMe,SAAS,GAAGrC,KAAK,CAACmC,MAAM,CAAChB,MAAM,CAAC;EACtC,MAAMmB,gBAAgB,GAAGtC,KAAK,CAACmC,MAAM,CAACZ,aAAa,CAAC;EACpD,MAAMgB,cAAc,GAAGvC,KAAK,CAACmC,MAAM,CAACX,WAAW,CAAC;EAChD,MAAMgB,eAAe,GAAGxC,KAAK,CAACmC,MAAM,CAACH,KAAK,CAAC;EAC3C,MAAMS,eAAe,GAAGzC,KAAK,CAACmC,MAAM,CAASO,SAAS,CAAC;EAEvD,MAAMC,sBAAsB,GAAG,IAAI;EACnC,MAAMC,sBAAsB,GAAGzB,MAAM,CAAC0B,KAAK,GAAG,IAAI;EAElD,MAAMC,WAAW,GAAGxC,iBAAiB,CACnC,CAAC0B,KAAa,EAAEe,OAAO,GAAGlB,gBAAgB,KAAK;IAC7C,MAAMmB,MAAM,GAAG,CAAChB,KAAK,GAAGK,SAAS,CAACY,OAAO,CAACJ,KAAK;IAE/C,MAAM;MAAEjC,MAAM;MAAE,GAAGsC;IAAiB,CAAC,GAAGvC,qBAAqB;IAE7D,IAAIoC,OAAO,EAAE;MACX9C,QAAQ,CAACkD,QAAQ,CAAC,CAChBvC,MAAM,CAACqB,IAAI,EAAE;QACX,GAAGiB,gBAAgB;QACnBE,OAAO,EAAEJ,MAAM;QACfK,eAAe,EAAE;MACnB,CAAC,CAAC,CACH,CAAC,CAACC,KAAK,CAAC,CAAC;QAAEC;MAAS,CAAC,KAAK;QACzB,IAAIA,QAAQ,EAAE;UACZjB,gBAAgB,CAACW,OAAO,CAACjB,KAAK,CAAC;UAC/BO,cAAc,CAACU,OAAO,GAAG;YAAEjB;UAAM,CAAC,CAAC;UACnCS,eAAe,CAACQ,OAAO,GAAGP,SAAS;QACrC;MACF,CAAC,CAAC;MACFD,eAAe,CAACQ,OAAO,GAAGjB,KAAK;IACjC,CAAC,MAAM;MACLC,IAAI,CAACuB,QAAQ,CAACR,MAAM,CAAC;MACrBV,gBAAgB,CAACW,OAAO,CAACjB,KAAK,CAAC;MAC/BO,cAAc,CAACU,OAAO,GAAG;QAAEjB;MAAM,CAAC,CAAC;MACnCS,eAAe,CAACQ,OAAO,GAAGP,SAAS;IACrC;EACF,CACF,CAAC;EAED1C,KAAK,CAACyD,SAAS,CAAC,MAAM;IACpBrB,kBAAkB,CAACa,OAAO,GAAG3B,eAAe;IAC5Ce,SAAS,CAACY,OAAO,GAAG9B,MAAM;IAC1BmB,gBAAgB,CAACW,OAAO,GAAG1B,aAAa;IACxCgB,cAAc,CAACU,OAAO,GAAGzB,WAAW;EACtC,CAAC,CAAC;EAEFxB,KAAK,CAAC0D,eAAe,CAAC,MAAM;IAC1B,MAAMV,MAAM,GAAG,CAACZ,kBAAkB,CAACa,OAAO,CAACjB,KAAK,GAAGb,MAAM,CAAC0B,KAAK;IAE/DZ,IAAI,CAACuB,QAAQ,CAACR,MAAM,CAAC;EACvB,CAAC,EAAE,CAAC7B,MAAM,CAAC0B,KAAK,EAAEZ,IAAI,CAAC,CAAC;EAExBjC,KAAK,CAACyD,SAAS,CAAC,MAAM;IACpB,IAAIrC,mBAAmB,KAAK,MAAM,EAAE;MAClClB,QAAQ,CAACyD,OAAO,CAAC,CAAC;IACpB;IAEA,IAAIxC,MAAM,CAAC0B,KAAK,IAAIL,eAAe,CAACS,OAAO,KAAKjB,KAAK,EAAE;MACrDQ,eAAe,CAACS,OAAO,GAAGjB,KAAK;MAC/Bc,WAAW,CAACd,KAAK,CAAC;IACpB;EACF,CAAC,EAAE,CAACc,WAAW,EAAE1B,mBAAmB,EAAED,MAAM,CAAC0B,KAAK,EAAEb,KAAK,CAAC,CAAC;EAE3D,MAAM4B,oBAAoB,GAAGA,CAC3BC,CAAwB,EACxBC,YAAsC,KACnC;IACH,OACEC,IAAI,CAACC,GAAG,CAACF,YAAY,CAACG,EAAE,CAAC,GAAGF,IAAI,CAACC,GAAG,CAACF,YAAY,CAACI,EAAE,GAAG,CAAC,CAAC,IACzDH,IAAI,CAACC,GAAG,CAACF,YAAY,CAACK,EAAE,CAAC,GAAGJ,IAAI,CAACC,GAAG,CAACF,YAAY,CAACM,EAAE,GAAG,CAAC,CAAC;EAE7D,CAAC;EAED,MAAMC,aAAa,GAAGA,CACpBC,KAA4B,EAC5BR,YAAsC,KACnC;IACH,IAAIzC,YAAY,KAAK,KAAK,EAAE;MAC1B,OAAO,KAAK;IACd;IAEA,MAAMkD,KAAK,GACTzC,eAAe,KAAK,KAAK,GAAG,CAACgC,YAAY,CAACG,EAAE,GAAGH,YAAY,CAACG,EAAE;IAEhE,OACEL,oBAAoB,CAACU,KAAK,EAAER,YAAY,CAAC,KACvCS,KAAK,IAAI7D,SAAS,IAAI8B,eAAe,CAACS,OAAO,GAAG,CAAC,IAChDsB,KAAK,IAAI,CAAC7D,SAAS,IAAI8B,eAAe,CAACS,OAAO,GAAGlB,MAAM,CAACyC,MAAM,GAAG,CAAE,CAAC;EAE3E,CAAC;EAED,MAAMC,YAAY,GAAGA,CAAA,KAAM;IACzBhD,YAAY,GAAG,CAAC;IAEhB,IAAIL,mBAAmB,KAAK,SAAS,EAAE;MACrClB,QAAQ,CAACyD,OAAO,CAAC,CAAC;IACpB;IAEA1B,IAAI,CAACyC,aAAa,CAAC,CAAC;IACpB;IACAzC,IAAI,CAAC0C,SAAS,CAAC1C,IAAI,CAAC2C,MAAM,CAAC;EAC7B,CAAC;EAED,MAAMC,gBAAgB,GAAGA,CACvBhB,CAAwB,EACxBC,YAAsC,KACnC;IACH,MAAMS,KAAK,GACTzC,eAAe,KAAK,KAAK,GAAG,CAACgC,YAAY,CAACG,EAAE,GAAGH,YAAY,CAACG,EAAE;IAEhE;IACE;IACCM,KAAK,GAAG,CAAC,IAAIvC,KAAK,IAAI,CAAC;IACxB;IACCuC,KAAK,GAAG,CAAC,IAAIvC,KAAK,IAAID,MAAM,CAACyC,MAAM,GAAG,CAAE,EACzC;MACA;IACF;IAEA,IAAIrD,MAAM,CAAC0B,KAAK,EAAE;MAChB;MACA,MAAMiC,QAAQ,GAAG,CAAC7C,IAAI,CAAC8C,OAAO,GAAGR,KAAK,IAAI,CAACpD,MAAM,CAAC0B,KAAK;MACvD,MAAMmC,IAAI,GACRF,QAAQ,GAAG9C,KAAK,GAAG+B,IAAI,CAACkB,IAAI,CAACH,QAAQ,CAAC,GAAGf,IAAI,CAACmB,KAAK,CAACJ,QAAQ,CAAC;MAE/D,IAAIE,IAAI,KAAKhD,KAAK,EAAE;QAClBE,YAAY,CAACe,OAAO,CAACkC,OAAO,CAAEC,QAAQ,IAAKA,QAAQ,CAACJ,IAAI,CAAC,CAAC;MAC5D;IACF;IAEA/C,IAAI,CAACuB,QAAQ,CAACe,KAAK,CAAC;EACtB,CAAC;EAED,MAAMc,aAAa,GAAGA,CACpBxB,CAAwB,EACxBC,YAAsC,KACnC;IACH7B,IAAI,CAACqD,aAAa,CAAC,CAAC;IAEpB5D,UAAU,GAAG,CAAC;IAEd,MAAM6D,YAAY,GAChB,OAAO9C,eAAe,CAACQ,OAAO,KAAK,QAAQ,GACvCR,eAAe,CAACQ,OAAO,GACvBT,eAAe,CAACS,OAAO;IAE7B,IAAIuC,SAAS,GAAGD,YAAY;IAE5B,IACExB,IAAI,CAACC,GAAG,CAACF,YAAY,CAACG,EAAE,CAAC,GAAGF,IAAI,CAACC,GAAG,CAACF,YAAY,CAACI,EAAE,CAAC,IACrDH,IAAI,CAACC,GAAG,CAACF,YAAY,CAACK,EAAE,CAAC,GAAGJ,IAAI,CAACC,GAAG,CAACF,YAAY,CAACM,EAAE,CAAC,KACpDL,IAAI,CAACC,GAAG,CAACF,YAAY,CAACG,EAAE,CAAC,GAAGrB,sBAAsB,IACjDmB,IAAI,CAACC,GAAG,CAACF,YAAY,CAACK,EAAE,CAAC,GAAGxB,sBAAsB,CAAC,EACrD;MACA6C,SAAS,GAAGzB,IAAI,CAAC0B,KAAK,CACpB1B,IAAI,CAAC2B,GAAG,CACN3B,IAAI,CAAC4B,GAAG,CACN,CAAC,EACD7D,eAAe,KAAK,KAAK,GACrByD,YAAY,GAAGzB,YAAY,CAACG,EAAE,GAAGF,IAAI,CAACC,GAAG,CAACF,YAAY,CAACG,EAAE,CAAC,GAC1DsB,YAAY,GAAGzB,YAAY,CAACG,EAAE,GAAGF,IAAI,CAACC,GAAG,CAACF,YAAY,CAACG,EAAE,CAC/D,CAAC,EACDlC,MAAM,CAACyC,MAAM,GAAG,CAClB,CACF,CAAC;MAEDhC,eAAe,CAACS,OAAO,GAAGuC,SAAS;IACrC;IAEA,IAAI,CAACI,QAAQ,CAACJ,SAAS,CAAC,EAAE;MACxBA,SAAS,GAAGD,YAAY;IAC1B;IAEAzC,WAAW,CAAC0C,SAAS,EAAE,IAAI,CAAC;EAC9B,CAAC;EAED,MAAMK,gBAAgB,GAAGvF,iBAAiB,CAAE8E,QAAkB,IAAK;IACjElD,YAAY,CAACe,OAAO,CAAC6C,IAAI,CAACV,QAAQ,CAAC;IAEnC,OAAO,MAAM;MACX,MAAMpD,KAAK,GAAGE,YAAY,CAACe,OAAO,CAAC8C,OAAO,CAACX,QAAQ,CAAC;MAEpD,IAAIpD,KAAK,GAAG,CAAC,CAAC,EAAE;QACdE,YAAY,CAACe,OAAO,CAAC+C,MAAM,CAAChE,KAAK,EAAE,CAAC,CAAC;MACvC;IACF,CAAC;EACH,CAAC,CAAC;EAEF,MAAMiE,MAAM,GAAG3F,iBAAiB,CAAE4F,GAAW,IAAK;IAChD,MAAMlE,KAAK,GAAGI,kBAAkB,CAACa,OAAO,CAAClB,MAAM,CAACoE,SAAS,CACtDC,KAAsB,IAAKA,KAAK,CAACF,GAAG,KAAKA,GAC5C,CAAC;IAEDpD,WAAW,CAACd,KAAK,CAAC;IAClBT,aAAa,CAACS,KAAK,CAAC;EACtB,CAAC,CAAC;EAEF,MAAMqE,YAAY,GAAGlG,YAAY,CAACmG,MAAM,CAAC;IACvCC,2BAA2B,EAAElC,aAAa;IAC1CmC,kCAAkC,EAAEnC,aAAa;IACjDoC,mBAAmB,EAAEhC,YAAY;IACjCiC,kBAAkB,EAAE7B,gBAAgB;IACpC8B,uBAAuB,EAAEtB,aAAa;IACtCuB,qBAAqB,EAAEvB,aAAa;IACpCwB,gCAAgC,EAAEA,CAAA,KAAM;EAC1C,CAAC,CAAC;EAEF,MAAMC,YAAY,GAAG3F,MAAM,CAAC0B,KAAK,IAAId,MAAM,CAACyC,MAAM,GAAG,CAAC,CAAC;EACvD,MAAMuC,UAAU,GAAG9G,QAAQ,CAAC+G,QAAQ,CAClC/E,IAAI,CAACgF,WAAW,CAAC;IACfC,UAAU,EAAE,CAAC,CAACJ,YAAY,EAAE,CAAC,CAAC;IAC9BK,WAAW,EAAE,CAAC,CAACL,YAAY,EAAE,CAAC,CAAC;IAC/BM,WAAW,EAAE;EACf,CAAC,CAAC,EACFtF,eAAe,KAAK,KAAK,GAAG,CAAC,CAAC,GAAG,CACnC,CAAC;EAED,MAAMgD,QAAQ,GAAG9E,KAAK,CAACqH,OAAO,CAC5B,MAAOlG,MAAM,CAAC0B,KAAK,GAAG5C,QAAQ,CAACqH,MAAM,CAACrF,IAAI,EAAE,CAACd,MAAM,CAAC0B,KAAK,CAAC,GAAG,IAAK,EAClE,CAAC1B,MAAM,CAAC0B,KAAK,EAAEZ,IAAI,CACrB,CAAC;EAED,OAAON,QAAQ,CAAC;IACdmD,QAAQ,EAAEA,QAAQ,IAAI,IAAI7E,QAAQ,CAACsH,KAAK,CAACvF,KAAK,CAAC;IAC/C6D,gBAAgB;IAChBI,MAAM;IACNuB,MAAM,EAAG7F,QAAQ,iBACflB,IAAA,CAACR,QAAQ,CAACI,IAAI;MACZuB,KAAK,EAAE,CACL6F,MAAM,CAACC,KAAK,EACZvG,MAAM,CAAC0B,KAAK,GACR;QACEA,KAAK,EAAEd,MAAM,CAACyC,MAAM,GAAGrD,MAAM,CAAC0B,KAAK;QACnC8E,SAAS,EAAE,CAAC;UAAEZ;QAAW,CAAC;MAC5B,CAAC,GACD,IAAI,EACRnF,KAAK,CACL;MAAA,GACEyE,YAAY,CAACuB,WAAW;MAAAjG,QAAA,EAE3B3B,KAAK,CAAC6H,QAAQ,CAACC,GAAG,CAACnG,QAAQ,EAAE,CAACoG,KAAK,EAAEC,CAAC,KAAK;QAC1C,MAAM5B,KAAK,GAAGrE,MAAM,CAACiG,CAAC,CAAC;QACvB,MAAMC,OAAO,GAAGD,CAAC,KAAKhG,KAAK;QAE3B,oBACEvB,IAAA,CAACJ,IAAI;UAEHuB,KAAK,EACHT,MAAM,CAAC0B,KAAK,GACR;YAAEA,KAAK,EAAE1B,MAAM,CAAC0B;UAAM,CAAC,GACvBoF,OAAO,GACL7H,UAAU,CAAC8H,YAAY,GACvB,IACP;UAAAvG,QAAA,EAEAsG,OAAO,IAAI9G,MAAM,CAAC0B,KAAK,GAAGkF,KAAK,GAAG;QAAI,GATlC3B,KAAK,CAACF,GAUP,CAAC;MAEX,CAAC;IAAC,CACW;EAEnB,CAAC,CAAC;AACJ;AAEA,MAAMuB,MAAM,GAAGrH,UAAU,CAACkG,MAAM,CAAC;EAC/BoB,KAAK,EAAE;IACLS,IAAI,EAAE,CAAC;IACPC,aAAa,EAAE,KAAK;IACpBC,UAAU,EAAE;EACd;AACF,CAAC,CAAC","ignoreList":[]} +{"version":3,"names":["React","Animated","Keyboard","PanResponder","StyleSheet","View","useLatestCallback","useAnimatedValue","jsx","_jsx","DEAD_ZONE","DefaultTransitionSpec","timing","spring","stiffness","damping","mass","overshootClamping","PanResponderAdapter","layout","keyboardDismissMode","swipeEnabled","navigationState","onIndexChange","onTabSelect","onSwipeStart","onSwipeEnd","children","style","animationEnabled","layoutDirection","routes","index","panX","listenersRef","useRef","navigationStateRef","layoutRef","onIndexChangeRef","onTabSelectRef","currentIndexRef","pendingIndexRef","undefined","swipeVelocityThreshold","swipeDistanceThreshold","width","jumpToIndex","animate","offset","current","transitionConfig","parallel","toValue","useNativeDriver","start","finished","setValue","useEffect","position","setPosition","useState","translateX","setTranslateX","divide","maxTranslate","length","multiply","interpolate","inputRange","outputRange","extrapolate","dismiss","isMovingHorizontally","_","gestureState","Math","abs","dx","dy","vx","vy","canMoveScreen","event","diffX","startGesture","stopAnimation","setOffset","_value","respondToGesture","_offset","next","ceil","floor","forEach","listener","finishGesture","flattenOffset","currentIndex","nextIndex","round","min","max","isFinite","addEnterListener","push","indexOf","splice","jumpTo","key","findIndex","route","panResponder","create","onMoveShouldSetPanResponder","onMoveShouldSetPanResponderCapture","onPanResponderGrant","onPanResponderMove","onPanResponderTerminate","onPanResponderRelease","onPanResponderTerminationRequest","Value","render","styles","sheet","transform","panHandlers","Children","map","child","i","focused","absoluteFill","flex","flexDirection","alignItems"],"sourceRoot":"../../src","sources":["PanResponderAdapter.tsx"],"mappings":"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","ignoreList":[]} \ No newline at end of file -diff --git a/node_modules/react-native-tab-view/lib/typescript/src/PanResponderAdapter.d.ts.map b/node_modules/react-native-tab-view/lib/typescript/src/PanResponderAdapter.d.ts.map -index f477de0..4d55ccb 100644 ---- a/node_modules/react-native-tab-view/lib/typescript/src/PanResponderAdapter.d.ts.map -+++ b/node_modules/react-native-tab-view/lib/typescript/src/PanResponderAdapter.d.ts.map -@@ -1 +1 @@ --{"version":3,"file":"PanResponderAdapter.d.ts","sourceRoot":"","sources":["../../../src/PanResponderAdapter.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EACL,QAAQ,EAOT,MAAM,cAAc,CAAC;AAGtB,OAAO,KAAK,EACV,iBAAiB,EACjB,MAAM,EAEN,eAAe,EACf,UAAU,EACV,KAAK,EACN,MAAM,SAAS,CAAC;AAGjB,KAAK,KAAK,CAAC,CAAC,SAAS,KAAK,IAAI,UAAU,GAAG;IACzC,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IACjD,eAAe,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC;IACpC,QAAQ,EAAE,CACR,KAAK,EAAE,iBAAiB,GAAG;QAGzB,QAAQ,EAAE,QAAQ,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC;QAGjD,MAAM,EAAE,CAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,KAAK,KAAK,CAAC,SAAS,CAAC;QAGvD,MAAM,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;KAC/B,KACE,KAAK,CAAC,YAAY,CAAC;CACzB,CAAC;AAYF,wBAAgB,mBAAmB,CAAC,CAAC,SAAS,KAAK,EAAE,EACnD,MAAM,EACN,mBAA4B,EAC5B,YAAmB,EACnB,eAAe,EACf,aAAa,EACb,WAAW,EACX,YAAY,EACZ,UAAU,EACV,QAAQ,EACR,KAAK,EACL,gBAAwB,EACxB,eAAuB,GACxB,EAAE,KAAK,CAAC,CAAC,CAAC,0EA8QV"} -\ No newline at end of file -+{"version":3,"file":"PanResponderAdapter.d.ts","sourceRoot":"","sources":["../../../src/PanResponderAdapter.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EACL,QAAQ,EAOT,MAAM,cAAc,CAAC;AAGtB,OAAO,KAAK,EACV,iBAAiB,EACjB,MAAM,EAEN,eAAe,EACf,UAAU,EACV,KAAK,EACN,MAAM,SAAS,CAAC;AAGjB,KAAK,KAAK,CAAC,CAAC,SAAS,KAAK,IAAI,UAAU,GAAG;IACzC,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IACjD,eAAe,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC;IACpC,QAAQ,EAAE,CACR,KAAK,EAAE,iBAAiB,GAAG;QAGzB,QAAQ,EAAE,QAAQ,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC;QAGjD,MAAM,EAAE,CAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,KAAK,KAAK,CAAC,SAAS,CAAC;QAGvD,MAAM,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;KAC/B,KACE,KAAK,CAAC,YAAY,CAAC;CACzB,CAAC;AAYF,wBAAgB,mBAAmB,CAAC,CAAC,SAAS,KAAK,EAAE,EACnD,MAAM,EACN,mBAA4B,EAC5B,YAAmB,EACnB,eAAe,EACf,aAAa,EACb,WAAW,EACX,YAAY,EACZ,UAAU,EACV,QAAQ,EACR,KAAK,EACL,gBAAwB,EACxB,eAAuB,GACxB,EAAE,KAAK,CAAC,CAAC,CAAC,0EAiSV"} -\ No newline at end of file diff --git a/patches/react-native-tab-view/react-native-tab-view+4.3.0+003+fix-web-onTabSelect-on-mount.patch b/patches/react-native-tab-view/react-native-tab-view+4.3.2+003+fix-web-onTabSelect-on-mount.patch similarity index 88% rename from patches/react-native-tab-view/react-native-tab-view+4.3.0+003+fix-web-onTabSelect-on-mount.patch rename to patches/react-native-tab-view/react-native-tab-view+4.3.2+003+fix-web-onTabSelect-on-mount.patch index ff1df355c8df..37cd3b30b474 100644 --- a/patches/react-native-tab-view/react-native-tab-view+4.3.0+003+fix-web-onTabSelect-on-mount.patch +++ b/patches/react-native-tab-view/react-native-tab-view+4.3.2+003+fix-web-onTabSelect-on-mount.patch @@ -1,5 +1,5 @@ diff --git a/node_modules/react-native-tab-view/lib/module/PanResponderAdapter.js b/node_modules/react-native-tab-view/lib/module/PanResponderAdapter.js -index 0000002..0000003 100644 +index fdb8c83..7ae690b 100644 --- a/node_modules/react-native-tab-view/lib/module/PanResponderAdapter.js +++ b/node_modules/react-native-tab-view/lib/module/PanResponderAdapter.js @@ -39,6 +39,7 @@ export function PanResponderAdapter({ @@ -10,14 +10,15 @@ index 0000002..0000003 100644 const swipeVelocityThreshold = 0.15; const swipeDistanceThreshold = layout.width / 1.75; const jumpToIndex = useLatestCallback((index, animate = animationEnabled) => { -@@ -94,5 +95,6 @@ export function PanResponderAdapter({ +@@ -94,6 +95,7 @@ export function PanResponderAdapter({ setPosition(null); // eslint-disable-next-line @eslint-react/hooks-extra/no-direct-set-state-in-use-effect setTranslateX(null); + hasCalledInitialTabSelectRef.current = false; return; } -@@ -110,5 +112,11 @@ export function PanResponderAdapter({ + +@@ -110,6 +112,12 @@ export function PanResponderAdapter({ outputRange: [-maxTranslate, 0], extrapolate: 'clamp' }), layoutDirection === 'rtl' ? -1 : 1)); @@ -29,3 +30,4 @@ index 0000002..0000003 100644 + } }, [layout.width, panX, routes.length, layoutDirection]); React.useEffect(() => { + if (keyboardDismissMode === 'auto') { diff --git a/patches/react-native-tab-view/react-native-tab-view+4.3.0+004+fix-native-onTabSelect-on-mount.patch b/patches/react-native-tab-view/react-native-tab-view+4.3.2+004+fix-native-onTabSelect-on-mount.patch similarity index 97% rename from patches/react-native-tab-view/react-native-tab-view+4.3.0+004+fix-native-onTabSelect-on-mount.patch rename to patches/react-native-tab-view/react-native-tab-view+4.3.2+004+fix-native-onTabSelect-on-mount.patch index 3ea408f3ca68..a7eed8165abe 100644 --- a/patches/react-native-tab-view/react-native-tab-view+4.3.0+004+fix-native-onTabSelect-on-mount.patch +++ b/patches/react-native-tab-view/react-native-tab-view+4.3.2+004+fix-native-onTabSelect-on-mount.patch @@ -1,5 +1,5 @@ diff --git a/node_modules/react-native-tab-view/src/PagerViewAdapter.tsx b/node_modules/react-native-tab-view/src/PagerViewAdapter.tsx -index 0000001..01e208c 100644 +index d66b0cb..01e208c 100644 --- a/node_modules/react-native-tab-view/src/PagerViewAdapter.tsx +++ b/node_modules/react-native-tab-view/src/PagerViewAdapter.tsx @@ -57,14 +57,28 @@ export function PagerViewAdapter({ diff --git a/patches/react-native-tab-view/react-native-tab-view+4.3.0+005+fix-pager-scrollleft-91610.patch b/patches/react-native-tab-view/react-native-tab-view+4.3.2+005+fix-pager-scrollleft-91610.patch similarity index 92% rename from patches/react-native-tab-view/react-native-tab-view+4.3.0+005+fix-pager-scrollleft-91610.patch rename to patches/react-native-tab-view/react-native-tab-view+4.3.2+005+fix-pager-scrollleft-91610.patch index 6ec3f56eec6c..bbeb68f07d30 100644 --- a/patches/react-native-tab-view/react-native-tab-view+4.3.0+005+fix-pager-scrollleft-91610.patch +++ b/patches/react-native-tab-view/react-native-tab-view+4.3.2+005+fix-pager-scrollleft-91610.patch @@ -1,8 +1,8 @@ diff --git a/node_modules/react-native-tab-view/lib/module/TabView.js b/node_modules/react-native-tab-view/lib/module/TabView.js -index 0000004..0000005 100644 +index 079ee72..2153b63 100644 --- a/node_modules/react-native-tab-view/lib/module/TabView.js +++ b/node_modules/react-native-tab-view/lib/module/TabView.js -@@ -41,6 +41,27 @@ +@@ -41,6 +41,27 @@ export function TabView({ height: 0, ...initialLayout }); @@ -30,7 +30,7 @@ index 0000004..0000005 100644 const jumpToIndex = index => { if (index !== navigationState.index) { onIndexChange(index); -@@ -66,6 +87,7 @@ +@@ -66,6 +87,7 @@ export function TabView({ ...sceneOptions?.[route.key] }])); return /*#__PURE__*/_jsx(View, { diff --git a/patches/react-navigation/@react-navigation+bottom-tabs+7.18.16+001+fix-failing-jest-by-disabling-esmodule.patch b/patches/react-navigation/@react-navigation+bottom-tabs+7.19.2+001+fix-failing-jest-by-disabling-esmodule.patch similarity index 100% rename from patches/react-navigation/@react-navigation+bottom-tabs+7.18.16+001+fix-failing-jest-by-disabling-esmodule.patch rename to patches/react-navigation/@react-navigation+bottom-tabs+7.19.2+001+fix-failing-jest-by-disabling-esmodule.patch diff --git a/patches/react-navigation/@react-navigation+core+7.21.12+001+fix-failing-jest-by-disabling-esmodule.patch b/patches/react-navigation/@react-navigation+core+7.22.1+001+fix-failing-jest-by-disabling-esmodule.patch similarity index 100% rename from patches/react-navigation/@react-navigation+core+7.21.12+001+fix-failing-jest-by-disabling-esmodule.patch rename to patches/react-navigation/@react-navigation+core+7.22.1+001+fix-failing-jest-by-disabling-esmodule.patch diff --git a/patches/react-navigation/@react-navigation+core+7.21.12+002+platform-navigation-stack-types.patch b/patches/react-navigation/@react-navigation+core+7.22.1+002+platform-navigation-stack-types.patch similarity index 99% rename from patches/react-navigation/@react-navigation+core+7.21.12+002+platform-navigation-stack-types.patch rename to patches/react-navigation/@react-navigation+core+7.22.1+002+platform-navigation-stack-types.patch index 65c6d6e0948a..94ab2b672599 100644 --- a/patches/react-navigation/@react-navigation+core+7.21.12+002+platform-navigation-stack-types.patch +++ b/patches/react-navigation/@react-navigation+core+7.22.1+002+platform-navigation-stack-types.patch @@ -57,7 +57,7 @@ index dfd9de7..0d14027 100644 // @ts-expect-error: we check for function but TS still complains typeof curr !== 'function' ? curr : curr({ diff --git a/node_modules/@react-navigation/core/lib/module/useNavigationBuilder.js b/node_modules/@react-navigation/core/lib/module/useNavigationBuilder.js -index 2ed8725..8147d8f 100644 +index f01bdd6..6427dab 100644 --- a/node_modules/@react-navigation/core/lib/module/useNavigationBuilder.js +++ b/node_modules/@react-navigation/core/lib/module/useNavigationBuilder.js @@ -167,7 +167,7 @@ const getStateFromParams = (params, type) => { @@ -79,7 +79,7 @@ index 2ed8725..8147d8f 100644 state, navigation, diff --git a/node_modules/@react-navigation/core/lib/typescript/src/types.d.ts b/node_modules/@react-navigation/core/lib/typescript/src/types.d.ts -index 0b4f4c2..4dc5941 100644 +index 23af668..feb6f47 100644 --- a/node_modules/@react-navigation/core/lib/typescript/src/types.d.ts +++ b/node_modules/@react-navigation/core/lib/typescript/src/types.d.ts @@ -109,7 +109,16 @@ declare global { @@ -161,7 +161,7 @@ index 5e37fe4..f0129f1 100644 dispatch(action: Readonly<{ type: string; diff --git a/node_modules/@react-navigation/core/lib/typescript/src/useNavigationBuilder.d.ts b/node_modules/@react-navigation/core/lib/typescript/src/useNavigationBuilder.d.ts -index 36566fb..fc4eb26 100644 +index ab8f81e..1819ea3 100644 --- a/node_modules/@react-navigation/core/lib/typescript/src/useNavigationBuilder.d.ts +++ b/node_modules/@react-navigation/core/lib/typescript/src/useNavigationBuilder.d.ts @@ -1,6 +1,6 @@ @@ -182,7 +182,7 @@ index 36566fb..fc4eb26 100644 navigation: { dispatch(action: Readonly<{ diff --git a/node_modules/@react-navigation/core/src/types.tsx b/node_modules/@react-navigation/core/src/types.tsx -index 68e52ae..4eb998a 100644 +index 580f300..f3c6ca9 100644 --- a/node_modules/@react-navigation/core/src/types.tsx +++ b/node_modules/@react-navigation/core/src/types.tsx @@ -157,6 +157,29 @@ declare global { @@ -362,7 +362,7 @@ index 320efcf..e78fa6d 100644 return optionsList.reduce( (acc, curr) => diff --git a/node_modules/@react-navigation/core/src/useNavigationBuilder.tsx b/node_modules/@react-navigation/core/src/useNavigationBuilder.tsx -index 9f0d412..bc976eb 100644 +index 16e44a5..2ad3322 100644 --- a/node_modules/@react-navigation/core/src/useNavigationBuilder.tsx +++ b/node_modules/@react-navigation/core/src/useNavigationBuilder.tsx @@ -27,6 +27,7 @@ import { NavigationStateContext } from './NavigationStateContext'; diff --git a/patches/react-navigation/@react-navigation+core+7.22.1+003+root-state-not-undefined.patch b/patches/react-navigation/@react-navigation+core+7.22.1+003+root-state-not-undefined.patch new file mode 100644 index 000000000000..15ea671710c6 --- /dev/null +++ b/patches/react-navigation/@react-navigation+core+7.22.1+003+root-state-not-undefined.patch @@ -0,0 +1,26 @@ +diff --git a/node_modules/@react-navigation/core/lib/typescript/src/types.d.ts b/node_modules/@react-navigation/core/lib/typescript/src/types.d.ts +index feb6f47..4dc5941 100644 +--- a/node_modules/@react-navigation/core/lib/typescript/src/types.d.ts ++++ b/node_modules/@react-navigation/core/lib/typescript/src/types.d.ts +@@ -720,7 +720,7 @@ export type NavigationContainerRef = NavigationHelpers = + /** + * Get the rehydrated navigation state of the navigation tree. + */ +- getRootState(): NavigationState | undefined; ++ getRootState(): NavigationState; + /** + * Get the currently focused navigation route. + */ diff --git a/patches/react-navigation/@react-navigation+elements+2.9.38+001+fix-failing-jest-by-disabling-esmodule.patch b/patches/react-navigation/@react-navigation+elements+2.9.43+001+fix-failing-jest-by-disabling-esmodule.patch similarity index 100% rename from patches/react-navigation/@react-navigation+elements+2.9.38+001+fix-failing-jest-by-disabling-esmodule.patch rename to patches/react-navigation/@react-navigation+elements+2.9.43+001+fix-failing-jest-by-disabling-esmodule.patch diff --git a/patches/react-navigation/@react-navigation+material-top-tabs+7.4.19+001+fix-failing-jest-by-disabling-esmodule.patch b/patches/react-navigation/@react-navigation+material-top-tabs+7.7.2+001+fix-failing-jest-by-disabling-esmodule.patch similarity index 100% rename from patches/react-navigation/@react-navigation+material-top-tabs+7.4.19+001+fix-failing-jest-by-disabling-esmodule.patch rename to patches/react-navigation/@react-navigation+material-top-tabs+7.7.2+001+fix-failing-jest-by-disabling-esmodule.patch diff --git a/patches/react-navigation/@react-navigation+native+7.3.16+003+increase-history-go-popstate-fallback-timeout.patch b/patches/react-navigation/@react-navigation+native+7.3.16+003+increase-history-go-popstate-fallback-timeout.patch deleted file mode 100644 index 062073b6a427..000000000000 --- a/patches/react-navigation/@react-navigation+native+7.3.16+003+increase-history-go-popstate-fallback-timeout.patch +++ /dev/null @@ -1,30 +0,0 @@ -diff --git a/node_modules/@react-navigation/native/lib/module/createMemoryHistory.js b/node_modules/@react-navigation/native/lib/module/createMemoryHistory.js -index c475462..f8e7d1c 100644 ---- a/node_modules/@react-navigation/native/lib/module/createMemoryHistory.js -+++ b/node_modules/@react-navigation/native/lib/module/createMemoryHistory.js -@@ -188,10 +188,14 @@ export function createMemoryHistory() { - cb: done - }); - -- // If navigation didn't happen within 100ms, assume that it won't happen -+ // If navigation didn't happen within 1000ms, assume that it won't happen - // This may not be accurate, but hopefully it won't take so much time - // In Chrome, navigation seems to happen instantly in next microtask -- // But on Firefox, it seems to take much longer, around 50ms from our testing -+ // But on Firefox the traversal can take 500ms+ when the main thread is busy -+ // (measured up to ~900ms while rendering a newly pushed screen). A 100ms timeout -+ // routinely resolved before the traversal finished and removed the pending entry, -+ // so the late `popstate` was misclassified by `listen` as a user-initiated -+ // back/forward navigation and reset the app to a stale route - // We're using a hacky timeout since there doesn't seem to be way to know for sure - const timer = setTimeout(() => { - window.removeEventListener('popstate', onPopState); -@@ -201,7 +205,7 @@ export function createMemoryHistory() { - pending.splice(foundIndex, 1); - } - index = this.index; -- }, 100); -+ }, 1000); - const onPopState = () => { - // Fix createMemoryHistory.index variable's value - // as it may go out of sync when navigating in the browser. diff --git a/patches/react-navigation/@react-navigation+native+7.3.16+001+initial.patch b/patches/react-navigation/@react-navigation+native+7.4.1+001+initial.patch similarity index 83% rename from patches/react-navigation/@react-navigation+native+7.3.16+001+initial.patch rename to patches/react-navigation/@react-navigation+native+7.4.1+001+initial.patch index 8cc2e4e479bd..b16466d5d91c 100644 --- a/patches/react-navigation/@react-navigation+native+7.3.16+001+initial.patch +++ b/patches/react-navigation/@react-navigation+native+7.4.1+001+initial.patch @@ -1,8 +1,8 @@ diff --git a/node_modules/@react-navigation/native/lib/module/createMemoryHistory.js b/node_modules/@react-navigation/native/lib/module/createMemoryHistory.js -index 58a543b..c475462 100644 +index 9034278..d639a23 100644 --- a/node_modules/@react-navigation/native/lib/module/createMemoryHistory.js +++ b/node_modules/@react-navigation/native/lib/module/createMemoryHistory.js -@@ -1,6 +1,7 @@ +@@ -1,11 +1,28 @@ "use strict"; import { nanoid } from 'nanoid/non-secure'; @@ -10,7 +10,28 @@ index 58a543b..c475462 100644 const getPathWithoutHash = path => path.split('#')[0] ?? ''; export function createMemoryHistory() { let index = 0; -@@ -19,6 +20,9 @@ export function createMemoryHistory() { + let items = []; + ++ // const log = () => { ++ // console.log(JSON.stringify({ ++ // index, ++ // indexGetter: history.index, ++ // items: items.map((item, i) => { ++ // var _item$state; ++ // return { ++ // selected: history.index === i ? '<<<<<<<' : undefined, ++ // path: item.path, ++ // id: item.id, ++ // state: ((_item$state = item.state) === null || _item$state === void 0 ? void 0 : _item$state.key) || null ++ // }; ++ // }) ++ // }, null, 4)); ++ // }; ++ + // Pending callbacks for `history.go(n)` + // We might modify the callback stored if it was interrupted, so we have a ref to identify it + const pending = []; +@@ -19,6 +36,9 @@ export function createMemoryHistory() { }); }; const history = { @@ -20,7 +41,7 @@ index 58a543b..c475462 100644 get index() { // We store an id in the state instead of an index // Index could get out of sync with in-memory values if page reloads -@@ -33,7 +37,8 @@ export function createMemoryHistory() { +@@ -33,7 +53,8 @@ export function createMemoryHistory() { return items[index]; }, backIndex({ @@ -30,7 +51,7 @@ index 58a543b..c475462 100644 }) { const pathWithoutHash = getPathWithoutHash(path); -@@ -43,7 +48,7 @@ export function createMemoryHistory() { +@@ -43,7 +64,7 @@ export function createMemoryHistory() { if (item == null) { continue; } @@ -39,7 +60,7 @@ index 58a543b..c475462 100644 return i; } } -@@ -85,7 +90,7 @@ export function createMemoryHistory() { +@@ -85,7 +106,7 @@ export function createMemoryHistory() { // Need to keep the hash part of the path if there was no previous history entry // or the previous history entry had the same path @@ -50,7 +71,7 @@ index 58a543b..c475462 100644 // There are two scenarios for creating an array with only one history record: diff --git a/node_modules/@react-navigation/native/lib/module/findFocusedRouteKey.js b/node_modules/@react-navigation/native/lib/module/findFocusedRouteKey.js new file mode 100644 -index 0000000..290e96f +index 0000000..b996822 --- /dev/null +++ b/node_modules/@react-navigation/native/lib/module/findFocusedRouteKey.js @@ -0,0 +1,8 @@ @@ -58,12 +79,12 @@ index 0000000..290e96f + +import { findFocusedRoute } from '@react-navigation/core'; +export function findFocusedRouteKey(state) { -+ const focusedRoute = findFocusedRoute(state); -+ return focusedRoute?.key; ++ const focusedRoute = findFocusedRoute(state); ++ return focusedRoute?.key; +} +//# sourceMappingURL=findFocusedRouteKey.js.map diff --git a/node_modules/@react-navigation/native/lib/module/useLinking.js b/node_modules/@react-navigation/native/lib/module/useLinking.js -index 66b73b5..99b630d 100644 +index af0cd61..fb06350 100644 --- a/node_modules/@react-navigation/native/lib/module/useLinking.js +++ b/node_modules/@react-navigation/native/lib/module/useLinking.js @@ -4,6 +4,7 @@ import { CommonActions, findFocusedRoute, getActionFromState as getActionFromSta @@ -118,7 +139,7 @@ index 66b73b5..99b630d 100644 export function useLinking(ref, { enabled = true, config, -@@ -409,6 +447,9 @@ export function useLinking(ref, { +@@ -411,6 +449,9 @@ export function useLinking(ref, { const historyDelta = getHistoryLength(focusedState) - getHistoryLength(previousFocusedState) - ( // Subtract the delta already applied by the browser to sync only the remaining changes pendingPopStateDelta ?? 0); @@ -128,7 +149,7 @@ index 66b73b5..99b630d 100644 if (historyDelta > 0) { // If history length is increased, we should pushState // Note that path might not actually change here, for example, drawer open should pushState -@@ -420,7 +461,8 @@ export function useLinking(ref, { +@@ -422,7 +463,8 @@ export function useLinking(ref, { // If history length is decreased, i.e. entries were removed, we want to go back const nextIndex = history.backIndex({ @@ -138,15 +159,7 @@ index 66b73b5..99b630d 100644 }); const currentIndex = history.index; try { -@@ -429,11 +471,26 @@ export function useLinking(ref, { - history.get(nextIndex)) { - // An existing entry for this path exists and it's less than current index, go back to that - await history.go(nextIndex - currentIndex); -+ history.replace({ -+ path, -+ state -+ }); - } else { +@@ -435,7 +477,18 @@ export function useLinking(ref, { // We couldn't find an existing entry to go back to, so we'll go back by the delta // This won't be correct if multiple routes were pushed in one go before // Usually this shouldn't happen and this is a fallback for that @@ -166,7 +179,7 @@ index 66b73b5..99b630d 100644 } // Store the updated state as well as fix the path if incorrect -@@ -446,10 +503,26 @@ export function useLinking(ref, { +@@ -448,10 +501,26 @@ export function useLinking(ref, { } } else { // If history length is unchanged, we want to replaceState diff --git a/patches/react-navigation/@react-navigation+native+7.3.16+002+fix-failing-jest-by-disabling-esmodule.patch b/patches/react-navigation/@react-navigation+native+7.4.1+002+fix-failing-jest-by-disabling-esmodule.patch similarity index 100% rename from patches/react-navigation/@react-navigation+native+7.3.16+002+fix-failing-jest-by-disabling-esmodule.patch rename to patches/react-navigation/@react-navigation+native+7.4.1+002+fix-failing-jest-by-disabling-esmodule.patch diff --git a/patches/react-navigation/@react-navigation+native-stack+7.14.5+002+fix-failing-jest-by-disabling-esmodule.patch b/patches/react-navigation/@react-navigation+native-stack+7.19.2+002+fix-failing-jest-by-disabling-esmodule.patch similarity index 100% rename from patches/react-navigation/@react-navigation+native-stack+7.14.5+002+fix-failing-jest-by-disabling-esmodule.patch rename to patches/react-navigation/@react-navigation+native-stack+7.19.2+002+fix-failing-jest-by-disabling-esmodule.patch diff --git a/patches/react-navigation/@react-navigation+stack+7.8.5+001+edge-drag-gesture.patch b/patches/react-navigation/@react-navigation+stack+7.11.2+001+edge-drag-gesture.patch similarity index 94% rename from patches/react-navigation/@react-navigation+stack+7.8.5+001+edge-drag-gesture.patch rename to patches/react-navigation/@react-navigation+stack+7.11.2+001+edge-drag-gesture.patch index 1bc7bf7ad90a..d05c705d1de3 100644 --- a/patches/react-navigation/@react-navigation+stack+7.8.5+001+edge-drag-gesture.patch +++ b/patches/react-navigation/@react-navigation+stack+7.11.2+001+edge-drag-gesture.patch @@ -67,10 +67,10 @@ index 0000000..9c7b703 +//# sourceMappingURL=edgeDragGestureMonitor.native.js.map \ No newline at end of file diff --git a/node_modules/@react-navigation/stack/lib/module/views/Stack/Card.js b/node_modules/@react-navigation/stack/lib/module/views/Stack/Card.js -index 0000000..0000000 100644 +index d737bbc..f6c06f0 100644 --- a/node_modules/@react-navigation/stack/lib/module/views/Stack/Card.js +++ b/node_modules/@react-navigation/stack/lib/module/views/Stack/Card.js -@@ -6,6 +6,7 @@ import * as React from 'react'; +@@ -6,6 +6,7 @@ import { Animated, Platform, StyleSheet, View } from 'react-native'; import useLatestCallback from 'use-latest-callback'; import { CardAnimationContext } from "../../utils/CardAnimationContext.js"; import { gestureActivationCriteria } from "../../utils/gestureActivationCriteria.js"; @@ -78,8 +78,7 @@ index 0000000..0000000 100644 import { getDistanceForDirection } from "../../utils/getDistanceForDirection.js"; import { getInvertedMultiplier } from "../../utils/getInvertedMultiplier.js"; import { getShadowStyle } from "../../utils/getShadowStyle.js"; -@@ -134,7 +135,9 @@ export function Card({ - if (animated) { +@@ -150,6 +151,8 @@ function Card({ onStartInteraction(); animation(gesture, { ...spec.config, @@ -88,9 +87,8 @@ index 0000000..0000000 100644 velocity, toValue, useNativeDriver, -@@ -143,7 +145,10 @@ export function Card({ - finished - }) => { +@@ -163,6 +166,9 @@ function Card({ + isAnimatingRef.current = false; onEndInteraction(); clearTimeout(pendingGestureCallbackRef.current); + @@ -100,7 +98,7 @@ index 0000000..0000000 100644 onFinish(); } diff --git a/node_modules/@react-navigation/stack/lib/module/views/Stack/CardStack.js b/node_modules/@react-navigation/stack/lib/module/views/Stack/CardStack.js -index 0000000..0000000 100644 +index a3c1efd..326f0c6 100644 --- a/node_modules/@react-navigation/stack/lib/module/views/Stack/CardStack.js +++ b/node_modules/@react-navigation/stack/lib/module/views/Stack/CardStack.js @@ -5,6 +5,7 @@ import * as React from 'react'; @@ -111,8 +109,7 @@ index 0000000..0000000 100644 import { findLastIndex } from "../../utils/findLastIndex.js"; import { getDistanceForDirection } from "../../utils/getDistanceForDirection.js"; import { getModalRouteKeys } from "../../utils/getModalRoutesKeys.js"; -@@ -261,7 +262,9 @@ export class CardStack extends React.Component { - }; +@@ -261,6 +262,8 @@ export class CardStack extends React.Component { } constructor(props) { super(props); diff --git a/patches/react-navigation/@react-navigation+stack+7.8.5+002+dontDetachScreen.patch b/patches/react-navigation/@react-navigation+stack+7.11.2+002+dontDetachScreen.patch similarity index 81% rename from patches/react-navigation/@react-navigation+stack+7.8.5+002+dontDetachScreen.patch rename to patches/react-navigation/@react-navigation+stack+7.11.2+002+dontDetachScreen.patch index 0b10a2777532..d48b0d12b11c 100644 --- a/patches/react-navigation/@react-navigation+stack+7.8.5+002+dontDetachScreen.patch +++ b/patches/react-navigation/@react-navigation+stack+7.11.2+002+dontDetachScreen.patch @@ -1,8 +1,20 @@ +diff --git a/node_modules/@react-navigation/stack/lib/module/views/Stack/CardA11yWrapper.js b/node_modules/@react-navigation/stack/lib/module/views/Stack/CardA11yWrapper.js +index 7750f21..d95ceb0 100644 +--- a/node_modules/@react-navigation/stack/lib/module/views/Stack/CardA11yWrapper.js ++++ b/node_modules/@react-navigation/stack/lib/module/views/Stack/CardA11yWrapper.js +@@ -23,6 +23,7 @@ export const CardA11yWrapper = /*#__PURE__*/React.forwardRef(({ + style: [StyleSheet.absoluteFill, { + // We use visibility on web + display: Platform.OS !== 'web' && isHidden ? 'none' : 'flex', ++ zIndex: Platform.OS === 'web' ? 'auto' : undefined, + // Hide unfocused screens when animation isn't enabled + // This is also necessary for a11y on web + // @ts-expect-error visibility is only available on web diff --git a/node_modules/@react-navigation/stack/lib/module/views/Stack/CardStack.js b/node_modules/@react-navigation/stack/lib/module/views/Stack/CardStack.js -index 0000000..0000000 100644 +index 326f0c6..381ca43 100644 --- a/node_modules/@react-navigation/stack/lib/module/views/Stack/CardStack.js +++ b/node_modules/@react-navigation/stack/lib/module/views/Stack/CardStack.js -@@ -427,6 +430,7 @@ export class CardStack extends React.Component { +@@ -430,10 +430,11 @@ export class CardStack extends React.Component { const isNextScreenTransparent = scenes[index + 1]?.descriptor.options.presentation === 'transparentModal'; const detachCurrentScreen = scenes[index + 1]?.descriptor.options.detachPreviousScreen !== false; const activityState = isPreloaded ? STATE_INACTIVE : activeStates[index]; @@ -10,16 +22,12 @@ index 0000000..0000000 100644 return /*#__PURE__*/_jsx(MaybeScreen, { style: [StyleSheet.absoluteFill], enabled: detachInactiveScreens, -@@ -430,7 +434,7 @@ export class CardStack extends React.Component { - return /*#__PURE__*/_jsx(MaybeScreen, { - style: [StyleSheet.absoluteFill], - enabled: detachInactiveScreens, - active: activityState, + active: shouldNotDetachScreen ? STATE_TRANSITIONING_OR_BELOW_TOP : activityState, freezeOnBlur: freezeOnBlur, shouldFreeze: activityState === STATE_INACTIVE && !isPreloaded, homeIndicatorHidden: autoHideHomeIndicator, -@@ -465,7 +469,7 @@ export class CardStack extends React.Component { +@@ -468,7 +469,7 @@ export class CardStack extends React.Component { onTransitionStart: onTransitionStart, onTransitionEnd: onTransitionEnd, isNextScreenTransparent: isNextScreenTransparent, @@ -28,15 +36,3 @@ index 0000000..0000000 100644 preloaded: isPreloaded }) }, route.key); -diff --git a/node_modules/@react-navigation/stack/lib/module/views/Stack/CardA11yWrapper.js b/node_modules/@react-navigation/stack/lib/module/views/Stack/CardA11yWrapper.js -index 0000000..0000000 100644 ---- a/node_modules/@react-navigation/stack/lib/module/views/Stack/CardA11yWrapper.js -+++ b/node_modules/@react-navigation/stack/lib/module/views/Stack/CardA11yWrapper.js -@@ -27,6 +27,7 @@ export const CardA11yWrapper = /*#__PURE__*/React.forwardRef(({ - overflow: active ? undefined : 'hidden', - // We use visibility on web - display: Platform.OS !== 'web' && isHidden ? 'none' : 'flex', -+ zIndex: Platform.OS === 'web' ? 'auto' : undefined, - // Hide unfocused screens when animation isn't enabled - // This is also necessary for a11y on web - // @ts-expect-error visibility is only available on web diff --git a/patches/react-navigation/@react-navigation+stack+7.8.5+004+fix-failing-jest-by-disabling-esmodule.patch b/patches/react-navigation/@react-navigation+stack+7.11.2+004+fix-failing-jest-by-disabling-esmodule.patch similarity index 100% rename from patches/react-navigation/@react-navigation+stack+7.8.5+004+fix-failing-jest-by-disabling-esmodule.patch rename to patches/react-navigation/@react-navigation+stack+7.11.2+004+fix-failing-jest-by-disabling-esmodule.patch diff --git a/patches/react-navigation/@react-navigation+stack+7.8.5+005+clip-inactive-card-inside-card.patch b/patches/react-navigation/@react-navigation+stack+7.8.5+005+clip-inactive-card-inside-card.patch deleted file mode 100644 index 244e9ecc8a13..000000000000 --- a/patches/react-navigation/@react-navigation+stack+7.8.5+005+clip-inactive-card-inside-card.patch +++ /dev/null @@ -1,48 +0,0 @@ -diff --git a/node_modules/@react-navigation/stack/lib/module/views/Stack/Card.js b/node_modules/@react-navigation/stack/lib/module/views/Stack/Card.js ---- a/node_modules/@react-navigation/stack/lib/module/views/Stack/Card.js -+++ b/node_modules/@react-navigation/stack/lib/module/views/Stack/Card.js -@@ -48,6 +48,7 @@ function Card({ - gestureVelocityImpact = GESTURE_VELOCITY_IMPACT, - overlay = defaultOverlay, - animated, -+ active, - interpolationIndex, - opening, - closing, -@@ -375,7 +376,11 @@ function Card({ - children: /*#__PURE__*/_jsxs(Animated.View, { - pointerEvents: "box-none", - needsOffscreenAlphaCompositing: hasOpacityStyle(cardStyle), -- style: [styles.container, cardStyle], -+ style: [styles.container, { -+ // Avoid unfocused larger pages increasing scroll area -+ // e.g. when a smaller screen is pushed over a larger one on web -+ overflow: active ? undefined : 'hidden' -+ }, cardStyle], - children: [shadowEnabled && shadowStyle && !isTransparent ? /*#__PURE__*/_jsx(Animated.View, { - pointerEvents: "none", - style: [styles.shadow, gestureDirection === 'horizontal' ? [styles.shadowHorizontal, styles.shadowStart] : gestureDirection === 'horizontal-inverted' ? [styles.shadowHorizontal, styles.shadowEnd] : gestureDirection === 'vertical' ? [styles.shadowVertical, styles.shadowTop] : [styles.shadowVertical, styles.shadowBottom], { -diff --git a/node_modules/@react-navigation/stack/lib/module/views/Stack/CardA11yWrapper.js b/node_modules/@react-navigation/stack/lib/module/views/Stack/CardA11yWrapper.js ---- a/node_modules/@react-navigation/stack/lib/module/views/Stack/CardA11yWrapper.js -+++ b/node_modules/@react-navigation/stack/lib/module/views/Stack/CardA11yWrapper.js -@@ -22,9 +22,6 @@ export const CardA11yWrapper = /*#__PURE__*/React.forwardRef(({ - "aria-hidden": !focused, - pointerEvents: (animated ? inert : !focused) ? 'none' : 'box-none', - style: [StyleSheet.absoluteFill, { -- // This is necessary to avoid unfocused larger pages increasing scroll area -- // The issue can be seen on the web when a smaller screen is pushed over a larger one -- overflow: active ? undefined : 'hidden', - // We use visibility on web - display: Platform.OS !== 'web' && isHidden ? 'none' : 'flex', - zIndex: Platform.OS === 'web' ? 'auto' : undefined, -diff --git a/node_modules/@react-navigation/stack/lib/module/views/Stack/CardContainer.js b/node_modules/@react-navigation/stack/lib/module/views/Stack/CardContainer.js ---- a/node_modules/@react-navigation/stack/lib/module/views/Stack/CardContainer.js -+++ b/node_modules/@react-navigation/stack/lib/module/views/Stack/CardContainer.js -@@ -198,6 +198,7 @@ function CardContainerInner({ - detachCurrentScreen: detachCurrentScreen, - children: /*#__PURE__*/_jsx(Card, { - animated: animated, -+ active: active, - interpolationIndex: interpolationIndex, - gestureDirection: gestureDirection, - layout: layout, diff --git a/patches/react-navigation/details.md b/patches/react-navigation/details.md index 0e91bdacbc4b..542721926812 100644 --- a/patches/react-navigation/details.md +++ b/patches/react-navigation/details.md @@ -1,14 +1,14 @@ # `@react-navigation` patches ### @react-navigation+package-name+7+fix-failing-jest-by-disabling-esmodule.patch -#### [@react-navigation+bottom-tabs+7.18.16+001+fix-failing-jest-by-disabling-esmodule.patch](@react-navigation+bottom-tabs+7.18.16+001+fix-failing-jest-by-disabling-esmodule.patch) -#### [@react-navigation+core+7.21.12+001+fix-failing-jest-by-disabling-esmodule.patch](@react-navigation+core+7.21.12+001+fix-failing-jest-by-disabling-esmodule.patch) -#### [@react-navigation+elements+2.9.38+001+fix-failing-jest-by-disabling-esmodule.patch](@react-navigation+elements+2.9.38+001+fix-failing-jest-by-disabling-esmodule.patch) -#### [@react-navigation+material-top-tabs+7.4.19+001+fix-failing-jest-by-disabling-esmodule.patch](@react-navigation+material-top-tabs+7.4.19+001+fix-failing-jest-by-disabling-esmodule.patch) -#### [@react-navigation+native-stack+7.14.5+002+fix-failing-jest-by-disabling-esmodule.patch](@react-navigation+native-stack+7.14.5+002+fix-failing-jest-by-disabling-esmodule.patch) -#### [@react-navigation+native+7.3.16+002+fix-failing-jest-by-disabling-esmodule.patch](@react-navigation+native+7.3.16+002+fix-failing-jest-by-disabling-esmodule.patch) +#### [@react-navigation+bottom-tabs+7.19.2+001+fix-failing-jest-by-disabling-esmodule.patch](@react-navigation+bottom-tabs+7.19.2+001+fix-failing-jest-by-disabling-esmodule.patch) +#### [@react-navigation+core+7.22.1+001+fix-failing-jest-by-disabling-esmodule.patch](@react-navigation+core+7.22.1+001+fix-failing-jest-by-disabling-esmodule.patch) +#### [@react-navigation+elements+2.9.43+001+fix-failing-jest-by-disabling-esmodule.patch](@react-navigation+elements+2.9.43+001+fix-failing-jest-by-disabling-esmodule.patch) +#### [@react-navigation+material-top-tabs+7.7.2+001+fix-failing-jest-by-disabling-esmodule.patch](@react-navigation+material-top-tabs+7.7.2+001+fix-failing-jest-by-disabling-esmodule.patch) +#### [@react-navigation+native-stack+7.19.2+002+fix-failing-jest-by-disabling-esmodule.patch](@react-navigation+native-stack+7.19.2+002+fix-failing-jest-by-disabling-esmodule.patch) +#### [@react-navigation+native+7.4.1+002+fix-failing-jest-by-disabling-esmodule.patch](@react-navigation+native+7.4.1+002+fix-failing-jest-by-disabling-esmodule.patch) #### [@react-navigation+routers+7.6.4+001+fix-failing-jest-by-disabling-esmodule.patch](@react-navigation+routers+7.6.4+001+fix-failing-jest-by-disabling-esmodule.patch) -#### [@react-navigation+stack+7.8.5+004+fix-failing-jest-by-disabling-esmodule.patch](@react-navigation+stack+7.8.5+004+fix-failing-jest-by-disabling-esmodule.patch) +#### [@react-navigation+stack+7.11.2+004+fix-failing-jest-by-disabling-esmodule.patch](@react-navigation+stack+7.11.2+004+fix-failing-jest-by-disabling-esmodule.patch) - Reason: Necessary to run Jest with the obligatory `--experimental-vm-modules` flag. Currently we transpile all the code to `commonjs`, but Jest looks up to individual `package.jsons` to see whether the package is `commonjs` or `ESModule`. That causes a conflict, which can be solved by removing `{"type":"module"}` from `lib/module/package.json`. This might be an issue with Jest, but it would require much more investigation. More: https://github.com/react-navigation/react-navigation/issues/12637 - Upstream PR/issue: https://github.com/react-navigation/react-navigation/issues/12637 @@ -16,67 +16,58 @@ - PR Introducing Patch: [#64155](https://github.com/Expensify/App/pull/64155) - PR Updating Patch: N/A -### [@react-navigation+core+7.21.12+002+platform-navigation-stack-types.patch](@react-navigation+core+7.21.12+002+platform-navigation-stack-types.patch) +### [@react-navigation+core+7.22.1+002+platform-navigation-stack-types.patch](@react-navigation+core+7.22.1+002+platform-navigation-stack-types.patch) - Reason: Enables passing custom `ScreenOptions` and adjusts typing to have everything fully type-checked and make sure only the proper (common) platform-specific options are passed - Upstream PR/issue: N/A - E/App issue: [#29948](https://github.com/Expensify/App/issues/29948) - PR Introducing Patch: [#37891](https://github.com/Expensify/App/pull/37891) -- PR Updating Patch: [#64155](https://github.com/Expensify/App/pull/64155), [#98097](https://github.com/Expensify/App/pull/98097) +- PR Updating Patch: [#64155](https://github.com/Expensify/App/pull/64155), [#98097](https://github.com/Expensify/App/pull/98097), [#101715](https://github.com/Expensify/App/issues/101715) +- Note: Re-ported onto 7.22.1. Every hunk applied without changes. +- Note: Core 7.22.0 made `useNavigationBuilder` return a `render` callback and deprecated the `NavigationContent` output it returned before. Our only builder call site, `createPlatformStackNavigatorComponent` (shared by `createRootStackNavigator`, `createRightModalNavigator`, `createSplitNavigator` and `createSearchFullscreenNavigator`), still uses `NavigationContent`, and the `convertCustomScreenOptions` argument this patch adds has no upstream equivalent, so switch to `render` and re-check both together when `NavigationContent` eventually disappears. -### [@react-navigation+native+7.3.16+001+initial.patch](@react-navigation+native+7.3.16+001+initial.patch) +### [@react-navigation+core+7.22.1+003+root-state-not-undefined.patch](@react-navigation+core+7.22.1+003+root-state-not-undefined.patch) + +- Reason: Keep `NavigationContainerRef.getRootState()` typed as `NavigationState` instead of `NavigationState | undefined`. Types only, no runtime change: the implementation already returned `undefined` before the container ref mounted in 7.21.12, the type just did not admit it. Around 120 call sites in `src/` alone (plus examples such as `navigationRef.current?.getRootState().routes` in the navigation tests) hand the result straight to helpers that require a state object, and they all run behind the app's readiness gate (`NavigationRoot`'s `onReady`, `navigationRef.isReady()`), so guarding each one is a separate refactor rather than part of an upgrade. +- Upstream PR/issue: https://github.com/react-navigation/react-navigation/commit/4e6eaaac6fad57d09ab5a828484b8ffeb4cfc6e5 (core 7.21.13, "fix return type of getRootState") +- E/App issue: [#101715](https://github.com/Expensify/App/issues/101715) +- PR Introducing Patch: N/A +- Note: Drop this patch once call sites handle the missing state explicitly (a guarded `getRootState()` helper in `src/libs/Navigation` would cover most of them). Until then, calling `getRootState()` before the container mounts logs react-navigation's `NOT_INITIALIZED_ERROR` and returns `undefined` at runtime while the type claims otherwise, same as before the upgrade. + +### [@react-navigation+native+7.4.1+001+initial.patch](@react-navigation+native+7.4.1+001+initial.patch) - Reason: Allows us to use some more advanced navigation actions without messing up the browser history - Upstream PR/issue: https://github.com/react-navigation/react-navigation/pull/12751 (`route.history` + `pushParams`, added upstream for this use case); originating issue https://github.com/react-navigation/react-navigation/issues/12460. On the v8 upgrade, evaluate adopting `pushParams` to shrink this patch. - E/App issue: [#21356](https://github.com/Expensify/App/issues/21356) - PR Introducing Patch: [#24165](https://github.com/Expensify/App/pull/24165) -- PR Updating Patch: [#32087](https://github.com/Expensify/App/pull/32087) [#42465](https://github.com/Expensify/App/pull/42465) [#64155](https://github.com/Expensify/App/pull/64155) [#103346](https://github.com/Expensify/App/pull/103346) +- PR Updating Patch: [#32087](https://github.com/Expensify/App/pull/32087) [#42465](https://github.com/Expensify/App/pull/42465) [#64155](https://github.com/Expensify/App/pull/64155) [#103346](https://github.com/Expensify/App/pull/103346) [#101715](https://github.com/Expensify/App/issues/101715) +- Note: Re-ported onto 7.4.1. `createMemoryHistory` and `useLinking` were refactored upstream (`getPathWithoutHash`, `getHistoryLength`, `pendingPopStateDelta`, `isPoppingLastEntry`), so the hunks were re-anchored instead of applied verbatim: `backIndex` keeps upstream's hash handling and adds the focused-route-key match, and `useLinking` keeps upstream's `pendingPopStateDelta` guard and `getHistoryLength` delta while re-adding `historyDeltaByKeys`/`getStaleHistoryDiff`. Two parts of the old patch became redundant and were dropped: the `findFocusedRouteKey` helper file now matches upstream's own module, and the extra `history.replace` right after `history.go(nextIndex - currentIndex)` duplicated the replace that upstream already runs at the end of the same `try` block. -### [@react-navigation+stack+7.8.5+001+edge-drag-gesture.patch](@react-navigation+stack+7.8.5+001+edge-drag-gesture.patch) +### [@react-navigation+stack+7.11.2+001+edge-drag-gesture.patch](@react-navigation+stack+7.11.2+001+edge-drag-gesture.patch) - Reason: Adds `edgeDragGestureMonitor` implementation - Upstream PR/issue: N/A - E/App issue: [#15849](https://github.com/Expensify/App/issues/15849) - PR Introducing Patch: [#18402](https://github.com/Expensify/App/pull/18402) -- PR Updating Patch: [#22678](https://github.com/Expensify/App/pull/22678) [#22437](https://github.com/Expensify/App/pull/22437) [#64155](https://github.com/Expensify/App/pull/64155) +- PR Updating Patch: [#22678](https://github.com/Expensify/App/pull/22678) [#22437](https://github.com/Expensify/App/pull/22437) [#64155](https://github.com/Expensify/App/pull/64155) [#101715](https://github.com/Expensify/App/issues/101715) +- Note: Re-ported onto 7.11.2. The added and removed lines are unchanged. Only the surrounding context moved, because 7.10.x wrapped the gesture animation in `animationIdRef`/`isAnimatingRef` guards. 7.11.2 did not touch `Card.js` or `CardStack.js`, so the patch body is identical to the 7.11.1 one. `resetExpectingTouchendWithDelay()` still runs after those guards, so a stale animation callback that returns early no longer resets the monitor. -### [@react-navigation+stack+7.8.5+002+dontDetachScreen.patch](@react-navigation+stack+7.8.5+002+dontDetachScreen.patch) +### [@react-navigation+stack+7.11.2+002+dontDetachScreen.patch](@react-navigation+stack+7.11.2+002+dontDetachScreen.patch) - Reason: Prevents the second screen in the stack from being detached too early. Additionally, setting `zIndex: Platform.OS === 'web' ? 'auto' : undefined` helps avoid issues in Safari where the home screen might be hidden due to `overflow: hidden`. - Upstream PR/issue: N/A - E/App issue: [#22372](https://github.com/Expensify/App/issues/22372) - PR Introducing Patch: [#22437](https://github.com/Expensify/App/pull/22437) -- PR Updating Patch: [#33280](https://github.com/Expensify/App/pull/33280) [#37421](https://github.com/Expensify/App/pull/37421) [#49539](https://github.com/Expensify/App/pull/49539) [#64155](https://github.com/Expensify/App/pull/64155) [#65119](https://github.com/Expensify/App/issues/65119) +- PR Updating Patch: [#33280](https://github.com/Expensify/App/pull/33280) [#37421](https://github.com/Expensify/App/pull/37421) [#49539](https://github.com/Expensify/App/pull/49539) [#64155](https://github.com/Expensify/App/pull/64155) [#65119](https://github.com/Expensify/App/issues/65119) [#101715](https://github.com/Expensify/App/issues/101715) - Note: Not fully covered by the public `detachPreviousScreen` option (this also forces `activityState`). v8 replaces `detachInactiveScreens`/`detachPreviousScreen`/`freezeOnBlur` with a single `inactiveBehavior` option — re-evaluate this patch then. +- Note: Re-ported onto 7.11.2. `STATE_TRANSITIONING_OR_BELOW_TOP` is now a module-level constant upstream, so the patch no longer declares it. 7.11.2 (https://github.com/react-navigation/react-navigation/pull/13255) removed the `overflow: active ? undefined : 'hidden'` line from `CardA11yWrapper`, so the `zIndex` hunk was re-anchored on the line above it. The added lines are unchanged. With that `overflow: hidden` gone from `CardA11yWrapper`, the Safari case the `zIndex` part was added for may no longer happen. That has not been verified, so the `zIndex` part stays. -### [@react-navigation+native+7.3.16+003+increase-history-go-popstate-fallback-timeout.patch](@react-navigation+native+7.3.16+003+increase-history-go-popstate-fallback-timeout.patch) - -- Reason: - - ``` - createMemoryHistory.go() waits for the browser's popstate after history.go(n) but gives up - after a 100ms fallback timer and deletes its pending record of the traversal. Firefox can - take 500ms+ to deliver the popstate when the main thread is busy (e.g. rendering the newly - created group chat report). Once the record is deleted, the late popstate is misclassified - by listen() as a user-initiated back/forward navigation and react-navigation resets state - to the previous route. Raising the timeout to 1000ms keeps the pending record alive until - the traversal actually settles. Fixes group/DM creation not opening the new report on - Firefox (#94571). - ``` - -- Upstream PR/issue: https://github.com/react-navigation/react-navigation/issues/11145 -- E/App issue: [#94571](https://github.com/Expensify/App/issues/94571) -- PR Introducing Patch: [#95980](https://github.com/Expensify/App/pull/95980) -- PR Updating Patch: [#103346](https://github.com/Expensify/App/pull/103346) -- Note: Upstream raised the timeout to 1000ms in `@react-navigation/native` 7.5.0, so this patch can be dropped on the bump to 7.5.0 or newer. - -### [@react-navigation+stack+7.8.5+005+clip-inactive-card-inside-card.patch](@react-navigation+stack+7.8.5+005+clip-inactive-card-inside-card.patch) - -- Reason: On the web floating RHP each stacked card draws its own drop shadow through the interpolator's `cardStyle` (`getRHPExtendedCardFrame`). `CardA11yWrapper` puts `overflow: hidden` on every card that is not on top, and the wrapper is sized to the navigator frame, so it clips the shadow of the card under the focused one. Opening an expense over an expense report cut the report card's left and bottom shadow. The patch moves that clip from `CardA11yWrapper` to the `Animated.View` in `Card` that receives `cardStyle`. That view paints the shadow, and `overflow: hidden` does not clip an element's own shadow, so the shadow stays and the content is still clipped. `CardContainer` passes `active` down to `Card`. -- Upstream PR/issue: https://github.com/react-navigation/react-navigation/issues/13254, fix in https://github.com/react-navigation/react-navigation/pull/13255. Upstream declined an opt-out option and asked for this instead. The patch is that change applied to the compiled 7.8.5 output. -- E/App issue: N/A, the patch came out of the internal web floating-RHP styling work. Removing it is tracked in [#101715](https://github.com/Expensify/App/issues/101715), the react-navigation upgrade. -- PR Introducing Patch: [#101093](https://github.com/callstack-internal/Expensify-App/pull/101093) -- PR Updating Patch: N/A -- Note: Not gated to the RHP. Every stack now clips inactive cards one level lower, so the built-in `styles.shadow` edge view inside `Card` is clipped on inactive cards too. The active card covers that edge. -- Note: Upstream shipped the fix in `@react-navigation/stack` 7.11.2, first release containing https://github.com/react-navigation/react-navigation/pull/13255. Their shape differs from ours: `CardA11yWrapper` drops `overflow` completely, and `CardContainer` passes `pageOverflowEnabled: active && headerMode !== 'float' && presentation !== 'modal'`, so the clip lands in `CardContent`, whose `styles.card` still carries `overflow: 'hidden'`. Inactive cards stay clipped and the stacked RHP shadow survives, but the clip sits one level below ours, which leaves the built-in `styles.shadow` edge view unclipped on inactive cards. -- Note: Drop this patch by moving to `stack` 7.11.2 or newer, see #101715 above. It cannot be bumped on its own: `createStackNavigator` there reads `render` from `useNavigationBuilder`, which starts in `core` 7.22.1, and `elements` 2.9.43 plus every sibling declare `native ^7.4.1` as a peer, so npm rejects 7.11.2 next to our `native` 7.3.16. `stack+001+edge-drag-gesture` and `stack+002+dontDetachScreen` need hand-porting to 7.11.2 because it rewrote the gesture and animation lifecycle in `Card.js` and switched the gesture wrapper to `pointerEvents: "auto"`. +### Removed patches + +- `@react-navigation+native+7.1.33+003+increase-history-go-popstate-fallback-timeout.patch` was dropped: upstream raised the `createMemoryHistory.go()` fallback timeout from 100ms to 1000ms in 7.3.18 (https://github.com/react-navigation/react-navigation/pull/13217), with the same Firefox rationale as our patch. Original context: [#94571](https://github.com/Expensify/App/issues/94571) / [#95980](https://github.com/Expensify/App/pull/95980), upstream issue https://github.com/react-navigation/react-navigation/issues/11145. + + One behaviour difference is worth a Firefox regression check on #94571: when the timeout does fire, upstream removes its own `popstate` listener and rejects the `go()` promise if the browser hasn't landed on the expected entry (`window.history.state?.id !== targetId`), whereas it used to resolve. That check came from 7.3.8 (https://github.com/react-navigation/react-navigation/commit/788d7c565554d85fc7d3c3b9d1a7829e1847b8da), not from the timeout change. Rejecting skips the trailing `history.replace`, which upstream documents as deliberate: the entry we are on may not be the one we intended to land on. Both variants still deliver a late `popstate` to external listeners, so this only changes what happens to the history record in the >1s case. + + `tests/unit/Navigation/createMemoryHistoryTest.ts` covered the old contract and now asserts the new one: a timed-out traversal rejects, and the in-time case points `window.history.state` at the target entry first, the way a real traversal does. + +- `@react-navigation+stack+7.8.5+005+clip-inactive-card-inside-card.patch` was dropped: upstream shipped the same fix in `@react-navigation/stack` 7.11.2 (https://github.com/react-navigation/react-navigation/pull/13255, reported in https://github.com/react-navigation/react-navigation/issues/13254). The patch came from [#101093](https://github.com/callstack-internal/Expensify-App/pull/101093) to keep the shadow of the card under the focused one on the web floating RHP. Upstream drops `overflow` from `CardA11yWrapper` and clips inactive cards in `CardContent` through `pageOverflowEnabled: active && headerMode !== 'float' && presentation !== 'modal'`, so the stacked RHP shadow survives the same way. The clip sits one level below where our patch put it, so the built-in `styles.shadow` edge view inside `Card` is no longer clipped on inactive cards. The active card covers that edge. diff --git a/tests/unit/Navigation/createMemoryHistoryTest.ts b/tests/unit/Navigation/createMemoryHistoryTest.ts index 632e099fa5b4..483bd2febcd5 100644 --- a/tests/unit/Navigation/createMemoryHistoryTest.ts +++ b/tests/unit/Navigation/createMemoryHistoryTest.ts @@ -1,11 +1,12 @@ import type {NavigationState} from '@react-navigation/native'; type MemoryHistory = { - get: (index: number) => {id: string} | undefined; replace: (options: {path: string; state: NavigationState}) => void; push: (options: {path: string; state: NavigationState}) => void; go: (distance: number) => Promise | undefined; listen: (listener: () => void) => () => void; + // Exposed by our `initial` patch on @react-navigation/native + items: Array<{path: string; state: NavigationState; id: string}>; }; const { @@ -50,12 +51,12 @@ describe('createMemoryHistory', () => { // When the traversal back lands just before the fallback timeout, as Firefox does under load const navigation = history.go(-1); + // `window.history.go` is mocked, so set the browser state the way a real traversal would. Otherwise the library treats the traversal as failed + window.history.replaceState({id: history.items.at(0)?.id}, '', '/r/1'); jest.advanceTimersByTime(900); - window.history.replaceState({id: history.get(0)?.id}, '', '/r/1'); window.dispatchEvent(new PopStateEvent('popstate')); // Then the traversal resolves and its popstate is not treated as a user navigation - await expect(navigation).resolves.toBeUndefined(); expect(listener).not.toHaveBeenCalled(); @@ -67,20 +68,24 @@ describe('createMemoryHistory', () => { const history = createHistoryWithTwoEntries(); const listener = jest.fn(); const stopListening = history.listen(listener); - const settled = jest.fn(); + const resolved = jest.fn(); + const rejected = jest.fn(); // When the traversal never lands in the browser const navigation = history.go(-1); - navigation?.then(settled, settled); + navigation?.then(resolved, rejected); // Then it stays pending until the fallback timeout, and is rejected once the timeout passes without landing jest.advanceTimersByTime(999); await Promise.resolve(); - expect(settled).not.toHaveBeenCalled(); + expect(resolved).not.toHaveBeenCalled(); + expect(rejected).not.toHaveBeenCalled(); + // The traversal never happened, so the library rejects instead of letting callers write history for an entry the browser never landed on jest.advanceTimersByTime(1); await expect(navigation).rejects.toThrow('History was changed during navigation.'); - expect(settled).toHaveBeenCalledTimes(1); + expect(resolved).not.toHaveBeenCalled(); + expect(rejected).toHaveBeenCalledTimes(1); // Then a later popstate is delivered to external listeners window.dispatchEvent(new PopStateEvent('popstate'));