expo-router 57.0.16 → 57.0.18

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 (75) hide show
  1. package/android/build.gradle +2 -2
  2. package/build/Route.d.ts +2 -0
  3. package/build/Route.d.ts.map +1 -1
  4. package/build/Route.js +3 -1
  5. package/build/Route.js.map +1 -1
  6. package/build/layouts/DrawerClient.d.ts +3 -1
  7. package/build/layouts/DrawerClient.d.ts.map +1 -1
  8. package/build/layouts/JSStack.d.ts +3 -1
  9. package/build/layouts/JSStack.d.ts.map +1 -1
  10. package/build/layouts/StackClient.d.ts +3 -1
  11. package/build/layouts/StackClient.d.ts.map +1 -1
  12. package/build/layouts/TabsClient.d.ts +3 -1
  13. package/build/layouts/TabsClient.d.ts.map +1 -1
  14. package/build/layouts/TopTabsClient.d.ts +3 -1
  15. package/build/layouts/TopTabsClient.d.ts.map +1 -1
  16. package/build/layouts/experimental-stack/index.d.ts +3 -1
  17. package/build/layouts/experimental-stack/index.d.ts.map +1 -1
  18. package/build/layouts/withLayoutContext.d.ts +5 -1
  19. package/build/layouts/withLayoutContext.d.ts.map +1 -1
  20. package/build/layouts/withLayoutContext.js +3 -2
  21. package/build/layouts/withLayoutContext.js.map +1 -1
  22. package/build/modal/web/ModalStack.d.ts +3 -1
  23. package/build/modal/web/ModalStack.d.ts.map +1 -1
  24. package/build/native-tabs/types.d.ts +3 -0
  25. package/build/native-tabs/types.d.ts.map +1 -1
  26. package/build/native-tabs/types.js.map +1 -1
  27. package/build/standard-navigation/index.d.ts +3 -1
  28. package/build/standard-navigation/index.d.ts.map +1 -1
  29. package/build/standard-navigation/index.js +7 -2
  30. package/build/standard-navigation/index.js.map +1 -1
  31. package/build/standard-navigation/types.d.ts +5 -1
  32. package/build/standard-navigation/types.d.ts.map +1 -1
  33. package/build/standard-navigation/types.js.map +1 -1
  34. package/build/useScreens.d.ts.map +1 -1
  35. package/build/useScreens.js +30 -15
  36. package/build/useScreens.js.map +1 -1
  37. package/build/views/Navigator.d.ts +4 -1
  38. package/build/views/Navigator.d.ts.map +1 -1
  39. package/build/views/Navigator.js +6 -5
  40. package/build/views/Navigator.js.map +1 -1
  41. package/expo-module.config.json +1 -1
  42. package/local-maven-repo/expo/modules/router/expo.modules.router/{57.0.16/expo.modules.router-57.0.16.module → 57.0.18/expo.modules.router-57.0.18.module} +7 -7
  43. package/local-maven-repo/expo/modules/router/expo.modules.router/57.0.18/expo.modules.router-57.0.18.module.md5 +1 -0
  44. package/local-maven-repo/expo/modules/router/expo.modules.router/57.0.18/expo.modules.router-57.0.18.module.sha1 +1 -0
  45. package/local-maven-repo/expo/modules/router/expo.modules.router/57.0.18/expo.modules.router-57.0.18.module.sha256 +1 -0
  46. package/local-maven-repo/expo/modules/router/expo.modules.router/57.0.18/expo.modules.router-57.0.18.module.sha512 +1 -0
  47. package/local-maven-repo/expo/modules/router/expo.modules.router/{57.0.16/expo.modules.router-57.0.16.pom → 57.0.18/expo.modules.router-57.0.18.pom} +1 -1
  48. package/local-maven-repo/expo/modules/router/expo.modules.router/57.0.18/expo.modules.router-57.0.18.pom.md5 +1 -0
  49. package/local-maven-repo/expo/modules/router/expo.modules.router/57.0.18/expo.modules.router-57.0.18.pom.sha1 +1 -0
  50. package/local-maven-repo/expo/modules/router/expo.modules.router/57.0.18/expo.modules.router-57.0.18.pom.sha256 +1 -0
  51. package/local-maven-repo/expo/modules/router/expo.modules.router/57.0.18/expo.modules.router-57.0.18.pom.sha512 +1 -0
  52. package/local-maven-repo/expo/modules/router/expo.modules.router/maven-metadata.xml +4 -4
  53. package/local-maven-repo/expo/modules/router/expo.modules.router/maven-metadata.xml.md5 +1 -1
  54. package/local-maven-repo/expo/modules/router/expo.modules.router/maven-metadata.xml.sha1 +1 -1
  55. package/local-maven-repo/expo/modules/router/expo.modules.router/maven-metadata.xml.sha256 +1 -1
  56. package/local-maven-repo/expo/modules/router/expo.modules.router/maven-metadata.xml.sha512 +1 -1
  57. package/package.json +10 -10
  58. package/local-maven-repo/expo/modules/router/expo.modules.router/57.0.16/expo.modules.router-57.0.16.module.md5 +0 -1
  59. package/local-maven-repo/expo/modules/router/expo.modules.router/57.0.16/expo.modules.router-57.0.16.module.sha1 +0 -1
  60. package/local-maven-repo/expo/modules/router/expo.modules.router/57.0.16/expo.modules.router-57.0.16.module.sha256 +0 -1
  61. package/local-maven-repo/expo/modules/router/expo.modules.router/57.0.16/expo.modules.router-57.0.16.module.sha512 +0 -1
  62. package/local-maven-repo/expo/modules/router/expo.modules.router/57.0.16/expo.modules.router-57.0.16.pom.md5 +0 -1
  63. package/local-maven-repo/expo/modules/router/expo.modules.router/57.0.16/expo.modules.router-57.0.16.pom.sha1 +0 -1
  64. package/local-maven-repo/expo/modules/router/expo.modules.router/57.0.16/expo.modules.router-57.0.16.pom.sha256 +0 -1
  65. package/local-maven-repo/expo/modules/router/expo.modules.router/57.0.16/expo.modules.router-57.0.16.pom.sha512 +0 -1
  66. /package/local-maven-repo/expo/modules/router/expo.modules.router/{57.0.16/expo.modules.router-57.0.16-sources.jar → 57.0.18/expo.modules.router-57.0.18-sources.jar} +0 -0
  67. /package/local-maven-repo/expo/modules/router/expo.modules.router/{57.0.16/expo.modules.router-57.0.16-sources.jar.md5 → 57.0.18/expo.modules.router-57.0.18-sources.jar.md5} +0 -0
  68. /package/local-maven-repo/expo/modules/router/expo.modules.router/{57.0.16/expo.modules.router-57.0.16-sources.jar.sha1 → 57.0.18/expo.modules.router-57.0.18-sources.jar.sha1} +0 -0
  69. /package/local-maven-repo/expo/modules/router/expo.modules.router/{57.0.16/expo.modules.router-57.0.16-sources.jar.sha256 → 57.0.18/expo.modules.router-57.0.18-sources.jar.sha256} +0 -0
  70. /package/local-maven-repo/expo/modules/router/expo.modules.router/{57.0.16/expo.modules.router-57.0.16-sources.jar.sha512 → 57.0.18/expo.modules.router-57.0.18-sources.jar.sha512} +0 -0
  71. /package/local-maven-repo/expo/modules/router/expo.modules.router/{57.0.16/expo.modules.router-57.0.16.aar → 57.0.18/expo.modules.router-57.0.18.aar} +0 -0
  72. /package/local-maven-repo/expo/modules/router/expo.modules.router/{57.0.16/expo.modules.router-57.0.16.aar.md5 → 57.0.18/expo.modules.router-57.0.18.aar.md5} +0 -0
  73. /package/local-maven-repo/expo/modules/router/expo.modules.router/{57.0.16/expo.modules.router-57.0.16.aar.sha1 → 57.0.18/expo.modules.router-57.0.18.aar.sha1} +0 -0
  74. /package/local-maven-repo/expo/modules/router/expo.modules.router/{57.0.16/expo.modules.router-57.0.16.aar.sha256 → 57.0.18/expo.modules.router-57.0.18.aar.sha256} +0 -0
  75. /package/local-maven-repo/expo/modules/router/expo.modules.router/{57.0.16/expo.modules.router-57.0.16.aar.sha512 → 57.0.18/expo.modules.router-57.0.18.aar.sha512} +0 -0
@@ -4,13 +4,13 @@ plugins {
4
4
  }
5
5
 
6
6
  group = 'expo.modules.router'
7
- version = '57.0.16'
7
+ version = '57.0.18'
8
8
 
