expo-router 56.0.4 → 56.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) hide show
  1. package/android/build.gradle +2 -2
  2. package/build/exports.d.ts +1 -0
  3. package/build/exports.d.ts.map +1 -1
  4. package/build/exports.js +3 -1
  5. package/build/exports.js.map +1 -1
  6. package/build/native-tabs/NativeTabsView.android.js +1 -1
  7. package/build/native-tabs/NativeTabsView.android.js.map +1 -1
  8. package/build/native-tabs/NativeTabsView.ios.js +1 -1
  9. package/build/native-tabs/NativeTabsView.ios.js.map +1 -1
  10. package/build/native-tabs/NativeTabsView.shared.d.ts.map +1 -1
  11. package/build/native-tabs/NativeTabsView.shared.js +4 -1
  12. package/build/native-tabs/NativeTabsView.shared.js.map +1 -1
  13. package/build/native-tabs/types.d.ts +5 -5
  14. package/build/native-tabs/types.d.ts.map +1 -1
  15. package/build/native-tabs/types.js.map +1 -1
  16. package/build/react-navigation/core/index.d.ts +1 -2
  17. package/build/react-navigation/core/index.d.ts.map +1 -1
  18. package/build/react-navigation/core/index.js +1 -2
  19. package/build/react-navigation/core/index.js.map +1 -1
  20. package/expo-module.config.json +1 -1
  21. package/local-maven-repo/expo/modules/router/expo.modules.router/{56.0.4/expo.modules.router-56.0.4.module → 56.1.1/expo.modules.router-56.1.1.module} +7 -7
  22. package/local-maven-repo/expo/modules/router/expo.modules.router/56.1.1/expo.modules.router-56.1.1.module.md5 +1 -0
  23. package/local-maven-repo/expo/modules/router/expo.modules.router/56.1.1/expo.modules.router-56.1.1.module.sha1 +1 -0
  24. package/local-maven-repo/expo/modules/router/expo.modules.router/56.1.1/expo.modules.router-56.1.1.module.sha256 +1 -0
  25. package/local-maven-repo/expo/modules/router/expo.modules.router/56.1.1/expo.modules.router-56.1.1.module.sha512 +1 -0
  26. package/local-maven-repo/expo/modules/router/expo.modules.router/{56.0.4/expo.modules.router-56.0.4.pom → 56.1.1/expo.modules.router-56.1.1.pom} +1 -1
  27. package/local-maven-repo/expo/modules/router/expo.modules.router/56.1.1/expo.modules.router-56.1.1.pom.md5 +1 -0
  28. package/local-maven-repo/expo/modules/router/expo.modules.router/56.1.1/expo.modules.router-56.1.1.pom.sha1 +1 -0
  29. package/local-maven-repo/expo/modules/router/expo.modules.router/56.1.1/expo.modules.router-56.1.1.pom.sha256 +1 -0
  30. package/local-maven-repo/expo/modules/router/expo.modules.router/56.1.1/expo.modules.router-56.1.1.pom.sha512 +1 -0
  31. package/local-maven-repo/expo/modules/router/expo.modules.router/maven-metadata.xml +4 -4
  32. package/local-maven-repo/expo/modules/router/expo.modules.router/maven-metadata.xml.md5 +1 -1
  33. package/local-maven-repo/expo/modules/router/expo.modules.router/maven-metadata.xml.sha1 +1 -1
  34. package/local-maven-repo/expo/modules/router/expo.modules.router/maven-metadata.xml.sha256 +1 -1
  35. package/local-maven-repo/expo/modules/router/expo.modules.router/maven-metadata.xml.sha512 +1 -1
  36. package/package.json +15 -14
  37. package/local-maven-repo/expo/modules/router/expo.modules.router/56.0.4/expo.modules.router-56.0.4.module.md5 +0 -1
  38. package/local-maven-repo/expo/modules/router/expo.modules.router/56.0.4/expo.modules.router-56.0.4.module.sha1 +0 -1
  39. package/local-maven-repo/expo/modules/router/expo.modules.router/56.0.4/expo.modules.router-56.0.4.module.sha256 +0 -1
  40. package/local-maven-repo/expo/modules/router/expo.modules.router/56.0.4/expo.modules.router-56.0.4.module.sha512 +0 -1
  41. package/local-maven-repo/expo/modules/router/expo.modules.router/56.0.4/expo.modules.router-56.0.4.pom.md5 +0 -1
  42. package/local-maven-repo/expo/modules/router/expo.modules.router/56.0.4/expo.modules.router-56.0.4.pom.sha1 +0 -1
  43. package/local-maven-repo/expo/modules/router/expo.modules.router/56.0.4/expo.modules.router-56.0.4.pom.sha256 +0 -1
  44. package/local-maven-repo/expo/modules/router/expo.modules.router/56.0.4/expo.modules.router-56.0.4.pom.sha512 +0 -1
  45. /package/local-maven-repo/expo/modules/router/expo.modules.router/{56.0.4/expo.modules.router-56.0.4-sources.jar → 56.1.1/expo.modules.router-56.1.1-sources.jar} +0 -0
  46. /package/local-maven-repo/expo/modules/router/expo.modules.router/{56.0.4/expo.modules.router-56.0.4-sources.jar.md5 → 56.1.1/expo.modules.router-56.1.1-sources.jar.md5} +0 -0
  47. /package/local-maven-repo/expo/modules/router/expo.modules.router/{56.0.4/expo.modules.router-56.0.4-sources.jar.sha1 → 56.1.1/expo.modules.router-56.1.1-sources.jar.sha1} +0 -0
  48. /package/local-maven-repo/expo/modules/router/expo.modules.router/{56.0.4/expo.modules.router-56.0.4-sources.jar.sha256 → 56.1.1/expo.modules.router-56.1.1-sources.jar.sha256} +0 -0
  49. /package/local-maven-repo/expo/modules/router/expo.modules.router/{56.0.4/expo.modules.router-56.0.4-sources.jar.sha512 → 56.1.1/expo.modules.router-56.1.1-sources.jar.sha512} +0 -0
  50. /package/local-maven-repo/expo/modules/router/expo.modules.router/{56.0.4/expo.modules.router-56.0.4.aar → 56.1.1/expo.modules.router-56.1.1.aar} +0 -0
  51. /package/local-maven-repo/expo/modules/router/expo.modules.router/{56.0.4/expo.modules.router-56.0.4.aar.md5 → 56.1.1/expo.modules.router-56.1.1.aar.md5} +0 -0
  52. /package/local-maven-repo/expo/modules/router/expo.modules.router/{56.0.4/expo.modules.router-56.0.4.aar.sha1 → 56.1.1/expo.modules.router-56.1.1.aar.sha1} +0 -0
  53. /package/local-maven-repo/expo/modules/router/expo.modules.router/{56.0.4/expo.modules.router-56.0.4.aar.sha256 → 56.1.1/expo.modules.router-56.1.1.aar.sha256} +0 -0
  54. /package/local-maven-repo/expo/modules/router/expo.modules.router/{56.0.4/expo.modules.router-56.0.4.aar.sha512 → 56.1.1/expo.modules.router-56.1.1.aar.sha512} +0 -0
@@ -4,13 +4,13 @@ plugins {
4
4
  }
5
5
 
6
6
  group = 'expo.modules.router'
7
- version = '56.0.4'
7
+ version = '56.1.1'
8
8
 
9
9
  android {
10
10
  namespace "expo.modules.router"
11
11
  defaultConfig {
12
12
  versionCode 1
13
- versionName "56.0.4"
13
+ versionName "56.1.1"
14
14
  }
15
15
  lintOptions {
16
16
  abortOnError false
@@ -25,6 +25,7 @@ export { ThemeProvider } from './react-navigation/core/theming/ThemeProvider';
25
25
  export { useTheme } from './react-navigation/core/theming/useTheme';
26
26
  export { useRoutePath } from './react-navigation/native/useRoutePath';
27
27
  export { useScrollToTop } from './react-navigation/native/useScrollToTop';
28
+ export { useRoute } from './react-navigation/core/useRoute';
28
29
  export type { RedirectConfig } from './getRoutesCore';
29
30
  export type { SingularOptions } from './useScreens';
30
31
  export type * from './types';
@@ -1 +1 @@
1
- {"version":3,"file":"exports.d.ts","sourceRoot":"","sources":["../src/exports.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAEpD,OAAO,EACL,SAAS,EACT,qBAAqB,EACrB,WAAW,EACX,yBAAyB,EACzB,qBAAqB,EACrB,oBAAoB,EACpB,WAAW,EACX,iBAAiB,EACjB,sBAAsB,EACtB,aAAa,GACd,MAAM,SAAS,CAAC;AAEjB,OAAO,EAAE,MAAM,EAAE,KAAK,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;AAG3B,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,KAAK,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAClE,YAAY,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,KAAK,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACxF,YAAY,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAGhD;;GAEG;AACH,OAAO,KAAK,YAAY,MAAM,gBAAgB,CAAC;AAG/C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,KAAK,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACvE,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,YAAY,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAE3D,OAAO,EAAE,SAAS,EAAE,MAAM,6CAA6C,CAAC;AACxE,OAAO,EAAE,YAAY,EAAE,MAAM,gDAAgD,CAAC;AAC9E,OAAO,EAAE,aAAa,EAAE,MAAM,+CAA+C,CAAC;AAC9E,OAAO,EAAE,QAAQ,EAAE,MAAM,0CAA0C,CAAC;AACpE,OAAO,EAAE,YAAY,EAAE,MAAM,wCAAwC,CAAC;AACtE,OAAO,EAAE,cAAc,EAAE,MAAM,0CAA0C,CAAC;AAE1E,YAAY,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACtD,YAAY,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAEpD,mBAAmB,SAAS,CAAC;AAE7B,OAAO,EACL,KAAK,EACL,KAAK,UAAU,EACf,IAAI,EACJ,KAAK,SAAS,EACd,KAAK,EACL,KAAK,UAAU,EACf,UAAU,EACV,KAAK,eAAe,GACrB,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AAE/D;;GAEG;AACH,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAEtC,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,YAAY,EACV,kCAAkC,EAClC,mCAAmC,EACnC,+BAA+B,EAC/B,4BAA4B,GAC7B,MAAM,8BAA8B,CAAC"}
1
+ {"version":3,"file":"exports.d.ts","sourceRoot":"","sources":["../src/exports.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAEpD,OAAO,EACL,SAAS,EACT,qBAAqB,EACrB,WAAW,EACX,yBAAyB,EACzB,qBAAqB,EACrB,oBAAoB,EACpB,WAAW,EACX,iBAAiB,EACjB,sBAAsB,EACtB,aAAa,GACd,MAAM,SAAS,CAAC;AAEjB,OAAO,EAAE,MAAM,EAAE,KAAK,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;AAG3B,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,KAAK,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAClE,YAAY,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,KAAK,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACxF,YAAY,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAGhD;;GAEG;AACH,OAAO,KAAK,YAAY,MAAM,gBAAgB,CAAC;AAG/C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,KAAK,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACvE,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,YAAY,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAE3D,OAAO,EAAE,SAAS,EAAE,MAAM,6CAA6C,CAAC;AACxE,OAAO,EAAE,YAAY,EAAE,MAAM,gDAAgD,CAAC;AAC9E,OAAO,EAAE,aAAa,EAAE,MAAM,+CAA+C,CAAC;AAC9E,OAAO,EAAE,QAAQ,EAAE,MAAM,0CAA0C,CAAC;AACpE,OAAO,EAAE,YAAY,EAAE,MAAM,wCAAwC,CAAC;AACtE,OAAO,EAAE,cAAc,EAAE,MAAM,0CAA0C,CAAC;AAC1E,OAAO,EAAE,QAAQ,EAAE,MAAM,kCAAkC,CAAC;AAE5D,YAAY,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACtD,YAAY,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAEpD,mBAAmB,SAAS,CAAC;AAE7B,OAAO,EACL,KAAK,EACL,KAAK,UAAU,EACf,IAAI,EACJ,KAAK,SAAS,EACd,KAAK,EACL,KAAK,UAAU,EACf,UAAU,EACV,KAAK,eAAe,GACrB,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AAE/D;;GAEG;AACH,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAEtC,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,YAAY,EACV,kCAAkC,EAClC,mCAAmC,EACnC,+BAA+B,EAC/B,4BAA4B,GAC7B,MAAM,8BAA8B,CAAC"}
package/build/exports.js CHANGED
@@ -33,7 +33,7 @@ var __importStar = (this && this.__importStar) || (function () {
33
33
  };
34
34
  })();
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.ExperimentalStack = exports.Tabs = exports.unstable_navigationEvents = exports.VectorIcon = exports.Label = exports.Icon = exports.Badge = exports.useScrollToTop = exports.useRoutePath = exports.useTheme = exports.ThemeProvider = exports.DefaultTheme = exports.DarkTheme = exports.useIsFocused = exports.useFocusEffect = exports.useNavigation = exports.SplashScreen = exports.SuspenseFallback = exports.ErrorBoundary = exports.useSitemap = exports.Sitemap = exports.Unmatched = exports.ExpoRoot = exports.Slot = exports.Navigator = exports.withLayoutContext = exports.router = exports.useLoaderData = exports.useRootNavigationState = exports.useRootNavigation = exports.useSegments = exports.useLocalSearchParams = exports.useGlobalSearchParams = exports.useNavigationContainerRef = exports.usePathname = exports.useUnstableGlobalHref = exports.useRouter = void 0;
36
+ exports.ExperimentalStack = exports.Tabs = exports.unstable_navigationEvents = exports.VectorIcon = exports.Label = exports.Icon = exports.Badge = exports.useRoute = exports.useScrollToTop = exports.useRoutePath = exports.useTheme = exports.ThemeProvider = exports.DefaultTheme = exports.DarkTheme = exports.useIsFocused = exports.useFocusEffect = exports.useNavigation = exports.SplashScreen = exports.SuspenseFallback = exports.ErrorBoundary = exports.useSitemap = exports.Sitemap = exports.Unmatched = exports.ExpoRoot = exports.Slot = exports.Navigator = exports.withLayoutContext = exports.router = exports.useLoaderData = exports.useRootNavigationState = exports.useRootNavigation = exports.useSegments = exports.useLocalSearchParams = exports.useGlobalSearchParams = exports.useNavigationContainerRef = exports.usePathname = exports.useUnstableGlobalHref = exports.useRouter = void 0;
37
37
  // Expo Router API
38
38
  const Navigator_1 = require("./views/Navigator");
39
39
  Object.defineProperty(exports, "Navigator", { enumerable: true, get: function () { return Navigator_1.Navigator; } });
@@ -90,6 +90,8 @@ var useRoutePath_1 = require("./react-navigation/native/useRoutePath");
90
90
  Object.defineProperty(exports, "useRoutePath", { enumerable: true, get: function () { return useRoutePath_1.useRoutePath; } });
91
91
  var useScrollToTop_1 = require("./react-navigation/native/useScrollToTop");
92
92
  Object.defineProperty(exports, "useScrollToTop", { enumerable: true, get: function () { return useScrollToTop_1.useScrollToTop; } });
93
+ var useRoute_1 = require("./react-navigation/core/useRoute");
94
+ Object.defineProperty(exports, "useRoute", { enumerable: true, get: function () { return useRoute_1.useRoute; } });
93
95
  var primitives_1 = require("./primitives");
94
96
  Object.defineProperty(exports, "Badge", { enumerable: true, get: function () { return primitives_1.Badge; } });
95
97
  Object.defineProperty(exports, "Icon", { enumerable: true, get: function () { return primitives_1.Icon; } });
@@ -1 +1 @@
1
- {"version":3,"file":"exports.js","sourceRoot":"","sources":["../src/exports.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,kBAAkB;AAClB,iDAAoD;AAkB3C,0FAlBA,qBAAS,OAkBA;AAAE,qFAlBA,gBAAI,OAkBA;AAhBxB,iCAWiB;AAVf,kGAAA,SAAS,OAAA;AACT,8GAAA,qBAAqB,OAAA;AACrB,oGAAA,WAAW,OAAA;AACX,kHAAA,yBAAyB,OAAA;AACzB,8GAAA,qBAAqB,OAAA;AACrB,6GAAA,oBAAoB,OAAA;AACpB,oGAAA,WAAW,OAAA;AACX,0GAAA,iBAAiB,OAAA;AACjB,+GAAA,sBAAsB,OAAA;AACtB,sGAAA,aAAa,OAAA;AAGf,mDAAiE;AAAxD,wGAAA,MAAM,OAAA;AAEf,iEAAgE;AAAvD,sHAAA,iBAAiB,OAAA;AAG1B,oBAAoB;AACpB,uCAAsC;AAA7B,oGAAA,QAAQ,OAAA;AACjB,+CAA8C;AAArC,sGAAA,SAAS,OAAA;AAClB,2CAA0C;AAAjC,kGAAA,OAAO,OAAA;AAChB,iDAAkE;AAAzD,wGAAA,UAAU,OAAA;AAEnB,uDAAsD;AAA7C,8GAAA,aAAa,OAAA;AACtB,6DAAwF;AAA/E,oHAAA,gBAAgB,OAAA;AAGzB,WAAW;AACX;;GAEG;AACH,+DAA+C;AAE/C,mBAAmB;AACnB,iDAAgD;AAAvC,8GAAA,aAAa,OAAA;AACtB,mDAAuE;AAA9D,gHAAA,cAAc,OAAA;AACvB,+CAA8C;AAArC,4GAAA,YAAY,OAAA;AAGrB,yEAAwE;AAA/D,sGAAA,SAAS,OAAA;AAClB,+EAA8E;AAArE,4GAAA,YAAY,OAAA;AACrB,+EAA8E;AAArE,8GAAA,aAAa,OAAA;AACtB,qEAAoE;AAA3D,oGAAA,QAAQ,OAAA;AACjB,uEAAsE;AAA7D,4GAAA,YAAY,OAAA;AACrB,2EAA0E;AAAjE,gHAAA,cAAc,OAAA;AAOvB,2CASsB;AARpB,mGAAA,KAAK,OAAA;AAEL,kGAAA,IAAI,OAAA;AAEJ,mGAAA,KAAK,OAAA;AAEL,wGAAA,UAAU,OAAA;AAIZ,uDAA+D;AAAtD,6HAAA,yBAAyB,OAAA;AAElC;;GAEG;AACH,uCAAsC;AAA7B,4FAAA,IAAI,OAAA;AAEb,mEAAiE;AAAxD,uHAAA,iBAAiB,OAAA","sourcesContent":["// Expo Router API\nimport { Navigator, Slot } from './views/Navigator';\n\nexport {\n useRouter,\n useUnstableGlobalHref,\n usePathname,\n useNavigationContainerRef,\n useGlobalSearchParams,\n useLocalSearchParams,\n useSegments,\n useRootNavigation,\n useRootNavigationState,\n useLoaderData,\n} from './hooks';\n\nexport { router, type ImperativeRouter } from './imperative-api';\n\nexport { withLayoutContext } from './layouts/withLayoutContext';\nexport { Navigator, Slot };\n\n// Expo Router Views\nexport { ExpoRoot } from './ExpoRoot';\nexport { Unmatched } from './views/Unmatched';\nexport { Sitemap } from './views/Sitemap';\nexport { useSitemap, type SitemapType } from './views/useSitemap';\nexport type { ErrorBoundaryProps } from './views/Try';\nexport { ErrorBoundary } from './views/ErrorBoundary';\nexport { SuspenseFallback, type SuspenseFallbackProps } from './views/SuspenseFallback';\nexport type { ScreenProps } from './useScreens';\n\n// Platform\n/**\n * @hidden\n */\nexport * as SplashScreen from './views/Splash';\n\n// React Navigation\nexport { useNavigation } from './useNavigation';\nexport { useFocusEffect, type EffectCallback } from './useFocusEffect';\nexport { useIsFocused } from './useIsFocused';\nexport type { ResultState } from './fork/getStateFromPath';\n\nexport { DarkTheme } from './react-navigation/native/theming/DarkTheme';\nexport { DefaultTheme } from './react-navigation/native/theming/DefaultTheme';\nexport { ThemeProvider } from './react-navigation/core/theming/ThemeProvider';\nexport { useTheme } from './react-navigation/core/theming/useTheme';\nexport { useRoutePath } from './react-navigation/native/useRoutePath';\nexport { useScrollToTop } from './react-navigation/native/useScrollToTop';\n\nexport type { RedirectConfig } from './getRoutesCore';\nexport type { SingularOptions } from './useScreens';\n\nexport type * from './types';\n\nexport {\n Badge,\n type BadgeProps,\n Icon,\n type IconProps,\n Label,\n type LabelProps,\n VectorIcon,\n type VectorIconProps,\n} from './primitives';\n\nexport { unstable_navigationEvents } from './navigationEvents';\n\n/**\n * @deprecated Use `import { Tabs } from 'expo-router/js-tabs'` instead.\n */\nexport { Tabs } from './layouts/Tabs';\n\nexport { ExperimentalStack } from './layouts/experimental-stack';\nexport type {\n ExperimentalStackNavigationOptions,\n ExperimentalStackNavigationEventMap,\n ExperimentalStackNavigationProp,\n ExperimentalStackScreenProps,\n} from './layouts/experimental-stack';\n"]}
1
+ {"version":3,"file":"exports.js","sourceRoot":"","sources":["../src/exports.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,kBAAkB;AAClB,iDAAoD;AAkB3C,0FAlBA,qBAAS,OAkBA;AAAE,qFAlBA,gBAAI,OAkBA;AAhBxB,iCAWiB;AAVf,kGAAA,SAAS,OAAA;AACT,8GAAA,qBAAqB,OAAA;AACrB,oGAAA,WAAW,OAAA;AACX,kHAAA,yBAAyB,OAAA;AACzB,8GAAA,qBAAqB,OAAA;AACrB,6GAAA,oBAAoB,OAAA;AACpB,oGAAA,WAAW,OAAA;AACX,0GAAA,iBAAiB,OAAA;AACjB,+GAAA,sBAAsB,OAAA;AACtB,sGAAA,aAAa,OAAA;AAGf,mDAAiE;AAAxD,wGAAA,MAAM,OAAA;AAEf,iEAAgE;AAAvD,sHAAA,iBAAiB,OAAA;AAG1B,oBAAoB;AACpB,uCAAsC;AAA7B,oGAAA,QAAQ,OAAA;AACjB,+CAA8C;AAArC,sGAAA,SAAS,OAAA;AAClB,2CAA0C;AAAjC,kGAAA,OAAO,OAAA;AAChB,iDAAkE;AAAzD,wGAAA,UAAU,OAAA;AAEnB,uDAAsD;AAA7C,8GAAA,aAAa,OAAA;AACtB,6DAAwF;AAA/E,oHAAA,gBAAgB,OAAA;AAGzB,WAAW;AACX;;GAEG;AACH,+DAA+C;AAE/C,mBAAmB;AACnB,iDAAgD;AAAvC,8GAAA,aAAa,OAAA;AACtB,mDAAuE;AAA9D,gHAAA,cAAc,OAAA;AACvB,+CAA8C;AAArC,4GAAA,YAAY,OAAA;AAGrB,yEAAwE;AAA/D,sGAAA,SAAS,OAAA;AAClB,+EAA8E;AAArE,4GAAA,YAAY,OAAA;AACrB,+EAA8E;AAArE,8GAAA,aAAa,OAAA;AACtB,qEAAoE;AAA3D,oGAAA,QAAQ,OAAA;AACjB,uEAAsE;AAA7D,4GAAA,YAAY,OAAA;AACrB,2EAA0E;AAAjE,gHAAA,cAAc,OAAA;AACvB,6DAA4D;AAAnD,oGAAA,QAAQ,OAAA;AAOjB,2CASsB;AARpB,mGAAA,KAAK,OAAA;AAEL,kGAAA,IAAI,OAAA;AAEJ,mGAAA,KAAK,OAAA;AAEL,wGAAA,UAAU,OAAA;AAIZ,uDAA+D;AAAtD,6HAAA,yBAAyB,OAAA;AAElC;;GAEG;AACH,uCAAsC;AAA7B,4FAAA,IAAI,OAAA;AAEb,mEAAiE;AAAxD,uHAAA,iBAAiB,OAAA","sourcesContent":["// Expo Router API\nimport { Navigator, Slot } from './views/Navigator';\n\nexport {\n useRouter,\n useUnstableGlobalHref,\n usePathname,\n useNavigationContainerRef,\n useGlobalSearchParams,\n useLocalSearchParams,\n useSegments,\n useRootNavigation,\n useRootNavigationState,\n useLoaderData,\n} from './hooks';\n\nexport { router, type ImperativeRouter } from './imperative-api';\n\nexport { withLayoutContext } from './layouts/withLayoutContext';\nexport { Navigator, Slot };\n\n// Expo Router Views\nexport { ExpoRoot } from './ExpoRoot';\nexport { Unmatched } from './views/Unmatched';\nexport { Sitemap } from './views/Sitemap';\nexport { useSitemap, type SitemapType } from './views/useSitemap';\nexport type { ErrorBoundaryProps } from './views/Try';\nexport { ErrorBoundary } from './views/ErrorBoundary';\nexport { SuspenseFallback, type SuspenseFallbackProps } from './views/SuspenseFallback';\nexport type { ScreenProps } from './useScreens';\n\n// Platform\n/**\n * @hidden\n */\nexport * as SplashScreen from './views/Splash';\n\n// React Navigation\nexport { useNavigation } from './useNavigation';\nexport { useFocusEffect, type EffectCallback } from './useFocusEffect';\nexport { useIsFocused } from './useIsFocused';\nexport type { ResultState } from './fork/getStateFromPath';\n\nexport { DarkTheme } from './react-navigation/native/theming/DarkTheme';\nexport { DefaultTheme } from './react-navigation/native/theming/DefaultTheme';\nexport { ThemeProvider } from './react-navigation/core/theming/ThemeProvider';\nexport { useTheme } from './react-navigation/core/theming/useTheme';\nexport { useRoutePath } from './react-navigation/native/useRoutePath';\nexport { useScrollToTop } from './react-navigation/native/useScrollToTop';\nexport { useRoute } from './react-navigation/core/useRoute';\n\nexport type { RedirectConfig } from './getRoutesCore';\nexport type { SingularOptions } from './useScreens';\n\nexport type * from './types';\n\nexport {\n Badge,\n type BadgeProps,\n Icon,\n type IconProps,\n Label,\n type LabelProps,\n VectorIcon,\n type VectorIconProps,\n} from './primitives';\n\nexport { unstable_navigationEvents } from './navigationEvents';\n\n/**\n * @deprecated Use `import { Tabs } from 'expo-router/js-tabs'` instead.\n */\nexport { Tabs } from './layouts/Tabs';\n\nexport { ExperimentalStack } from './layouts/experimental-stack';\nexport type {\n ExperimentalStackNavigationOptions,\n ExperimentalStackNavigationEventMap,\n ExperimentalStackNavigationProp,\n ExperimentalStackScreenProps,\n} from './layouts/experimental-stack';\n"]}
@@ -35,7 +35,7 @@ function NativeTabsView(props) {
35
35
  // TODO(@ubax): Adjust docs and add support for tabBarRespectsIMEInsets
36
36
  , {
37
37
  // TODO(@ubax): Adjust docs and add support for tabBarRespectsIMEInsets
38
- android: { ...rawAndroidProps }, tabBarHidden: props.hidden, ...rawHostRestProps, navState: { selectedScreenKey, provenance }, onTabSelected: onTabSelected, children: children }));
38
+ android: { ...rawAndroidProps }, tabBarHidden: props.hidden, ...rawHostRestProps, navStateRequest: { selectedScreenKey, baseProvenance: provenance }, onTabSelected: onTabSelected, children: children }));
39
39
  }