9
9
  android {
10
10
  namespace "expo.modules.router"
11
11
  defaultConfig {
12
12
  versionCode 1
13
- versionName "57.0.16"
13
+ versionName "57.0.18"
14
14
  }
15
15
  lintOptions {
16
16
  abortOnError false
package/build/Route.d.ts CHANGED
@@ -62,6 +62,8 @@ export type RouteNode = {
62
62
  };
63
63
  /** This context allows a `_layout.tsx` to provide a Suspense fallback for its child routes. */
64
64
  export declare const SuspenseFallbackContext: import("react").Context<ComponentType<SuspenseFallbackProps> | undefined>;
65
+ /** This context carries the error boundary configured by the current layout or navigator. */
66
+ export declare const ScreenErrorBoundaryContext: import("react").Context<ComponentType<ErrorBoundaryProps> | undefined>;
65
67
  export declare const LocalRouteParamsContext: import("react").Context<object | undefined>;
66
68
  /** Return the RouteNode at the current contextual boundary. */
67
69
  export declare function useRouteNode(): RouteNode | null;
@@ -1 +1 @@
1
- {"version":3,"file":"Route.d.ts","sourceRoot":"","sources":["../src/Route.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Route.d.ts","sourceRoot":"","sources":["../src/Route.tsx"],"names":[],"mappings":"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"}
package/build/Route.js CHANGED
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  'use client';
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.sortRoutes = exports.sortRoutesWithInitial = exports.LocalRouteParamsContext = exports.SuspenseFallbackContext = void 0;
4
+ exports.sortRoutes = exports.sortRoutesWithInitial = exports.LocalRouteParamsContext = exports.ScreenErrorBoundaryContext = exports.SuspenseFallbackContext = void 0;
5
5
  exports.useRouteNode = useRouteNode;
6
6
  exports.useContextKey = useContextKey;
7
7
  exports.Route = Route;
@@ -14,6 +14,8 @@ Object.defineProperty(exports, "sortRoutes", { enumerable: true, get: function (
14
14
  const CurrentRouteContext = (0, react_1.createContext)(null);
15
15
  /** This context allows a `_layout.tsx` to provide a Suspense fallback for its child routes. */
16
16
  exports.SuspenseFallbackContext = (0, react_1.createContext)(undefined);
17
+ /** This context carries the error boundary configured by the current layout or navigator. */
18
+ exports.ScreenErrorBoundaryContext = (0, react_1.createContext)(undefined);
17
19
  exports.LocalRouteParamsContext = (0, react_1.createContext)({});
18
20
  if (process.env.NODE_ENV !== 'production') {
19
21
  CurrentRouteContext.displayName = 'RouteNode';
@@ -1 +1 @@
1
- {"version":3,"file":"Route.js","sourceRoot":"","sources":["../src/Route.tsx"],"names":[],"mappings":";AAAA,YAAY,CAAC;;;AA+Eb,oCAEC;AAED,sCAMC;AAQD,sBAMC;;AApGD,iCAAuF;AAEvF,yCAA2C;AAC3C,6CAAiE;AAmGxD,sGAnGA,kCAAqB,OAmGA;AAAE,2FAnGA,uBAAU,OAmGA;AAtC1C,MAAM,mBAAmB,GAAG,IAAA,qBAAa,EAAmB,IAAI,CAAC,CAAC;AAClE,+FAA+F;AAClF,QAAA,uBAAuB,GAAG,IAAA,qBAAa,EAElD,SAAS,CAAC,CAAC;AACA,QAAA,uBAAuB,GAAG,IAAA,qBAAa,EAAqB,EAAE,CAAC,CAAC;AAE7E,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,EAAE,CAAC;IAC1C,mBAAmB,CAAC,WAAW,GAAG,WAAW,CAAC;AAChD,CAAC;AAED,+DAA+D;AAC/D,SAAgB,YAAY;IAC1B,OAAO,IAAA,WAAG,EAAC,mBAAmB,CAAC,CAAC;AAClC,CAAC;AAED,SAAgB,aAAa;IAC3B,MAAM,IAAI,GAAG,YAAY,EAAE,CAAC;IAC5B,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC;IAC7E,CAAC;IACD,OAAO,IAAA,wBAAa,EAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AACxC,CAAC;AAOD,iEAAiE;AACjE,SAAgB,KAAK,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAc;IAC1D,OAAO,CACL,uBAAC,+BAAuB,CAAC,QAAQ,IAAC,KAAK,EAAE,MAAM,YAC7C,uBAAC,mBAAmB,CAAC,QAAQ,IAAC,KAAK,EAAE,IAAI,YAAG,QAAQ,GAAgC,GACnD,CACpC,CAAC;AACJ,CAAC","sourcesContent":["'use client';\n\nimport type { GenerateMetadataFunction, LoaderFunction } from 'expo-server';\nimport { createContext, use, type ComponentType, type PropsWithChildren } from 'react';\n\nimport { getContextKey } from './matchers';\nimport { sortRoutesWithInitial, sortRoutes } from './sortRoutes';\nimport type { SuspenseFallbackProps } from './views/SuspenseFallback';\nimport type { ErrorBoundaryProps } from './views/Try';\n\nexport type DynamicConvention = { name: string; deep: boolean; notFound?: boolean };\n\ntype Params = Record<string, string | string[]>;\n\nexport type LoadedRoute = {\n ErrorBoundary?: ComponentType<ErrorBoundaryProps>;\n SuspenseFallback?: ComponentType<SuspenseFallbackProps>;\n default?: ComponentType<any>;\n unstable_settings?: Record<string, any>;\n getNavOptions?: (args: any) => any;\n generateStaticParams?: (props: { params?: Params }) => Params[];\n loader?: LoaderFunction;\n generateMetadata?: GenerateMetadataFunction;\n};\n\nexport type LoadedMiddleware = Pick<LoadedRoute, 'default' | 'unstable_settings'>;\n\nexport type MiddlewareNode = {\n /** Context Module ID. Used to resolve the middleware module */\n contextKey: string;\n /** Loads middleware into memory. Returns the exports from +middleware.ts */\n loadRoute: () => Partial<LoadedMiddleware>;\n};\n\nexport type RouteNode = {\n /** The type of RouteNode */\n type: 'route' | 'api' | 'layout' | 'redirect' | 'rewrite';\n /** Load a route into memory. Returns the exports from a route. */\n loadRoute: () => LoadedRoute;\n /** Loaded initial route name. */\n initialRouteName?: string;\n /** Nested routes */\n children: RouteNode[];\n /** Is the route a dynamic path */\n dynamic: null | DynamicConvention[];\n /** `index`, `error-boundary`, etc. Relative to the nearest `_layout.tsx` */\n route: string;\n /** Context Module ID, used for matching children. */\n contextKey: string;\n /** Redirect Context Module ID, used for matching children. */\n destinationContextKey?: string;\n /** Parent Context Module ID, used for matching static routes to their parent dynamic route. */\n parentContextKey?: string;\n /** Is the redirect permanent. */\n permanent?: boolean;\n /** Added in-memory */\n generated?: boolean;\n /** Internal screens like the directory or the auto 404 should be marked as internal. */\n internal?: boolean;\n /** File paths for async entry modules that should be included in the initial chunk request to ensure the runtime JavaScript matches the statically rendered HTML representation. */\n entryPoints?: string[];\n /** HTTP methods for this route. If undefined, assumed to be ['GET'] */\n methods?: string[];\n /** Middleware function for server-side request processing. Only present on the root route node. */\n middleware?: MiddlewareNode;\n};\n\nconst CurrentRouteContext = createContext<RouteNode | null>(null);\n/** This context allows a `_layout.tsx` to provide a Suspense fallback for its child routes. */\nexport const SuspenseFallbackContext = createContext<\n ComponentType<SuspenseFallbackProps> | undefined\n>(undefined);\nexport const LocalRouteParamsContext = createContext<object | undefined>({});\n\nif (process.env.NODE_ENV !== 'production') {\n CurrentRouteContext.displayName = 'RouteNode';\n}\n\n/** Return the RouteNode at the current contextual boundary. */\nexport function useRouteNode(): RouteNode | null {\n return use(CurrentRouteContext);\n}\n\nexport function useContextKey(): string {\n const node = useRouteNode();\n if (node == null) {\n throw new Error('No filename found. This is likely a bug in expo-router.');\n }\n return getContextKey(node.contextKey);\n}\n\nexport type RouteProps = PropsWithChildren<{\n node: RouteNode;\n params: object | undefined;\n}>;\n\n/** Provides the matching routes and filename to the children. */\nexport function Route({ children, node, params }: RouteProps) {\n return (\n <LocalRouteParamsContext.Provider value={params}>\n <CurrentRouteContext.Provider value={node}>{children}</CurrentRouteContext.Provider>\n </LocalRouteParamsContext.Provider>\n );\n}\n\nexport { sortRoutesWithInitial, sortRoutes };\n"]}
1
+ {"version":3,"file":"Route.js","sourceRoot":"","sources":["../src/Route.tsx"],"names":[],"mappings":";AAAA,YAAY,CAAC;;;AAmFb,oCAEC;AAED,sCAMC;AAQD,sBAMC;;AAxGD,iCAAuF;AAEvF,yCAA2C;AAC3C,6CAAiE;AAuGxD,sGAvGA,kCAAqB,OAuGA;AAAE,2FAvGA,uBAAU,OAuGA;AA1C1C,MAAM,mBAAmB,GAAG,IAAA,qBAAa,EAAmB,IAAI,CAAC,CAAC;AAClE,+FAA+F;AAClF,QAAA,uBAAuB,GAAG,IAAA,qBAAa,EAElD,SAAS,CAAC,CAAC;AACb,6FAA6F;AAChF,QAAA,0BAA0B,GAAG,IAAA,qBAAa,EAErD,SAAS,CAAC,CAAC;AACA,QAAA,uBAAuB,GAAG,IAAA,qBAAa,EAAqB,EAAE,CAAC,CAAC;AAE7E,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,EAAE,CAAC;IAC1C,mBAAmB,CAAC,WAAW,GAAG,WAAW,CAAC;AAChD,CAAC;AAED,+DAA+D;AAC/D,SAAgB,YAAY;IAC1B,OAAO,IAAA,WAAG,EAAC,mBAAmB,CAAC,CAAC;AAClC,CAAC;AAED,SAAgB,aAAa;IAC3B,MAAM,IAAI,GAAG,YAAY,EAAE,CAAC;IAC5B,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC;IAC7E,CAAC;IACD,OAAO,IAAA,wBAAa,EAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AACxC,CAAC;AAOD,iEAAiE;AACjE,SAAgB,KAAK,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAc;IAC1D,OAAO,CACL,uBAAC,+BAAuB,CAAC,QAAQ,IAAC,KAAK,EAAE,MAAM,YAC7C,uBAAC,mBAAmB,CAAC,QAAQ,IAAC,KAAK,EAAE,IAAI,YAAG,QAAQ,GAAgC,GACnD,CACpC,CAAC;AACJ,CAAC","sourcesContent":["'use client';\n\nimport type { GenerateMetadataFunction, LoaderFunction } from 'expo-server';\nimport { createContext, use, type ComponentType, type PropsWithChildren } from 'react';\n\nimport { getContextKey } from './matchers';\nimport { sortRoutesWithInitial, sortRoutes } from './sortRoutes';\nimport type { SuspenseFallbackProps } from './views/SuspenseFallback';\nimport type { ErrorBoundaryProps } from './views/Try';\n\nexport type DynamicConvention = { name: string; deep: boolean; notFound?: boolean };\n\ntype Params = Record<string, string | string[]>;\n\nexport type LoadedRoute = {\n ErrorBoundary?: ComponentType<ErrorBoundaryProps>;\n SuspenseFallback?: ComponentType<SuspenseFallbackProps>;\n default?: ComponentType<any>;\n unstable_settings?: Record<string, any>;\n getNavOptions?: (args: any) => any;\n generateStaticParams?: (props: { params?: Params }) => Params[];\n loader?: LoaderFunction;\n generateMetadata?: GenerateMetadataFunction;\n};\n\nexport type LoadedMiddleware = Pick<LoadedRoute, 'default' | 'unstable_settings'>;\n\nexport type MiddlewareNode = {\n /** Context Module ID. Used to resolve the middleware module */\n contextKey: string;\n /** Loads middleware into memory. Returns the exports from +middleware.ts */\n loadRoute: () => Partial<LoadedMiddleware>;\n};\n\nexport type RouteNode = {\n /** The type of RouteNode */\n type: 'route' | 'api' | 'layout' | 'redirect' | 'rewrite';\n /** Load a route into memory. Returns the exports from a route. */\n loadRoute: () => LoadedRoute;\n /** Loaded initial route name. */\n initialRouteName?: string;\n /** Nested routes */\n children: RouteNode[];\n /** Is the route a dynamic path */\n dynamic: null | DynamicConvention[];\n /** `index`, `error-boundary`, etc. Relative to the nearest `_layout.tsx` */\n route: string;\n /** Context Module ID, used for matching children. */\n contextKey: string;\n /** Redirect Context Module ID, used for matching children. */\n destinationContextKey?: string;\n /** Parent Context Module ID, used for matching static routes to their parent dynamic route. */\n parentContextKey?: string;\n /** Is the redirect permanent. */\n permanent?: boolean;\n /** Added in-memory */\n generated?: boolean;\n /** Internal screens like the directory or the auto 404 should be marked as internal. */\n internal?: boolean;\n /** File paths for async entry modules that should be included in the initial chunk request to ensure the runtime JavaScript matches the statically rendered HTML representation. */\n entryPoints?: string[];\n /** HTTP methods for this route. If undefined, assumed to be ['GET'] */\n methods?: string[];\n /** Middleware function for server-side request processing. Only present on the root route node. */\n middleware?: MiddlewareNode;\n};\n\nconst CurrentRouteContext = createContext<RouteNode | null>(null);\n/** This context allows a `_layout.tsx` to provide a Suspense fallback for its child routes. */\nexport const SuspenseFallbackContext = createContext<\n ComponentType<SuspenseFallbackProps> | undefined\n>(undefined);\n/** This context carries the error boundary configured by the current layout or navigator. */\nexport const ScreenErrorBoundaryContext = createContext<\n ComponentType<ErrorBoundaryProps> | undefined\n>(undefined);\nexport const LocalRouteParamsContext = createContext<object | undefined>({});\n\nif (process.env.NODE_ENV !== 'production') {\n CurrentRouteContext.displayName = 'RouteNode';\n}\n\n/** Return the RouteNode at the current contextual boundary. */\nexport function useRouteNode(): RouteNode | null {\n return use(CurrentRouteContext);\n}\n\nexport function useContextKey(): string {\n const node = useRouteNode();\n if (node == null) {\n throw new Error('No filename found. This is likely a bug in expo-router.');\n }\n return getContextKey(node.contextKey);\n}\n\nexport type RouteProps = PropsWithChildren<{\n node: RouteNode;\n params: object | undefined;\n}>;\n\n/** Provides the matching routes and filename to the children. */\nexport function Route({ children, node, params }: RouteProps) {\n return (\n <LocalRouteParamsContext.Provider value={params}>\n <CurrentRouteContext.Provider value={node}>{children}</CurrentRouteContext.Provider>\n </LocalRouteParamsContext.Provider>\n );\n}\n\nexport { sortRoutesWithInitial, sortRoutes };\n"]}
@@ -102,7 +102,9 @@ export declare const Drawer: import("react").ForwardRefExoticComponent<Omit<Omit
102
102
  id?: undefined;
103
103
  } | {
104
104
  id: string;
105
- })), "children">> & import("react").RefAttributes<unknown>> & {
105
+ })), "children">> & import("react").RefAttributes<unknown> & {
106
+ unstable_screenErrorBoundary?: import("react").ComponentType<import("..").ErrorBoundaryProps>;
107
+ }> & {
106
108
  Screen: (props: import("..").ScreenProps<DrawerNavigationOptions, DrawerNavigationState<ParamListBase>, DrawerNavigationEventMap>) => null;
107
109
  Protected: typeof import("../views/Protected").Protected;
108
110
  };
@@ -1 +1 @@
1
- {"version":3,"file":"DrawerClient.d.ts","sourceRoot":"","sources":["../../src/layouts/DrawerClient.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAEpG,OAAO,KAAK,EAAE,qBAAqB,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAIvF,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAKD,CAAC;AAEnB,eAAe,MAAM,CAAC"}
1
+ {"version":3,"file":"DrawerClient.d.ts","sourceRoot":"","sources":["../../src/layouts/DrawerClient.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAEpG,OAAO,KAAK,EAAE,qBAAqB,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAIvF,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAKD,CAAC;AAEnB,eAAe,MAAM,CAAC"}
@@ -101,7 +101,9 @@ declare const JSStack: import("react").ForwardRefExoticComponent<Omit<Omit<impor
101
101
  id?: undefined;
102
102
  } | {
103
103
  id: string;
104
- })), "children">> & import("react").RefAttributes<unknown>> & {
104
+ })), "children">> & import("react").RefAttributes<unknown> & {
105
+ unstable_screenErrorBoundary?: import("react").ComponentType<import("..").ErrorBoundaryProps>;
106
+ }> & {
105
107
  Screen: (props: import("..").ScreenProps<StackNavigationOptions, StackNavigationState<ParamListBase>, StackNavigationEventMap>) => null;
106
108
  Protected: typeof Protected;
107
109
  };
@@ -1 +1 @@
1
- {"version":3,"file":"JSStack.d.ts","sourceRoot":"","sources":["../../src/layouts/JSStack.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAG5C,OAAO,KAAK,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AACtF,OAAO,KAAK,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AAEjG,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAIzC,QAAA,MAAM,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAKM,CAAC;AAEpB;;;;GAIG;AACH,QAAA,MAAM,KAAK,WACD,cAAc,CAAC,OAAO,OAAO,CAAC;;;CAOvC,CAAC;AAEF,OAAO,EAAE,KAAK,EAAE,CAAC;AAEjB,eAAe,KAAK,CAAC"}
1
+ {"version":3,"file":"JSStack.d.ts","sourceRoot":"","sources":["../../src/layouts/JSStack.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAG5C,OAAO,KAAK,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AACtF,OAAO,KAAK,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AAEjG,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAIzC,QAAA,MAAM,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAKM,CAAC;AAEpB;;;;GAIG;AACH,QAAA,MAAM,KAAK,WACD,cAAc,CAAC,OAAO,OAAO,CAAC;;;CAOvC,CAAC;AAEF,OAAO,EAAE,KAAK,EAAE,CAAC;AAEjB,eAAe,KAAK,CAAC"}
@@ -136,7 +136,9 @@ declare const RNStack: import("react").ForwardRefExoticComponent<Omit<Omit<impor
136
136
  UNSTABLE_routeNamesChangeBehavior?: "firstMatch" | "lastUnhandled";
137
137
  } & {
138
138
  id?: undefined;
139
- }, "children">> & import("react").RefAttributes<unknown>> & {
139
+ }, "children">> & import("react").RefAttributes<unknown> & {
140
+ unstable_screenErrorBoundary?: import("react").ComponentType<import("..").ErrorBoundaryProps>;
141
+ }> & {
140
142
  Screen: (props: import("..").ScreenProps<ExtendedStackNavigationOptions, StackNavigationState<ParamListBase>, NativeStackNavigationEventMap>) => null;
141
143
  Protected: typeof Protected;
142
144
  };
@@ -1 +1 @@
1
- {"version":3,"file":"StackClient.d.ts","sourceRoot":"","sources":["../../src/layouts/StackClient.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAgB5C,OAAO,EACL,KAAK,gBAAgB,EAGrB,cAAc,EACd,UAAU,EAKX,MAAM,eAAe,CAAC;AACvB,OAAO,EAGL,KAAK,aAAa,EAMlB,KAAK,oBAAoB,EACzB,WAAW,IAAI,aAAa,EAC5B,KAAK,SAAS,EACf,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EACV,6BAA6B,EAC7B,4BAA4B,EAC7B,MAAM,kCAAkC,CAAC;AAE1C,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAM/C;;;GAGG;AACH,MAAM,MAAM,8BAA8B,GAAG,4BAA4B,GAAG;IAC1E,aAAa,CAAC,EAAE;QACd;;;WAGG;QACH,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;QACxB;;;WAGG;QACH,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;QACzB;;;WAGG;QACH,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;QAC5B;;;WAGG;QACH,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;QAC3B;;;WAGG;QACH,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB;;;WAGG;QACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;QAC3B;;;WAGG;QACH,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC;CACH,CAAC;AAEF,QAAA,MAAM,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAKU,CAAC;AA4CxB;;;;;;;;GAQG;AACH,eAAO,MAAM,mBAAmB,EAAE,WAAW,CAAC,cAAc,CAAC,OAAO,OAAO,CAAC,CAAC,iBAAiB,CAAC,CA2V9F,CAAC;AA+DF;;;;GAIG;AACH,QAAA,MAAM,KAAK,WACD,cAAc,CAAC,OAAO,OAAO,CAAC;;;;;;;;;;;;;;;;;;;;;CA2DvC,CAAC;AAoCF,eAAe,KAAK,CAAC;AAErB,eAAO,MAAM,WAAW,EAAE,OAAO,aAMhC,CAAC"}
1
+ {"version":3,"file":"StackClient.d.ts","sourceRoot":"","sources":["../../src/layouts/StackClient.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAgB5C,OAAO,EACL,KAAK,gBAAgB,EAGrB,cAAc,EACd,UAAU,EAKX,MAAM,eAAe,CAAC;AACvB,OAAO,EAGL,KAAK,aAAa,EAMlB,KAAK,oBAAoB,EACzB,WAAW,IAAI,aAAa,EAC5B,KAAK,SAAS,EACf,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EACV,6BAA6B,EAC7B,4BAA4B,EAC7B,MAAM,kCAAkC,CAAC;AAE1C,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAM/C;;;GAGG;AACH,MAAM,MAAM,8BAA8B,GAAG,4BAA4B,GAAG;IAC1E,aAAa,CAAC,EAAE;QACd;;;WAGG;QACH,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;QACxB;;;WAGG;QACH,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;QACzB;;;WAGG;QACH,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;QAC5B;;;WAGG;QACH,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;QAC3B;;;WAGG;QACH,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB;;;WAGG;QACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;QAC3B;;;WAGG;QACH,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC;CACH,CAAC;AAEF,QAAA,MAAM,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAKU,CAAC;AA4CxB;;;;;;;;GAQG;AACH,eAAO,MAAM,mBAAmB,EAAE,WAAW,CAAC,cAAc,CAAC,OAAO,OAAO,CAAC,CAAC,iBAAiB,CAAC,CA2V9F,CAAC;AA+DF;;;;GAIG;AACH,QAAA,MAAM,KAAK,WACD,cAAc,CAAC,OAAO,OAAO,CAAC;;;;;;;;;;;;;;;;;;;;;CA2DvC,CAAC;AAoCF,eAAe,KAAK,CAAC;AAErB,eAAO,MAAM,WAAW,EAAE,OAAO,aAMhC,CAAC"}
@@ -149,7 +149,9 @@ declare const ExpoTabs: import("react").ForwardRefExoticComponent<Omit<Omit<impo
149
149
  id?: undefined;
150
150
  } | {
151
151
  id: string;
152
- })), "children">> & import("react").RefAttributes<unknown>> & {
152
+ })), "children">> & import("react").RefAttributes<unknown> & {
153
+ unstable_screenErrorBoundary?: import("react").ComponentType<import("..").ErrorBoundaryProps>;
154
+ }> & {
153
155
  Screen: (props: import("..").ScreenProps<TabsProps, TabNavigationState<ParamListBase>, BottomTabNavigationEventMap>) => null;
154
156
  Protected: typeof Protected;
155
157
  };