40
40
  function Screen(props) {
41
41
  const { options, androidAppearance, contentRenderer } = props;
@@ -1 +1 @@
1
- {"version":3,"file":"NativeTabsView.android.js","sourceRoot":"","sources":["../../src/native-tabs/NativeTabsView.android.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useMemo } from 'react';\nimport { Tabs, type TabsScreenAppearanceAndroid } from 'react-native-screens';\nimport { SafeAreaView } from 'react-native-screens/experimental';\n\nimport {\n type InternalTabScreenProps as SharedInternalTabScreenProps,\n ScreenContent,\n useOnTabSelectedHandler,\n useSelectedScreenKey,\n useSharedScreenProps,\n} from './NativeTabsView.shared';\nimport { createAndroidScreenAppearance } from './appearance';\nimport { SUPPORTED_TAB_BAR_ITEM_LABEL_VISIBILITY_MODES, type NativeTabsViewProps } from './types';\nimport { convertOptionsIconToScreensPropsIcon } from './utils/optionsIconConverter';\n\nexport function NativeTabsView(props: NativeTabsViewProps) {\n const { disableIndicator, tabs, unstable_nativeProps } = props;\n const {\n android: rawAndroidProps,\n ios: _ignoredRawIosProps,\n ...rawHostRestProps\n } = unstable_nativeProps ?? {};\n\n const { selectedScreenKey, provenance } = useSelectedScreenKey(props);\n const onTabSelected = useOnTabSelectedHandler(props.onTabChange);\n\n // TODO(@ubax): add per screen labelVisibilityMode + validation function\n let labelVisibilityMode = props.labelVisibilityMode;\n if (labelVisibilityMode && !supportedTabBarItemLabelVisibilityModesSet.has(labelVisibilityMode)) {\n console.warn(\n `Unsupported labelVisibilityMode: ${labelVisibilityMode}. Supported values are: ${SUPPORTED_TAB_BAR_ITEM_LABEL_VISIBILITY_MODES.map((mode) => `\"${mode}\"`).join(', ')}`\n );\n labelVisibilityMode = undefined;\n }\n\n const androidAppearances = tabs.map((tab) =>\n createAndroidScreenAppearance({\n options: tab.options,\n tintColor: props.tintColor,\n rippleColor: props.rippleColor,\n disableIndicator,\n labelVisibilityMode,\n })\n );\n\n const children = tabs.map((tab, index) => (\n <Screen\n key={tab.routeKey}\n routeKey={tab.routeKey}\n name={tab.name}\n options={tab.options}\n isFocused={selectedScreenKey === tab.routeKey}\n androidAppearance={androidAppearances[index]!}\n contentRenderer={tab.contentRenderer}\n />\n ));\n\n if (children.length === 0) {\n return null;\n }\n\n return (\n <Tabs.Host\n // TODO(@ubax): Adjust docs and add support for tabBarRespectsIMEInsets\n android={{ ...rawAndroidProps }}\n tabBarHidden={props.hidden}\n {...rawHostRestProps}\n navState={{ selectedScreenKey, provenance }}\n onTabSelected={onTabSelected}>\n {children}\n </Tabs.Host>\n );\n}\n\ninterface InternalTabScreenProps extends SharedInternalTabScreenProps {\n androidAppearance: TabsScreenAppearanceAndroid;\n}\n\nfunction Screen(props: InternalTabScreenProps) {\n const { options, androidAppearance, contentRenderer } = props;\n\n const shared = useSharedScreenProps(props);\n\n const androidIcon = convertOptionsIconToScreensPropsIcon(shared.icon);\n const androidSelectedIcon = convertOptionsIconToScreensPropsIcon(shared.selectedIcon);\n\n const content = <ScreenContent options={options} contentRenderer={contentRenderer} />;\n const wrappedContent = useMemo(() => {\n if (!options.disableAutomaticContentInsets) {\n return (\n <SafeAreaView\n // https://github.com/software-mansion/react-native-screens/issues/2662#issuecomment-2757735088\n collapsable={false}\n style={{ flex: 1 }}\n edges={{ bottom: true }}>\n {content}\n </SafeAreaView>\n );\n }\n return content;\n }, [content, options.disableAutomaticContentInsets]);\n\n return (\n <Tabs.Screen\n {...shared.options}\n pointerEvents={shared.pointerEvents}\n android={{\n icon: androidIcon,\n selectedIcon: androidSelectedIcon,\n standardAppearance: androidAppearance,\n ...shared.nativeAndroidOverrides,\n }}\n title={shared.title}\n {...shared.nativeRestOverrides}\n screenKey={shared.screenKey}>\n {wrappedContent}\n </Tabs.Screen>\n );\n}\n\nconst supportedTabBarItemLabelVisibilityModesSet = new Set<string>(\n SUPPORTED_TAB_BAR_ITEM_LABEL_VISIBILITY_MODES\n);\n"]}
1
+ {"version":3,"file":"NativeTabsView.android.js","sourceRoot":"","sources":["../../src/native-tabs/NativeTabsView.android.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useMemo } from 'react';\nimport { Tabs, type TabsScreenAppearanceAndroid } from 'react-native-screens';\nimport { SafeAreaView } from 'react-native-screens/experimental';\n\nimport {\n type InternalTabScreenProps as SharedInternalTabScreenProps,\n ScreenContent,\n useOnTabSelectedHandler,\n useSelectedScreenKey,\n useSharedScreenProps,\n} from './NativeTabsView.shared';\nimport { createAndroidScreenAppearance } from './appearance';\nimport { SUPPORTED_TAB_BAR_ITEM_LABEL_VISIBILITY_MODES, type NativeTabsViewProps } from './types';\nimport { convertOptionsIconToScreensPropsIcon } from './utils/optionsIconConverter';\n\nexport function NativeTabsView(props: NativeTabsViewProps) {\n const { disableIndicator, tabs, unstable_nativeProps } = props;\n const {\n android: rawAndroidProps,\n ios: _ignoredRawIosProps,\n ...rawHostRestProps\n } = unstable_nativeProps ?? {};\n\n const { selectedScreenKey, provenance } = useSelectedScreenKey(props);\n const onTabSelected = useOnTabSelectedHandler(props.onTabChange);\n\n // TODO(@ubax): add per screen labelVisibilityMode + validation function\n let labelVisibilityMode = props.labelVisibilityMode;\n if (labelVisibilityMode && !supportedTabBarItemLabelVisibilityModesSet.has(labelVisibilityMode)) {\n console.warn(\n `Unsupported labelVisibilityMode: ${labelVisibilityMode}. Supported values are: ${SUPPORTED_TAB_BAR_ITEM_LABEL_VISIBILITY_MODES.map((mode) => `\"${mode}\"`).join(', ')}`\n );\n labelVisibilityMode = undefined;\n }\n\n const androidAppearances = tabs.map((tab) =>\n createAndroidScreenAppearance({\n options: tab.options,\n tintColor: props.tintColor,\n rippleColor: props.rippleColor,\n disableIndicator,\n labelVisibilityMode,\n })\n );\n\n const children = tabs.map((tab, index) => (\n <Screen\n key={tab.routeKey}\n routeKey={tab.routeKey}\n name={tab.name}\n options={tab.options}\n isFocused={selectedScreenKey === tab.routeKey}\n androidAppearance={androidAppearances[index]!}\n contentRenderer={tab.contentRenderer}\n />\n ));\n\n if (children.length === 0) {\n return null;\n }\n\n return (\n <Tabs.Host\n // TODO(@ubax): Adjust docs and add support for tabBarRespectsIMEInsets\n android={{ ...rawAndroidProps }}\n tabBarHidden={props.hidden}\n {...rawHostRestProps}\n navStateRequest={{ selectedScreenKey, baseProvenance: provenance }}\n onTabSelected={onTabSelected}>\n {children}\n </Tabs.Host>\n );\n}\n\ninterface InternalTabScreenProps extends SharedInternalTabScreenProps {\n androidAppearance: TabsScreenAppearanceAndroid;\n}\n\nfunction Screen(props: InternalTabScreenProps) {\n const { options, androidAppearance, contentRenderer } = props;\n\n const shared = useSharedScreenProps(props);\n\n const androidIcon = convertOptionsIconToScreensPropsIcon(shared.icon);\n const androidSelectedIcon = convertOptionsIconToScreensPropsIcon(shared.selectedIcon);\n\n const content = <ScreenContent options={options} contentRenderer={contentRenderer} />;\n const wrappedContent = useMemo(() => {\n if (!options.disableAutomaticContentInsets) {\n return (\n <SafeAreaView\n // https://github.com/software-mansion/react-native-screens/issues/2662#issuecomment-2757735088\n collapsable={false}\n style={{ flex: 1 }}\n edges={{ bottom: true }}>\n {content}\n </SafeAreaView>\n );\n }\n return content;\n }, [content, options.disableAutomaticContentInsets]);\n\n return (\n <Tabs.Screen\n {...shared.options}\n pointerEvents={shared.pointerEvents}\n android={{\n icon: androidIcon,\n selectedIcon: androidSelectedIcon,\n standardAppearance: androidAppearance,\n ...shared.nativeAndroidOverrides,\n }}\n title={shared.title}\n {...shared.nativeRestOverrides}\n screenKey={shared.screenKey}>\n {wrappedContent}\n </Tabs.Screen>\n );\n}\n\nconst supportedTabBarItemLabelVisibilityModesSet = new Set<string>(\n SUPPORTED_TAB_BAR_ITEM_LABEL_VISIBILITY_MODES\n);\n"]}
@@ -43,7 +43,7 @@ function NativeTabsView(props) {
43
43
  tabBarControllerMode,
44
44
  bottomAccessory: bottomAccessoryFn,
45
45
  ...rawIosProps,
46
- }, tabBarHidden: props.hidden, ...rawHostRestProps, navState: { selectedScreenKey, provenance }, onTabSelected: onTabSelected, children: children }));
46
+ }, tabBarHidden: props.hidden, ...rawHostRestProps, navStateRequest: { selectedScreenKey, baseProvenance: provenance }, onTabSelected: onTabSelected, children: children }));
47
47
  }
48
48
  function Screen(props) {
49
49
  const { options, standardAppearance, scrollEdgeAppearance, contentRenderer } = props;
@@ -1 +1 @@
1
- {"version":3,"file":"NativeTabsView.ios.js","sourceRoot":"","sources":["../../src/native-tabs/NativeTabsView.ios.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useMemo } from 'react';\nimport { SafeAreaProvider } from 'react-native-safe-area-context';\nimport { Tabs, type TabsHostProps, type TabsScreenAppearanceIOS } from 'react-native-screens';\n\nimport {\n type InternalTabScreenProps as SharedInternalTabScreenProps,\n ScreenContent,\n useOnTabSelectedHandler,\n useSelectedScreenKey,\n useSharedScreenProps,\n} from './NativeTabsView.shared';\nimport {\n createScrollEdgeAppearanceFromOptions,\n createStandardAppearanceFromOptions,\n} from './appearance';\nimport { NativeTabsBottomAccessory } from './common/elements';\nimport { SUPPORTED_TAB_BAR_MINIMIZE_BEHAVIORS, type NativeTabsViewProps } from './types';\nimport { useBottomAccessoryFunctionFromBottomAccessories } from './utils/bottomAccessory';\nimport { convertOptionsIconToScreensPropsIcon } from './utils/optionsIconConverter';\nimport { getFirstChildOfType } from '../utils/children';\n\nexport function NativeTabsView(props: NativeTabsViewProps) {\n const { minimizeBehavior, tabs, sidebarAdaptable, nonTriggerChildren, unstable_nativeProps } =\n props;\n // `ios`/`android` are the only platform-nested keys on `TabsHostProps`. We drop the inactive\n // platform's slice so users writing universal code don't pass Android-only props to the iOS host.\n const {\n ios: rawIosProps,\n android: _ignoredRawAndroidProps,\n ...rawHostRestProps\n } = unstable_nativeProps ?? {};\n\n const { selectedScreenKey, provenance } = useSelectedScreenKey(props);\n const onTabSelected = useOnTabSelectedHandler(props.onTabChange);\n\n const iosAppearances = tabs.map((tab) => ({\n standardAppearance: createStandardAppearanceFromOptions(tab.options),\n scrollEdgeAppearance: createScrollEdgeAppearanceFromOptions(tab.options),\n }));\n\n const bottomAccessory = useMemo(\n () => getFirstChildOfType(nonTriggerChildren, NativeTabsBottomAccessory),\n [nonTriggerChildren]\n );\n\n const bottomAccessoryFn = useBottomAccessoryFunctionFromBottomAccessories(bottomAccessory);\n\n if (\n process.env.NODE_ENV !== 'production' &&\n bottomAccessory &&\n rawIosProps &&\n 'bottomAccessory' in rawIosProps\n ) {\n console.warn(\n '<NativeTabs.BottomAccessory> is being overridden by `unstable_nativeProps.ios.bottomAccessory`. ' +\n 'Either remove the `<NativeTabs.BottomAccessory>` child or stop passing `ios.bottomAccessory` via `unstable_nativeProps`.'\n );\n }\n\n const children = tabs.map((tab, index) => (\n <Screen\n key={tab.routeKey}\n routeKey={tab.routeKey}\n name={tab.name}\n options={tab.options}\n isFocused={selectedScreenKey === tab.routeKey}\n standardAppearance={iosAppearances[index]!.standardAppearance}\n scrollEdgeAppearance={iosAppearances[index]!.scrollEdgeAppearance}\n contentRenderer={tab.contentRenderer}\n />\n ));\n\n if (children.length === 0) {\n return null;\n }\n\n const tabBarControllerMode: NonNullable<TabsHostProps['ios']>['tabBarControllerMode'] =\n sidebarAdaptable ? 'tabSidebar' : sidebarAdaptable === false ? 'tabBar' : 'automatic';\n\n return (\n <TabsHostWrapper\n ios={{\n tabBarTintColor: props.tintColor,\n tabBarMinimizeBehavior: minimizeBehavior,\n tabBarControllerMode,\n bottomAccessory: bottomAccessoryFn,\n ...rawIosProps,\n }}\n tabBarHidden={props.hidden}\n {...rawHostRestProps}\n navState={{ selectedScreenKey, provenance }}\n onTabSelected={onTabSelected}>\n {children}\n </TabsHostWrapper>\n );\n}\n\ninterface InternalTabScreenProps extends SharedInternalTabScreenProps {\n standardAppearance: TabsScreenAppearanceIOS;\n scrollEdgeAppearance: TabsScreenAppearanceIOS;\n}\n\nfunction Screen(props: InternalTabScreenProps) {\n const { options, standardAppearance, scrollEdgeAppearance, contentRenderer } = props;\n\n const shared = useSharedScreenProps(props);\n\n const iosIcon = convertOptionsIconToScreensPropsIcon(\n shared.icon,\n standardAppearance?.stacked?.normal?.tabBarItemIconColor\n );\n const iosSelectedIcon = convertOptionsIconToScreensPropsIcon(\n shared.selectedIcon,\n standardAppearance?.stacked?.selected?.tabBarItemIconColor\n );\n\n const content = <ScreenContent options={options} contentRenderer={contentRenderer} />;\n const wrappedContent = useMemo(() => <SafeAreaProvider>{content}</SafeAreaProvider>, [content]);\n\n return (\n <Tabs.Screen\n {...shared.options}\n pointerEvents={shared.pointerEvents}\n ios={{\n icon: iosIcon,\n selectedIcon: iosSelectedIcon,\n standardAppearance,\n scrollEdgeAppearance,\n systemItem: options.role,\n overrideScrollViewContentInsetAdjustmentBehavior: !options.disableAutomaticContentInsets,\n ...shared.nativeIosOverrides,\n }}\n title={shared.title}\n {...shared.nativeRestOverrides}\n screenKey={shared.screenKey}>\n {wrappedContent}\n </Tabs.Screen>\n );\n}\n\nconst supportedTabBarMinimizeBehaviorsSet = new Set<string>(SUPPORTED_TAB_BAR_MINIMIZE_BEHAVIORS);\n\nfunction TabsHostWrapper(props: TabsHostProps) {\n // TODO(@ubax): add function for validation\n let validatedIos = props.ios;\n if (validatedIos?.tabBarMinimizeBehavior) {\n if (!supportedTabBarMinimizeBehaviorsSet.has(validatedIos.tabBarMinimizeBehavior)) {\n console.warn(\n `Unsupported minimizeBehavior: ${validatedIos.tabBarMinimizeBehavior}. Supported values are: ${SUPPORTED_TAB_BAR_MINIMIZE_BEHAVIORS.map((behavior) => `\"${behavior}\"`).join(', ')}`\n );\n validatedIos = { ...validatedIos, tabBarMinimizeBehavior: undefined };\n }\n }\n\n return <Tabs.Host {...props} ios={validatedIos} />;\n}\n"]}
1
+ {"version":3,"file":"NativeTabsView.ios.js","sourceRoot":"","sources":["../../src/native-tabs/NativeTabsView.ios.tsx"],"names":[],"mappings":";;AAqBA,wCA0EC;;AA/FD,iCAAgC;AAChC,mFAAkE;AAClE,+DAA8F;AAE9F,mEAMiC;AACjC,6CAGsB;AACtB,gDAA8D;AAC9D,mCAAyF;AACzF,6DAA0F;AAC1F,uEAAoF;AACpF,gDAAwD;AAExD,SAAgB,cAAc,CAAC,KAA0B;IACvD,MAAM,EAAE,gBAAgB,EAAE,IAAI,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,GAC1F,KAAK,CAAC;IACR,6FAA6F;IAC7F,kGAAkG;IAClG,MAAM,EACJ,GAAG,EAAE,WAAW,EAChB,OAAO,EAAE,uBAAuB,EAChC,GAAG,gBAAgB,EACpB,GAAG,oBAAoB,IAAI,EAAE,CAAC;IAE/B,MAAM,EAAE,iBAAiB,EAAE,UAAU,EAAE,GAAG,IAAA,4CAAoB,EAAC,KAAK,CAAC,CAAC;IACtE,MAAM,aAAa,GAAG,IAAA,+CAAuB,EAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IAEjE,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QACxC,kBAAkB,EAAE,IAAA,gDAAmC,EAAC,GAAG,CAAC,OAAO,CAAC;QACpE,oBAAoB,EAAE,IAAA,kDAAqC,EAAC,GAAG,CAAC,OAAO,CAAC;KACzE,CAAC,CAAC,CAAC;IAEJ,MAAM,eAAe,GAAG,IAAA,eAAO,EAC7B,GAAG,EAAE,CAAC,IAAA,8BAAmB,EAAC,kBAAkB,EAAE,oCAAyB,CAAC,EACxE,CAAC,kBAAkB,CAAC,CACrB,CAAC;IAEF,MAAM,iBAAiB,GAAG,IAAA,iEAA+C,EAAC,eAAe,CAAC,CAAC;IAE3F,IACE,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY;QACrC,eAAe;QACf,WAAW;QACX,iBAAiB,IAAI,WAAW,EAChC,CAAC;QACD,OAAO,CAAC,IAAI,CACV,kGAAkG;YAChG,0HAA0H,CAC7H,CAAC;IACJ,CAAC;IAED,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,CACxC,uBAAC,MAAM,IAEL,QAAQ,EAAE,GAAG,CAAC,QAAQ,EACtB,IAAI,EAAE,GAAG,CAAC,IAAI,EACd,OAAO,EAAE,GAAG,CAAC,OAAO,EACpB,SAAS,EAAE,iBAAiB,KAAK,GAAG,CAAC,QAAQ,EAC7C,kBAAkB,EAAE,cAAc,CAAC,KAAK,CAAE,CAAC,kBAAkB,EAC7D,oBAAoB,EAAE,cAAc,CAAC,KAAK,CAAE,CAAC,oBAAoB,EACjE,eAAe,EAAE,GAAG,CAAC,eAAe,IAP/B,GAAG,CAAC,QAAQ,CAQjB,CACH,CAAC,CAAC;IAEH,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,oBAAoB,GACxB,gBAAgB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,gBAAgB,KAAK,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC;IAExF,OAAO,CACL,uBAAC,eAAe,IACd,GAAG,EAAE;YACH,eAAe,EAAE,KAAK,CAAC,SAAS;YAChC,sBAAsB,EAAE,gBAAgB;YACxC,oBAAoB;YACpB,eAAe,EAAE,iBAAiB;YAClC,GAAG,WAAW;SACf,EACD,YAAY,EAAE,KAAK,CAAC,MAAM,KACtB,gBAAgB,EACpB,eAAe,EAAE,EAAE,iBAAiB,EAAE,cAAc,EAAE,UAAU,EAAE,EAClE,aAAa,EAAE,aAAa,YAC3B,QAAQ,GACO,CACnB,CAAC;AACJ,CAAC;AAOD,SAAS,MAAM,CAAC,KAA6B;IAC3C,MAAM,EAAE,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,eAAe,EAAE,GAAG,KAAK,CAAC;IAErF,MAAM,MAAM,GAAG,IAAA,4CAAoB,EAAC,KAAK,CAAC,CAAC;IAE3C,MAAM,OAAO,GAAG,IAAA,2DAAoC,EAClD,MAAM,CAAC,IAAI,EACX,kBAAkB,EAAE,OAAO,EAAE,MAAM,EAAE,mBAAmB,CACzD,CAAC;IACF,MAAM,eAAe,GAAG,IAAA,2DAAoC,EAC1D,MAAM,CAAC,YAAY,EACnB,kBAAkB,EAAE,OAAO,EAAE,QAAQ,EAAE,mBAAmB,CAC3D,CAAC;IAEF,MAAM,OAAO,GAAG,uBAAC,qCAAa,IAAC,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,eAAe,GAAI,CAAC;IACtF,MAAM,cAAc,GAAG,IAAA,eAAO,EAAC,GAAG,EAAE,CAAC,uBAAC,iDAAgB,cAAE,OAAO,GAAoB,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAEhG,OAAO,CACL,uBAAC,2BAAI,CAAC,MAAM,OACN,MAAM,CAAC,OAAO,EAClB,aAAa,EAAE,MAAM,CAAC,aAAa,EACnC,GAAG,EAAE;YACH,IAAI,EAAE,OAAO;YACb,YAAY,EAAE,eAAe;YAC7B,kBAAkB;YAClB,oBAAoB;YACpB,UAAU,EAAE,OAAO,CAAC,IAAI;YACxB,gDAAgD,EAAE,CAAC,OAAO,CAAC,6BAA6B;YACxF,GAAG,MAAM,CAAC,kBAAkB;SAC7B,EACD,KAAK,EAAE,MAAM,CAAC,KAAK,KACf,MAAM,CAAC,mBAAmB,EAC9B,SAAS,EAAE,MAAM,CAAC,SAAS,YAC1B,cAAc,GACH,CACf,CAAC;AACJ,CAAC;AAED,MAAM,mCAAmC,GAAG,IAAI,GAAG,CAAS,4CAAoC,CAAC,CAAC;AAElG,SAAS,eAAe,CAAC,KAAoB;IAC3C,2CAA2C;IAC3C,IAAI,YAAY,GAAG,KAAK,CAAC,GAAG,CAAC;IAC7B,IAAI,YAAY,EAAE,sBAAsB,EAAE,CAAC;QACzC,IAAI,CAAC,mCAAmC,CAAC,GAAG,CAAC,YAAY,CAAC,sBAAsB,CAAC,EAAE,CAAC;YAClF,OAAO,CAAC,IAAI,CACV,iCAAiC,YAAY,CAAC,sBAAsB,2BAA2B,4CAAoC,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,QAAQ,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACpL,CAAC;YACF,YAAY,GAAG,EAAE,GAAG,YAAY,EAAE,sBAAsB,EAAE,SAAS,EAAE,CAAC;QACxE,CAAC;IACH,CAAC;IAED,OAAO,uBAAC,2BAAI,CAAC,IAAI,OAAK,KAAK,EAAE,GAAG,EAAE,YAAY,GAAI,CAAC;AACrD,CAAC","sourcesContent":["import { useMemo } from 'react';\nimport { SafeAreaProvider } from 'react-native-safe-area-context';\nimport { Tabs, type TabsHostProps, type TabsScreenAppearanceIOS } from 'react-native-screens';\n\nimport {\n type InternalTabScreenProps as SharedInternalTabScreenProps,\n ScreenContent,\n useOnTabSelectedHandler,\n useSelectedScreenKey,\n useSharedScreenProps,\n} from './NativeTabsView.shared';\nimport {\n createScrollEdgeAppearanceFromOptions,\n createStandardAppearanceFromOptions,\n} from './appearance';\nimport { NativeTabsBottomAccessory } from './common/elements';\nimport { SUPPORTED_TAB_BAR_MINIMIZE_BEHAVIORS, type NativeTabsViewProps } from './types';\nimport { useBottomAccessoryFunctionFromBottomAccessories } from './utils/bottomAccessory';\nimport { convertOptionsIconToScreensPropsIcon } from './utils/optionsIconConverter';\nimport { getFirstChildOfType } from '../utils/children';\n\nexport function NativeTabsView(props: NativeTabsViewProps) {\n const { minimizeBehavior, tabs, sidebarAdaptable, nonTriggerChildren, unstable_nativeProps } =\n props;\n // `ios`/`android` are the only platform-nested keys on `TabsHostProps`. We drop the inactive\n // platform's slice so users writing universal code don't pass Android-only props to the iOS host.\n const {\n ios: rawIosProps,\n android: _ignoredRawAndroidProps,\n ...rawHostRestProps\n } = unstable_nativeProps ?? {};\n\n const { selectedScreenKey, provenance } = useSelectedScreenKey(props);\n const onTabSelected = useOnTabSelectedHandler(props.onTabChange);\n\n const iosAppearances = tabs.map((tab) => ({\n standardAppearance: createStandardAppearanceFromOptions(tab.options),\n scrollEdgeAppearance: createScrollEdgeAppearanceFromOptions(tab.options),\n }));\n\n const bottomAccessory = useMemo(\n () => getFirstChildOfType(nonTriggerChildren, NativeTabsBottomAccessory),\n [nonTriggerChildren]\n );\n\n const bottomAccessoryFn = useBottomAccessoryFunctionFromBottomAccessories(bottomAccessory);\n\n if (\n process.env.NODE_ENV !== 'production' &&\n bottomAccessory &&\n rawIosProps &&\n 'bottomAccessory' in rawIosProps\n ) {\n console.warn(\n '<NativeTabs.BottomAccessory> is being overridden by `unstable_nativeProps.ios.bottomAccessory`. ' +\n 'Either remove the `<NativeTabs.BottomAccessory>` child or stop passing `ios.bottomAccessory` via `unstable_nativeProps`.'\n );\n }\n\n const children = tabs.map((tab, index) => (\n <Screen\n key={tab.routeKey}\n routeKey={tab.routeKey}\n name={tab.name}\n options={tab.options}\n isFocused={selectedScreenKey === tab.routeKey}\n standardAppearance={iosAppearances[index]!.standardAppearance}\n scrollEdgeAppearance={iosAppearances[index]!.scrollEdgeAppearance}\n contentRenderer={tab.contentRenderer}\n />\n ));\n\n if (children.length === 0) {\n return null;\n }\n\n const tabBarControllerMode: NonNullable<TabsHostProps['ios']>['tabBarControllerMode'] =\n sidebarAdaptable ? 'tabSidebar' : sidebarAdaptable === false ? 'tabBar' : 'automatic';\n\n return (\n <TabsHostWrapper\n ios={{\n tabBarTintColor: props.tintColor,\n tabBarMinimizeBehavior: minimizeBehavior,\n tabBarControllerMode,\n bottomAccessory: bottomAccessoryFn,\n ...rawIosProps,\n }}\n tabBarHidden={props.hidden}\n {...rawHostRestProps}\n navStateRequest={{ selectedScreenKey, baseProvenance: provenance }}\n onTabSelected={onTabSelected}>\n {children}\n </TabsHostWrapper>\n );\n}\n\ninterface InternalTabScreenProps extends SharedInternalTabScreenProps {\n standardAppearance: TabsScreenAppearanceIOS;\n scrollEdgeAppearance: TabsScreenAppearanceIOS;\n}\n\nfunction Screen(props: InternalTabScreenProps) {\n const { options, standardAppearance, scrollEdgeAppearance, contentRenderer } = props;\n\n const shared = useSharedScreenProps(props);\n\n const iosIcon = convertOptionsIconToScreensPropsIcon(\n shared.icon,\n standardAppearance?.stacked?.normal?.tabBarItemIconColor\n );\n const iosSelectedIcon = convertOptionsIconToScreensPropsIcon(\n shared.selectedIcon,\n standardAppearance?.stacked?.selected?.tabBarItemIconColor\n );\n\n const content = <ScreenContent options={options} contentRenderer={contentRenderer} />;\n const wrappedContent = useMemo(() => <SafeAreaProvider>{content}</SafeAreaProvider>, [content]);\n\n return (\n <Tabs.Screen\n {...shared.options}\n pointerEvents={shared.pointerEvents}\n ios={{\n icon: iosIcon,\n selectedIcon: iosSelectedIcon,\n standardAppearance,\n scrollEdgeAppearance,\n systemItem: options.role,\n overrideScrollViewContentInsetAdjustmentBehavior: !options.disableAutomaticContentInsets,\n ...shared.nativeIosOverrides,\n }}\n title={shared.title}\n {...shared.nativeRestOverrides}\n screenKey={shared.screenKey}>\n {wrappedContent}\n </Tabs.Screen>\n );\n}\n\nconst supportedTabBarMinimizeBehaviorsSet = new Set<string>(SUPPORTED_TAB_BAR_MINIMIZE_BEHAVIORS);\n\nfunction TabsHostWrapper(props: TabsHostProps) {\n // TODO(@ubax): add function for validation\n let validatedIos = props.ios;\n if (validatedIos?.tabBarMinimizeBehavior) {\n if (!supportedTabBarMinimizeBehaviorsSet.has(validatedIos.tabBarMinimizeBehavior)) {\n console.warn(\n `Unsupported minimizeBehavior: ${validatedIos.tabBarMinimizeBehavior}. Supported values are: ${SUPPORTED_TAB_BAR_MINIMIZE_BEHAVIORS.map((behavior) => `\"${behavior}\"`).join(', ')}`\n );\n validatedIos = { ...validatedIos, tabBarMinimizeBehavior: undefined };\n }\n }\n\n return <Tabs.Host {...props} ios={validatedIos} />;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"NativeTabsView.shared.d.ts","sourceRoot":"","sources":["../../src/native-tabs/NativeTabsView.shared.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAiD,MAAM,OAAO,CAAC;AAEtE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAE1D,OAAO,KAAK,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAIrE,wBAAgB,oBAAoB,CAAC,EACnC,YAAY,EACZ,UAAU,EACV,IAAI,GACL,EAAE,IAAI,CAAC,mBAAmB,EAAE,cAAc,GAAG,YAAY,GAAG,MAAM,CAAC,GAAG;IACrE,iBAAiB,EAAE,MAAM,CAAC;IAC1B,UAAU,EAAE,MAAM,CAAC;CACpB,CAgBA;AAED,wBAAgB,uBAAuB,CACrC,WAAW,EAAE,mBAAmB,CAAC,aAAa,CAAC,GAC9C,WAAW,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC,CAO7C;AAED;;;GAGG;AACH,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IAEb,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,gBAAgB,CAAC;IAC1B,eAAe,EAAE,MAAM,KAAK,CAAC,SAAS,CAAC;CACxC;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,sBAAsB;;mBAgBV,UAAU,GAAG,MAAM;;;;;;;;;;;;;;;;gCAN3D,CAAC;yBACkC,CAAC;2BAIc,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;EAUlE;AAED,wBAAgB,aAAa,CAAC,EAC5B,OAAO,EACP,eAAe,GAChB,EAAE;IACD,OAAO,EAAE,gBAAgB,CAAC;IAC1B,eAAe,EAAE,MAAM,KAAK,CAAC,SAAS,CAAC;CACxC,2CAcA"}
1
+ {"version":3,"file":"NativeTabsView.shared.d.ts","sourceRoot":"","sources":["../../src/native-tabs/NativeTabsView.shared.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAiD,MAAM,OAAO,CAAC;AAEtE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAE1D,OAAO,KAAK,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAIrE,wBAAgB,oBAAoB,CAAC,EACnC,YAAY,EACZ,UAAU,EACV,IAAI,GACL,EAAE,IAAI,CAAC,mBAAmB,EAAE,cAAc,GAAG,YAAY,GAAG,MAAM,CAAC,GAAG;IACrE,iBAAiB,EAAE,MAAM,CAAC;IAC1B,UAAU,EAAE,MAAM,CAAC;CACpB,CAgBA;AAED,wBAAgB,uBAAuB,CACrC,WAAW,EAAE,mBAAmB,CAAC,aAAa,CAAC,GAC9C,WAAW,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC,CAU7C;AAED;;;GAGG;AACH,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IAEb,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,gBAAgB,CAAC;IAC1B,eAAe,EAAE,MAAM,KAAK,CAAC,SAAS,CAAC;CACxC;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,sBAAsB;;mBAgBV,UAAU,GAAG,MAAM;;;;;;;;;;;;;;;;gCAZhE,CAAC;yBAGN,CAAA;2BAGE,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;EAeR;AAED,wBAAgB,aAAa,CAAC,EAC5B,OAAO,EACP,eAAe,GAChB,EAAE;IACD,OAAO,EAAE,gBAAgB,CAAC;IAC1B,eAAe,EAAE,MAAM,KAAK,CAAC,SAAS,CAAC;CACxC,2CAcA"}
@@ -23,7 +23,10 @@ function useSelectedScreenKey({ focusedIndex, provenance, tabs, }) {
23
23
  };
24
24
  }
25
25
  function useOnTabSelectedHandler(onTabChange) {
26
- return (0, react_1.useCallback)(({ nativeEvent: { selectedScreenKey, provenance, isNativeAction } }) => {
26
+ return (0, react_1.useCallback)(({ nativeEvent: { selectedScreenKey, provenance, actionOrigin } }) => {
27
+ // Treat anything other than a JS-driven echo as a native action so the
28
+ // navigator emits `tabPress` and dispatches `JUMP_TO`.
29
+ const isNativeAction = actionOrigin !== 'programmatic-js';
27
30
  onTabChange({ selectedKey: selectedScreenKey, provenance, isNativeAction });
28
31
  }, [onTabChange]);
29
32
  }
@@ -1 +1 @@
1
- {"version":3,"file":"NativeTabsView.shared.js","sourceRoot":"","sources":["../../src/native-tabs/NativeTabsView.shared.tsx"],"names":[],"mappings":";;AAQA,oDAuBC;AAED,0DASC;AAeD,oDAyBC;AAED,sCAoBC;;AAxGD,iCAAsE;AACtE,+CAAoC;AAIpC,uCAAqD;AACrD,uDAAsD;AAEtD,SAAgB,oBAAoB,CAAC,EACnC,YAAY,EACZ,UAAU,EACV,IAAI,GAC8D;IAIlE,MAAM,WAAW,GAAG,IAAA,eAAO,EAAC,GAAG,EAAE,CAAC,CAAC,EAAE,YAAY,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC,CAAC;IAC9F,MAAM,EAAE,YAAY,EAAE,oBAAoB,EAAE,UAAU,EAAE,kBAAkB,EAAE,GAC1E,IAAA,wBAAgB,EAAC,WAAW,CAAC,CAAC;IAEhC,8DAA8D;IAC9D,oFAAoF;IACpF,wFAAwF;IACxF,2BAA2B;IAC3B,MAAM,4BAA4B,GAChC,oBAAoB,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,YAAY,CAAC;IAE3E,OAAO;QACL,iBAAiB,EAAE,IAAI,CAAC,4BAA4B,CAAE,CAAC,QAAQ;QAC/D,UAAU,EAAE,kBAAkB;KAC/B,CAAC;AACJ,CAAC;AAED,SAAgB,uBAAuB,CACrC,WAA+C;IAE/C,OAAO,IAAA,mBAAW,EAChB,CAAC,EAAE,WAAW,EAAE,EAAE,iBAAiB,EAAE,UAAU,EAAE,cAAc,EAAE,EAAE,EAAE,EAAE;QACrE,WAAW,CAAC,EAAE,WAAW,EAAE,iBAAiB,EAAE,UAAU,EAAE,cAAc,EAAE,CAAC,CAAC;IAC9E,CAAC,EACD,CAAC,WAAW,CAAC,CACd,CAAC;AACJ,CAAC;AAeD,SAAgB,oBAAoB,CAAC,KAA6B;IAChE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;IACrD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC;IACpC,MAAM,EACJ,GAAG,EAAE,kBAAkB,EACvB,OAAO,EAAE,sBAAsB,EAC/B,GAAG,mBAAmB,EACvB,GAAG,OAAO,CAAC,WAAW,IAAI,EAAE,CAAC;IAE9B,oEAAoE;IACpE,MAAM,IAAI,GAAG,IAAA,4BAAqB,EAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACjD,MAAM,YAAY,GAAG,IAAA,4BAAqB,EAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IAEjE,OAAO;QACL,OAAO;QACP,gGAAgG;QAChG,aAAa,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAwB;QACvE,KAAK;QACL,kBAAkB;QAClB,sBAAsB;QACtB,mBAAmB;QACnB,SAAS,EAAE,QAAQ;QACnB,IAAI;QACJ,YAAY;KACb,CAAC;AACJ,CAAC;AAED,SAAgB,aAAa,CAAC,EAC5B,OAAO,EACP,eAAe,GAIhB;IACC,MAAM,EAAE,MAAM,EAAE,GAAG,IAAA,iBAAQ,GAAE,CAAC;IAC9B,OAAO,CACL,uBAAC,mBAAI;IACH,+FAA+F;;QAA/F,+FAA+F;QAC/F,WAAW,EAAE,KAAK,EAClB,KAAK,EAAE;YACL,EAAE,eAAe,EAAE,MAAM,CAAC,UAAU,EAAE;YACtC,OAAO,CAAC,YAAY;YACpB,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE;SACtD,YACA,eAAe,EAAE,GACb,CACR,CAAC;AACJ,CAAC","sourcesContent":["import React, { useCallback, useDeferredValue, useMemo } from 'react';\nimport { View } from 'react-native';\nimport type { TabsHostProps } from 'react-native-screens';\n\nimport type { NativeTabOptions, NativeTabsViewProps } from './types';\nimport { useAwaitedScreensIcon } from './utils/icon';\nimport { useTheme } from '../react-navigation/native';\n\nexport function useSelectedScreenKey({\n focusedIndex,\n provenance,\n tabs,\n}: Pick<NativeTabsViewProps, 'focusedIndex' | 'provenance' | 'tabs'>): {\n selectedScreenKey: string;\n provenance: number;\n} {\n const stableState = useMemo(() => ({ focusedIndex, provenance }), [focusedIndex, provenance]);\n const { focusedIndex: deferredFocusedIndex, provenance: deferredProvenance } =\n useDeferredValue(stableState);\n\n // We need to check if the deferred index is not out of bounds\n // This can happen when the focused index is the last tab, and user removes that tab\n // In that case the deferred index will still point to the last tab, but after re-render\n // it will be out of bounds\n const inBoundsDeferredFocusedIndex =\n deferredFocusedIndex < tabs.length ? deferredFocusedIndex : focusedIndex;\n\n return {\n selectedScreenKey: tabs[inBoundsDeferredFocusedIndex]!.routeKey,\n provenance: deferredProvenance,\n };\n}\n\nexport function useOnTabSelectedHandler(\n onTabChange: NativeTabsViewProps['onTabChange']\n): NonNullable<TabsHostProps['onTabSelected']> {\n return useCallback<NonNullable<TabsHostProps['onTabSelected']>>(\n ({ nativeEvent: { selectedScreenKey, provenance, isNativeAction } }) => {\n onTabChange({ selectedKey: selectedScreenKey, provenance, isNativeAction });\n },\n [onTabChange]\n );\n}\n\n/**\n * Cross-platform fields used to render a single tab screen. Each platform\n * extends this with its own appearance fields.\n */\nexport interface InternalTabScreenProps {\n routeKey: string;\n name: string;\n // TODO(@ubax): https://linear.app/expo/issue/ENG-20736/remove-pointerevents-from-nativetabsview\n isFocused: boolean;\n options: NativeTabOptions;\n contentRenderer: () => React.ReactNode;\n}\n\nexport function useSharedScreenProps(props: InternalTabScreenProps) {\n const { options, isFocused, name, routeKey } = props;\n const title = options.title ?? name;\n const {\n ios: nativeIosOverrides,\n android: nativeAndroidOverrides,\n ...nativeRestOverrides\n } = options.nativeProps ?? {};\n\n // We need to await the icon, as VectorIcon will load asynchronously\n const icon = useAwaitedScreensIcon(options.icon);\n const selectedIcon = useAwaitedScreensIcon(options.selectedIcon);\n\n return {\n options,\n // TODO(@ubax): https://linear.app/expo/issue/ENG-20736/remove-pointerevents-from-nativetabsview\n pointerEvents: (isFocused ? 'box-none' : 'none') as 'box-none' | 'none',\n title,\n nativeIosOverrides,\n nativeAndroidOverrides,\n nativeRestOverrides,\n screenKey: routeKey,\n icon,\n selectedIcon,\n };\n}\n\nexport function ScreenContent({\n options,\n contentRenderer,\n}: {\n options: NativeTabOptions;\n contentRenderer: () => React.ReactNode;\n}) {\n const { colors } = useTheme();\n return (\n <View\n // https://github.com/software-mansion/react-native-screens/issues/2662#issuecomment-2757735088\n collapsable={false}\n style={[\n { backgroundColor: colors.background },\n options.contentStyle,\n { flex: 1, position: 'relative', overflow: 'hidden' },\n ]}>\n {contentRenderer()}\n </View>\n );\n}\n"]}
1
+ {"version":3,"file":"NativeTabsView.shared.js","sourceRoot":"","sources":["../../src/native-tabs/NativeTabsView.shared.tsx"],"names":[],"mappings":";;AAQA,oDAuBC;AAED,0DAYC;AAeD,oDAyBC;AAED,sCAoBC;;AA3GD,iCAAsE;AACtE,+CAAoC;AAIpC,uCAAqD;AACrD,uDAAsD;AAEtD,SAAgB,oBAAoB,CAAC,EACnC,YAAY,EACZ,UAAU,EACV,IAAI,GAC8D;IAIlE,MAAM,WAAW,GAAG,IAAA,eAAO,EAAC,GAAG,EAAE,CAAC,CAAC,EAAE,YAAY,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC,CAAC;IAC9F,MAAM,EAAE,YAAY,EAAE,oBAAoB,EAAE,UAAU,EAAE,kBAAkB,EAAE,GAC1E,IAAA,wBAAgB,EAAC,WAAW,CAAC,CAAC;IAEhC,8DAA8D;IAC9D,oFAAoF;IACpF,wFAAwF;IACxF,2BAA2B;IAC3B,MAAM,4BAA4B,GAChC,oBAAoB,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,YAAY,CAAC;IAE3E,OAAO;QACL,iBAAiB,EAAE,IAAI,CAAC,4BAA4B,CAAE,CAAC,QAAQ;QAC/D,UAAU,EAAE,kBAAkB;KAC/B,CAAC;AACJ,CAAC;AAED,SAAgB,uBAAuB,CACrC,WAA+C;IAE/C,OAAO,IAAA,mBAAW,EAChB,CAAC,EAAE,WAAW,EAAE,EAAE,iBAAiB,EAAE,UAAU,EAAE,YAAY,EAAE,EAAE,EAAE,EAAE;QACnE,uEAAuE;QACvE,uDAAuD;QACvD,MAAM,cAAc,GAAG,YAAY,KAAK,iBAAiB,CAAC;QAC1D,WAAW,CAAC,EAAE,WAAW,EAAE,iBAAiB,EAAE,UAAU,EAAE,cAAc,EAAE,CAAC,CAAC;IAC9E,CAAC,EACD,CAAC,WAAW,CAAC,CACd,CAAC;AACJ,CAAC;AAeD,SAAgB,oBAAoB,CAAC,KAA6B;IAChE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;IACrD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC;IACpC,MAAM,EACJ,GAAG,EAAE,kBAAkB,EACvB,OAAO,EAAE,sBAAsB,EAC/B,GAAG,mBAAmB,EACvB,GAAG,OAAO,CAAC,WAAW,IAAI,EAAE,CAAC;IAE9B,oEAAoE;IACpE,MAAM,IAAI,GAAG,IAAA,4BAAqB,EAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACjD,MAAM,YAAY,GAAG,IAAA,4BAAqB,EAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IAEjE,OAAO;QACL,OAAO;QACP,gGAAgG;QAChG,aAAa,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAwB;QACvE,KAAK;QACL,kBAAkB;QAClB,sBAAsB;QACtB,mBAAmB;QACnB,SAAS,EAAE,QAAQ;QACnB,IAAI;QACJ,YAAY;KACb,CAAC;AACJ,CAAC;AAED,SAAgB,aAAa,CAAC,EAC5B,OAAO,EACP,eAAe,GAIhB;IACC,MAAM,EAAE,MAAM,EAAE,GAAG,IAAA,iBAAQ,GAAE,CAAC;IAC9B,OAAO,CACL,uBAAC,mBAAI;IACH,+FAA+F;;QAA/F,+FAA+F;QAC/F,WAAW,EAAE,KAAK,EAClB,KAAK,EAAE;YACL,EAAE,eAAe,EAAE,MAAM,CAAC,UAAU,EAAE;YACtC,OAAO,CAAC,YAAY;YACpB,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE;SACtD,YACA,eAAe,EAAE,GACb,CACR,CAAC;AACJ,CAAC","sourcesContent":["import React, { useCallback, useDeferredValue, useMemo } from 'react';\nimport { View } from 'react-native';\nimport type { TabsHostProps } from 'react-native-screens';\n\nimport type { NativeTabOptions, NativeTabsViewProps } from './types';\nimport { useAwaitedScreensIcon } from './utils/icon';\nimport { useTheme } from '../react-navigation/native';\n\nexport function useSelectedScreenKey({\n focusedIndex,\n provenance,\n tabs,\n}: Pick<NativeTabsViewProps, 'focusedIndex' | 'provenance' | 'tabs'>): {\n selectedScreenKey: string;\n provenance: number;\n} {\n const stableState = useMemo(() => ({ focusedIndex, provenance }), [focusedIndex, provenance]);\n const { focusedIndex: deferredFocusedIndex, provenance: deferredProvenance } =\n useDeferredValue(stableState);\n\n // We need to check if the deferred index is not out of bounds\n // This can happen when the focused index is the last tab, and user removes that tab\n // In that case the deferred index will still point to the last tab, but after re-render\n // it will be out of bounds\n const inBoundsDeferredFocusedIndex =\n deferredFocusedIndex < tabs.length ? deferredFocusedIndex : focusedIndex;\n\n return {\n selectedScreenKey: tabs[inBoundsDeferredFocusedIndex]!.routeKey,\n provenance: deferredProvenance,\n };\n}\n\nexport function useOnTabSelectedHandler(\n onTabChange: NativeTabsViewProps['onTabChange']\n): NonNullable<TabsHostProps['onTabSelected']> {\n return useCallback<NonNullable<TabsHostProps['onTabSelected']>>(\n ({ nativeEvent: { selectedScreenKey, provenance, actionOrigin } }) => {\n // Treat anything other than a JS-driven echo as a native action so the\n // navigator emits `tabPress` and dispatches `JUMP_TO`.\n const isNativeAction = actionOrigin !== 'programmatic-js';\n onTabChange({ selectedKey: selectedScreenKey, provenance, isNativeAction });\n },\n [onTabChange]\n );\n}\n\n/**\n * Cross-platform fields used to render a single tab screen. Each platform\n * extends this with its own appearance fields.\n */\nexport interface InternalTabScreenProps {\n routeKey: string;\n name: string;\n // TODO(@ubax): https://linear.app/expo/issue/ENG-20736/remove-pointerevents-from-nativetabsview\n isFocused: boolean;\n options: NativeTabOptions;\n contentRenderer: () => React.ReactNode;\n}\n\nexport function useSharedScreenProps(props: InternalTabScreenProps) {\n const { options, isFocused, name, routeKey } = props;\n const title = options.title ?? name;\n const {\n ios: nativeIosOverrides,\n android: nativeAndroidOverrides,\n ...nativeRestOverrides\n } = options.nativeProps ?? {};\n\n // We need to await the icon, as VectorIcon will load asynchronously\n const icon = useAwaitedScreensIcon(options.icon);\n const selectedIcon = useAwaitedScreensIcon(options.selectedIcon);\n\n return {\n options,\n // TODO(@ubax): https://linear.app/expo/issue/ENG-20736/remove-pointerevents-from-nativetabsview\n pointerEvents: (isFocused ? 'box-none' : 'none') as 'box-none' | 'none',\n title,\n nativeIosOverrides,\n nativeAndroidOverrides,\n nativeRestOverrides,\n screenKey: routeKey,\n icon,\n selectedIcon,\n };\n}\n\nexport function ScreenContent({\n options,\n contentRenderer,\n}: {\n options: NativeTabOptions;\n contentRenderer: () => React.ReactNode;\n}) {\n const { colors } = useTheme();\n return (\n <View\n // https://github.com/software-mansion/react-native-screens/issues/2662#issuecomment-2757735088\n collapsable={false}\n style={[\n { backgroundColor: colors.background },\n options.contentStyle,\n { flex: 1, position: 'relative', overflow: 'hidden' },\n ]}>\n {contentRenderer()}\n </View>\n );\n}\n"]}
@@ -19,7 +19,7 @@ export type NativeScreenProps = Partial<Omit<TabsScreenProps, 'screenKey'>>;
19
19
  /**
20
20
  * Props passed to the underlying tab host implementation in `react-native-screens`.
21
21
  */
22
- export type NativeTabsHostNativeProps = Partial<Omit<TabsHostProps, 'navState' | 'onTabSelected' | 'children'>>;
22
+ export type NativeTabsHostNativeProps = Partial<Omit<TabsHostProps, 'navStateRequest' | 'onTabSelected' | 'children'>>;
23
23
  export interface NativeTabOptions extends DefaultRouterOptions {
24
24
  icon?: SymbolOrImageSource;
25
25
  selectedIcon?: SymbolOrImageSource;
@@ -263,10 +263,10 @@ export interface OnTabChangeEventPayload {
263
263
  /**
264
264
  * The provenance value reported by the native side for this selection.
265
265
  *
266
- * The navigator echoes this back via `navState.provenance` on subsequent
267
- * JS-driven updates so the native side can distinguish stale updates from
268
- * fresh ones. See `TabsHostNavState` in `react-native-screens` for the full
269
- * contract.
266
+ * The navigator echoes this back via `navStateRequest.baseProvenance` on
267
+ * subsequent JS-driven updates so the native side can distinguish stale
268
+ * updates from fresh ones. See `TabsHostNavStateRequest` in
269
+ * `react-native-screens` for the full contract.
270
270
  */
271
271
  provenance: number;
272
272
  isNativeAction: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/native-tabs/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/native-tabs/types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/native-tabs/types.ts"],"names":[],"mappings":";;;AAmIa,QAAA,sBAAsB,GAAG;IACpC,MAAM;IACN,eAAe;IACf,YAAY;IACZ,OAAO;IACP,MAAM;IACN,SAAS;IACT,WAAW;IACX,yBAAyB;IACzB,oBAAoB;IACpB,gBAAgB;IAChB,qBAAqB;IACrB,sBAAsB;IACtB,8BAA8B;IAC9B,yBAAyB;IACzB,qBAAqB;IACrB,0BAA0B;IAC1B,2BAA2B;IAC3B,6BAA6B;IAC7B,wBAAwB;IACxB,oBAAoB;IACpB,yBAAyB;IACzB,0BAA0B;CAClB,CAAC;AAqOE,QAAA,6CAA6C,GAAG;IAC3D,MAAM;IACN,UAAU;IACV,SAAS;IACT,WAAW;CACH,CAAC;AAUE,QAAA,oCAAoC,GAAG;IAClD,WAAW;IACX,OAAO;IACP,cAAc;IACd,YAAY;CACJ,CAAC;AAiIX,MAAM,4BAA4B,GAAG;IACnC,WAAW;IACX,UAAU;IACV,WAAW;IACX,WAAW;IACX,UAAU;IACV,SAAS;IACT,MAAM;IACN,YAAY;IACZ,YAAY;IACZ,SAAS;IACT,QAAQ;IACR,UAAU;CACF,CAAC","sourcesContent":["import type { PropsWithChildren } from 'react';\nimport type {\n ColorValue,\n ImageSourcePropType,\n StyleProp,\n TextStyle,\n ViewStyle,\n} from 'react-native';\nimport type { TabsHostProps, TabsScreenProps } from 'react-native-screens';\nimport type { SFSymbol } from 'sf-symbols-typescript';\n\nimport type {\n DefaultRouterOptions,\n EventMapBase,\n NavigationState,\n ParamListBase,\n RouteProp,\n ScreenListeners,\n TabNavigationState,\n} from '../react-navigation/native';\n\n/**\n * Event map for `NativeTabs` navigation events.\n * Only `tabPress` is currently supported.\n */\nexport type NativeTabNavigationEventMap = {\n tabPress: { data: { __internalTabsType: 'native' }; canPreventDefault: false };\n};\n\nexport type NativeScreenProps = Partial<Omit<TabsScreenProps, 'screenKey'>>;\n\n/**\n * Props passed to the underlying tab host implementation in `react-native-screens`.\n */\nexport type NativeTabsHostNativeProps = Partial<\n Omit<TabsHostProps, 'navState' | 'onTabSelected' | 'children'>\n>;\n\nexport interface NativeTabOptions extends DefaultRouterOptions {\n icon?: SymbolOrImageSource;\n selectedIcon?: SymbolOrImageSource;\n title?: string;\n badgeValue?: string;\n selectedLabelStyle?: NativeTabsLabelStyle;\n labelStyle?: NativeTabsLabelStyle;\n role?: NativeTabsTabBarItemRole;\n selectedIconColor?: ColorValue;\n selectedBadgeBackgroundColor?: ColorValue;\n badgeBackgroundColor?: ColorValue;\n badgeTextColor?: ColorValue;\n backgroundColor?: ColorValue;\n blurEffect?: NativeTabsBlurEffect;\n shadowColor?: ColorValue;\n iconColor?: ColorValue;\n disableTransparentOnScrollEdge?: boolean;\n titlePositionAdjustment?: {\n horizontal?: number;\n vertical?: number;\n };\n selectedTitlePositionAdjustment?: {\n horizontal?: number;\n vertical?: number;\n };\n indicatorColor?: ColorValue;\n hidden?: boolean;\n specialEffects?: TabsScreenProps['specialEffects'];\n nativeProps?: NativeScreenProps;\n disableAutomaticContentInsets?: boolean;\n contentStyle?: Pick<\n ViewStyle,\n | 'backgroundColor'\n | 'experimental_backgroundImage'\n | 'padding'\n | 'paddingTop'\n | 'paddingBottom'\n | 'paddingLeft'\n | 'paddingRight'\n | 'paddingBlock'\n | 'paddingBlockEnd'\n | 'paddingBlockStart'\n | 'paddingInline'\n | 'paddingInlineEnd'\n | 'paddingInlineStart'\n | 'paddingEnd'\n | 'paddingHorizontal'\n | 'paddingVertical'\n | 'paddingStart'\n | 'alignContent'\n | 'alignItems'\n | 'justifyContent'\n | 'flexDirection'\n | 'gap'\n >;\n}\n\nexport type SymbolOrImageSource =\n | {\n /**\n * The name of the SF Symbol to use as an icon.\n * @platform iOS\n */\n sf?: SFSymbol;\n /**\n * The name of the iOS asset catalog image to use as an icon.\n * @platform iOS\n */\n xcasset?: string;\n /**\n * The name of the drawable resource to use as an icon.\n * @platform android\n */\n drawable?: string;\n }\n | {\n /**\n * The image source to use as an icon.\n */\n src?: ImageSourcePropType | Promise<ImageSourcePropType | null>;\n /**\n * Controls how the icon is rendered on iOS.\n * @platform ios\n * @default 'template'\n */\n renderingMode?: 'template' | 'original';\n };\n\nexport type NativeTabsLabelStyle = Pick<\n TextStyle,\n 'fontFamily' | 'fontSize' | 'fontStyle' | 'fontWeight' | 'color'\n>;\n\nexport const SUPPORTED_BLUR_EFFECTS = [\n 'none',\n 'systemDefault',\n 'extraLight',\n 'light',\n 'dark',\n 'regular',\n 'prominent',\n 'systemUltraThinMaterial',\n 'systemThinMaterial',\n 'systemMaterial',\n 'systemThickMaterial',\n 'systemChromeMaterial',\n 'systemUltraThinMaterialLight',\n 'systemThinMaterialLight',\n 'systemMaterialLight',\n 'systemThickMaterialLight',\n 'systemChromeMaterialLight',\n 'systemUltraThinMaterialDark',\n 'systemThinMaterialDark',\n 'systemMaterialDark',\n 'systemThickMaterialDark',\n 'systemChromeMaterialDark',\n] as const;\n\n/**\n * @see [Apple documentation](https://developer.apple.com/documentation/uikit/uiblureffect/style)\n */\nexport type NativeTabsBlurEffect = (typeof SUPPORTED_BLUR_EFFECTS)[number];\n\nexport interface NativeTabsProps extends PropsWithChildren {\n // #region common props\n /**\n * The style of the every tab label in the tab bar.\n */\n labelStyle?:\n | StyleProp<NativeTabsLabelStyle>\n | {\n default?: StyleProp<NativeTabsLabelStyle>;\n selected?: StyleProp<NativeTabsLabelStyle>;\n };\n /**\n * The color of every tab icon in the tab bar.\n */\n iconColor?: ColorValue | { default?: ColorValue; selected?: ColorValue };\n /**\n * The tint color of the tab icon.\n *\n * Can be overridden by icon color and label color for each tab individually.\n */\n tintColor?: ColorValue;\n /**\n * The background color of the tab bar.\n */\n backgroundColor?: ColorValue;\n /**\n * The background color of every badge in the tab bar.\n */\n badgeBackgroundColor?: ColorValue;\n /**\n * When set to `true`, hides the tab bar.\n *\n * @default false\n */\n hidden?: boolean;\n // #endregion common props\n // #region iOS props\n /**\n * Specifies the minimize behavior for the tab bar.\n *\n * Available starting from iOS 26.\n *\n * The following values are currently supported:\n *\n * - `automatic` - resolves to the system default minimize behavior\n * - `never` - the tab bar does not minimize\n * - `onScrollDown` - the tab bar minimizes when scrolling down and\n * expands when scrolling back up\n * - `onScrollUp` - the tab bar minimizes when scrolling up and expands\n * when scrolling back down\n *\n * @see The supported values correspond to the official [Apple documentation](https://developer.apple.com/documentation/uikit/uitabbarcontroller/minimizebehavior).\n *\n * @default automatic\n *\n * @platform iOS 26+\n */\n minimizeBehavior?: NativeTabsTabBarMinimizeBehavior;\n /**\n * The blur effect applied to the tab bar.\n *\n * @platform iOS\n */\n blurEffect?: NativeTabsBlurEffect;\n /**\n * The color of the shadow.\n *\n * @see [Apple documentation](https://developer.apple.com/documentation/uikit/uibarappearance/shadowcolor)\n *\n * @platform iOS\n */\n shadowColor?: ColorValue;\n /**\n * @see [Apple documentation](https://developer.apple.com/documentation/uikit/uitabbaritem/titlepositionadjustment)\n *\n * @platform iOS\n */\n titlePositionAdjustment?: {\n horizontal?: number;\n vertical?: number;\n };\n /**\n * When set to `true`, the tab bar will not become transparent when scrolled to the edge.\n *\n * @platform iOS\n */\n disableTransparentOnScrollEdge?: boolean;\n /**\n * When set to `true`, enables the sidebarAdaptable tab bar style on iPadOS and macOS. This prop has no effect on iPhone.\n *\n * @platform iOS 18+\n */\n sidebarAdaptable?: boolean;\n // #endregion iOS props\n // #region android props\n /**\n * Disables the active indicator for the tab bar.\n *\n * @platform android\n */\n disableIndicator?: boolean;\n /**\n * The behavior when navigating back with the back button.\n *\n * @platform android\n */\n backBehavior?: 'none' | 'initialRoute' | 'history';\n /**\n * The visibility mode of the tab item label.\n *\n * @see [Material Components documentation](https://github.com/material-components/material-components-android/blob/master/docs/components/BottomNavigation.md#making-navigation-bar-accessible)\n *\n * @platform android\n */\n labelVisibilityMode?: NativeTabsTabBarItemLabelVisibilityMode;\n /**\n * The color of the ripple effect when the tab is pressed.\n *\n * @platform android\n */\n rippleColor?: ColorValue;\n /**\n * The color of the tab indicator.\n *\n * @platform android\n * @platform web\n */\n indicatorColor?: ColorValue;\n /**\n * The color of the badge text.\n *\n * @platform android\n * @platform web\n */\n badgeTextColor?: ColorValue;\n // #endregion android props\n /**\n * Listeners for navigation events on all tabs.\n *\n * Supported events:\n * - `tabPress` - called when a tab is pressed\n * - `focus` - called when the screen comes into focus\n * - `blur` - called when the screen loses focus\n *\n * @example\n * ```tsx\n * <NativeTabs\n * screenListeners={{\n * tabPress: (e) => {\n * console.log('Any tab pressed');\n * },\n * }}\n * >\n * ...\n * </NativeTabs>\n * ```\n */\n screenListeners?:\n | ScreenListeners<TabNavigationState<ParamListBase>, NativeTabNavigationEventMap>\n | ((prop: {\n route: RouteProp<ParamListBase, string>;\n }) => ScreenListeners<TabNavigationState<ParamListBase>, NativeTabNavigationEventMap>);\n /**\n * Props passed to the underlying native tab host implementation in `react-native-screens`.\n * Use this to configure props that are not directly exposed by Expo Router.\n *\n * > **Note**: This is an unstable API and may change or be removed in minor versions.\n *\n * @platform android\n * @platform ios\n */\n unstable_nativeProps?: NativeTabsHostNativeProps;\n}\n\nexport interface InternalNativeTabsProps extends NativeTabsProps {\n nonTriggerChildren?: React.ReactNode;\n}\nexport interface OnTabChangeEventPayload {\n /**\n * The route key of the tab the native side has just selected.\n */\n selectedKey: string;\n /**\n * The provenance value reported by the native side for this selection.\n *\n * The navigator echoes this back via `navState.provenance` on subsequent\n * JS-driven updates so the native side can distinguish stale updates from\n * fresh ones. See `TabsHostNavState` in `react-native-screens` for the full\n * contract.\n */\n provenance: number;\n // TODO(@ubax): consider renaming this field\n isNativeAction: boolean;\n}\n\nexport interface NativeTabsViewProps\n extends Omit<\n InternalNativeTabsProps,\n | 'labelStyle'\n | 'iconColor'\n | 'backgroundColor'\n | 'badgeBackgroundColor'\n | 'blurEffect'\n | 'indicatorColor'\n | 'badgeTextColor'\n > {\n focusedIndex: number;\n /**\n * Provenance counter associated with the currently rendered `focusedIndex`.\n */\n provenance: number;\n tabs: NativeTabsViewTabItem[];\n onTabChange: (event: OnTabChangeEventPayload) => void;\n}\n\nexport interface NativeTabsViewTabItem {\n options: NativeTabOptions;\n routeKey: string;\n name: string;\n contentRenderer: () => React.ReactNode;\n}\n\nexport const SUPPORTED_TAB_BAR_ITEM_LABEL_VISIBILITY_MODES = [\n 'auto',\n 'selected',\n 'labeled',\n 'unlabeled',\n] as const;\n\n/**\n * @see [Material Components documentation](https://github.com/material-components/material-components-android/blob/master/docs/components/BottomNavigation.md#making-navigation-bar-accessible)\n *\n * @platform android\n */\nexport type NativeTabsTabBarItemLabelVisibilityMode =\n (typeof SUPPORTED_TAB_BAR_ITEM_LABEL_VISIBILITY_MODES)[number];\n\nexport const SUPPORTED_TAB_BAR_MINIMIZE_BEHAVIORS = [\n 'automatic',\n 'never',\n 'onScrollDown',\n 'onScrollUp',\n] as const;\n\n/**\n * @see [Apple documentation](https://developer.apple.com/documentation/uikit/uitabbarcontroller/minimizebehavior)\n *\n * @platform iOS 26\n */\nexport type NativeTabsTabBarMinimizeBehavior =\n (typeof SUPPORTED_TAB_BAR_MINIMIZE_BEHAVIORS)[number];\n\nexport interface NativeTabTriggerProps {\n /**\n * The name of the route.\n *\n * This is required when used inside a Layout component.\n *\n * When used in a route it has no effect.\n */\n name?: string;\n /**\n * If true, the tab will be hidden from the tab bar.\n *\n * > **Note**: Marking a tab as `hidden` means it cannot be navigated to in any way.\n *\n * > **Note**: Dynamically hiding tabs will remount the navigator and the state will be reset.\n */\n hidden?: boolean;\n /**\n * Props passed to the underlying native tab screen implementation.\n * Use this to configure props not directly exposed by Expo Router, but available in `react-native-screens`.\n *\n * > **Note**: This will override any other props set by Expo Router and may lead to unexpected behavior.\n *\n * > **Note**: This is an unstable API and may change or be removed in minor versions.\n *\n * @platform android\n * @platform iOS\n */\n unstable_nativeProps?: NativeScreenProps;\n /**\n * If true, the tab will not pop stack to the root when selected again.\n *\n * @default false\n * @platform iOS\n */\n disablePopToTop?: boolean;\n /**\n * If true, the tab will not scroll to the top when selected again.\n * @default false\n *\n * @platform iOS\n */\n disableScrollToTop?: boolean;\n /**\n * The children of the trigger.\n *\n * Use `Icon`, `Label`, and `Badge` components to customize the tab.\n */\n children?: React.ReactNode;\n /**\n * System-provided tab bar item with predefined icon and title\n *\n * Uses Apple's built-in tab bar items (e.g., bookmarks, contacts, downloads) with\n * standard iOS styling and localized titles. Custom `icon` or `selectedIcon`\n * properties will override the system icon, but the system-defined title cannot\n * be customized.\n *\n * @see The supported values correspond to the official [Apple documentation](https://developer.apple.com/documentation/uikit/uitabbaritem/systemitem).\n * @platform ios\n */\n role?: NativeTabsTabBarItemRole;\n /**\n * The default behavior differs between iOS and Android.\n *\n * On **Android**, the content of a native tabs screen is automatically wrapped in a `SafeAreaView`,\n * and the **bottom** inset is applied. Other insets must be handled manually.\n *\n * On **iOS**, the first scroll view nested inside a native tabs screen has\n * [automatic content inset adjustment](https://reactnative.dev/docs/scrollview#contentinsetadjustmentbehavior-ios) enabled\n *\n * When this property is set to `true`, automatic content inset adjustment is disabled for the screen\n * and must be managed manually. You can use `SafeAreaView` from `react-native-screens/experimental`\n * to handle safe area insets.\n *\n * @platform android\n * @platform ios\n */\n disableAutomaticContentInsets?: boolean;\n /**\n * The style applied to the content of the tab\n *\n * Note: Only certain style properties are supported.\n */\n contentStyle?: NativeTabOptions['contentStyle'];\n /**\n * When set to `true`, the tab bar will not become transparent when scrolled to the edge.\n *\n * When set on a trigger, it takes precedence over the value set on `NativeTabs`.\n *\n * @platform iOS\n */\n disableTransparentOnScrollEdge?: boolean;\n /**\n * Listeners for navigation events on this tab.\n *\n * Supported events:\n * - `tabPress` - called when this tab is pressed\n * - `focus` - called when this screen comes into focus\n * - `blur` - called when this screen loses focus\n *\n * @example\n * ```tsx\n * <NativeTabs.Trigger\n * name=\"home\"\n * listeners={{\n * tabPress: (e) => {\n * console.log('Home tab pressed');\n * },\n * }}\n * />\n * ```\n */\n listeners?:\n | ScreenListeners<NavigationState, EventMapBase>\n | ((prop: {\n route: RouteProp<ParamListBase, string>;\n }) => ScreenListeners<NavigationState, EventMapBase>);\n}\n\nconst SUPPORTED_TAB_BAR_ITEM_ROLES = [\n 'bookmarks',\n 'contacts',\n 'downloads',\n 'favorites',\n 'featured',\n 'history',\n 'more',\n 'mostRecent',\n 'mostViewed',\n 'recents',\n 'search',\n 'topRated',\n] as const;\n\nexport type NativeTabsTabBarItemRole = (typeof SUPPORTED_TAB_BAR_ITEM_ROLES)[number];\n"]}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/native-tabs/types.ts"],"names":[],"mappings":";;;AAmIa,QAAA,sBAAsB,GAAG;IACpC,MAAM;IACN,eAAe;IACf,YAAY;IACZ,OAAO;IACP,MAAM;IACN,SAAS;IACT,WAAW;IACX,yBAAyB;IACzB,oBAAoB;IACpB,gBAAgB;IAChB,qBAAqB;IACrB,sBAAsB;IACtB,8BAA8B;IAC9B,yBAAyB;IACzB,qBAAqB;IACrB,0BAA0B;IAC1B,2BAA2B;IAC3B,6BAA6B;IAC7B,wBAAwB;IACxB,oBAAoB;IACpB,yBAAyB;IACzB,0BAA0B;CAClB,CAAC;AAqOE,QAAA,6CAA6C,GAAG;IAC3D,MAAM;IACN,UAAU;IACV,SAAS;IACT,WAAW;CACH,CAAC;AAUE,QAAA,oCAAoC,GAAG;IAClD,WAAW;IACX,OAAO;IACP,cAAc;IACd,YAAY;CACJ,CAAC;AAiIX,MAAM,4BAA4B,GAAG;IACnC,WAAW;IACX,UAAU;IACV,WAAW;IACX,WAAW;IACX,UAAU;IACV,SAAS;IACT,MAAM;IACN,YAAY;IACZ,YAAY;IACZ,SAAS;IACT,QAAQ;IACR,UAAU;CACF,CAAC","sourcesContent":["import type { PropsWithChildren } from 'react';\nimport type {\n ColorValue,\n ImageSourcePropType,\n StyleProp,\n TextStyle,\n ViewStyle,\n} from 'react-native';\nimport type { TabsHostProps, TabsScreenProps } from 'react-native-screens';\nimport type { SFSymbol } from 'sf-symbols-typescript';\n\nimport type {\n DefaultRouterOptions,\n EventMapBase,\n NavigationState,\n ParamListBase,\n RouteProp,\n ScreenListeners,\n TabNavigationState,\n} from '../react-navigation/native';\n\n/**\n * Event map for `NativeTabs` navigation events.\n * Only `tabPress` is currently supported.\n */\nexport type NativeTabNavigationEventMap = {\n tabPress: { data: { __internalTabsType: 'native' }; canPreventDefault: false };\n};\n\nexport type NativeScreenProps = Partial<Omit<TabsScreenProps, 'screenKey'>>;\n\n/**\n * Props passed to the underlying tab host implementation in `react-native-screens`.\n */\nexport type NativeTabsHostNativeProps = Partial<\n Omit<TabsHostProps, 'navStateRequest' | 'onTabSelected' | 'children'>\n>;\n\nexport interface NativeTabOptions extends DefaultRouterOptions {\n icon?: SymbolOrImageSource;\n selectedIcon?: SymbolOrImageSource;\n title?: string;\n badgeValue?: string;\n selectedLabelStyle?: NativeTabsLabelStyle;\n labelStyle?: NativeTabsLabelStyle;\n role?: NativeTabsTabBarItemRole;\n selectedIconColor?: ColorValue;\n selectedBadgeBackgroundColor?: ColorValue;\n badgeBackgroundColor?: ColorValue;\n badgeTextColor?: ColorValue;\n backgroundColor?: ColorValue;\n blurEffect?: NativeTabsBlurEffect;\n shadowColor?: ColorValue;\n iconColor?: ColorValue;\n disableTransparentOnScrollEdge?: boolean;\n titlePositionAdjustment?: {\n horizontal?: number;\n vertical?: number;\n };\n selectedTitlePositionAdjustment?: {\n horizontal?: number;\n vertical?: number;\n };\n indicatorColor?: ColorValue;\n hidden?: boolean;\n specialEffects?: TabsScreenProps['specialEffects'];\n nativeProps?: NativeScreenProps;\n disableAutomaticContentInsets?: boolean;\n contentStyle?: Pick<\n ViewStyle,\n | 'backgroundColor'\n | 'experimental_backgroundImage'\n | 'padding'\n | 'paddingTop'\n | 'paddingBottom'\n | 'paddingLeft'\n | 'paddingRight'\n | 'paddingBlock'\n | 'paddingBlockEnd'\n | 'paddingBlockStart'\n | 'paddingInline'\n | 'paddingInlineEnd'\n | 'paddingInlineStart'\n | 'paddingEnd'\n | 'paddingHorizontal'\n | 'paddingVertical'\n | 'paddingStart'\n | 'alignContent'\n | 'alignItems'\n | 'justifyContent'\n | 'flexDirection'\n | 'gap'\n >;\n}\n\nexport type SymbolOrImageSource =\n | {\n /**\n * The name of the SF Symbol to use as an icon.\n * @platform iOS\n */\n sf?: SFSymbol;\n /**\n * The name of the iOS asset catalog image to use as an icon.\n * @platform iOS\n */\n xcasset?: string;\n /**\n * The name of the drawable resource to use as an icon.\n * @platform android\n */\n drawable?: string;\n }\n | {\n /**\n * The image source to use as an icon.\n */\n src?: ImageSourcePropType | Promise<ImageSourcePropType | null>;\n /**\n * Controls how the icon is rendered on iOS.\n * @platform ios\n * @default 'template'\n */\n renderingMode?: 'template' | 'original';\n };\n\nexport type NativeTabsLabelStyle = Pick<\n TextStyle,\n 'fontFamily' | 'fontSize' | 'fontStyle' | 'fontWeight' | 'color'\n>;\n\nexport const SUPPORTED_BLUR_EFFECTS = [\n 'none',\n 'systemDefault',\n 'extraLight',\n 'light',\n 'dark',\n 'regular',\n 'prominent',\n 'systemUltraThinMaterial',\n 'systemThinMaterial',\n 'systemMaterial',\n 'systemThickMaterial',\n 'systemChromeMaterial',\n 'systemUltraThinMaterialLight',\n 'systemThinMaterialLight',\n 'systemMaterialLight',\n 'systemThickMaterialLight',\n 'systemChromeMaterialLight',\n 'systemUltraThinMaterialDark',\n 'systemThinMaterialDark',\n 'systemMaterialDark',\n 'systemThickMaterialDark',\n 'systemChromeMaterialDark',\n] as const;\n\n/**\n * @see [Apple documentation](https://developer.apple.com/documentation/uikit/uiblureffect/style)\n */\nexport type NativeTabsBlurEffect = (typeof SUPPORTED_BLUR_EFFECTS)[number];\n\nexport interface NativeTabsProps extends PropsWithChildren {\n // #region common props\n /**\n * The style of the every tab label in the tab bar.\n */\n labelStyle?:\n | StyleProp<NativeTabsLabelStyle>\n | {\n default?: StyleProp<NativeTabsLabelStyle>;\n selected?: StyleProp<NativeTabsLabelStyle>;\n };\n /**\n * The color of every tab icon in the tab bar.\n */\n iconColor?: ColorValue | { default?: ColorValue; selected?: ColorValue };\n /**\n * The tint color of the tab icon.\n *\n * Can be overridden by icon color and label color for each tab individually.\n */\n tintColor?: ColorValue;\n /**\n * The background color of the tab bar.\n */\n backgroundColor?: ColorValue;\n /**\n * The background color of every badge in the tab bar.\n */\n badgeBackgroundColor?: ColorValue;\n /**\n * When set to `true`, hides the tab bar.\n *\n * @default false\n */\n hidden?: boolean;\n // #endregion common props\n // #region iOS props\n /**\n * Specifies the minimize behavior for the tab bar.\n *\n * Available starting from iOS 26.\n *\n * The following values are currently supported:\n *\n * - `automatic` - resolves to the system default minimize behavior\n * - `never` - the tab bar does not minimize\n * - `onScrollDown` - the tab bar minimizes when scrolling down and\n * expands when scrolling back up\n * - `onScrollUp` - the tab bar minimizes when scrolling up and expands\n * when scrolling back down\n *\n * @see The supported values correspond to the official [Apple documentation](https://developer.apple.com/documentation/uikit/uitabbarcontroller/minimizebehavior).\n *\n * @default automatic\n *\n * @platform iOS 26+\n */\n minimizeBehavior?: NativeTabsTabBarMinimizeBehavior;\n /**\n * The blur effect applied to the tab bar.\n *\n * @platform iOS\n */\n blurEffect?: NativeTabsBlurEffect;\n /**\n * The color of the shadow.\n *\n * @see [Apple documentation](https://developer.apple.com/documentation/uikit/uibarappearance/shadowcolor)\n *\n * @platform iOS\n */\n shadowColor?: ColorValue;\n /**\n * @see [Apple documentation](https://developer.apple.com/documentation/uikit/uitabbaritem/titlepositionadjustment)\n *\n * @platform iOS\n */\n titlePositionAdjustment?: {\n horizontal?: number;\n vertical?: number;\n };\n /**\n * When set to `true`, the tab bar will not become transparent when scrolled to the edge.\n *\n * @platform iOS\n */\n disableTransparentOnScrollEdge?: boolean;\n /**\n * When set to `true`, enables the sidebarAdaptable tab bar style on iPadOS and macOS. This prop has no effect on iPhone.\n *\n * @platform iOS 18+\n */\n sidebarAdaptable?: boolean;\n // #endregion iOS props\n // #region android props\n /**\n * Disables the active indicator for the tab bar.\n *\n * @platform android\n */\n disableIndicator?: boolean;\n /**\n * The behavior when navigating back with the back button.\n *\n * @platform android\n */\n backBehavior?: 'none' | 'initialRoute' | 'history';\n /**\n * The visibility mode of the tab item label.\n *\n * @see [Material Components documentation](https://github.com/material-components/material-components-android/blob/master/docs/components/BottomNavigation.md#making-navigation-bar-accessible)\n *\n * @platform android\n */\n labelVisibilityMode?: NativeTabsTabBarItemLabelVisibilityMode;\n /**\n * The color of the ripple effect when the tab is pressed.\n *\n * @platform android\n */\n rippleColor?: ColorValue;\n /**\n * The color of the tab indicator.\n *\n * @platform android\n * @platform web\n */\n indicatorColor?: ColorValue;\n /**\n * The color of the badge text.\n *\n * @platform android\n * @platform web\n */\n badgeTextColor?: ColorValue;\n // #endregion android props\n /**\n * Listeners for navigation events on all tabs.\n *\n * Supported events:\n * - `tabPress` - called when a tab is pressed\n * - `focus` - called when the screen comes into focus\n * - `blur` - called when the screen loses focus\n *\n * @example\n * ```tsx\n * <NativeTabs\n * screenListeners={{\n * tabPress: (e) => {\n * console.log('Any tab pressed');\n * },\n * }}\n * >\n * ...\n * </NativeTabs>\n * ```\n */\n screenListeners?:\n | ScreenListeners<TabNavigationState<ParamListBase>, NativeTabNavigationEventMap>\n | ((prop: {\n route: RouteProp<ParamListBase, string>;\n }) => ScreenListeners<TabNavigationState<ParamListBase>, NativeTabNavigationEventMap>);\n /**\n * Props passed to the underlying native tab host implementation in `react-native-screens`.\n * Use this to configure props that are not directly exposed by Expo Router.\n *\n * > **Note**: This is an unstable API and may change or be removed in minor versions.\n *\n * @platform android\n * @platform ios\n */\n unstable_nativeProps?: NativeTabsHostNativeProps;\n}\n\nexport interface InternalNativeTabsProps extends NativeTabsProps {\n nonTriggerChildren?: React.ReactNode;\n}\nexport interface OnTabChangeEventPayload {\n /**\n * The route key of the tab the native side has just selected.\n */\n selectedKey: string;\n /**\n * The provenance value reported by the native side for this selection.\n *\n * The navigator echoes this back via `navStateRequest.baseProvenance` on\n * subsequent JS-driven updates so the native side can distinguish stale\n * updates from fresh ones. See `TabsHostNavStateRequest` in\n * `react-native-screens` for the full contract.\n */\n provenance: number;\n // TODO(@ubax): consider renaming this field\n isNativeAction: boolean;\n}\n\nexport interface NativeTabsViewProps\n extends Omit<\n InternalNativeTabsProps,\n | 'labelStyle'\n | 'iconColor'\n | 'backgroundColor'\n | 'badgeBackgroundColor'\n | 'blurEffect'\n | 'indicatorColor'\n | 'badgeTextColor'\n > {\n focusedIndex: number;\n /**\n * Provenance counter associated with the currently rendered `focusedIndex`.\n */\n provenance: number;\n tabs: NativeTabsViewTabItem[];\n onTabChange: (event: OnTabChangeEventPayload) => void;\n}\n\nexport interface NativeTabsViewTabItem {\n options: NativeTabOptions;\n routeKey: string;\n name: string;\n contentRenderer: () => React.ReactNode;\n}\n\nexport const SUPPORTED_TAB_BAR_ITEM_LABEL_VISIBILITY_MODES = [\n 'auto',\n 'selected',\n 'labeled',\n 'unlabeled',\n] as const;\n\n/**\n * @see [Material Components documentation](https://github.com/material-components/material-components-android/blob/master/docs/components/BottomNavigation.md#making-navigation-bar-accessible)\n *\n * @platform android\n */\nexport type NativeTabsTabBarItemLabelVisibilityMode =\n (typeof SUPPORTED_TAB_BAR_ITEM_LABEL_VISIBILITY_MODES)[number];\n\nexport const SUPPORTED_TAB_BAR_MINIMIZE_BEHAVIORS = [\n 'automatic',\n 'never',\n 'onScrollDown',\n 'onScrollUp',\n] as const;\n\n/**\n * @see [Apple documentation](https://developer.apple.com/documentation/uikit/uitabbarcontroller/minimizebehavior)\n *\n * @platform iOS 26\n */\nexport type NativeTabsTabBarMinimizeBehavior =\n (typeof SUPPORTED_TAB_BAR_MINIMIZE_BEHAVIORS)[number];\n\nexport interface NativeTabTriggerProps {\n /**\n * The name of the route.\n *\n * This is required when used inside a Layout component.\n *\n * When used in a route it has no effect.\n */\n name?: string;\n /**\n * If true, the tab will be hidden from the tab bar.\n *\n * > **Note**: Marking a tab as `hidden` means it cannot be navigated to in any way.\n *\n * > **Note**: Dynamically hiding tabs will remount the navigator and the state will be reset.\n */\n hidden?: boolean;\n /**\n * Props passed to the underlying native tab screen implementation.\n * Use this to configure props not directly exposed by Expo Router, but available in `react-native-screens`.\n *\n * > **Note**: This will override any other props set by Expo Router and may lead to unexpected behavior.\n *\n * > **Note**: This is an unstable API and may change or be removed in minor versions.\n *\n * @platform android\n * @platform iOS\n */\n unstable_nativeProps?: NativeScreenProps;\n /**\n * If true, the tab will not pop stack to the root when selected again.\n *\n * @default false\n * @platform iOS\n */\n disablePopToTop?: boolean;\n /**\n * If true, the tab will not scroll to the top when selected again.\n * @default false\n *\n * @platform iOS\n */\n disableScrollToTop?: boolean;\n /**\n * The children of the trigger.\n *\n * Use `Icon`, `Label`, and `Badge` components to customize the tab.\n */\n children?: React.ReactNode;\n /**\n * System-provided tab bar item with predefined icon and title\n *\n * Uses Apple's built-in tab bar items (e.g., bookmarks, contacts, downloads) with\n * standard iOS styling and localized titles. Custom `icon` or `selectedIcon`\n * properties will override the system icon, but the system-defined title cannot\n * be customized.\n *\n * @see The supported values correspond to the official [Apple documentation](https://developer.apple.com/documentation/uikit/uitabbaritem/systemitem).\n * @platform ios\n */\n role?: NativeTabsTabBarItemRole;\n /**\n * The default behavior differs between iOS and Android.\n *\n * On **Android**, the content of a native tabs screen is automatically wrapped in a `SafeAreaView`,\n * and the **bottom** inset is applied. Other insets must be handled manually.\n *\n * On **iOS**, the first scroll view nested inside a native tabs screen has\n * [automatic content inset adjustment](https://reactnative.dev/docs/scrollview#contentinsetadjustmentbehavior-ios) enabled\n *\n * When this property is set to `true`, automatic content inset adjustment is disabled for the screen\n * and must be managed manually. You can use `SafeAreaView` from `react-native-screens/experimental`\n * to handle safe area insets.\n *\n * @platform android\n * @platform ios\n */\n disableAutomaticContentInsets?: boolean;\n /**\n * The style applied to the content of the tab\n *\n * Note: Only certain style properties are supported.\n */\n contentStyle?: NativeTabOptions['contentStyle'];\n /**\n * When set to `true`, the tab bar will not become transparent when scrolled to the edge.\n *\n * When set on a trigger, it takes precedence over the value set on `NativeTabs`.\n *\n * @platform iOS\n */\n disableTransparentOnScrollEdge?: boolean;\n /**\n * Listeners for navigation events on this tab.\n *\n * Supported events:\n * - `tabPress` - called when this tab is pressed\n * - `focus` - called when this screen comes into focus\n * - `blur` - called when this screen loses focus\n *\n * @example\n * ```tsx\n * <NativeTabs.Trigger\n * name=\"home\"\n * listeners={{\n * tabPress: (e) => {\n * console.log('Home tab pressed');\n * },\n * }}\n * />\n * ```\n */\n listeners?:\n | ScreenListeners<NavigationState, EventMapBase>\n | ((prop: {\n route: RouteProp<ParamListBase, string>;\n }) => ScreenListeners<NavigationState, EventMapBase>);\n}\n\nconst SUPPORTED_TAB_BAR_ITEM_ROLES = [\n 'bookmarks',\n 'contacts',\n 'downloads',\n 'favorites',\n 'featured',\n 'history',\n 'more',\n 'mostRecent',\n 'mostViewed',\n 'recents',\n 'search',\n 'topRated',\n] as const;\n\nexport type NativeTabsTabBarItemRole = (typeof SUPPORTED_TAB_BAR_ITEM_ROLES)[number];\n"]}
@@ -122,8 +122,7 @@ export { useNavigationState } from './useNavigationState';
122
122
  export { usePreventRemove } from './usePreventRemove';
123
123
  export { usePreventRemoveContext } from './usePreventRemoveContext';
124
124
  /**
125
- * @deprecated Inside an Expo Router screen, prefer hooks like `useLocalSearchParams()`,
126
- * `usePathname()`, and `useSegments()` from `expo-router`. Will be removed in a future SDK.
125
+ * @deprecated Import `useRoute` from `expo-router` instead. Will be removed in a future SDK.
127
126
  */
128
127
  export { useRoute } from './useRoute';
129
128
  export { useStateForPath } from './useStateForPath';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/react-navigation/core/index.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,4BAA4B,EAAE,MAAM,gCAAgC,CAAC;AAC9E,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE;;GAEG;AACH,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D;;GAEG;AACH,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD;;GAEG;AACH,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D;;GAEG;AACH,OAAO,EAAE,4BAA4B,EAAE,MAAM,gCAAgC,CAAC;AAC9E;;GAEG;AACH,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD;;GAEG;AACH,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD;;GAEG;AACH,OAAO,EAAE,6BAA6B,EAAE,MAAM,iCAAiC,CAAC;AAChF;;GAEG;AACH,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD;;GAEG;AACH,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AACxE;;GAEG;AACH,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D;;GAEG;AACH,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO;AACL;;GAEG;AACH,kCAAkC;AAClC;;GAEG;AACH,mCAAmC;AACnC;;GAEG;AACH,KAAK,YAAY;AACjB;;GAEG;AACH,KAAK,iBAAiB;AACtB;;GAEG;AACH,KAAK,mBAAmB;AACxB;;GAEG;AACH,KAAK,gBAAgB;AACrB;;GAEG;AACH,KAAK,eAAe;AACpB;;GAEG;AACH,KAAK,iBAAiB,GACvB,MAAM,oBAAoB,CAAC;AAC5B;;GAEG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD;;GAEG;AACH,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD;;GAEG;AACH,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,cAAc,SAAS,CAAC;AACxB;;;GAGG;AACH,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD;;GAEG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C;;GAEG;AACH,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D;;GAEG;AACH,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,EAAE,4BAA4B,EAAE,MAAM,gCAAgC,CAAC;AAC9E,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACpE;;;GAGG;AACH,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD;;GAEG;AACH,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,cAAc,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/react-navigation/core/index.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,4BAA4B,EAAE,MAAM,gCAAgC,CAAC;AAC9E,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE;;GAEG;AACH,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D;;GAEG;AACH,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD;;GAEG;AACH,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D;;GAEG;AACH,OAAO,EAAE,4BAA4B,EAAE,MAAM,gCAAgC,CAAC;AAC9E;;GAEG;AACH,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD;;GAEG;AACH,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD;;GAEG;AACH,OAAO,EAAE,6BAA6B,EAAE,MAAM,iCAAiC,CAAC;AAChF;;GAEG;AACH,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD;;GAEG;AACH,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AACxE;;GAEG;AACH,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D;;GAEG;AACH,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO;AACL;;GAEG;AACH,kCAAkC;AAClC;;GAEG;AACH,mCAAmC;AACnC;;GAEG;AACH,KAAK,YAAY;AACjB;;GAEG;AACH,KAAK,iBAAiB;AACtB;;GAEG;AACH,KAAK,mBAAmB;AACxB;;GAEG;AACH,KAAK,gBAAgB;AACrB;;GAEG;AACH,KAAK,eAAe;AACpB;;GAEG;AACH,KAAK,iBAAiB,GACvB,MAAM,oBAAoB,CAAC;AAC5B;;GAEG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD;;GAEG;AACH,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD;;GAEG;AACH,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,cAAc,SAAS,CAAC;AACxB;;;GAGG;AACH,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD;;GAEG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C;;GAEG;AACH,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D;;GAEG;AACH,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,EAAE,4BAA4B,EAAE,MAAM,gCAAgC,CAAC;AAC9E,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACpE;;GAEG;AACH,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD;;GAEG;AACH,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,cAAc,YAAY,CAAC"}
@@ -145,8 +145,7 @@ Object.defineProperty(exports, "usePreventRemove", { enumerable: true, get: func
145
145
  var usePreventRemoveContext_1 = require("./usePreventRemoveContext");
146
146
  Object.defineProperty(exports, "usePreventRemoveContext", { enumerable: true, get: function () { return usePreventRemoveContext_1.usePreventRemoveContext; } });
147
147
  /**
148
- * @deprecated Inside an Expo Router screen, prefer hooks like `useLocalSearchParams()`,
149
- * `usePathname()`, and `useSegments()` from `expo-router`. Will be removed in a future SDK.
148
+ * @deprecated Import `useRoute` from `expo-router` instead. Will be removed in a future SDK.
150
149
  */
151
150
  var useRoute_1 = require("./useRoute");
152
151
  Object.defineProperty(exports, "useRoute", { enumerable: true, get: function () { return useRoute_1.useRoute; } });
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/react-navigation/core/index.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA;;;GAGG;AACH,qEAAoE;AAA3D,kIAAA,uBAAuB,OAAA;AAChC,+EAA8E;AAArE,4IAAA,4BAA4B,OAAA;AACrC,mEAAkE;AAAzD,gIAAA,sBAAsB,OAAA;AAC/B;;GAEG;AACH,+DAA8D;AAArD,4HAAA,oBAAoB,OAAA;AAC7B;;GAEG;AACH,uDAAsD;AAA7C,oHAAA,gBAAgB,OAAA;AACzB;;GAEG;AACH,2DAA0D;AAAjD,wHAAA,kBAAkB,OAAA;AAC3B;;GAEG;AACH,+EAA8E;AAArE,4IAAA,4BAA4B,OAAA;AACrC;;GAEG;AACH,uDAAsD;AAA7C,oHAAA,gBAAgB,OAAA;AACzB;;GAEG;AACH,uDAAsD;AAA7C,oHAAA,gBAAgB,OAAA;AACzB;;GAEG;AACH,iFAAgF;AAAvE,8IAAA,6BAA6B,OAAA;AACtC;;GAEG;AACH,yDAAwD;AAA/C,sHAAA,iBAAiB,OAAA;AAC1B;;GAEG;AACH,uEAAsE;AAA7D,oIAAA,wBAAwB,OAAA;AACjC,yEAAwE;AAA/D,sIAAA,yBAAyB,OAAA;AAClC;;GAEG;AACH,iEAAgE;AAAvD,8HAAA,qBAAqB,OAAA;AAC9B,2DAA0D;AAAjD,wHAAA,kBAAkB,OAAA;AAC3B;;GAEG;AACH,2DAA8D;AAArD,4HAAA,sBAAsB,OAAA;AAC/B,+DAA8D;AAArD,4HAAA,oBAAoB,OAAA;AAC7B,iEAAgE;AAAvD,8HAAA,qBAAqB,OAAA;AAC9B,uDAiC4B;AAhC1B;;GAEG;AACH,sIAAA,kCAAkC,OAAA;AAClC;;GAEG;AACH,uIAAA,mCAAmC,OAAA;AA0BrC;;GAEG;AACH,uDAAsD;AAA7C,4GAAA,YAAY,OAAA;AACrB;;GAEG;AACH,yDAAwD;AAA/C,8GAAA,aAAa,OAAA;AACtB;;GAEG;AACH,+CAA8C;AAArC,oGAAA,QAAQ,OAAA;AACjB,0CAAwB;AACxB;;;GAGG;AACH,mDAAkD;AAAzC,gHAAA,cAAc,OAAA;AACvB;;GAEG;AACH,+CAA8C;AAArC,4GAAA,YAAY,OAAA;AACrB;;GAEG;AACH,iDAAgD;AAAvC,8GAAA,aAAa,OAAA;AACtB,+DAA8D;AAArD,4HAAA,oBAAoB,OAAA;AAC7B;;GAEG;AACH,yEAAwE;AAA/D,sIAAA,yBAAyB,OAAA;AAClC,+EAA8E;AAArE,4IAAA,4BAA4B,OAAA;AACrC,2DAA0D;AAAjD,wHAAA,kBAAkB,OAAA;AAC3B,uDAAsD;AAA7C,oHAAA,gBAAgB,OAAA;AACzB,qEAAoE;AAA3D,kIAAA,uBAAuB,OAAA;AAChC;;;GAGG;AACH,uCAAsC;AAA7B,oGAAA,QAAQ,OAAA;AACjB,qDAAoD;AAA3C,kHAAA,eAAe,OAAA;AACxB;;GAEG;AACH,2DAA0D;AAAjD,wHAAA,kBAAkB,OAAA;AAC3B,6CAA2B","sourcesContent":["/**\n * @deprecated `ExpoRoot` mounts the navigation container automatically — there is no need\n * to render `BaseNavigationContainer` directly. Will be removed in a future SDK.\n */\nexport { BaseNavigationContainer } from './BaseNavigationContainer';\nexport { createNavigationContainerRef } from './createNavigationContainerRef';\nexport { createNavigatorFactory } from './createNavigatorFactory';\n/**\n * @deprecated Will be removed in a future SDK.\n */\nexport { CurrentRenderContext } from './CurrentRenderContext';\n/**\n * @deprecated Will be removed in a future SDK.\n */\nexport { findFocusedRoute } from './findFocusedRoute';\n/**\n * @deprecated Will be removed in a future SDK.\n */\nexport { getActionFromState } from './getActionFromState';\n/**\n * @deprecated Will be removed in a future SDK.\n */\nexport { getFocusedRouteNameFromRoute } from './getFocusedRouteNameFromRoute';\n/**\n * @deprecated Will be removed in a future SDK.\n */\nexport { getPathFromState } from './getPathFromState';\n/**\n * @deprecated Will be removed in a future SDK.\n */\nexport { getStateFromPath } from './getStateFromPath';\n/**\n * @deprecated Will be removed in a future SDK.\n */\nexport { NavigationContainerRefContext } from './NavigationContainerRefContext';\n/**\n * @deprecated Will be removed in a future SDK.\n */\nexport { NavigationContext } from './NavigationContext';\n/**\n * @deprecated Will be removed in a future SDK.\n */\nexport { NavigationHelpersContext } from './NavigationHelpersContext';\nexport { NavigationIndependentTree } from './NavigationIndependentTree';\n/**\n * @deprecated Will be removed in a future SDK.\n */\nexport { NavigationMetaContext } from './NavigationMetaContext';\nexport { NavigationProvider } from './NavigationProvider';\n/**\n * @deprecated Will be removed in a future SDK.\n */\nexport { NavigationRouteContext } from './NavigationProvider';\nexport { PreventRemoveContext } from './PreventRemoveContext';\nexport { PreventRemoveProvider } from './PreventRemoveProvider';\nexport {\n /**\n * @deprecated Expo Router builds components from the file-based route tree. Will be removed in a future SDK.\n */\n createComponentForStaticNavigation,\n /**\n * @deprecated Expo Router generates path config from the file-based route tree. Will be removed in a future SDK.\n */\n createPathConfigForStaticNavigation,\n /**\n * @deprecated Expo Router infers route types from the file-based route tree. Will be removed in a future SDK.\n */\n type StaticConfig,\n /**\n * @deprecated Will be removed in a future SDK.\n */\n type StaticConfigGroup,\n /**\n * @deprecated Will be removed in a future SDK.\n */\n type StaticConfigScreens,\n /**\n * @deprecated Will be removed in a future SDK.\n */\n type StaticNavigation,\n /**\n * @deprecated Use the typed routes API from `expo-router`. Will be removed in a future SDK.\n */\n type StaticParamList,\n /**\n * @deprecated Will be removed in a future SDK.\n */\n type StaticScreenProps,\n} from './StaticNavigation';\n/**\n * @deprecated Will be removed in a future SDK.\n */\nexport { ThemeContext } from './theming/ThemeContext';\n/**\n * @deprecated Import `ThemeProvider` from `expo-router` instead. Will be removed in a future SDK.\n */\nexport { ThemeProvider } from './theming/ThemeProvider';\n/**\n * @deprecated Import `useTheme` from `expo-router` instead. Will be removed in a future SDK.\n */\nexport { useTheme } from './theming/useTheme';\nexport * from './types';\n/**\n * @deprecated Import `useFocusEffect` from `expo-router` instead — it is typed for the\n * Expo Router route tree. Will be removed in a future SDK.\n */\nexport { useFocusEffect } from './useFocusEffect';\n/**\n * @deprecated Import `useIsFocused` from `expo-router` instead. Will be removed in a future SDK.\n */\nexport { useIsFocused } from './useIsFocused';\n/**\n * @deprecated Import `useNavigation` from `expo-router` instead. Will be removed in a future SDK.\n */\nexport { useNavigation } from './useNavigation';\nexport { useNavigationBuilder } from './useNavigationBuilder';\n/**\n * @deprecated Import `useNavigationContainerRef` from `expo-router` instead. Will be removed in a future SDK.\n */\nexport { useNavigationContainerRef } from './useNavigationContainerRef';\nexport { useNavigationIndependentTree } from './useNavigationIndependentTree';\nexport { useNavigationState } from './useNavigationState';\nexport { usePreventRemove } from './usePreventRemove';\nexport { usePreventRemoveContext } from './usePreventRemoveContext';\n/**\n * @deprecated Inside an Expo Router screen, prefer hooks like `useLocalSearchParams()`,\n * `usePathname()`, and `useSegments()` from `expo-router`. Will be removed in a future SDK.\n */\nexport { useRoute } from './useRoute';\nexport { useStateForPath } from './useStateForPath';\n/**\n * @deprecated Will be removed in a future SDK.\n */\nexport { validatePathConfig } from './validatePathConfig';\nexport * from '../routers';\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/react-navigation/core/index.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA;;;GAGG;AACH,qEAAoE;AAA3D,kIAAA,uBAAuB,OAAA;AAChC,+EAA8E;AAArE,4IAAA,4BAA4B,OAAA;AACrC,mEAAkE;AAAzD,gIAAA,sBAAsB,OAAA;AAC/B;;GAEG;AACH,+DAA8D;AAArD,4HAAA,oBAAoB,OAAA;AAC7B;;GAEG;AACH,uDAAsD;AAA7C,oHAAA,gBAAgB,OAAA;AACzB;;GAEG;AACH,2DAA0D;AAAjD,wHAAA,kBAAkB,OAAA;AAC3B;;GAEG;AACH,+EAA8E;AAArE,4IAAA,4BAA4B,OAAA;AACrC;;GAEG;AACH,uDAAsD;AAA7C,oHAAA,gBAAgB,OAAA;AACzB;;GAEG;AACH,uDAAsD;AAA7C,oHAAA,gBAAgB,OAAA;AACzB;;GAEG;AACH,iFAAgF;AAAvE,8IAAA,6BAA6B,OAAA;AACtC;;GAEG;AACH,yDAAwD;AAA/C,sHAAA,iBAAiB,OAAA;AAC1B;;GAEG;AACH,uEAAsE;AAA7D,oIAAA,wBAAwB,OAAA;AACjC,yEAAwE;AAA/D,sIAAA,yBAAyB,OAAA;AAClC;;GAEG;AACH,iEAAgE;AAAvD,8HAAA,qBAAqB,OAAA;AAC9B,2DAA0D;AAAjD,wHAAA,kBAAkB,OAAA;AAC3B;;GAEG;AACH,2DAA8D;AAArD,4HAAA,sBAAsB,OAAA;AAC/B,+DAA8D;AAArD,4HAAA,oBAAoB,OAAA;AAC7B,iEAAgE;AAAvD,8HAAA,qBAAqB,OAAA;AAC9B,uDAiC4B;AAhC1B;;GAEG;AACH,sIAAA,kCAAkC,OAAA;AAClC;;GAEG;AACH,uIAAA,mCAAmC,OAAA;AA0BrC;;GAEG;AACH,uDAAsD;AAA7C,4GAAA,YAAY,OAAA;AACrB;;GAEG;AACH,yDAAwD;AAA/C,8GAAA,aAAa,OAAA;AACtB;;GAEG;AACH,+CAA8C;AAArC,oGAAA,QAAQ,OAAA;AACjB,0CAAwB;AACxB;;;GAGG;AACH,mDAAkD;AAAzC,gHAAA,cAAc,OAAA;AACvB;;GAEG;AACH,+CAA8C;AAArC,4GAAA,YAAY,OAAA;AACrB;;GAEG;AACH,iDAAgD;AAAvC,8GAAA,aAAa,OAAA;AACtB,+DAA8D;AAArD,4HAAA,oBAAoB,OAAA;AAC7B;;GAEG;AACH,yEAAwE;AAA/D,sIAAA,yBAAyB,OAAA;AAClC,+EAA8E;AAArE,4IAAA,4BAA4B,OAAA;AACrC,2DAA0D;AAAjD,wHAAA,kBAAkB,OAAA;AAC3B,uDAAsD;AAA7C,oHAAA,gBAAgB,OAAA;AACzB,qEAAoE;AAA3D,kIAAA,uBAAuB,OAAA;AAChC;;GAEG;AACH,uCAAsC;AAA7B,oGAAA,QAAQ,OAAA;AACjB,qDAAoD;AAA3C,kHAAA,eAAe,OAAA;AACxB;;GAEG;AACH,2DAA0D;AAAjD,wHAAA,kBAAkB,OAAA;AAC3B,6CAA2B","sourcesContent":["/**\n * @deprecated `ExpoRoot` mounts the navigation container automatically — there is no need\n * to render `BaseNavigationContainer` directly. Will be removed in a future SDK.\n */\nexport { BaseNavigationContainer } from './BaseNavigationContainer';\nexport { createNavigationContainerRef } from './createNavigationContainerRef';\nexport { createNavigatorFactory } from './createNavigatorFactory';\n/**\n * @deprecated Will be removed in a future SDK.\n */\nexport { CurrentRenderContext } from './CurrentRenderContext';\n/**\n * @deprecated Will be removed in a future SDK.\n */\nexport { findFocusedRoute } from './findFocusedRoute';\n/**\n * @deprecated Will be removed in a future SDK.\n */\nexport { getActionFromState } from './getActionFromState';\n/**\n * @deprecated Will be removed in a future SDK.\n */\nexport { getFocusedRouteNameFromRoute } from './getFocusedRouteNameFromRoute';\n/**\n * @deprecated Will be removed in a future SDK.\n */\nexport { getPathFromState } from './getPathFromState';\n/**\n * @deprecated Will be removed in a future SDK.\n */\nexport { getStateFromPath } from './getStateFromPath';\n/**\n * @deprecated Will be removed in a future SDK.\n */\nexport { NavigationContainerRefContext } from './NavigationContainerRefContext';\n/**\n * @deprecated Will be removed in a future SDK.\n */\nexport { NavigationContext } from './NavigationContext';\n/**\n * @deprecated Will be removed in a future SDK.\n */\nexport { NavigationHelpersContext } from './NavigationHelpersContext';\nexport { NavigationIndependentTree } from './NavigationIndependentTree';\n/**\n * @deprecated Will be removed in a future SDK.\n */\nexport { NavigationMetaContext } from './NavigationMetaContext';\nexport { NavigationProvider } from './NavigationProvider';\n/**\n * @deprecated Will be removed in a future SDK.\n */\nexport { NavigationRouteContext } from './NavigationProvider';\nexport { PreventRemoveContext } from './PreventRemoveContext';\nexport { PreventRemoveProvider } from './PreventRemoveProvider';\nexport {\n /**\n * @deprecated Expo Router builds components from the file-based route tree. Will be removed in a future SDK.\n */\n createComponentForStaticNavigation,\n /**\n * @deprecated Expo Router generates path config from the file-based route tree. Will be removed in a future SDK.\n */\n createPathConfigForStaticNavigation,\n /**\n * @deprecated Expo Router infers route types from the file-based route tree. Will be removed in a future SDK.\n */\n type StaticConfig,\n /**\n * @deprecated Will be removed in a future SDK.\n */\n type StaticConfigGroup,\n /**\n * @deprecated Will be removed in a future SDK.\n */\n type StaticConfigScreens,\n /**\n * @deprecated Will be removed in a future SDK.\n */\n type StaticNavigation,\n /**\n * @deprecated Use the typed routes API from `expo-router`. Will be removed in a future SDK.\n */\n type StaticParamList,\n /**\n * @deprecated Will be removed in a future SDK.\n */\n type StaticScreenProps,\n} from './StaticNavigation';\n/**\n * @deprecated Will be removed in a future SDK.\n */\nexport { ThemeContext } from './theming/ThemeContext';\n/**\n * @deprecated Import `ThemeProvider` from `expo-router` instead. Will be removed in a future SDK.\n */\nexport { ThemeProvider } from './theming/ThemeProvider';\n/**\n * @deprecated Import `useTheme` from `expo-router` instead. Will be removed in a future SDK.\n */\nexport { useTheme } from './theming/useTheme';\nexport * from './types';\n/**\n * @deprecated Import `useFocusEffect` from `expo-router` instead — it is typed for the\n * Expo Router route tree. Will be removed in a future SDK.\n */\nexport { useFocusEffect } from './useFocusEffect';\n/**\n * @deprecated Import `useIsFocused` from `expo-router` instead. Will be removed in a future SDK.\n */\nexport { useIsFocused } from './useIsFocused';\n/**\n * @deprecated Import `useNavigation` from `expo-router` instead. Will be removed in a future SDK.\n */\nexport { useNavigation } from './useNavigation';\nexport { useNavigationBuilder } from './useNavigationBuilder';\n/**\n * @deprecated Import `useNavigationContainerRef` from `expo-router` instead. Will be removed in a future SDK.\n */\nexport { useNavigationContainerRef } from './useNavigationContainerRef';\nexport { useNavigationIndependentTree } from './useNavigationIndependentTree';\nexport { useNavigationState } from './useNavigationState';\nexport { usePreventRemove } from './usePreventRemove';\nexport { usePreventRemoveContext } from './usePreventRemoveContext';\n/**\n * @deprecated Import `useRoute` from `expo-router` instead. Will be removed in a future SDK.\n */\nexport { useRoute } from './useRoute';\nexport { useStateForPath } from './useStateForPath';\n/**\n * @deprecated Will be removed in a future SDK.\n */\nexport { validatePathConfig } from './validatePathConfig';\nexport * from '../routers';\n"]}
@@ -9,7 +9,7 @@
9
9
  "publication": {
10
10
  "groupId": "expo.modules.router",
11
11
  "artifactId": "expo.modules.router",
12
- "version": "56.0.4",
12
+ "version": "56.1.1",
13
13
  "repository": "local-maven-repo"
14
14
  }
15
15
  }
@@ -3,7 +3,7 @@
3
3
  "component": {
4
4
  "group": "expo.modules.router",
5
5
  "module": "expo.modules.router",
6
- "version": "56.0.4",
6
+ "version": "56.1.1",
7
7
  "attributes": {
8
8
  "org.gradle.status": "release"
9
9
  }
@@ -24,8 +24,8 @@
24
24
  },
25
25
  "files": [
26
26
  {
27
- "name": "expo.modules.router-56.0.4.aar",
28
- "url": "expo.modules.router-56.0.4.aar",
27
+ "name": "expo.modules.router-56.1.1.aar",
28
+ "url": "expo.modules.router-56.1.1.aar",
29
29
  "size": 15835,
30
30
  "sha512": "72b5be73401c4b0a8807373f01bd79e202212f07713d071019c24eb27227a4c8568d6148d0a48338f6955f9dbe713f56e7877d8e3fe0acec28dbb68533953d90",
31
31
  "sha256": "7c41d508ab24d199ead0eb06525957cdd227a73925863865bf2956d48cb707ef",
@@ -74,8 +74,8 @@
74
74
  ],
75
75
  "files": [
76
76
  {
77
- "name": "expo.modules.router-56.0.4.aar",
78
- "url": "expo.modules.router-56.0.4.aar",
77
+ "name": "expo.modules.router-56.1.1.aar",
78
+ "url": "expo.modules.router-56.1.1.aar",
79
79
  "size": 15835,
80
80
  "sha512": "72b5be73401c4b0a8807373f01bd79e202212f07713d071019c24eb27227a4c8568d6148d0a48338f6955f9dbe713f56e7877d8e3fe0acec28dbb68533953d90",
81
81
  "sha256": "7c41d508ab24d199ead0eb06525957cdd227a73925863865bf2956d48cb707ef",
@@ -94,8 +94,8 @@
94
94
  },
95
95
  "files": [
96
96
  {
97
- "name": "expo.modules.router-56.0.4-sources.jar",
98
- "url": "expo.modules.router-56.0.4-sources.jar",
97
+ "name": "expo.modules.router-56.1.1-sources.jar",
98
+ "url": "expo.modules.router-56.1.1-sources.jar",
99
99
  "size": 2326,
100
100
  "sha512": "a1a1537b57bc0d66efbf2bdfd5f514684400b9598e549eaf53c528d1bf32ff42b7826e74fb6e115f8ec0490b9e06ffbb3c3efe9f2f703652c13291ef82b0fa03",
101
101
  "sha256": "2add0f802e663eb9b5f90e086dca0e0e337a1442e15fb372a05945e01ee0d289",
@@ -0,0 +1 @@
1
+ 6500bfb1d4f566871904821a1663a7d052befc791b5456087f1bc52e83cf9787
@@ -0,0 +1 @@
1
+ 0cfbba655ee577cb4e76511d9eff45d82a72cf318c8a5b6cf3339c8a6bb9d8c4eb1f018b869cd2402a10d473c45d912245de6a2dc920e01a9fd1c2ac051b3e22
@@ -9,7 +9,7 @@
9
9
  <modelVersion>4.0.0</modelVersion>
10
10
  <groupId>expo.modules.router</groupId>
11
11
  <artifactId>expo.modules.router</artifactId>
12
- <version>56.0.4</version>
12
+ <version>56.1.1</version>
13
13
  <packaging>aar</packaging>
14
14
  <name>expo.modules.router</name>
15
15
  <url>https://github.com/expo/expo</url>
@@ -0,0 +1 @@
1
+ fb87d517843c8241c9f74e247ad4968ba2862b37ffaaa297dc0da7c0c299f0b8
@@ -0,0 +1 @@
1
+ 7b3664918928a018a8ef711ed6de00635fbd16c632634cae8b9ce8ae0dc3c52e6b02015e6188112797b65a58ff22e0d29859f379719fd7c9ef271719d1281d20
@@ -3,11 +3,11 @@
3
3
  <groupId>expo.modules.router</groupId>
4
4
  <artifactId>expo.modules.router</artifactId>
5
5
  <versioning>
6
- <latest>56.0.4</latest>
7
- <release>56.0.4</release>
6
+ <latest>56.1.1</latest>
7
+ <release>56.1.1</release>
8
8
  <versions>
9
- <version>56.0.4</version>
9
+ <version>56.1.1</version>
10
10
  </versions>
11
- <lastUpdated>20260506211910</lastUpdated>
11
+ <lastUpdated>20260508193735</lastUpdated>
12
12
  </versioning>
13
13
  </metadata>
@@ -1 +1 @@
1
- f7c0164cd9423526c2f74118c15700b0
1
+ 948d291dd70c6125ebde45646d045ad1
@@ -1 +1 @@
1
- de8dd0279bb1e86f57bfc658c9cf545224e4b110
1
+ ee282880f5281f686f314ff22306d88e85075eef
@@ -1 +1 @@
1
- e2a6653cce15de2afb83cbc842a5ce585700d714aec7c88d8b9c6a7628c4e930
1
+ 2d0b9afbc2eb98148e6c3a44a5167d4e4494676b2296b8cc8f00a2e036566959
@@ -1 +1 @@
1
- d19464c8efec3b37522bb8c607c516ad08a169158db6c4d7a848c67f956593ecf8d4250483681df3c83161cac5ac2fbe790a3bcc031be66994318796e2a204b4
1
+ 82f33cc00386ad4ee10bacad400ef008ae17df035fe828ca70a9cf4c919d98a10d898dfa196ef54b4647c83c3246588a8f5eadb971ec4b4c630c1dac5ee4d47d
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "expo-router",
3
- "version": "56.0.4",
3
+ "version": "56.1.1",
4
4
  "description": "Expo Router is a file-based router for React Native and web applications.",
5
5
  "author": "650 Industries, Inc.",
6
6
  "license": "MIT",
@@ -78,19 +78,19 @@
78
78
  "expo"
79
79
  ],
80
80
  "peerDependencies": {
81
- "@expo/log-box": "56.0.4",
82
- "@expo/metro-runtime": "^56.0.4",
81
+ "@expo/log-box": "^56.0.6",
82
+ "@expo/metro-runtime": "^56.0.5",
83
83
  "@testing-library/react-native": ">= 13.2.0",
84
84
  "expo": "*",
85
- "expo-constants": "^56.0.4",
86
- "expo-linking": "^56.0.3",
85
+ "expo-constants": "^56.0.6",
86
+ "expo-linking": "^56.0.4",
87
87
  "react": "*",
88
88
  "react-dom": "*",
89
89
  "react-native": "*",
90
90
  "react-native-gesture-handler": "*",
91
91
  "react-native-reanimated": "*",
92
92
  "react-native-safe-area-context": ">= 5.4.0",
93
- "react-native-screens": "4.25.0-beta.1",
93
+ "react-native-screens": "4.25.0-beta.3",
94
94
  "react-native-web": "*",
95
95
  "react-server-dom-webpack": "~19.0.4 || ~19.1.5 || ~19.2.4"
96
96
  },
@@ -115,6 +115,7 @@
115
115
  }
116
116
  },
117
117
  "devDependencies": {
118
+ "@jest/globals": "^29.7.0",
118
119
  "@testing-library/dom": "^10.4.0",
119
120
  "@testing-library/react": "^16.3.0",
120
121
  "@testing-library/react-native": "^13.3.0",
@@ -131,17 +132,17 @@
131
132
  "react-native-gesture-handler": "~2.30.0",
132
133
  "react-native-reanimated": "~4.3.0",
133
134
  "react-native-safe-area-context": "~5.6.2",
134
- "react-native-screens": "4.25.0-beta.1",
135
+ "react-native-screens": "4.25.0-beta.3",
135
136
  "react-native-web": "~0.21.0",
136
137
  "react-server-dom-webpack": "~19.0.4",
137
138
  "tsd": "^0.33.0",
138
- "expo": "56.0.0-preview.5"
139
+ "expo": "56.0.0-preview.7"
139
140
  },
140
141
  "dependencies": {
141
- "@expo/metro-runtime": "^56.0.4",
142
+ "@expo/log-box": "^56.0.6",
143
+ "@expo/metro-runtime": "^56.0.5",
142
144
  "@expo/schema-utils": "^56.0.0",
143
- "@expo/ui": "^56.0.1",
144
- "@jest/globals": "^29.7.0",
145
+ "@expo/ui": "^56.0.4",
145
146
  "@radix-ui/react-slot": "^1.2.0",
146
147
  "@radix-ui/react-tabs": "^1.1.12",
147
148
  "@react-native-masked-view/masked-view": "^0.3.2",
@@ -154,7 +155,7 @@
154
155
  "expo-glass-effect": "^56.0.4",
155
156
  "expo-image": "^56.0.4",
156
157
  "expo-server": "^56.0.0",
157
- "expo-symbols": "^56.0.4",
158
+ "expo-symbols": "^56.0.5",
158
159
  "fast-deep-equal": "^3.1.3",
159
160
  "invariant": "^2.2.4",
160
161
  "nanoid": "^3.3.8",
@@ -162,13 +163,13 @@
162
163
  "react-fast-compare": "^3.2.2",
163
164
  "react-is": "^19.1.0",
164
165
  "react-native-drawer-layout": "^4.2.2",
165
- "react-native-screens": "4.25.0-beta.1",
166
+ "react-native-screens": "4.25.0-beta.3",
166
167
  "server-only": "^0.0.1",
167
168
  "sf-symbols-typescript": "^2.1.0",
168
169
  "shallowequal": "^1.1.0",
169
170
  "vaul": "^1.1.2"
170
171
  },
171
- "gitHead": "a8ab3da510a34b7bdb2262aa9887d4f78b102280",
172
+ "gitHead": "a30353e69ca0d72b9fac5830abc631feda1ba3ae",
172
173
  "scripts": {
173
174
  "build": "node ./scripts/build.js",
174
175
  "clean": "expo-module clean",
@@ -1 +0,0 @@
1
- fb130808cc9a6c1a8f0305b3643c59af716e20ac187fa6debbce6d0068b5ac05
@@ -1 +0,0 @@
1
- aca3c4dc1220622357032f89d178098d2202336aee94643d5373ed30f170bbff0ba463ad7e4cca69a373b499a8002a0f6288a2dcf76d81d4ce91eb27ae89ba59
@@ -1 +0,0 @@
1
- dad9cb2cece3992274d2097ef365e43a391d6384dfe8e112ea2e909871f43641
@@ -1 +0,0 @@
1
- 318b008d38c95ca417c3a5808e11b09427ba55d5346127a464199a25606643b767f1710bf71c61a784af2337efdce01553398e9cc2713285d1cffe7a38dac18f