@@ -1 +1 @@
1
- {"version":3,"file":"TabsClient.d.ts","sourceRoot":"","sources":["../../src/layouts/TabsClient.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAK5C,OAAO,KAAK,EACV,2BAA2B,EAC3B,0BAA0B,EAC3B,MAAM,iCAAiC,CAAC;AAEzC,OAAO,KAAK,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AACpF,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AACrC,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAG/C,QAAA,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAAuC,CAAC;AAEhE,MAAM,MAAM,kBAAkB,GAAG,OAAO,kBAAkB,CAAC;AAE3D,KAAK,SAAS,GAAG,0BAA0B,GAAG;IAAE,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,CAAA;CAAE,CAAC;AAErE,QAAA,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0CZ,CAAC;AAEH;;;;GAIG;AACH,QAAA,MAAM,IAAI,WACA,cAAc,CAAC,OAAO,QAAQ,CAAC;;;CAOxC,CAAC;AAEF,eAAe,IAAI,CAAC"}
1
+ {"version":3,"file":"TabsClient.d.ts","sourceRoot":"","sources":["../../src/layouts/TabsClient.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAK5C,OAAO,KAAK,EACV,2BAA2B,EAC3B,0BAA0B,EAC3B,MAAM,iCAAiC,CAAC;AAEzC,OAAO,KAAK,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AACpF,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AACrC,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAG/C,QAAA,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAAuC,CAAC;AAEhE,MAAM,MAAM,kBAAkB,GAAG,OAAO,kBAAkB,CAAC;AAE3D,KAAK,SAAS,GAAG,0BAA0B,GAAG;IAAE,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,CAAA;CAAE,CAAC;AAErE,QAAA,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0CZ,CAAC;AAEH;;;;GAIG;AACH,QAAA,MAAM,IAAI,WACA,cAAc,CAAC,OAAO,QAAQ,CAAC;;;CAOxC,CAAC;AAEF,eAAe,IAAI,CAAC"}
@@ -50,7 +50,9 @@ declare const MaterialTopTabs: import("react").ForwardRefExoticComponent<Omit<im
50
50
  id?: undefined;
51
51
  } | {
52
52
  id: string;
53
- })), "children">, "ref"> & import("react").RefAttributes<unknown>> & {
53
+ })), "children">, "ref"> & import("react").RefAttributes<unknown> & {
54
+ unstable_screenErrorBoundary?: import("react").ComponentType<import("..").ErrorBoundaryProps>;
55
+ }> & {
54
56
  Screen: (props: import("..").ScreenProps<MaterialTopTabNavigationOptions, TabNavigationState<ParamListBase>, MaterialTopTabNavigationEventMap>) => null;
55
57
  Protected: typeof Protected;
56
58
  };
@@ -1 +1 @@
1
- {"version":3,"file":"TopTabsClient.d.ts","sourceRoot":"","sources":["../../src/layouts/TopTabsClient.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAG5C,OAAO,KAAK,EACV,gCAAgC,EAChC,+BAA+B,EAChC,MAAM,uCAAuC,CAAC;AAE/C,OAAO,KAAK,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AACpF,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAIzC,QAAA,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAKK,CAAC;AAE3B;;;;GAIG;AACH,QAAA,MAAM,OAAO,WACH,cAAc,CAAC,OAAO,eAAe,CAAC;;;CAO/C,CAAC;AAEF,OAAO,EAAE,OAAO,EAAE,CAAC;AAEnB,eAAe,OAAO,CAAC"}
1
+ {"version":3,"file":"TopTabsClient.d.ts","sourceRoot":"","sources":["../../src/layouts/TopTabsClient.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAG5C,OAAO,KAAK,EACV,gCAAgC,EAChC,+BAA+B,EAChC,MAAM,uCAAuC,CAAC;AAE/C,OAAO,KAAK,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AACpF,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAIzC,QAAA,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAKK,CAAC;AAE3B;;;;GAIG;AACH,QAAA,MAAM,OAAO,WACH,cAAc,CAAC,OAAO,eAAe,CAAC;;;CAO/C,CAAC;AAEF,OAAO,EAAE,OAAO,EAAE,CAAC;AAEnB,eAAe,OAAO,CAAC"}
@@ -92,7 +92,9 @@ declare const RNExperimentalStack: import("react").ForwardRefExoticComponent<Omi
92
92
  id?: undefined;
93
93
  } | {
94
94
  id: string;
95
- })), "children">> & import("react").RefAttributes<unknown>> & {
95
+ })), "children">> & import("react").RefAttributes<unknown> & {
96
+ unstable_screenErrorBoundary?: import("react").ComponentType<import("../..").ErrorBoundaryProps>;
97
+ }> & {
96
98
  Screen: (props: import("../..").ScreenProps<ExperimentalStackNavigationOptions, StackNavigationState<ParamListBase>, ExperimentalStackNavigationEventMap>) => null;
97
99
  Protected: typeof Protected;
98
100
  };
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/layouts/experimental-stack/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAO5C,OAAO,KAAK,EACV,mCAAmC,EACnC,kCAAkC,EACnC,MAAM,SAAS,CAAC;AACjB,OAAO,KAAK,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AAEzF,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAIlD,QAAA,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAKI,CAAC;AAE9B;;;;;;;;GAQG;AACH,QAAA,MAAM,iBAAiB,WACb,cAAc,CAAC,OAAO,mBAAmB,CAAC;;;;;;CAgBnD,CAAC;AAEF,OAAO,EAAE,iBAAiB,EAAE,CAAC;AAE7B,eAAe,iBAAiB,CAAC;AAEjC,YAAY,EACV,kCAAkC,EAClC,mCAAmC,EACnC,+BAA+B,EAC/B,4BAA4B,EAC5B,kCAAkC,GACnC,MAAM,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/layouts/experimental-stack/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAO5C,OAAO,KAAK,EACV,mCAAmC,EACnC,kCAAkC,EACnC,MAAM,SAAS,CAAC;AACjB,OAAO,KAAK,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AAEzF,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAIlD,QAAA,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAKI,CAAC;AAE9B;;;;;;;;GAQG;AACH,QAAA,MAAM,iBAAiB,WACb,cAAc,CAAC,OAAO,mBAAmB,CAAC;;;;;;CAgBnD,CAAC;AAEF,OAAO,EAAE,iBAAiB,EAAE,CAAC;AAE7B,eAAe,iBAAiB,CAAC;AAEjC,YAAY,EACV,kCAAkC,EAClC,mCAAmC,EACnC,+BAA+B,EAC/B,4BAA4B,EAC5B,kCAAkC,GACnC,MAAM,SAAS,CAAC"}
@@ -3,6 +3,7 @@ import type { EventMapBase, NavigationState } from '../react-navigation/native';
3
3
  import type { PickPartial } from '../types';
4
4
  import type { ScreenProps } from '../useScreens';
5
5
  import { Protected } from '../views/Protected';
6
+ import type { ErrorBoundaryProps } from '../views/Try';
6
7
  export declare function useFilterScreenChildren(children: ReactNode, { isCustomNavigator, contextKey, }?: {
7
8
  isCustomNavigator?: boolean;
8
9
  /** Used for sending developer hints */
@@ -48,7 +49,10 @@ export declare function useFilterScreenChildren(children: ReactNode, { isCustomN
48
49
  * }
49
50
  * ```
50
51
  */
51
- export declare function withLayoutContext<TOptions extends object, T extends ComponentType<any>, TState extends NavigationState, TEventMap extends EventMapBase>(Nav: T, processor?: (options: ScreenProps[]) => ScreenProps[], useOnlyUserDefinedScreens?: boolean): ForwardRefExoticComponent<PropsWithoutRef<PickPartial<ComponentProps<T>, "children">> & RefAttributes<unknown>> & {
52
+ export declare function withLayoutContext<TOptions extends object, T extends ComponentType<any>, TState extends NavigationState, TEventMap extends EventMapBase>(Nav: T, processor?: (options: ScreenProps[]) => ScreenProps[], useOnlyUserDefinedScreens?: boolean): ForwardRefExoticComponent<PropsWithoutRef<PickPartial<ComponentProps<T>, "children">> & RefAttributes<unknown> & {
53
+ /** A component to render when an individual screen in this navigator throws an error. */
54
+ unstable_screenErrorBoundary?: ComponentType<ErrorBoundaryProps>;
55
+ }> & {
52
56
  Screen: (props: ScreenProps<TOptions, TState, TEventMap>) => null;
53
57
  Protected: typeof Protected;
54
58
  };
@@ -1 +1 @@
1
- {"version":3,"file":"withLayoutContext.d.ts","sourceRoot":"","sources":["../../src/layouts/withLayoutContext.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,aAAa,EACb,yBAAyB,EACzB,eAAe,EACf,SAAS,EACT,aAAa,EACd,MAAM,OAAO,CAAC;AAKf,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAChF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAGjD,OAAO,EAA2B,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAGxE,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,SAAS,EACnB,EACE,iBAAiB,EACjB,UAAU,GACX,GAAE;IACD,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,uCAAuC;IACvC,UAAU,CAAC,EAAE,MAAM,CAAC;CAChB;;cAKkC,MAAM;;;;EA8E/C;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,SAAS,MAAM,EACvB,CAAC,SAAS,aAAa,CAAC,GAAG,CAAC,EAC5B,MAAM,SAAS,eAAe,EAC9B,SAAS,SAAS,YAAY,EAE9B,GAAG,EAAE,CAAC,EACN,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,KAAK,WAAW,EAAE,EACrD,yBAAyB,GAAE,OAAe,GA6BrC,yBAAyB,CAC5B,eAAe,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,GAAG,aAAa,CAAC,OAAO,CAAC,CACrF,GAAG;IACF,MAAM,EAAE,CAAC,KAAK,EAAE,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC;IAClE,SAAS,EAAE,OAAO,SAAS,CAAC;CAC7B,CACF"}
1
+ {"version":3,"file":"withLayoutContext.d.ts","sourceRoot":"","sources":["../../src/layouts/withLayoutContext.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,aAAa,EACb,yBAAyB,EACzB,eAAe,EACf,SAAS,EACT,aAAa,EACd,MAAM,OAAO,CAAC;AAKf,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAChF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAGjD,OAAO,EAA2B,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAExE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAEvD,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,SAAS,EACnB,EACE,iBAAiB,EACjB,UAAU,GACX,GAAE;IACD,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,uCAAuC;IACvC,UAAU,CAAC,EAAE,MAAM,CAAC;CAChB;;cAKkC,MAAM;;;;EA8E/C;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,SAAS,MAAM,EACvB,CAAC,SAAS,aAAa,CAAC,GAAG,CAAC,EAC5B,MAAM,SAAS,eAAe,EAC9B,SAAS,SAAS,YAAY,EAE9B,GAAG,EAAE,CAAC,EACN,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,KAAK,WAAW,EAAE,EACrD,yBAAyB,GAAE,OAAe,GA2CrC,yBAAyB,CAC5B,eAAe,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,GACzD,aAAa,CAAC,OAAO,CAAC,GAAG;IACvB,yFAAyF;IACzF,4BAA4B,CAAC,EAAE,aAAa,CAAC,kBAAkB,CAAC,CAAC;CAClE,CACJ,GAAG;IACF,MAAM,EAAE,CAAC,KAAK,EAAE,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC;IAClE,SAAS,EAAE,OAAO,SAAS,CAAC;CAC7B,CACF"}
@@ -114,7 +114,7 @@ function useFilterScreenChildren(children, { isCustomNavigator, contextKey, } =
114
114
  * ```
115
115
  */
116
116
  function withLayoutContext(Nav, processor, useOnlyUserDefinedScreens = false) {
117
- return Object.assign((0, react_1.forwardRef)(({ children: userDefinedChildren, ...props }, ref) => {
117
+ return Object.assign((0, react_1.forwardRef)(({ children: userDefinedChildren, unstable_screenErrorBoundary, ...props }, ref) => {
118
118
  const contextKey = (0, Route_1.useContextKey)();
119
119
  const { screens, protectedScreens } = useFilterScreenChildren(userDefinedChildren, {
120
120
  contextKey,
@@ -125,7 +125,8 @@ function withLayoutContext(Nav, processor, useOnlyUserDefinedScreens = false) {
125
125
  if (!sorted.length) {
126
126
  return null;
127
127
  }
128
- return ((0, jsx_runtime_1.jsx)(IsWithinLayoutContext_1.IsWithinLayoutContext, { value: true, children: (0, jsx_runtime_1.jsx)(Nav, { ...props, id: contextKey, ref: ref, children: sorted }) }));
128
+ const content = ((0, jsx_runtime_1.jsx)(IsWithinLayoutContext_1.IsWithinLayoutContext, { value: true, children: (0, jsx_runtime_1.jsx)(Nav, { ...props, id: contextKey, ref: ref, children: sorted }) }));
129
+ return unstable_screenErrorBoundary ? ((0, jsx_runtime_1.jsx)(Route_1.ScreenErrorBoundaryContext, { value: unstable_screenErrorBoundary, children: content })) : (content);
129
130
  }), {
130
131
  Screen: Screen_1.Screen,
131
132
  Protected: Protected_1.Protected,
@@ -1 +1 @@
1
- {"version":3,"file":"withLayoutContext.js","sourceRoot":"","sources":["../../src/layouts/withLayoutContext.tsx"],"names":[],"mappings":"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","sourcesContent":["import type {\n ComponentProps,\n ComponentType,\n ForwardRefExoticComponent,\n PropsWithoutRef,\n ReactNode,\n RefAttributes,\n} from 'react';\nimport { Children, forwardRef, useMemo } from 'react';\n\nimport { useContextKey } from '../Route';\nimport { isNativeTabTrigger, convertTabPropsToOptions } from '../native-tabs/NativeTabTrigger';\nimport type { EventMapBase, NavigationState } from '../react-navigation/native';\nimport type { PickPartial } from '../types';\nimport type { ScreenProps } from '../useScreens';\nimport { useSortedScreens } from '../useScreens';\nimport { IsWithinLayoutContext } from './IsWithinLayoutContext';\nimport { isProtectedReactElement, Protected } from '../views/Protected';\nimport { isScreen, Screen } from '../views/Screen';\n\nexport function useFilterScreenChildren(\n children: ReactNode,\n {\n isCustomNavigator,\n contextKey,\n }: {\n isCustomNavigator?: boolean;\n /** Used for sending developer hints */\n contextKey?: string;\n } = {}\n) {\n return useMemo(() => {\n const customChildren: any[] = [];\n\n const screens: (ScreenProps & { name: string })[] = [];\n const protectedScreens = new Set<string>();\n\n function flattenChild(child: ReactNode, exclude = false) {\n if (isScreen(child, contextKey)) {\n if (exclude) {\n protectedScreens.add(child.props.name);\n } else {\n screens.push(child.props);\n }\n return;\n }\n\n if (isNativeTabTrigger(child, contextKey)) {\n if (exclude) {\n protectedScreens.add(child.props.name);\n } else {\n const options = convertTabPropsToOptions(child.props);\n if (options.hidden === false) {\n screens.push({\n ...child.props,\n options,\n } as ScreenProps & { name: string });\n } else {\n // - hidden = undefined -> then the route was not specified in navigator\n // - hidden = true -> then the route is hidden\n // In this cases we should treat the tab as protected\n protectedScreens.add(child.props.name);\n }\n }\n return;\n }\n\n if (isProtectedReactElement(child)) {\n const excludeChildren = exclude || !child.props.guard;\n Children.forEach(child.props.children, (protectedChild) => {\n flattenChild(protectedChild, excludeChildren);\n });\n return;\n }\n\n if (isCustomNavigator) {\n customChildren.push(child);\n return null;\n }\n\n console.warn(\n `Layout children must be of type Screen, all other children are ignored. To use custom children, create a custom <Layout />. Update Layout Route at: \"app${contextKey}/_layout\"`\n );\n\n return null;\n }\n\n Children.forEach(children, (child) => flattenChild(child));\n\n // Add an assertion for development\n if (process.env.NODE_ENV !== 'production') {\n // Assert if names are not unique\n const normalizeName = (name: unknown) =>\n typeof name === 'string' ? name.replace(/\\/index$/, '') : name;\n\n const screenNames =\n screens?.map(\n (screen) => screen && typeof screen === 'object' && 'name' in screen && screen.name\n ) ?? [];\n const protectedScreenNames = Array.from(protectedScreens).map(normalizeName);\n const allNames = [...screenNames.map(normalizeName), ...protectedScreenNames];\n if (new Set(allNames).size !== allNames.length) {\n throw new Error('Screen names must be unique: ' + allNames);\n }\n }\n\n return {\n screens,\n children: customChildren,\n protectedScreens,\n };\n }, [children]);\n}\n\n/**\n * Returns a navigator that automatically injects matched routes and renders nothing when there are no children.\n * Return type with `children` prop optional.\n * \n * Enables use of other built-in React Navigation navigators and other navigators built with the React Navigation custom navigator API.\n *\n * @param Nav - The navigator component to wrap.\n * @param processor - A function that processes the screens before passing them to the navigator.\n * @param useOnlyUserDefinedScreens - If true, all screens not specified as navigator's children will be ignored.\n *\n * @example\n * ```tsx app/_layout.tsx\n * import { ParamListBase, TabNavigationState } from \"@react-navigation/native\";\n * import {\n * createMaterialTopTabNavigator,\n * MaterialTopTabNavigationOptions,\n * MaterialTopTabNavigationEventMap,\n * } from \"@react-navigation/material-top-tabs\";\n * import { withLayoutContext } from \"expo-router\";\n * \n * const MaterialTopTabs = createMaterialTopTabNavigator();\n * \n * const ExpoRouterMaterialTopTabs = withLayoutContext<\n * MaterialTopTabNavigationOptions,\n * typeof MaterialTopTabs.Navigator,\n * TabNavigationState<ParamListBase>,\n * MaterialTopTabNavigationEventMap\n * >(MaterialTopTabs.Navigator);\n\n * export default function TabLayout() {\n * return <ExpoRouterMaterialTopTabs />;\n * }\n * ```\n */\nexport function withLayoutContext<\n TOptions extends object,\n T extends ComponentType<any>,\n TState extends NavigationState,\n TEventMap extends EventMapBase,\n>(\n Nav: T,\n processor?: (options: ScreenProps[]) => ScreenProps[],\n useOnlyUserDefinedScreens: boolean = false\n) {\n return Object.assign(\n forwardRef(({ children: userDefinedChildren, ...props }: any, ref) => {\n const contextKey = useContextKey();\n\n const { screens, protectedScreens } = useFilterScreenChildren(userDefinedChildren, {\n contextKey,\n });\n\n const processed = processor ? processor(screens ?? []) : screens;\n\n const sorted = useSortedScreens(processed ?? [], protectedScreens, useOnlyUserDefinedScreens);\n\n // Prevent throwing an error when there are no screens.\n if (!sorted.length) {\n return null;\n }\n\n return (\n <IsWithinLayoutContext value>\n <Nav {...props} id={contextKey} ref={ref} children={sorted} />\n </IsWithinLayoutContext>\n );\n }),\n {\n Screen,\n Protected,\n }\n ) as ForwardRefExoticComponent<\n PropsWithoutRef<PickPartial<ComponentProps<T>, 'children'>> & RefAttributes<unknown>\n > & {\n Screen: (props: ScreenProps<TOptions, TState, TEventMap>) => null;\n Protected: typeof Protected;\n };\n}\n"]}
1
+ {"version":3,"file":"withLayoutContext.js","sourceRoot":"","sources":["../../src/layouts/withLayoutContext.tsx"],"names":[],"mappings":"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","sourcesContent":["import type {\n ComponentProps,\n ComponentType,\n ForwardRefExoticComponent,\n PropsWithoutRef,\n ReactNode,\n RefAttributes,\n} from 'react';\nimport { Children, forwardRef, useMemo } from 'react';\n\nimport { ScreenErrorBoundaryContext, useContextKey } from '../Route';\nimport { isNativeTabTrigger, convertTabPropsToOptions } from '../native-tabs/NativeTabTrigger';\nimport type { EventMapBase, NavigationState } from '../react-navigation/native';\nimport type { PickPartial } from '../types';\nimport type { ScreenProps } from '../useScreens';\nimport { useSortedScreens } from '../useScreens';\nimport { IsWithinLayoutContext } from './IsWithinLayoutContext';\nimport { isProtectedReactElement, Protected } from '../views/Protected';\nimport { isScreen, Screen } from '../views/Screen';\nimport type { ErrorBoundaryProps } from '../views/Try';\n\nexport function useFilterScreenChildren(\n children: ReactNode,\n {\n isCustomNavigator,\n contextKey,\n }: {\n isCustomNavigator?: boolean;\n /** Used for sending developer hints */\n contextKey?: string;\n } = {}\n) {\n return useMemo(() => {\n const customChildren: any[] = [];\n\n const screens: (ScreenProps & { name: string })[] = [];\n const protectedScreens = new Set<string>();\n\n function flattenChild(child: ReactNode, exclude = false) {\n if (isScreen(child, contextKey)) {\n if (exclude) {\n protectedScreens.add(child.props.name);\n } else {\n screens.push(child.props);\n }\n return;\n }\n\n if (isNativeTabTrigger(child, contextKey)) {\n if (exclude) {\n protectedScreens.add(child.props.name);\n } else {\n const options = convertTabPropsToOptions(child.props);\n if (options.hidden === false) {\n screens.push({\n ...child.props,\n options,\n } as ScreenProps & { name: string });\n } else {\n // - hidden = undefined -> then the route was not specified in navigator\n // - hidden = true -> then the route is hidden\n // In this cases we should treat the tab as protected\n protectedScreens.add(child.props.name);\n }\n }\n return;\n }\n\n if (isProtectedReactElement(child)) {\n const excludeChildren = exclude || !child.props.guard;\n Children.forEach(child.props.children, (protectedChild) => {\n flattenChild(protectedChild, excludeChildren);\n });\n return;\n }\n\n if (isCustomNavigator) {\n customChildren.push(child);\n return null;\n }\n\n console.warn(\n `Layout children must be of type Screen, all other children are ignored. To use custom children, create a custom <Layout />. Update Layout Route at: \"app${contextKey}/_layout\"`\n );\n\n return null;\n }\n\n Children.forEach(children, (child) => flattenChild(child));\n\n // Add an assertion for development\n if (process.env.NODE_ENV !== 'production') {\n // Assert if names are not unique\n const normalizeName = (name: unknown) =>\n typeof name === 'string' ? name.replace(/\\/index$/, '') : name;\n\n const screenNames =\n screens?.map(\n (screen) => screen && typeof screen === 'object' && 'name' in screen && screen.name\n ) ?? [];\n const protectedScreenNames = Array.from(protectedScreens).map(normalizeName);\n const allNames = [...screenNames.map(normalizeName), ...protectedScreenNames];\n if (new Set(allNames).size !== allNames.length) {\n throw new Error('Screen names must be unique: ' + allNames);\n }\n }\n\n return {\n screens,\n children: customChildren,\n protectedScreens,\n };\n }, [children]);\n}\n\n/**\n * Returns a navigator that automatically injects matched routes and renders nothing when there are no children.\n * Return type with `children` prop optional.\n * \n * Enables use of other built-in React Navigation navigators and other navigators built with the React Navigation custom navigator API.\n *\n * @param Nav - The navigator component to wrap.\n * @param processor - A function that processes the screens before passing them to the navigator.\n * @param useOnlyUserDefinedScreens - If true, all screens not specified as navigator's children will be ignored.\n *\n * @example\n * ```tsx app/_layout.tsx\n * import { ParamListBase, TabNavigationState } from \"@react-navigation/native\";\n * import {\n * createMaterialTopTabNavigator,\n * MaterialTopTabNavigationOptions,\n * MaterialTopTabNavigationEventMap,\n * } from \"@react-navigation/material-top-tabs\";\n * import { withLayoutContext } from \"expo-router\";\n * \n * const MaterialTopTabs = createMaterialTopTabNavigator();\n * \n * const ExpoRouterMaterialTopTabs = withLayoutContext<\n * MaterialTopTabNavigationOptions,\n * typeof MaterialTopTabs.Navigator,\n * TabNavigationState<ParamListBase>,\n * MaterialTopTabNavigationEventMap\n * >(MaterialTopTabs.Navigator);\n\n * export default function TabLayout() {\n * return <ExpoRouterMaterialTopTabs />;\n * }\n * ```\n */\nexport function withLayoutContext<\n TOptions extends object,\n T extends ComponentType<any>,\n TState extends NavigationState,\n TEventMap extends EventMapBase,\n>(\n Nav: T,\n processor?: (options: ScreenProps[]) => ScreenProps[],\n useOnlyUserDefinedScreens: boolean = false\n) {\n return Object.assign(\n forwardRef(\n ({ children: userDefinedChildren, unstable_screenErrorBoundary, ...props }: any, ref) => {\n const contextKey = useContextKey();\n\n const { screens, protectedScreens } = useFilterScreenChildren(userDefinedChildren, {\n contextKey,\n });\n\n const processed = processor ? processor(screens ?? []) : screens;\n\n const sorted = useSortedScreens(\n processed ?? [],\n protectedScreens,\n useOnlyUserDefinedScreens\n );\n\n // Prevent throwing an error when there are no screens.\n if (!sorted.length) {\n return null;\n }\n\n const content = (\n <IsWithinLayoutContext value>\n <Nav {...props} id={contextKey} ref={ref} children={sorted} />\n </IsWithinLayoutContext>\n );\n\n return unstable_screenErrorBoundary ? (\n <ScreenErrorBoundaryContext value={unstable_screenErrorBoundary}>\n {content}\n </ScreenErrorBoundaryContext>\n ) : (\n content\n );\n }\n ),\n {\n Screen,\n Protected,\n }\n ) as ForwardRefExoticComponent<\n PropsWithoutRef<PickPartial<ComponentProps<T>, 'children'>> &\n RefAttributes<unknown> & {\n /** A component to render when an individual screen in this navigator throws an error. */\n unstable_screenErrorBoundary?: ComponentType<ErrorBoundaryProps>;\n }\n > & {\n Screen: (props: ScreenProps<TOptions, TState, TEventMap>) => null;\n Protected: typeof Protected;\n };\n}\n"]}
@@ -1,6 +1,8 @@
1
1
  import React from 'react';
2
2
  import type { ParamListBase } from '../../react-navigation/native';
3
- declare const RouterModal: React.ForwardRefExoticComponent<Omit<import("../..").PickPartial<any, "children">, "ref"> & React.RefAttributes<unknown>> & {
3
+ declare const RouterModal: React.ForwardRefExoticComponent<Omit<import("../..").PickPartial<any, "children">, "ref"> & React.RefAttributes<unknown> & {
4
+ unstable_screenErrorBoundary?: React.ComponentType<import("../..").ErrorBoundaryProps>;
5
+ }> & {
4
6
  Screen: (props: import("../..").ScreenProps<object, Readonly<{
5
7
  key: string;
6
8
  index: number;
@@ -1 +1 @@
1
- {"version":3,"file":"ModalStack.d.ts","sourceRoot":"","sources":["../../../src/modal/web/ModalStack.tsx"],"names":[],"mappings":"AACA,OAAO,KAAiC,MAAM,OAAO,CAAC;AAYtD,OAAO,KAAK,EAEV,aAAa,EAId,MAAM,+BAA+B,CAAC;AAkIvC,QAAA,MAAM,WAAW;;;;;;;;;;;CAAkD,CAAC;AACpE,QAAA,MAAM,iBAAiB;;;;;;;;2DAAqB,CAAC;AAE7C,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,CAAC"}
1
+ {"version":3,"file":"ModalStack.d.ts","sourceRoot":"","sources":["../../../src/modal/web/ModalStack.tsx"],"names":[],"mappings":"AACA,OAAO,KAAiC,MAAM,OAAO,CAAC;AAYtD,OAAO,KAAK,EAEV,aAAa,EAId,MAAM,+BAA+B,CAAC;AAkIvC,QAAA,MAAM,WAAW;;;;;;;;;;;;;CAAkD,CAAC;AACpE,QAAA,MAAM,iBAAiB;;;;;;;;2DAAqB,CAAC;AAE7C,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,CAAC"}
@@ -4,6 +4,7 @@ import type { TabsHostProps, TabsScreenProps } from 'react-native-screens';
4
4
  import type { SFSymbol } from 'sf-symbols-typescript';
5
5
  import type { DefaultRouterOptions, ParamListBase, RouteProp, ScreenListeners, TabNavigationState } from '../react-navigation/native';
6
6
  import type { ScreenProps } from '../useScreens';
7
+ import type { ErrorBoundaryProps } from '../views/Try';
7
8
  /**
8
9
  * Event map for `NativeTabs` navigation events.
9
10
  * Only `tabPress` is currently supported.
@@ -220,6 +221,8 @@ export declare const SUPPORTED_BLUR_EFFECTS: readonly ["none", "systemDefault",
220
221
  */
221
222
  export type NativeTabsBlurEffect = (typeof SUPPORTED_BLUR_EFFECTS)[number];
222
223
  export interface NativeTabsProps extends PropsWithChildren {
224
+ /** A component to render when an individual tab screen throws an error. */
225
+ unstable_screenErrorBoundary?: React.ComponentType<ErrorBoundaryProps>;
223
226
  /**
224
227
  * The style of the every tab label in the tab bar.
225
228
  */
@@ -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":";;;AA2Qa,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;AAuPE,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;AA2MX,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 ParamListBase,\n RouteProp,\n ScreenListeners,\n TabNavigationState,\n} from '../react-navigation/native';\nimport type { ScreenProps } from '../useScreens';\n\n/**\n * Event map for `NativeTabs` navigation events.\n * Only `tabPress` is currently supported.\n */\nexport type NativeTabNavigationEventMap = {\n tabPress: {\n data: {\n __internalTabsType: 'native';\n /**\n * `true` when the native side prevented the selection because the target\n * tab is `disabled`. The event is still emitted so listeners are notified,\n * but no navigation occurs.\n */\n isPrevented: boolean;\n };\n canPreventDefault: false;\n };\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 /**\n * @platform android\n * @platform iOS\n */\n icon?: SymbolOrImageSource;\n /**\n * @platform android\n * @platform iOS\n */\n selectedIcon?: SymbolOrImageSource;\n /**\n * @platform android\n * @platform iOS\n * @platform web\n */\n title?: string;\n /**\n * @platform android\n * @platform iOS\n * @platform web\n */\n badgeValue?: string;\n /**\n * @platform android\n * @platform iOS\n * @platform web\n */\n selectedLabelStyle?: NativeTabsLabelStyle;\n /**\n * @platform android\n * @platform iOS\n * @platform web\n */\n labelStyle?: NativeTabsLabelStyle;\n /**\n * @platform iOS\n */\n role?: NativeTabsTabBarItemRole;\n /**\n * @platform android\n * @platform iOS\n */\n selectedIconColor?: ColorValue;\n /**\n * @platform iOS\n */\n selectedBadgeBackgroundColor?: ColorValue;\n /**\n * @platform android\n * @platform iOS\n * @platform web\n */\n badgeBackgroundColor?: ColorValue;\n /**\n * @platform android\n * @platform web\n */\n badgeTextColor?: ColorValue;\n /**\n * @platform android\n * @platform iOS\n * @platform web\n */\n backgroundColor?: ColorValue;\n /**\n * @platform iOS\n */\n blurEffect?: NativeTabsBlurEffect;\n /**\n * @platform iOS\n */\n shadowColor?: ColorValue;\n /**\n * @platform android\n * @platform iOS\n */\n iconColor?: ColorValue;\n /**\n * @platform android\n */\n tintColor?: ColorValue;\n /**\n * @platform iOS\n */\n disableTransparentOnScrollEdge?: boolean;\n /**\n * @platform iOS\n */\n titlePositionAdjustment?: {\n horizontal?: number;\n vertical?: number;\n };\n /**\n * @platform iOS\n */\n selectedTitlePositionAdjustment?: {\n horizontal?: number;\n vertical?: number;\n };\n /**\n * @platform android\n * @platform web\n */\n indicatorColor?: ColorValue;\n /**\n * @platform android\n */\n rippleColor?: ColorValue;\n /**\n * @platform android\n */\n disableIndicator?: boolean;\n /**\n * @platform android\n */\n labelVisibilityMode?: NativeTabsTabBarItemLabelVisibilityMode;\n /**\n * @platform android\n * @platform iOS\n * @platform web\n */\n hidden?: boolean;\n /**\n * @platform android\n * @platform iOS\n */\n disabled?: boolean;\n /**\n * @platform android\n * @platform iOS\n */\n tabBarItemTestID?: string;\n /**\n * @platform android\n * @platform iOS\n */\n tabBarItemAccessibilityLabel?: string;\n /**\n * @platform iOS\n */\n specialEffects?: TabsScreenProps['specialEffects'];\n /**\n * @platform android\n * @platform iOS\n */\n nativeProps?: NativeScreenProps;\n /**\n * @platform android\n * @platform iOS\n */\n disableAutomaticContentInsets?: boolean;\n /**\n * @platform android\n * @platform iOS\n */\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 /**\n * When `true`, the tab bar lifts above the keyboard (input method editor, or IME) instead of being overlaid by it. By default, the keyboard overlays the tab bar.\n *\n * Requires `windowSoftInputMode=\"adjustResize\"`. Has no effect on Android API levels earlier than 30 (Android 11).\n *\n * @default false\n * @platform android\n */\n tabBarRespectsIMEInsets?: boolean;\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 * Whether the native side prevented this selection because the target tab is\n * `disabled`. When `true`, the navigator emits `tabPress` but skips navigation.\n *\n * @default false\n */\n isPrevented?: boolean;\n}\n\nexport interface NativeTabsViewProps extends Omit<\n InternalNativeTabsProps,\n | 'labelStyle'\n | 'iconColor'\n | 'backgroundColor'\n | 'badgeBackgroundColor'\n | 'blurEffect'\n | 'indicatorColor'\n | 'badgeTextColor'\n | 'rippleColor'\n | 'disableIndicator'\n | 'labelVisibilityMode'\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 * If `true`, the tab is shown but cannot be selected by tapping it in the\n * tab bar.\n *\n * > **Note:** This only suppresses the native tap interaction. JavaScript\n * > navigation such as `router.push()` or `<Link />` still navigates to\n * > the tab. Use this for tabs that should appear visible but be temporarily inert,\n * > and gate navigation in your own code if you need to fully prevent access.\n *\n * Unlike `hidden`, the tab remains visible in the tab bar.\n *\n * @default false\n *\n * @platform android\n * @platform ios\n */\n disabled?: boolean;\n /**\n * A test identifier for the tab bar item.\n *\n * On iOS it maps to the item's accessibility identifier, which XCUITest and Maestro match.\n * On Android it maps to the item's view tag, which Espresso-based drivers like Detox read\n * but Maestro and Appium do not. Use `accessibilityLabel` to match the tab by id there.\n *\n * @platform android\n * @platform iOS\n */\n testID?: string;\n /**\n * The accessibility label of the tab bar item, announced by screen readers.\n * Defaults to the visible tab label.\n *\n * On Android, maps to the item's `contentDescription` and requires API 26 or above.\n *\n * @platform android\n * @platform iOS\n */\n accessibilityLabel?: string;\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 * The color of the ripple effect when this tab is selected - will be visible when other tabs are pressed.\n *\n * When set on a trigger, it takes precedence over the value set on `NativeTabs`.\n *\n * @platform android\n */\n rippleColor?: ColorValue;\n /**\n * The color of the active indicator for this tab.\n *\n * When set on a trigger, it takes precedence over the value set on `NativeTabs`.\n *\n * @platform android\n */\n indicatorColor?: ColorValue;\n /**\n * When set to `true`, disables the active indicator for this tab.\n *\n * When set on a trigger, it takes precedence over the value set on `NativeTabs`.\n *\n * @default false\n *\n * @platform android\n */\n disableIndicator?: boolean;\n /**\n * The visibility mode of the tab item label for this tab.\n *\n * When set on a trigger, it takes precedence over the value set on `NativeTabs`.\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 * 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?: ScreenProps<\n any,\n TabNavigationState<ParamListBase>,\n NativeTabNavigationEventMap\n >['listeners'];\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":";;;AA4Qa,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;AAyPE,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;AA2MX,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 ParamListBase,\n RouteProp,\n ScreenListeners,\n TabNavigationState,\n} from '../react-navigation/native';\nimport type { ScreenProps } from '../useScreens';\nimport type { ErrorBoundaryProps } from '../views/Try';\n\n/**\n * Event map for `NativeTabs` navigation events.\n * Only `tabPress` is currently supported.\n */\nexport type NativeTabNavigationEventMap = {\n tabPress: {\n data: {\n __internalTabsType: 'native';\n /**\n * `true` when the native side prevented the selection because the target\n * tab is `disabled`. The event is still emitted so listeners are notified,\n * but no navigation occurs.\n */\n isPrevented: boolean;\n };\n canPreventDefault: false;\n };\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 /**\n * @platform android\n * @platform iOS\n */\n icon?: SymbolOrImageSource;\n /**\n * @platform android\n * @platform iOS\n */\n selectedIcon?: SymbolOrImageSource;\n /**\n * @platform android\n * @platform iOS\n * @platform web\n */\n title?: string;\n /**\n * @platform android\n * @platform iOS\n * @platform web\n */\n badgeValue?: string;\n /**\n * @platform android\n * @platform iOS\n * @platform web\n */\n selectedLabelStyle?: NativeTabsLabelStyle;\n /**\n * @platform android\n * @platform iOS\n * @platform web\n */\n labelStyle?: NativeTabsLabelStyle;\n /**\n * @platform iOS\n */\n role?: NativeTabsTabBarItemRole;\n /**\n * @platform android\n * @platform iOS\n */\n selectedIconColor?: ColorValue;\n /**\n * @platform iOS\n */\n selectedBadgeBackgroundColor?: ColorValue;\n /**\n * @platform android\n * @platform iOS\n * @platform web\n */\n badgeBackgroundColor?: ColorValue;\n /**\n * @platform android\n * @platform web\n */\n badgeTextColor?: ColorValue;\n /**\n * @platform android\n * @platform iOS\n * @platform web\n */\n backgroundColor?: ColorValue;\n /**\n * @platform iOS\n */\n blurEffect?: NativeTabsBlurEffect;\n /**\n * @platform iOS\n */\n shadowColor?: ColorValue;\n /**\n * @platform android\n * @platform iOS\n */\n iconColor?: ColorValue;\n /**\n * @platform android\n */\n tintColor?: ColorValue;\n /**\n * @platform iOS\n */\n disableTransparentOnScrollEdge?: boolean;\n /**\n * @platform iOS\n */\n titlePositionAdjustment?: {\n horizontal?: number;\n vertical?: number;\n };\n /**\n * @platform iOS\n */\n selectedTitlePositionAdjustment?: {\n horizontal?: number;\n vertical?: number;\n };\n /**\n * @platform android\n * @platform web\n */\n indicatorColor?: ColorValue;\n /**\n * @platform android\n */\n rippleColor?: ColorValue;\n /**\n * @platform android\n */\n disableIndicator?: boolean;\n /**\n * @platform android\n */\n labelVisibilityMode?: NativeTabsTabBarItemLabelVisibilityMode;\n /**\n * @platform android\n * @platform iOS\n * @platform web\n */\n hidden?: boolean;\n /**\n * @platform android\n * @platform iOS\n */\n disabled?: boolean;\n /**\n * @platform android\n * @platform iOS\n */\n tabBarItemTestID?: string;\n /**\n * @platform android\n * @platform iOS\n */\n tabBarItemAccessibilityLabel?: string;\n /**\n * @platform iOS\n */\n specialEffects?: TabsScreenProps['specialEffects'];\n /**\n * @platform android\n * @platform iOS\n */\n nativeProps?: NativeScreenProps;\n /**\n * @platform android\n * @platform iOS\n */\n disableAutomaticContentInsets?: boolean;\n /**\n * @platform android\n * @platform iOS\n */\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 /** A component to render when an individual tab screen throws an error. */\n unstable_screenErrorBoundary?: React.ComponentType<ErrorBoundaryProps>;\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 /**\n * When `true`, the tab bar lifts above the keyboard (input method editor, or IME) instead of being overlaid by it. By default, the keyboard overlays the tab bar.\n *\n * Requires `windowSoftInputMode=\"adjustResize\"`. Has no effect on Android API levels earlier than 30 (Android 11).\n *\n * @default false\n * @platform android\n */\n tabBarRespectsIMEInsets?: boolean;\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 * Whether the native side prevented this selection because the target tab is\n * `disabled`. When `true`, the navigator emits `tabPress` but skips navigation.\n *\n * @default false\n */\n isPrevented?: boolean;\n}\n\nexport interface NativeTabsViewProps extends Omit<\n InternalNativeTabsProps,\n | 'labelStyle'\n | 'iconColor'\n | 'backgroundColor'\n | 'badgeBackgroundColor'\n | 'blurEffect'\n | 'indicatorColor'\n | 'badgeTextColor'\n | 'rippleColor'\n | 'disableIndicator'\n | 'labelVisibilityMode'\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 * If `true`, the tab is shown but cannot be selected by tapping it in the\n * tab bar.\n *\n * > **Note:** This only suppresses the native tap interaction. JavaScript\n * > navigation such as `router.push()` or `<Link />` still navigates to\n * > the tab. Use this for tabs that should appear visible but be temporarily inert,\n * > and gate navigation in your own code if you need to fully prevent access.\n *\n * Unlike `hidden`, the tab remains visible in the tab bar.\n *\n * @default false\n *\n * @platform android\n * @platform ios\n */\n disabled?: boolean;\n /**\n * A test identifier for the tab bar item.\n *\n * On iOS it maps to the item's accessibility identifier, which XCUITest and Maestro match.\n * On Android it maps to the item's view tag, which Espresso-based drivers like Detox read\n * but Maestro and Appium do not. Use `accessibilityLabel` to match the tab by id there.\n *\n * @platform android\n * @platform iOS\n */\n testID?: string;\n /**\n * The accessibility label of the tab bar item, announced by screen readers.\n * Defaults to the visible tab label.\n *\n * On Android, maps to the item's `contentDescription` and requires API 26 or above.\n *\n * @platform android\n * @platform iOS\n */\n accessibilityLabel?: string;\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 * The color of the ripple effect when this tab is selected - will be visible when other tabs are pressed.\n *\n * When set on a trigger, it takes precedence over the value set on `NativeTabs`.\n *\n * @platform android\n */\n rippleColor?: ColorValue;\n /**\n * The color of the active indicator for this tab.\n *\n * When set on a trigger, it takes precedence over the value set on `NativeTabs`.\n *\n * @platform android\n */\n indicatorColor?: ColorValue;\n /**\n * When set to `true`, disables the active indicator for this tab.\n *\n * When set on a trigger, it takes precedence over the value set on `NativeTabs`.\n *\n * @default false\n *\n * @platform android\n */\n disableIndicator?: boolean;\n /**\n * The visibility mode of the tab item label for this tab.\n *\n * When set on a trigger, it takes precedence over the value set on `NativeTabs`.\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 * 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?: ScreenProps<\n any,\n TabNavigationState<ParamListBase>,\n NativeTabNavigationEventMap\n >['listeners'];\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"]}
@@ -49,7 +49,9 @@ export declare function unstable_createStandardRouterNavigator<NavigatorOptions
49
49
  * export const Tabs = unstable_integrateWithRouter(navigator, TabRouter);
50
50
  * ```
51
51
  */
52
- export declare function unstable_integrateWithRouter<NavigatorOptions extends object, State extends NavigationState, EventMap extends StandardNavigatorEventMapBase, NavigatorProps extends object, RouterOptions extends DefaultRouterOptions, CreateProps extends object = object>(navigator: StandardNavigator<NavigatorOptions, EventMap, NavigatorProps & CreateProps>, router: RouterFactory<State, NavigationAction, RouterOptions>, ...[options]: IntegrateWithRouterOptionsTuple<State, NoInfer<CreateProps>>): import("react").ForwardRefExoticComponent<import("react").PropsWithoutRef<import("..").PickPartial<StandardRouterNavigatorProps<State, NavigatorOptions, EventMap, NavigatorProps, RouterOptions>, "children">> & import("react").RefAttributes<unknown>> & {
52
+ export declare function unstable_integrateWithRouter<NavigatorOptions extends object, State extends NavigationState, EventMap extends StandardNavigatorEventMapBase, NavigatorProps extends object, RouterOptions extends DefaultRouterOptions, CreateProps extends object = object>(navigator: StandardNavigator<NavigatorOptions, EventMap, NavigatorProps & CreateProps>, router: RouterFactory<State, NavigationAction, RouterOptions>, ...[options]: IntegrateWithRouterOptionsTuple<State, NoInfer<CreateProps>>): import("react").ForwardRefExoticComponent<import("react").PropsWithoutRef<import("..").PickPartial<StandardRouterNavigatorProps<State, NavigatorOptions, EventMap, NavigatorProps, RouterOptions>, "children">> & import("react").RefAttributes<unknown> & {
53
+ unstable_screenErrorBoundary?: ComponentType<import("..").ErrorBoundaryProps>;
54
+ }> & {
53
55
  Screen: (props: import("..").ScreenProps<NavigatorOptions, State, EventMap & EventMapBase>) => null;
54
56
  Protected: typeof import("../views/Protected").Protected;
55
57
  };
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/standard-navigation/index.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,aAAa,EAAW,MAAM,OAAO,CAAC;AAIpD,OAAO,KAAK,EACV,0BAA0B,EAC1B,qBAAqB,EACrB,iBAAiB,EACjB,6BAA6B,EAC7B,4BAA4B,EAE7B,MAAM,SAAS,CAAC;AAKjB,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EAEL,KAAK,oBAAoB,EACzB,KAAK,YAAY,EACjB,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,aAAa,EACnB,MAAM,4BAA4B,CAAC;AAEpC,YAAY,EACV,0BAA0B,EAC1B,qBAAqB,EACrB,6BAA6B,EAC7B,mCAAmC,GACpC,MAAM,SAAS,CAAC;AAOjB,KAAK,+BAA+B,CAAC,KAAK,SAAS,eAAe,EAAE,WAAW,SAAS,MAAM,IAAI;IAChG,MAAM,WAAW;CAClB,SAAS,CAAC,KAAK,CAAC,GACb,CAAC,OAAO,CAAC,EAAE,0BAA0B,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,GAC1D,CAAC,OAAO,EAAE,0BAA0B,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC;AAE9D,KAAK,gCAAgC,CACnC,gBAAgB,SAAS,MAAM,EAC/B,KAAK,SAAS,eAAe,EAC7B,QAAQ,SAAS,6BAA6B,EAC9C,cAAc,SAAS,MAAM,EAC7B,aAAa,SAAS,oBAAoB,IACxC,UAAU,CACZ,OAAO,iBAAiB,CACtB,gBAAgB,EAChB,aAAa,CACX,4BAA4B,CAAC,KAAK,EAAE,gBAAgB,EAAE,QAAQ,EAAE,cAAc,EAAE,aAAa,CAAC,CAC/F,EACD,KAAK,EACL,QAAQ,GAAG,YAAY,CACxB,CACF,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,sCAAsC,CACpD,gBAAgB,SAAS,MAAM,EAC/B,KAAK,SAAS,eAAe,EAC7B,QAAQ,SAAS,6BAA6B,EAC9C,cAAc,SAAS,MAAM,EAC7B,aAAa,SAAS,oBAAoB,EAC1C,WAAW,SAAS,MAAM,GAAG,MAAM,EAEnC,gBAAgB,EAAE,aAAa,CAC7B,qBAAqB,CAAC,gBAAgB,EAAE,QAAQ,EAAE,cAAc,EAAE,WAAW,CAAC,CAC/E,EACD,MAAM,EAAE,aAAa,CAAC,KAAK,EAAE,gBAAgB,EAAE,aAAa,CAAC,EAC7D,GAAG,OAAO,EAAE,+BAA+B,CAAC,KAAK,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC,GACvE,gCAAgC,CACjC,gBAAgB,EAChB,KAAK,EACL,QAAQ,EACR,cAAc,EACd,aAAa,CACd,CAcA;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,4BAA4B,CAC1C,gBAAgB,SAAS,MAAM,EAC/B,KAAK,SAAS,eAAe,EAC7B,QAAQ,SAAS,6BAA6B,EAC9C,cAAc,SAAS,MAAM,EAC7B,aAAa,SAAS,oBAAoB,EAC1C,WAAW,SAAS,MAAM,GAAG,MAAM,EAEnC,SAAS,EAAE,iBAAiB,CAAC,gBAAgB,EAAE,QAAQ,EAAE,cAAc,GAAG,WAAW,CAAC,EACtF,MAAM,EAAE,aAAa,CAAC,KAAK,EAAE,gBAAgB,EAAE,aAAa,CAAC,EAC7D,GAAG,CAAC,OAAO,CAAC,EAAE,+BAA+B,CAAC,KAAK,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;;;EAoE3E"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/standard-navigation/index.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,aAAa,EAAW,MAAM,OAAO,CAAC;AAKpD,OAAO,KAAK,EACV,0BAA0B,EAC1B,qBAAqB,EACrB,iBAAiB,EACjB,6BAA6B,EAC7B,4BAA4B,EAE7B,MAAM,SAAS,CAAC;AAKjB,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EAEL,KAAK,oBAAoB,EACzB,KAAK,YAAY,EACjB,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,aAAa,EACnB,MAAM,4BAA4B,CAAC;AAEpC,YAAY,EACV,0BAA0B,EAC1B,qBAAqB,EACrB,6BAA6B,EAC7B,mCAAmC,GACpC,MAAM,SAAS,CAAC;AAOjB,KAAK,+BAA+B,CAAC,KAAK,SAAS,eAAe,EAAE,WAAW,SAAS,MAAM,IAAI;IAChG,MAAM,WAAW;CAClB,SAAS,CAAC,KAAK,CAAC,GACb,CAAC,OAAO,CAAC,EAAE,0BAA0B,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,GAC1D,CAAC,OAAO,EAAE,0BAA0B,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC;AAE9D,KAAK,gCAAgC,CACnC,gBAAgB,SAAS,MAAM,EAC/B,KAAK,SAAS,eAAe,EAC7B,QAAQ,SAAS,6BAA6B,EAC9C,cAAc,SAAS,MAAM,EAC7B,aAAa,SAAS,oBAAoB,IACxC,UAAU,CACZ,OAAO,iBAAiB,CACtB,gBAAgB,EAChB,aAAa,CACX,4BAA4B,CAAC,KAAK,EAAE,gBAAgB,EAAE,QAAQ,EAAE,cAAc,EAAE,aAAa,CAAC,CAC/F,EACD,KAAK,EACL,QAAQ,GAAG,YAAY,CACxB,CACF,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,sCAAsC,CACpD,gBAAgB,SAAS,MAAM,EAC/B,KAAK,SAAS,eAAe,EAC7B,QAAQ,SAAS,6BAA6B,EAC9C,cAAc,SAAS,MAAM,EAC7B,aAAa,SAAS,oBAAoB,EAC1C,WAAW,SAAS,MAAM,GAAG,MAAM,EAEnC,gBAAgB,EAAE,aAAa,CAC7B,qBAAqB,CAAC,gBAAgB,EAAE,QAAQ,EAAE,cAAc,EAAE,WAAW,CAAC,CAC/E,EACD,MAAM,EAAE,aAAa,CAAC,KAAK,EAAE,gBAAgB,EAAE,aAAa,CAAC,EAC7D,GAAG,OAAO,EAAE,+BAA+B,CAAC,KAAK,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC,GACvE,gCAAgC,CACjC,gBAAgB,EAChB,KAAK,EACL,QAAQ,EACR,cAAc,EACd,aAAa,CACd,CAcA;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,4BAA4B,CAC1C,gBAAgB,SAAS,MAAM,EAC/B,KAAK,SAAS,eAAe,EAC7B,QAAQ,SAAS,6BAA6B,EAC9C,cAAc,SAAS,MAAM,EAC7B,aAAa,SAAS,oBAAoB,EAC1C,WAAW,SAAS,MAAM,GAAG,MAAM,EAEnC,SAAS,EAAE,iBAAiB,CAAC,gBAAgB,EAAE,QAAQ,EAAE,cAAc,GAAG,WAAW,CAAC,EACtF,MAAM,EAAE,aAAa,CAAC,KAAK,EAAE,gBAAgB,EAAE,aAAa,CAAC,EAC7D,GAAG,CAAC,OAAO,CAAC,EAAE,+BAA+B,CAAC,KAAK,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;;;;;EA+E3E"}
@@ -6,6 +6,7 @@ exports.unstable_integrateWithRouter = unstable_integrateWithRouter;
6
6
  const jsx_runtime_1 = require("react/jsx-runtime");
7
7
  const react_1 = require("react");
8
8
  const standard_navigation_1 = require("standard-navigation");
9
+ const Route_1 = require("../Route");
9
10
  const useProjectedDescriptors_1 = require("./useProjectedDescriptors");
10
11
  const useStandardActions_1 = require("./useStandardActions");
11
12
  const useStandardEmitter_1 = require("./useStandardEmitter");
@@ -62,7 +63,10 @@ function unstable_createStandardRouterNavigator(NavigatorContent, router, ...opt
62
63
  function unstable_integrateWithRouter(navigator, router, ...[options]) {
63
64
  assertStandardNavigator(navigator);
64
65
  const { NavigatorContent } = navigator;
65
- function StandardRouterNavigator(props) {
66
+ function StandardRouterNavigator(allProps) {
67
+ const { unstable_screenErrorBoundary, ...rest } = allProps;
68
+ // Omitting the boundary prop from a generic intersection is not preserved by TypeScript.
69
+ const props = rest;
66
70
  const { extraProps, useNavigationBuilderProps } = partitionNavigatorProps(props);
67
71
  const { state, navigation, descriptors, describe, NavigationContent } = (0, native_1.useNavigationBuilder)(router, useNavigationBuilderProps);
68
72
  const { dispatch } = navigation;
@@ -73,7 +77,7 @@ function unstable_integrateWithRouter(navigator, router, ...[options]) {
73
77
  actions: (0, useStandardActions_1.useStandardActions)(navigation, state.key),
74
78
  emitter: (0, useStandardEmitter_1.useStandardEmitter)(navigation),
75
79
  };
76
- return ((0, jsx_runtime_1.jsx)(NavigationContent, { children: (0, jsx_runtime_1.jsx)(NavigatorContent
80
+ const content = ((0, jsx_runtime_1.jsx)(NavigationContent, { children: (0, jsx_runtime_1.jsx)(NavigatorContent
77
81
  // `extraProps` is everything that is not a `useNavigationBuilder` option, which is the
78
82
  // navigator props *and* the router options merged together — at runtime there is no way
79
83
  // to tell the two apart, so the router options are intentionally forwarded here as well.
@@ -81,6 +85,7 @@ function unstable_integrateWithRouter(navigator, router, ...[options]) {
81
85
  // its type, so the TS contract keeps users from reading router options off `NavigatorContent`
82
86
  // in the common case, even though they are physically present on the object.
83
87
  , { ...extraProps, ...derivedProps, ...standardArgs }) }));
88
+ return unstable_screenErrorBoundary ? ((0, jsx_runtime_1.jsx)(Route_1.ScreenErrorBoundaryContext, { value: unstable_screenErrorBoundary, children: content })) : (content);
84
89
  }
85
90
  return (0, withLayoutContext_1.withLayoutContext)(StandardRouterNavigator, undefined, options?.useOnlyUserDefinedScreens);
86
91
  }