expo-router 56.2.15 → 56.2.16

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 (42) hide show
  1. package/android/build.gradle +2 -2
  2. package/build/react-navigation/routers/StackRouter.d.ts.map +1 -1
  3. package/build/react-navigation/routers/StackRouter.js +2 -0
  4. package/build/react-navigation/routers/StackRouter.js.map +1 -1
  5. package/build/react-navigation/routers/TabRouter.d.ts.map +1 -1
  6. package/build/react-navigation/routers/TabRouter.js +2 -0
  7. package/build/react-navigation/routers/TabRouter.js.map +1 -1
  8. package/expo-module.config.json +1 -1
  9. package/local-maven-repo/expo/modules/router/expo.modules.router/{56.2.15/expo.modules.router-56.2.15.module → 56.2.16/expo.modules.router-56.2.16.module} +7 -7
  10. package/local-maven-repo/expo/modules/router/expo.modules.router/56.2.16/expo.modules.router-56.2.16.module.md5 +1 -0
  11. package/local-maven-repo/expo/modules/router/expo.modules.router/56.2.16/expo.modules.router-56.2.16.module.sha1 +1 -0
  12. package/local-maven-repo/expo/modules/router/expo.modules.router/56.2.16/expo.modules.router-56.2.16.module.sha256 +1 -0
  13. package/local-maven-repo/expo/modules/router/expo.modules.router/56.2.16/expo.modules.router-56.2.16.module.sha512 +1 -0
  14. package/local-maven-repo/expo/modules/router/expo.modules.router/{56.2.15/expo.modules.router-56.2.15.pom → 56.2.16/expo.modules.router-56.2.16.pom} +1 -1
  15. package/local-maven-repo/expo/modules/router/expo.modules.router/56.2.16/expo.modules.router-56.2.16.pom.md5 +1 -0
  16. package/local-maven-repo/expo/modules/router/expo.modules.router/56.2.16/expo.modules.router-56.2.16.pom.sha1 +1 -0
  17. package/local-maven-repo/expo/modules/router/expo.modules.router/56.2.16/expo.modules.router-56.2.16.pom.sha256 +1 -0
  18. package/local-maven-repo/expo/modules/router/expo.modules.router/56.2.16/expo.modules.router-56.2.16.pom.sha512 +1 -0
  19. package/local-maven-repo/expo/modules/router/expo.modules.router/maven-metadata.xml +4 -4
  20. package/local-maven-repo/expo/modules/router/expo.modules.router/maven-metadata.xml.md5 +1 -1
  21. package/local-maven-repo/expo/modules/router/expo.modules.router/maven-metadata.xml.sha1 +1 -1
  22. package/local-maven-repo/expo/modules/router/expo.modules.router/maven-metadata.xml.sha256 +1 -1
  23. package/local-maven-repo/expo/modules/router/expo.modules.router/maven-metadata.xml.sha512 +1 -1
  24. package/package.json +11 -11
  25. package/local-maven-repo/expo/modules/router/expo.modules.router/56.2.15/expo.modules.router-56.2.15.module.md5 +0 -1
  26. package/local-maven-repo/expo/modules/router/expo.modules.router/56.2.15/expo.modules.router-56.2.15.module.sha1 +0 -1
  27. package/local-maven-repo/expo/modules/router/expo.modules.router/56.2.15/expo.modules.router-56.2.15.module.sha256 +0 -1
  28. package/local-maven-repo/expo/modules/router/expo.modules.router/56.2.15/expo.modules.router-56.2.15.module.sha512 +0 -1
  29. package/local-maven-repo/expo/modules/router/expo.modules.router/56.2.15/expo.modules.router-56.2.15.pom.md5 +0 -1
  30. package/local-maven-repo/expo/modules/router/expo.modules.router/56.2.15/expo.modules.router-56.2.15.pom.sha1 +0 -1
  31. package/local-maven-repo/expo/modules/router/expo.modules.router/56.2.15/expo.modules.router-56.2.15.pom.sha256 +0 -1
  32. package/local-maven-repo/expo/modules/router/expo.modules.router/56.2.15/expo.modules.router-56.2.15.pom.sha512 +0 -1
  33. /package/local-maven-repo/expo/modules/router/expo.modules.router/{56.2.15/expo.modules.router-56.2.15-sources.jar → 56.2.16/expo.modules.router-56.2.16-sources.jar} +0 -0
  34. /package/local-maven-repo/expo/modules/router/expo.modules.router/{56.2.15/expo.modules.router-56.2.15-sources.jar.md5 → 56.2.16/expo.modules.router-56.2.16-sources.jar.md5} +0 -0
  35. /package/local-maven-repo/expo/modules/router/expo.modules.router/{56.2.15/expo.modules.router-56.2.15-sources.jar.sha1 → 56.2.16/expo.modules.router-56.2.16-sources.jar.sha1} +0 -0
  36. /package/local-maven-repo/expo/modules/router/expo.modules.router/{56.2.15/expo.modules.router-56.2.15-sources.jar.sha256 → 56.2.16/expo.modules.router-56.2.16-sources.jar.sha256} +0 -0
  37. /package/local-maven-repo/expo/modules/router/expo.modules.router/{56.2.15/expo.modules.router-56.2.15-sources.jar.sha512 → 56.2.16/expo.modules.router-56.2.16-sources.jar.sha512} +0 -0
  38. /package/local-maven-repo/expo/modules/router/expo.modules.router/{56.2.15/expo.modules.router-56.2.15.aar → 56.2.16/expo.modules.router-56.2.16.aar} +0 -0
  39. /package/local-maven-repo/expo/modules/router/expo.modules.router/{56.2.15/expo.modules.router-56.2.15.aar.md5 → 56.2.16/expo.modules.router-56.2.16.aar.md5} +0 -0
  40. /package/local-maven-repo/expo/modules/router/expo.modules.router/{56.2.15/expo.modules.router-56.2.15.aar.sha1 → 56.2.16/expo.modules.router-56.2.16.aar.sha1} +0 -0
  41. /package/local-maven-repo/expo/modules/router/expo.modules.router/{56.2.15/expo.modules.router-56.2.15.aar.sha256 → 56.2.16/expo.modules.router-56.2.16.aar.sha256} +0 -0
  42. /package/local-maven-repo/expo/modules/router/expo.modules.router/{56.2.15/expo.modules.router-56.2.15.aar.sha512 → 56.2.16/expo.modules.router-56.2.16.aar.sha512} +0 -0
@@ -4,13 +4,13 @@ plugins {
4
4
  }
5
5
 
6
6
  group = 'expo.modules.router'
7
- version = '56.2.15'
7
+ version = '56.2.16'
8
8
 
9
9
  android {
10
10
  namespace "expo.modules.router"
11
11
  defaultConfig {
12
12
  versionCode 1
13
- versionName "56.2.15"
13
+ versionName "56.2.16"
14
14
  }
15
15
  lintOptions {
16
16
  abortOnError false
@@ -1 +1 @@
1
- {"version":3,"file":"StackRouter.d.ts","sourceRoot":"","sources":["../../../src/react-navigation/routers/StackRouter.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"StackRouter.d.ts","sourceRoot":"","sources":["../../../src/react-navigation/routers/StackRouter.tsx"],"names":[],"mappings":"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"}
@@ -118,6 +118,7 @@ function StackRouter(options) {
118
118
  },
119
119
  getStateForRouteNamesChange(state, { routeNames, routeParamList, routeKeyChanges }) {
120
120
  const routes = state.routes.filter((route) => routeNames.includes(route.name) && !routeKeyChanges.includes(route.name));
121
+ const preloadedRoutes = state.preloadedRoutes.filter((route) => routeNames.includes(route.name) && !routeKeyChanges.includes(route.name));
121
122
  if (routes.length === 0) {
122
123
  const initialRouteName = options.initialRouteName !== undefined && routeNames.includes(options.initialRouteName)
123
124
  ? options.initialRouteName
@@ -132,6 +133,7 @@ function StackRouter(options) {
132
133
  ...state,
133
134
  routeNames,
134
135
  routes,
136
+ preloadedRoutes,
135
137
  index: Math.min(state.index, routes.length - 1),
136
138
  };
137
139
  },
@@ -1 +1 @@
1
- {"version":3,"file":"StackRouter.js","sourceRoot":"","sources":["../../../src/react-navigation/routers/StackRouter.tsx"],"names":[],"mappings":"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","sourcesContent":["import { nanoid } from 'nanoid/non-secure';\n\nimport { BaseRouter } from './BaseRouter';\nimport { createParamsFromAction } from './createParamsFromAction';\nimport { createRouteFromAction } from './createRouteFromAction';\nimport type {\n CommonNavigationAction,\n DefaultRouterOptions,\n NavigationRoute,\n NavigationState,\n ParamListBase,\n Route,\n Router,\n} from './types';\n\nexport type StackActionType =\n | {\n type: 'REPLACE';\n payload: { name: string; params?: object };\n source?: string;\n target?: string;\n }\n | {\n type: 'PUSH';\n payload: { name: string; params?: object };\n source?: string;\n target?: string;\n }\n | {\n type: 'POP';\n payload: { count: number };\n source?: string;\n target?: string;\n }\n | {\n type: 'POP_TO_TOP';\n source?: string;\n target?: string;\n }\n | {\n type: 'POP_TO';\n payload: {\n name: string;\n params?: object;\n merge?: boolean;\n };\n source?: string;\n target?: string;\n };\n\nexport type StackRouterOptions = DefaultRouterOptions;\n\nexport type StackNavigationState<ParamList extends ParamListBase> = NavigationState<ParamList> & {\n /**\n * Type of the router, in this case, it's stack.\n */\n type: 'stack';\n /**\n * List of routes, which are supposed to be preloaded before navigating to.\n */\n preloadedRoutes: NavigationRoute<ParamList, keyof ParamList>[];\n};\n\nexport type StackActionHelpers<ParamList extends ParamListBase> = {\n /**\n * Replace the current route with a new one.\n *\n * @param screen Name of the new route that will replace the current one.\n * @param [params] Params object for the new route.\n */\n replace<RouteName extends keyof ParamList>(\n ...args: RouteName extends unknown\n ? undefined extends ParamList[RouteName]\n ? [screen: RouteName, params?: ParamList[RouteName]]\n : [screen: RouteName, params: ParamList[RouteName]]\n : never\n ): void;\n\n /**\n * Push a new screen onto the stack.\n *\n * @param screen Name of the route to push onto the stack.\n * @param [params] Params object for the route.\n */\n push<RouteName extends keyof ParamList>(\n ...args: RouteName extends unknown\n ? undefined extends ParamList[RouteName]\n ? [screen: RouteName, params?: ParamList[RouteName]]\n : [screen: RouteName, params: ParamList[RouteName]]\n : never\n ): void;\n\n /**\n * Pop a screen from the stack.\n */\n pop(count?: number): void;\n\n /**\n * Pop to the first route in the stack, dismissing all other screens.\n */\n popToTop(): void;\n\n /**\n * Pop any screens to go back to the specified screen.\n * If the specified screen doesn't exist, it'll be added to the stack.\n *\n * @param screen Name of the route to pop to.\n * @param [params] Params object for the route.\n * @param [options.merge] Whether to merge the params onto the route. Defaults to `false`.\n */\n popTo<RouteName extends keyof ParamList>(\n ...args: RouteName extends unknown\n ? undefined extends ParamList[RouteName]\n ? [screen: RouteName, params?: ParamList[RouteName], options?: { merge?: boolean }]\n : [screen: RouteName, params: ParamList[RouteName], options?: { merge?: boolean }]\n : never\n ): void;\n};\n\nexport const StackActions = {\n replace(name: string, params?: object) {\n return {\n type: 'REPLACE',\n payload: { name, params },\n } as const satisfies StackActionType;\n },\n push(name: string, params?: object) {\n return {\n type: 'PUSH',\n payload: { name, params },\n } as const satisfies StackActionType;\n },\n pop(count: number = 1) {\n return {\n type: 'POP',\n payload: { count },\n } as const satisfies StackActionType;\n },\n popToTop() {\n return { type: 'POP_TO_TOP' } as const satisfies StackActionType;\n },\n popTo(name: string, params?: object, options?: { merge?: boolean }) {\n if (typeof options === 'boolean') {\n console.warn(\n `Passing a boolean as the third argument to 'popTo' is deprecated. Pass '{ merge: true }' instead.`\n );\n }\n\n return {\n type: 'POP_TO',\n payload: {\n name,\n params,\n merge: typeof options === 'boolean' ? options : options?.merge,\n },\n } as const satisfies StackActionType;\n },\n};\n\n/**\n * StackRouter is considered an internal implementation and its behavior may change without a notice between expo-router's version\n */\nexport function StackRouter(options: StackRouterOptions) {\n const router: Router<\n StackNavigationState<ParamListBase>,\n CommonNavigationAction | StackActionType\n > = {\n ...BaseRouter,\n\n type: 'stack',\n\n getInitialState({ routeNames, routeParamList }) {\n const initialRouteName =\n options.initialRouteName !== undefined && routeNames.includes(options.initialRouteName)\n ? options.initialRouteName\n : routeNames[0]!;\n\n return {\n stale: false,\n type: 'stack',\n key: `stack-${nanoid()}`,\n index: 0,\n routeNames,\n preloadedRoutes: [],\n routes: [\n {\n key: `${initialRouteName}-${nanoid()}`,\n name: initialRouteName,\n params: routeParamList[initialRouteName],\n },\n ],\n };\n },\n\n getRehydratedState(partialState, { routeNames, routeParamList }) {\n const state = partialState;\n\n if (state.stale === false) {\n return state;\n }\n\n const routes = state.routes\n .filter((route) => routeNames.includes(route.name))\n .map((route) => ({\n ...route,\n key: route.key || `${route.name}-${nanoid()}`,\n params:\n routeParamList[route.name] !== undefined\n ? {\n ...routeParamList[route.name],\n ...route.params,\n }\n : route.params,\n }));\n\n const preloadedRoutes =\n state.preloadedRoutes\n ?.filter((route) => routeNames.includes(route.name))\n .map(\n (route) =>\n ({\n ...route,\n key: route.key || `${route.name}-${nanoid()}`,\n params:\n routeParamList[route.name] !== undefined\n ? {\n ...routeParamList[route.name],\n ...route.params,\n }\n : route.params,\n }) as Route<string>\n ) ?? [];\n\n if (routes.length === 0) {\n const initialRouteName =\n options.initialRouteName !== undefined ? options.initialRouteName : routeNames[0]!;\n\n routes.push({\n key: `${initialRouteName}-${nanoid()}`,\n name: initialRouteName,\n params: routeParamList[initialRouteName],\n });\n }\n\n return {\n stale: false,\n type: 'stack',\n key: `stack-${nanoid()}`,\n index: routes.length - 1,\n routeNames,\n routes,\n preloadedRoutes,\n };\n },\n\n getStateForRouteNamesChange(state, { routeNames, routeParamList, routeKeyChanges }) {\n const routes = state.routes.filter(\n (route) => routeNames.includes(route.name) && !routeKeyChanges.includes(route.name)\n );\n\n if (routes.length === 0) {\n const initialRouteName =\n options.initialRouteName !== undefined && routeNames.includes(options.initialRouteName)\n ? options.initialRouteName\n : routeNames[0]!;\n\n routes.push({\n key: `${initialRouteName}-${nanoid()}`,\n name: initialRouteName,\n params: routeParamList[initialRouteName],\n });\n }\n\n return {\n ...state,\n routeNames,\n routes,\n index: Math.min(state.index, routes.length - 1),\n };\n },\n\n getStateForRouteFocus(state, key) {\n const index = state.routes.findIndex((r) => r.key === key);\n\n if (index === -1 || index === state.index) {\n return state;\n }\n\n return {\n ...state,\n index,\n routes: state.routes.slice(0, index + 1),\n };\n },\n\n getStateForAction(state, action, options) {\n const { routeParamList } = options;\n\n switch (action.type) {\n case 'REPLACE': {\n const currentIndex =\n action.target === state.key && action.source\n ? state.routes.findIndex((r) => r.key === action.source)\n : state.index;\n\n if (currentIndex === -1) {\n return null;\n }\n\n if (!state.routeNames.includes(action.payload.name)) {\n return null;\n }\n\n const getId = options.routeGetIdList[action.payload.name];\n const id = getId?.({ params: action.payload.params });\n\n // Re-use preloaded route if available\n let route = state.preloadedRoutes.find(\n (route) =>\n route.name === action.payload.name && id === getId?.({ params: route.params })\n );\n\n if (!route) {\n route = createRouteFromAction({ action, routeParamList });\n }\n\n return {\n ...state,\n routes: state.routes.map((r, i) => (i === currentIndex ? route : r)),\n preloadedRoutes: state.preloadedRoutes.filter((r) => r.key !== route.key),\n };\n }\n\n case 'PUSH':\n case 'NAVIGATE': {\n if (!state.routeNames.includes(action.payload.name)) {\n return null;\n }\n\n const getId = options.routeGetIdList[action.payload.name];\n const id = getId?.({ params: action.payload.params });\n\n let route: Route<string> | undefined;\n\n if (id !== undefined) {\n route = state.routes.findLast(\n (route) =>\n route.name === action.payload.name && id === getId?.({ params: route.params })\n );\n } else if (action.type === 'NAVIGATE') {\n const currentRoute = state.routes[state.index]!;\n\n // If the route matches the current one, then navigate to it\n if (action.payload.name === currentRoute.name) {\n route = currentRoute;\n } else if (action.payload.pop) {\n route = state.routes.findLast((route) => route.name === action.payload.name);\n }\n }\n\n if (!route) {\n route = state.preloadedRoutes.find(\n (route) =>\n route.name === action.payload.name && id === getId?.({ params: route.params })\n );\n }\n\n let params;\n\n if (action.type === 'NAVIGATE' && action.payload.merge && route) {\n params =\n action.payload.params !== undefined ||\n routeParamList[action.payload.name] !== undefined\n ? {\n ...routeParamList[action.payload.name],\n ...route.params,\n ...action.payload.params,\n }\n : route.params;\n } else {\n params = createParamsFromAction({ action, routeParamList });\n }\n\n let routes: Route<string>[];\n\n if (route) {\n if (action.type === 'NAVIGATE' && action.payload.pop) {\n routes = [];\n\n // Get all routes until the matching one\n for (const r of state.routes) {\n if (r.key === route.key) {\n routes.push({\n ...route,\n path: action.payload.path !== undefined ? action.payload.path : route.path,\n params,\n });\n break;\n }\n\n routes.push(r);\n }\n } else {\n routes = state.routes.filter((r) => r.key !== route.key);\n routes.push({\n ...route,\n path:\n action.type === 'NAVIGATE' && action.payload.path !== undefined\n ? action.payload.path\n : route.path,\n params,\n });\n }\n } else {\n routes = [\n ...state.routes,\n {\n key: `${action.payload.name}-${nanoid()}`,\n name: action.payload.name,\n path: action.type === 'NAVIGATE' ? action.payload.path : undefined,\n params,\n },\n ];\n }\n\n return {\n ...state,\n index: routes.length - 1,\n preloadedRoutes: state.preloadedRoutes.filter(\n (route) => routes[routes.length - 1]!.key !== route.key\n ),\n routes,\n };\n }\n\n case 'NAVIGATE_DEPRECATED': {\n if (!state.routeNames.includes(action.payload.name)) {\n return null;\n }\n\n if (\n state.preloadedRoutes.find(\n (route) =>\n route.name === action.payload.name && id === getId?.({ params: route.params })\n )\n ) {\n return null;\n }\n\n // If the route already exists, navigate to that\n let index = -1;\n\n const getId = options.routeGetIdList[action.payload.name];\n const id = getId?.({ params: action.payload.params });\n\n if (id !== undefined) {\n index = state.routes.findIndex(\n (route) =>\n route.name === action.payload.name && id === getId?.({ params: route.params })\n );\n } else if (state.routes[state.index]!.name === action.payload.name) {\n index = state.index;\n } else {\n index = state.routes.findLastIndex((route) => route.name === action.payload.name);\n }\n\n if (index === -1) {\n const routes = [...state.routes, createRouteFromAction({ action, routeParamList })];\n\n return {\n ...state,\n routes,\n index: routes.length - 1,\n };\n }\n\n const route = state.routes[index]!;\n\n let params;\n\n if (action.payload.merge) {\n params =\n action.payload.params !== undefined || routeParamList[route.name] !== undefined\n ? {\n ...routeParamList[route.name],\n ...route.params,\n ...action.payload.params,\n }\n : route.params;\n } else {\n params = createParamsFromAction({ action, routeParamList });\n }\n\n return {\n ...state,\n index,\n routes: [\n ...state.routes.slice(0, index),\n params !== route.params ? { ...route, params } : state.routes[index]!,\n ],\n };\n }\n\n case 'POP': {\n const currentIndex =\n action.target === state.key && action.source\n ? state.routes.findIndex((r) => r.key === action.source)\n : state.index;\n\n if (currentIndex > 0) {\n const count = Math.max(currentIndex - action.payload.count + 1, 1);\n const routes = state.routes\n .slice(0, count)\n .concat(state.routes.slice(currentIndex + 1));\n\n return {\n ...state,\n index: routes.length - 1,\n routes,\n };\n }\n\n return null;\n }\n\n case 'POP_TO_TOP':\n return router.getStateForAction(\n state,\n {\n type: 'POP',\n payload: { count: state.routes.length - 1 },\n },\n options\n );\n\n case 'POP_TO': {\n const currentIndex =\n action.target === state.key && action.source\n ? state.routes.findLastIndex((r) => r.key === action.source)\n : state.index;\n\n if (currentIndex === -1) {\n return null;\n }\n\n if (!state.routeNames.includes(action.payload.name)) {\n return null;\n }\n\n // If the route already exists, navigate to it\n let index = -1;\n\n const getId = options.routeGetIdList[action.payload.name];\n const id = getId?.({ params: action.payload.params });\n\n if (id !== undefined) {\n index = state.routes.findIndex(\n (route) =>\n route.name === action.payload.name && id === getId?.({ params: route.params })\n );\n } else if (state.routes[currentIndex]!.name === action.payload.name) {\n index = currentIndex;\n } else {\n for (let i = currentIndex; i >= 0; i--) {\n if (state.routes[i]!.name === action.payload.name) {\n index = i;\n break;\n }\n }\n }\n\n // If the route doesn't exist, remove the current route and add the new one\n if (index === -1) {\n // Re-use preloaded route if available\n let route = state.preloadedRoutes.find(\n (route) =>\n route.name === action.payload.name && id === getId?.({ params: route.params })\n );\n\n if (!route) {\n route = createRouteFromAction({ action, routeParamList });\n }\n\n const routes = state.routes.slice(0, currentIndex).concat(route);\n\n return {\n ...state,\n index: routes.length - 1,\n routes,\n preloadedRoutes: state.preloadedRoutes.filter((r) => r.key !== route.key),\n };\n }\n\n const route = state.routes[index]!;\n\n let params;\n\n if (action.payload.merge) {\n params =\n action.payload.params !== undefined || routeParamList[route.name] !== undefined\n ? {\n ...routeParamList[route.name],\n ...route.params,\n ...action.payload.params,\n }\n : route.params;\n } else {\n params = createParamsFromAction({ action, routeParamList });\n }\n\n return {\n ...state,\n index,\n routes: [\n ...state.routes.slice(0, index),\n params !== route.params ? { ...route, params } : state.routes[index]!,\n ],\n };\n }\n\n case 'GO_BACK':\n if (state.index > 0) {\n return router.getStateForAction(\n state,\n {\n type: 'POP',\n payload: { count: 1 },\n target: action.target,\n source: action.source,\n },\n options\n );\n }\n\n return null;\n\n case 'PRELOAD': {\n const getId = options.routeGetIdList[action.payload.name];\n const id = getId?.({ params: action.payload.params });\n\n let route: Route<string> | undefined;\n\n if (id !== undefined) {\n route = state.routes.find(\n (route) =>\n route.name === action.payload.name && id === getId?.({ params: route.params })\n );\n }\n\n if (route) {\n return {\n ...state,\n routes: state.routes.map((r) => {\n if (r.key !== route?.key) {\n return r;\n }\n return {\n ...r,\n params: createParamsFromAction({ action, routeParamList }),\n };\n }),\n };\n } else {\n return {\n ...state,\n preloadedRoutes: state.preloadedRoutes\n .filter(\n (r) => r.name !== action.payload.name || id !== getId?.({ params: r.params })\n )\n .concat(createRouteFromAction({ action, routeParamList })),\n };\n }\n }\n\n default:\n return BaseRouter.getStateForAction(state, action);\n }\n },\n\n actionCreators: StackActions,\n };\n\n return router;\n}\n"]}
1
+ {"version":3,"file":"StackRouter.js","sourceRoot":"","sources":["../../../src/react-navigation/routers/StackRouter.tsx"],"names":[],"mappings":"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","sourcesContent":["import { nanoid } from 'nanoid/non-secure';\n\nimport { BaseRouter } from './BaseRouter';\nimport { createParamsFromAction } from './createParamsFromAction';\nimport { createRouteFromAction } from './createRouteFromAction';\nimport type {\n CommonNavigationAction,\n DefaultRouterOptions,\n NavigationRoute,\n NavigationState,\n ParamListBase,\n Route,\n Router,\n} from './types';\n\nexport type StackActionType =\n | {\n type: 'REPLACE';\n payload: { name: string; params?: object };\n source?: string;\n target?: string;\n }\n | {\n type: 'PUSH';\n payload: { name: string; params?: object };\n source?: string;\n target?: string;\n }\n | {\n type: 'POP';\n payload: { count: number };\n source?: string;\n target?: string;\n }\n | {\n type: 'POP_TO_TOP';\n source?: string;\n target?: string;\n }\n | {\n type: 'POP_TO';\n payload: {\n name: string;\n params?: object;\n merge?: boolean;\n };\n source?: string;\n target?: string;\n };\n\nexport type StackRouterOptions = DefaultRouterOptions;\n\nexport type StackNavigationState<ParamList extends ParamListBase> = NavigationState<ParamList> & {\n /**\n * Type of the router, in this case, it's stack.\n */\n type: 'stack';\n /**\n * List of routes, which are supposed to be preloaded before navigating to.\n */\n preloadedRoutes: NavigationRoute<ParamList, keyof ParamList>[];\n};\n\nexport type StackActionHelpers<ParamList extends ParamListBase> = {\n /**\n * Replace the current route with a new one.\n *\n * @param screen Name of the new route that will replace the current one.\n * @param [params] Params object for the new route.\n */\n replace<RouteName extends keyof ParamList>(\n ...args: RouteName extends unknown\n ? undefined extends ParamList[RouteName]\n ? [screen: RouteName, params?: ParamList[RouteName]]\n : [screen: RouteName, params: ParamList[RouteName]]\n : never\n ): void;\n\n /**\n * Push a new screen onto the stack.\n *\n * @param screen Name of the route to push onto the stack.\n * @param [params] Params object for the route.\n */\n push<RouteName extends keyof ParamList>(\n ...args: RouteName extends unknown\n ? undefined extends ParamList[RouteName]\n ? [screen: RouteName, params?: ParamList[RouteName]]\n : [screen: RouteName, params: ParamList[RouteName]]\n : never\n ): void;\n\n /**\n * Pop a screen from the stack.\n */\n pop(count?: number): void;\n\n /**\n * Pop to the first route in the stack, dismissing all other screens.\n */\n popToTop(): void;\n\n /**\n * Pop any screens to go back to the specified screen.\n * If the specified screen doesn't exist, it'll be added to the stack.\n *\n * @param screen Name of the route to pop to.\n * @param [params] Params object for the route.\n * @param [options.merge] Whether to merge the params onto the route. Defaults to `false`.\n */\n popTo<RouteName extends keyof ParamList>(\n ...args: RouteName extends unknown\n ? undefined extends ParamList[RouteName]\n ? [screen: RouteName, params?: ParamList[RouteName], options?: { merge?: boolean }]\n : [screen: RouteName, params: ParamList[RouteName], options?: { merge?: boolean }]\n : never\n ): void;\n};\n\nexport const StackActions = {\n replace(name: string, params?: object) {\n return {\n type: 'REPLACE',\n payload: { name, params },\n } as const satisfies StackActionType;\n },\n push(name: string, params?: object) {\n return {\n type: 'PUSH',\n payload: { name, params },\n } as const satisfies StackActionType;\n },\n pop(count: number = 1) {\n return {\n type: 'POP',\n payload: { count },\n } as const satisfies StackActionType;\n },\n popToTop() {\n return { type: 'POP_TO_TOP' } as const satisfies StackActionType;\n },\n popTo(name: string, params?: object, options?: { merge?: boolean }) {\n if (typeof options === 'boolean') {\n console.warn(\n `Passing a boolean as the third argument to 'popTo' is deprecated. Pass '{ merge: true }' instead.`\n );\n }\n\n return {\n type: 'POP_TO',\n payload: {\n name,\n params,\n merge: typeof options === 'boolean' ? options : options?.merge,\n },\n } as const satisfies StackActionType;\n },\n};\n\n/**\n * StackRouter is considered an internal implementation and its behavior may change without a notice between expo-router's version\n */\nexport function StackRouter(options: StackRouterOptions) {\n const router: Router<\n StackNavigationState<ParamListBase>,\n CommonNavigationAction | StackActionType\n > = {\n ...BaseRouter,\n\n type: 'stack',\n\n getInitialState({ routeNames, routeParamList }) {\n const initialRouteName =\n options.initialRouteName !== undefined && routeNames.includes(options.initialRouteName)\n ? options.initialRouteName\n : routeNames[0]!;\n\n return {\n stale: false,\n type: 'stack',\n key: `stack-${nanoid()}`,\n index: 0,\n routeNames,\n preloadedRoutes: [],\n routes: [\n {\n key: `${initialRouteName}-${nanoid()}`,\n name: initialRouteName,\n params: routeParamList[initialRouteName],\n },\n ],\n };\n },\n\n getRehydratedState(partialState, { routeNames, routeParamList }) {\n const state = partialState;\n\n if (state.stale === false) {\n return state;\n }\n\n const routes = state.routes\n .filter((route) => routeNames.includes(route.name))\n .map((route) => ({\n ...route,\n key: route.key || `${route.name}-${nanoid()}`,\n params:\n routeParamList[route.name] !== undefined\n ? {\n ...routeParamList[route.name],\n ...route.params,\n }\n : route.params,\n }));\n\n const preloadedRoutes =\n state.preloadedRoutes\n ?.filter((route) => routeNames.includes(route.name))\n .map(\n (route) =>\n ({\n ...route,\n key: route.key || `${route.name}-${nanoid()}`,\n params:\n routeParamList[route.name] !== undefined\n ? {\n ...routeParamList[route.name],\n ...route.params,\n }\n : route.params,\n }) as Route<string>\n ) ?? [];\n\n if (routes.length === 0) {\n const initialRouteName =\n options.initialRouteName !== undefined ? options.initialRouteName : routeNames[0]!;\n\n routes.push({\n key: `${initialRouteName}-${nanoid()}`,\n name: initialRouteName,\n params: routeParamList[initialRouteName],\n });\n }\n\n return {\n stale: false,\n type: 'stack',\n key: `stack-${nanoid()}`,\n index: routes.length - 1,\n routeNames,\n routes,\n preloadedRoutes,\n };\n },\n\n getStateForRouteNamesChange(state, { routeNames, routeParamList, routeKeyChanges }) {\n const routes = state.routes.filter(\n (route) => routeNames.includes(route.name) && !routeKeyChanges.includes(route.name)\n );\n\n const preloadedRoutes = state.preloadedRoutes.filter(\n (route) => routeNames.includes(route.name) && !routeKeyChanges.includes(route.name)\n );\n\n if (routes.length === 0) {\n const initialRouteName =\n options.initialRouteName !== undefined && routeNames.includes(options.initialRouteName)\n ? options.initialRouteName\n : routeNames[0]!;\n\n routes.push({\n key: `${initialRouteName}-${nanoid()}`,\n name: initialRouteName,\n params: routeParamList[initialRouteName],\n });\n }\n\n return {\n ...state,\n routeNames,\n routes,\n preloadedRoutes,\n index: Math.min(state.index, routes.length - 1),\n };\n },\n\n getStateForRouteFocus(state, key) {\n const index = state.routes.findIndex((r) => r.key === key);\n\n if (index === -1 || index === state.index) {\n return state;\n }\n\n return {\n ...state,\n index,\n routes: state.routes.slice(0, index + 1),\n };\n },\n\n getStateForAction(state, action, options) {\n const { routeParamList } = options;\n\n switch (action.type) {\n case 'REPLACE': {\n const currentIndex =\n action.target === state.key && action.source\n ? state.routes.findIndex((r) => r.key === action.source)\n : state.index;\n\n if (currentIndex === -1) {\n return null;\n }\n\n if (!state.routeNames.includes(action.payload.name)) {\n return null;\n }\n\n const getId = options.routeGetIdList[action.payload.name];\n const id = getId?.({ params: action.payload.params });\n\n // Re-use preloaded route if available\n let route = state.preloadedRoutes.find(\n (route) =>\n route.name === action.payload.name && id === getId?.({ params: route.params })\n );\n\n if (!route) {\n route = createRouteFromAction({ action, routeParamList });\n }\n\n return {\n ...state,\n routes: state.routes.map((r, i) => (i === currentIndex ? route : r)),\n preloadedRoutes: state.preloadedRoutes.filter((r) => r.key !== route.key),\n };\n }\n\n case 'PUSH':\n case 'NAVIGATE': {\n if (!state.routeNames.includes(action.payload.name)) {\n return null;\n }\n\n const getId = options.routeGetIdList[action.payload.name];\n const id = getId?.({ params: action.payload.params });\n\n let route: Route<string> | undefined;\n\n if (id !== undefined) {\n route = state.routes.findLast(\n (route) =>\n route.name === action.payload.name && id === getId?.({ params: route.params })\n );\n } else if (action.type === 'NAVIGATE') {\n const currentRoute = state.routes[state.index]!;\n\n // If the route matches the current one, then navigate to it\n if (action.payload.name === currentRoute.name) {\n route = currentRoute;\n } else if (action.payload.pop) {\n route = state.routes.findLast((route) => route.name === action.payload.name);\n }\n }\n\n if (!route) {\n route = state.preloadedRoutes.find(\n (route) =>\n route.name === action.payload.name && id === getId?.({ params: route.params })\n );\n }\n\n let params;\n\n if (action.type === 'NAVIGATE' && action.payload.merge && route) {\n params =\n action.payload.params !== undefined ||\n routeParamList[action.payload.name] !== undefined\n ? {\n ...routeParamList[action.payload.name],\n ...route.params,\n ...action.payload.params,\n }\n : route.params;\n } else {\n params = createParamsFromAction({ action, routeParamList });\n }\n\n let routes: Route<string>[];\n\n if (route) {\n if (action.type === 'NAVIGATE' && action.payload.pop) {\n routes = [];\n\n // Get all routes until the matching one\n for (const r of state.routes) {\n if (r.key === route.key) {\n routes.push({\n ...route,\n path: action.payload.path !== undefined ? action.payload.path : route.path,\n params,\n });\n break;\n }\n\n routes.push(r);\n }\n } else {\n routes = state.routes.filter((r) => r.key !== route.key);\n routes.push({\n ...route,\n path:\n action.type === 'NAVIGATE' && action.payload.path !== undefined\n ? action.payload.path\n : route.path,\n params,\n });\n }\n } else {\n routes = [\n ...state.routes,\n {\n key: `${action.payload.name}-${nanoid()}`,\n name: action.payload.name,\n path: action.type === 'NAVIGATE' ? action.payload.path : undefined,\n params,\n },\n ];\n }\n\n return {\n ...state,\n index: routes.length - 1,\n preloadedRoutes: state.preloadedRoutes.filter(\n (route) => routes[routes.length - 1]!.key !== route.key\n ),\n routes,\n };\n }\n\n case 'NAVIGATE_DEPRECATED': {\n if (!state.routeNames.includes(action.payload.name)) {\n return null;\n }\n\n if (\n state.preloadedRoutes.find(\n (route) =>\n route.name === action.payload.name && id === getId?.({ params: route.params })\n )\n ) {\n return null;\n }\n\n // If the route already exists, navigate to that\n let index = -1;\n\n const getId = options.routeGetIdList[action.payload.name];\n const id = getId?.({ params: action.payload.params });\n\n if (id !== undefined) {\n index = state.routes.findIndex(\n (route) =>\n route.name === action.payload.name && id === getId?.({ params: route.params })\n );\n } else if (state.routes[state.index]!.name === action.payload.name) {\n index = state.index;\n } else {\n index = state.routes.findLastIndex((route) => route.name === action.payload.name);\n }\n\n if (index === -1) {\n const routes = [...state.routes, createRouteFromAction({ action, routeParamList })];\n\n return {\n ...state,\n routes,\n index: routes.length - 1,\n };\n }\n\n const route = state.routes[index]!;\n\n let params;\n\n if (action.payload.merge) {\n params =\n action.payload.params !== undefined || routeParamList[route.name] !== undefined\n ? {\n ...routeParamList[route.name],\n ...route.params,\n ...action.payload.params,\n }\n : route.params;\n } else {\n params = createParamsFromAction({ action, routeParamList });\n }\n\n return {\n ...state,\n index,\n routes: [\n ...state.routes.slice(0, index),\n params !== route.params ? { ...route, params } : state.routes[index]!,\n ],\n };\n }\n\n case 'POP': {\n const currentIndex =\n action.target === state.key && action.source\n ? state.routes.findIndex((r) => r.key === action.source)\n : state.index;\n\n if (currentIndex > 0) {\n const count = Math.max(currentIndex - action.payload.count + 1, 1);\n const routes = state.routes\n .slice(0, count)\n .concat(state.routes.slice(currentIndex + 1));\n\n return {\n ...state,\n index: routes.length - 1,\n routes,\n };\n }\n\n return null;\n }\n\n case 'POP_TO_TOP':\n return router.getStateForAction(\n state,\n {\n type: 'POP',\n payload: { count: state.routes.length - 1 },\n },\n options\n );\n\n case 'POP_TO': {\n const currentIndex =\n action.target === state.key && action.source\n ? state.routes.findLastIndex((r) => r.key === action.source)\n : state.index;\n\n if (currentIndex === -1) {\n return null;\n }\n\n if (!state.routeNames.includes(action.payload.name)) {\n return null;\n }\n\n // If the route already exists, navigate to it\n let index = -1;\n\n const getId = options.routeGetIdList[action.payload.name];\n const id = getId?.({ params: action.payload.params });\n\n if (id !== undefined) {\n index = state.routes.findIndex(\n (route) =>\n route.name === action.payload.name && id === getId?.({ params: route.params })\n );\n } else if (state.routes[currentIndex]!.name === action.payload.name) {\n index = currentIndex;\n } else {\n for (let i = currentIndex; i >= 0; i--) {\n if (state.routes[i]!.name === action.payload.name) {\n index = i;\n break;\n }\n }\n }\n\n // If the route doesn't exist, remove the current route and add the new one\n if (index === -1) {\n // Re-use preloaded route if available\n let route = state.preloadedRoutes.find(\n (route) =>\n route.name === action.payload.name && id === getId?.({ params: route.params })\n );\n\n if (!route) {\n route = createRouteFromAction({ action, routeParamList });\n }\n\n const routes = state.routes.slice(0, currentIndex).concat(route);\n\n return {\n ...state,\n index: routes.length - 1,\n routes,\n preloadedRoutes: state.preloadedRoutes.filter((r) => r.key !== route.key),\n };\n }\n\n const route = state.routes[index]!;\n\n let params;\n\n if (action.payload.merge) {\n params =\n action.payload.params !== undefined || routeParamList[route.name] !== undefined\n ? {\n ...routeParamList[route.name],\n ...route.params,\n ...action.payload.params,\n }\n : route.params;\n } else {\n params = createParamsFromAction({ action, routeParamList });\n }\n\n return {\n ...state,\n index,\n routes: [\n ...state.routes.slice(0, index),\n params !== route.params ? { ...route, params } : state.routes[index]!,\n ],\n };\n }\n\n case 'GO_BACK':\n if (state.index > 0) {\n return router.getStateForAction(\n state,\n {\n type: 'POP',\n payload: { count: 1 },\n target: action.target,\n source: action.source,\n },\n options\n );\n }\n\n return null;\n\n case 'PRELOAD': {\n const getId = options.routeGetIdList[action.payload.name];\n const id = getId?.({ params: action.payload.params });\n\n let route: Route<string> | undefined;\n\n if (id !== undefined) {\n route = state.routes.find(\n (route) =>\n route.name === action.payload.name && id === getId?.({ params: route.params })\n );\n }\n\n if (route) {\n return {\n ...state,\n routes: state.routes.map((r) => {\n if (r.key !== route?.key) {\n return r;\n }\n return {\n ...r,\n params: createParamsFromAction({ action, routeParamList }),\n };\n }),\n };\n } else {\n return {\n ...state,\n preloadedRoutes: state.preloadedRoutes\n .filter(\n (r) => r.name !== action.payload.name || id !== getId?.({ params: r.params })\n )\n .concat(createRouteFromAction({ action, routeParamList })),\n };\n }\n }\n\n default:\n return BaseRouter.getStateForAction(state, action);\n }\n },\n\n actionCreators: StackActions,\n };\n\n return router;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"TabRouter.d.ts","sourceRoot":"","sources":["../../../src/react-navigation/routers/TabRouter.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,sBAAsB,EACtB,oBAAoB,EACpB,eAAe,EACf,aAAa,EAGb,MAAM,EACP,MAAM,SAAS,CAAC;AAGjB,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,EAAE,SAAS,CAAC;IAChB,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC3C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,YAAY,GACpB,YAAY,GACZ,cAAc,GACd,OAAO,GACP,SAAS,GACT,aAAa,GACb,MAAM,CAAC;AAEX,MAAM,MAAM,gBAAgB,GAAG,oBAAoB,GAAG;IACpD;;;;;;;;OAQG;IACH,YAAY,CAAC,EAAE,YAAY,CAAC;CAC7B,CAAC;AAEF,MAAM,MAAM,kBAAkB,CAAC,SAAS,SAAS,aAAa,IAAI,IAAI,CACpE,eAAe,CAAC,SAAS,CAAC,EAC1B,SAAS,CACV,GAAG;IACF;;OAEG;IACH,IAAI,EAAE,KAAK,CAAC;IACZ;;OAEG;IACH,OAAO,EAAE;QAAE,IAAI,EAAE,OAAO,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;KAAE,EAAE,CAAC;IACvE;;OAEG;IACH,kBAAkB,EAAE,MAAM,EAAE,CAAC;CAC9B,CAAC;AAEF,MAAM,MAAM,gBAAgB,CAAC,SAAS,SAAS,aAAa,IAAI;IAC9D;;;;;OAKG;IACH,MAAM,CAAC,SAAS,SAAS,MAAM,SAAS,EACtC,GAAG,IAAI,EAAE,SAAS,SAAS,OAAO,GAC9B,SAAS,SAAS,SAAS,CAAC,SAAS,CAAC,GACpC,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC,GAClD,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC,GACnD,KAAK,GACR,IAAI,CAAC;CACT,CAAC;AAIF,eAAO,MAAM,UAAU;iBACR,MAAM,WAAW,MAAM;;;;;;;CAMrC,CAAC;AA2ZF;;GAEG;AACH,wBAAgB,SAAS,CACvB,IAAI,EAAE,gBAAgB,GACrB,MAAM,CAAC,kBAAkB,CAAC,aAAa,CAAC,EAAE,aAAa,GAAG,sBAAsB,CAAC,CA+CnF"}
1
+ {"version":3,"file":"TabRouter.d.ts","sourceRoot":"","sources":["../../../src/react-navigation/routers/TabRouter.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,sBAAsB,EACtB,oBAAoB,EACpB,eAAe,EACf,aAAa,EAGb,MAAM,EACP,MAAM,SAAS,CAAC;AAGjB,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,EAAE,SAAS,CAAC;IAChB,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC3C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,YAAY,GACpB,YAAY,GACZ,cAAc,GACd,OAAO,GACP,SAAS,GACT,aAAa,GACb,MAAM,CAAC;AAEX,MAAM,MAAM,gBAAgB,GAAG,oBAAoB,GAAG;IACpD;;;;;;;;OAQG;IACH,YAAY,CAAC,EAAE,YAAY,CAAC;CAC7B,CAAC;AAEF,MAAM,MAAM,kBAAkB,CAAC,SAAS,SAAS,aAAa,IAAI,IAAI,CACpE,eAAe,CAAC,SAAS,CAAC,EAC1B,SAAS,CACV,GAAG;IACF;;OAEG;IACH,IAAI,EAAE,KAAK,CAAC;IACZ;;OAEG;IACH,OAAO,EAAE;QAAE,IAAI,EAAE,OAAO,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;KAAE,EAAE,CAAC;IACvE;;OAEG;IACH,kBAAkB,EAAE,MAAM,EAAE,CAAC;CAC9B,CAAC;AAEF,MAAM,MAAM,gBAAgB,CAAC,SAAS,SAAS,aAAa,IAAI;IAC9D;;;;;OAKG;IACH,MAAM,CAAC,SAAS,SAAS,MAAM,SAAS,EACtC,GAAG,IAAI,EAAE,SAAS,SAAS,OAAO,GAC9B,SAAS,SAAS,SAAS,CAAC,SAAS,CAAC,GACpC,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC,GAClD,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC,GACnD,KAAK,GACR,IAAI,CAAC;CACT,CAAC;AAIF,eAAO,MAAM,UAAU;iBACR,MAAM,WAAW,MAAM;;;;;;;CAMrC,CAAC;AAgaF;;GAEG;AACH,wBAAgB,SAAS,CACvB,IAAI,EAAE,gBAAgB,GACrB,MAAM,CAAC,kBAAkB,CAAC,aAAa,CAAC,EAAE,aAAa,GAAG,sBAAsB,CAAC,CA+CnF"}
@@ -159,6 +159,7 @@ function BaseTabRouter({ initialRouteName, backBehavior = 'firstRoute' }) {
159
159
  key: `${name}-${(0, non_secure_1.nanoid)()}`,
160
160
  params: routeParamList[name],
161
161
  });
162
+ const preloadedRouteKeys = state.preloadedRouteKeys.filter((key) => routes.some((route) => route.key === key));
162
163
  const index = Math.max(0, routeNames.indexOf(state.routes[state.index].name));
163
164
  let history = state.history.filter(
164
165
  // Type will always be 'route' for tabs, but could be different in a router extending this (e.g. drawer)
@@ -171,6 +172,7 @@ function BaseTabRouter({ initialRouteName, backBehavior = 'firstRoute' }) {
171
172
  history,
172
173
  routeNames,
173
174
  routes,
175
+ preloadedRouteKeys,
174
176
  index,
175
177
  };
176
178
  },
@@ -1 +1 @@
1
- {"version":3,"file":"TabRouter.js","sourceRoot":"","sources":["../../../src/react-navigation/routers/TabRouter.tsx"],"names":[],"mappings":";;;AAofA,8BAiDC;AAriBD,kDAA2C;AAE3C,6CAA0C;AAC1C,qEAAkE;AA0ElE,MAAM,UAAU,GAAG,OAAgB,CAAC;AAEvB,QAAA,UAAU,GAAG;IACxB,MAAM,CAAC,IAAY,EAAE,MAAe;QAClC,OAAO;YACL,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;SACO,CAAC;IACrC,CAAC;CACF,CAAC;AAEF,MAAM,eAAe,GAAG,CACtB,MAAuB,EACvB,KAAa,EACb,YAA0B,EAC1B,gBAAoC,EACpC,EAAE;IACF,MAAM,OAAO,GAAG;QACd;YACE,IAAI,EAAE,UAAU;YAChB,GAAG,EAAE,MAAM,CAAC,KAAK,CAAE,CAAC,GAAG;SACxB;KACF,CAAC;IAEF,IAAI,iBAAiB,CAAC;IAEtB,QAAQ,YAAY,EAAE,CAAC;QACrB,KAAK,OAAO;YACV,KAAK,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC/B,OAAO,CAAC,OAAO,CAAC;oBACd,IAAI,EAAE,UAAU;oBAChB,GAAG,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,CAAE,CAAC,GAAG;iBACxB,CAAC,CAAC;YACL,CAAC;YACD,MAAM;QACR,KAAK,YAAY;YACf,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;gBAChB,OAAO,CAAC,OAAO,CAAC;oBACd,IAAI,EAAE,UAAU;oBAChB,GAAG,EAAE,MAAM,CAAC,CAAC,CAAE,CAAC,GAAG;iBACpB,CAAC,CAAC;YACL,CAAC;YACD,MAAM;QACR,KAAK,cAAc;YACjB,iBAAiB,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,gBAAgB,CAAC,CAAC;YACjF,iBAAiB,GAAG,iBAAiB,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC;YAErE,IAAI,KAAK,KAAK,iBAAiB,EAAE,CAAC;gBAChC,OAAO,CAAC,OAAO,CAAC;oBACd,IAAI,EAAE,UAAU;oBAChB,GAAG,EAAE,MAAM,CAAC,iBAAiB,CAAE,CAAC,GAAG;iBACpC,CAAC,CAAC;YACL,CAAC;YACD,MAAM;QACR,KAAK,SAAS,CAAC;QACf,KAAK,aAAa;YAChB,yCAAyC;YACzC,MAAM;IACV,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AAEF,MAAM,WAAW,GAAG,CAClB,KAAwC,EACxC,KAAa,EACb,YAA0B,EAC1B,gBAAoC,EACpC,EAAE;IACF,IAAI,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;IAE5B,IAAI,YAAY,KAAK,SAAS,IAAI,YAAY,KAAK,aAAa,EAAE,CAAC;QACjE,MAAM,YAAY,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAE,CAAC;QAE1C,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;YAC/B,8DAA8D;YAC9D,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,KAAK,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;QAChG,CAAC;aAAM,IAAI,YAAY,KAAK,aAAa,EAAE,CAAC;YAC1C,MAAM,yBAAyB,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC;YAEzF,IAAI,YAAY,CAAC,GAAG,KAAK,OAAO,CAAC,yBAAyB,CAAC,EAAE,GAAG,EAAE,CAAC;gBACjE,6DAA6D;gBAC7D,gFAAgF;gBAChF,mDAAmD;gBACnD,OAAO,GAAG;oBACR,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,yBAAyB,CAAC;oBAC9C,GAAG,OAAO,CAAC,KAAK,CAAC,yBAAyB,GAAG,CAAC,CAAC;iBAChD,CAAC;YACJ,CAAC;QACH,CAAC;QAED,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC;YACvB,IAAI,EAAE,UAAU;YAChB,GAAG,EAAE,YAAY,CAAC,GAAG;YACrB,MAAM,EAAE,YAAY,KAAK,aAAa,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;SACzE,CAAC,CAAC;IACL,CAAC;SAAM,CAAC;QACN,OAAO,GAAG,eAAe,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,gBAAgB,CAAC,CAAC;IACjF,CAAC;IAED,OAAO;QACL,GAAG,KAAK;QACR,KAAK;QACL,OAAO;KACR,CAAC;AACJ,CAAC,CAAC;AAEF,wFAAwF;AACxF,oFAAoF;AACpF,SAAS,aAAa,CAAC,EAAE,gBAAgB,EAAE,YAAY,GAAG,YAAY,EAAoB;IACxF,MAAM,MAAM,GAGR;QACF,GAAG,uBAAU;QAEb,IAAI,EAAE,KAAK;QAEX,eAAe,CAAC,EAAE,UAAU,EAAE,cAAc,EAAE;YAC5C,MAAM,KAAK,GACT,gBAAgB,KAAK,SAAS,IAAI,UAAU,CAAC,QAAQ,CAAC,gBAAgB,CAAC;gBACrE,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,gBAAgB,CAAC;gBACtC,CAAC,CAAC,CAAC,CAAC;YAER,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;gBACvC,IAAI;gBACJ,GAAG,EAAE,GAAG,IAAI,IAAI,IAAA,mBAAM,GAAE,EAAE;gBAC1B,MAAM,EAAE,cAAc,CAAC,IAAI,CAAC;aAC7B,CAAC,CAAC,CAAC;YAEJ,MAAM,OAAO,GAAG,eAAe,CAAC,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,gBAAgB,CAAC,CAAC;YAE/E,OAAO;gBACL,KAAK,EAAE,KAAK;gBACZ,IAAI,EAAE,KAAK;gBACX,GAAG,EAAE,OAAO,IAAA,mBAAM,GAAE,EAAE;gBACtB,KAAK;gBACL,UAAU;gBACV,OAAO;gBACP,MAAM;gBACN,kBAAkB,EAAE,EAAE;aACvB,CAAC;QACJ,CAAC;QAED,kBAAkB,CAAC,YAAY,EAAE,EAAE,UAAU,EAAE,cAAc,EAAE;YAC7D,MAAM,KAAK,GAAG,YAAY,CAAC;YAE3B,IAAI,KAAK,CAAC,KAAK,KAAK,KAAK,EAAE,CAAC;gBAC1B,OAAO,KAAK,CAAC;YACf,CAAC;YAED,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;gBACrC,MAAM,KAAK,GAAI,KAAyD,CAAC,MAAM,CAAC,IAAI,CAClF,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CACvB,CAAC;gBAEF,OAAO;oBACL,GAAG,KAAK;oBACR,IAAI;oBACJ,GAAG,EAAE,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,IAAA,mBAAM,GAAE,EAAE;oBAClF,MAAM,EACJ,cAAc,CAAC,IAAI,CAAC,KAAK,SAAS;wBAChC,CAAC,CAAC;4BACE,GAAG,cAAc,CAAC,IAAI,CAAC;4BACvB,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;yBACtC;wBACH,CAAC,CAAC,KAAK;4BACL,CAAC,CAAC,KAAK,CAAC,MAAM;4BACd,CAAC,CAAC,SAAS;iBACD,CAAC;YACrB,CAAC,CAAC,CAAC;YAEH,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CACpB,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,IAAI,CAAC,CAAC,EAAE,IAAc,CAAC,EAAE,CAAC,CAAC,EAChF,MAAM,CAAC,MAAM,GAAG,CAAC,CAClB,CAAC;YAEF,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAEnD,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;YAEhF,OAAO,WAAW,CAChB;gBACE,KAAK,EAAE,KAAK;gBACZ,IAAI,EAAE,KAAK;gBACX,GAAG,EAAE,OAAO,IAAA,mBAAM,GAAE,EAAE;gBACtB,KAAK;gBACL,UAAU;gBACV,OAAO;gBACP,MAAM;gBACN,kBAAkB,EAChB,KAAK,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE;aAC3E,EACD,KAAK,EACL,YAAY,EACZ,gBAAgB,CACjB,CAAC;QACJ,CAAC;QAED,2BAA2B,CAAC,KAAK,EAAE,EAAE,UAAU,EAAE,cAAc,EAAE,eAAe,EAAE;YAChF,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAC3B,CAAC,IAAI,EAAE,EAAE,CACP,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI;gBAChF,IAAI;gBACJ,GAAG,EAAE,GAAG,IAAI,IAAI,IAAA,mBAAM,GAAE,EAAE;gBAC1B,MAAM,EAAE,cAAc,CAAC,IAAI,CAAC;aAC7B,CACJ,CAAC;YAEF,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAE,CAAC,IAAI,CAAC,CAAC,CAAC;YAE/E,IAAI,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM;YAChC,wGAAwG;YACxG,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,KAAK,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,CAAC,CACpE,CAAC;YAEF,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;gBACpB,OAAO,GAAG,eAAe,CAAC,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,gBAAgB,CAAC,CAAC;YAC3E,CAAC;YAED,OAAO;gBACL,GAAG,KAAK;gBACR,OAAO;gBACP,UAAU;gBACV,MAAM;gBACN,KAAK;aACN,CAAC;QACJ,CAAC;QAED,qBAAqB,CAAC,KAAK,EAAE,GAAG;YAC9B,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC;YAE3D,IAAI,KAAK,KAAK,CAAC,CAAC,IAAI,KAAK,KAAK,KAAK,CAAC,KAAK,EAAE,CAAC;gBAC1C,OAAO,KAAK,CAAC;YACf,CAAC;YAED,OAAO,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,gBAAgB,CAAC,CAAC;QACnE,CAAC;QAED,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,cAAc,EAAE,cAAc,EAAE;YACjE,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;gBACpB,KAAK,SAAS,CAAC;gBACf,KAAK,UAAU,CAAC;gBAChB,KAAK,qBAAqB,CAAC,CAAC,CAAC;oBAC3B,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;oBAEpF,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC;wBACjB,OAAO,IAAI,CAAC;oBACd,CAAC;oBAED,MAAM,YAAY,GAAG,WAAW,CAC9B;wBACE,GAAG,KAAK;wBACR,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;4BACjC,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;gCACvC,OAAO,KAAK,CAAC;4BACf,CAAC;4BAED,MAAM,KAAK,GAAG,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;4BAEzC,MAAM,SAAS,GAAG,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;4BACpD,MAAM,MAAM,GAAG,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;4BAE1D,MAAM,GAAG,GAAG,SAAS,KAAK,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,IAAI,IAAA,mBAAM,GAAE,EAAE,CAAC;4BAE3E,IAAI,MAAM,CAAC;4BAEX,IACE,CAAC,MAAM,CAAC,IAAI,KAAK,UAAU,IAAI,MAAM,CAAC,IAAI,KAAK,qBAAqB,CAAC;gCACrE,MAAM,CAAC,OAAO,CAAC,KAAK;gCACpB,SAAS,KAAK,MAAM,EACpB,CAAC;gCACD,MAAM;oCACJ,MAAM,CAAC,OAAO,CAAC,MAAM,KAAK,SAAS,IAAI,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,SAAS;wCAC7E,CAAC,CAAC;4CACE,GAAG,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC;4CAC7B,GAAG,KAAK,CAAC,MAAM;4CACf,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM;yCACzB;wCACH,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC;4BACrB,CAAC;iCAAM,CAAC;gCACN,MAAM,GAAG,IAAA,+CAAsB,EAAC,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC,CAAC;4BAC9D,CAAC;4BAED,MAAM,IAAI,GACR,MAAM,CAAC,IAAI,KAAK,UAAU,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,IAAI,IAAI;gCACvD,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI;gCACrB,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC;4BAEjB,OAAO,MAAM,KAAK,KAAK,CAAC,MAAM,IAAI,IAAI,KAAK,KAAK,CAAC,IAAI;gCACnD,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE;gCACjC,CAAC,CAAC,KAAK,CAAC;wBACZ,CAAC,CAAC;qBACH,EACD,KAAK,EACL,YAAY,EACZ,gBAAgB,CACjB,CAAC;oBAEF,OAAO;wBACL,GAAG,YAAY;wBACf,kBAAkB,EAAE,YAAY,CAAC,kBAAkB,CAAC,MAAM,CACxD,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,KAAK,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,CAAE,CAAC,GAAG,CACvD;qBACF,CAAC;gBACJ,CAAC;gBAED,KAAK,YAAY,CAAC;gBAClB,KAAK,gBAAgB,CAAC,CAAC,CAAC;oBACtB,MAAM,SAAS,GAAG,uBAAU,CAAC,iBAAiB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;oBAE9D,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;wBACvB,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC;wBAE9B,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;4BAClB,MAAM,YAAY,GAAG,SAAS,CAAC,MAAM,CAAC,KAAK,CAAE,CAAC;4BAC9C,MAAM,gBAAgB,GAAG,KAAK,CAAC,OAAO,CAAC,aAAa,CAClD,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,KAAK,YAAY,CAAC,GAAG,CACxC,CAAC;4BAEF,IAAI,cAAc,GAAG,KAAK,CAAC,OAAO,CAAC;4BAEnC,IAAI,gBAAgB,KAAK,CAAC,CAAC,EAAE,CAAC;gCAC5B,cAAc,GAAG,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC;gCACpC,cAAc,CAAC,gBAAgB,CAAC,GAAG;oCACjC,GAAG,cAAc,CAAC,gBAAgB,CAAE;oCACpC,MAAM,EAAE,YAAY,CAAC,MAAM;iCAC5B,CAAC;4BACJ,CAAC;4BAED,OAAO;gCACL,GAAG,SAAS;gCACZ,OAAO,EAAE,cAAc;6BACxB,CAAC;wBACJ,CAAC;oBACH,CAAC;oBAED,OAAO,SAAS,CAAC;gBACnB,CAAC;gBAED,KAAK,SAAS,CAAC,CAAC,CAAC;oBACf,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;wBAC/B,OAAO,IAAI,CAAC;oBACd,CAAC;oBAED,MAAM,mBAAmB,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;oBACpE,MAAM,WAAW,GAAG,mBAAmB,EAAE,GAAG,CAAC;oBAC7C,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,KAAK,WAAW,CAAC,CAAC;oBAE/E,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC;wBACjB,OAAO,IAAI,CAAC;oBACd,CAAC;oBAED,IAAI,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;oBAE1B,IACE,YAAY,KAAK,aAAa;wBAC9B,MAAM,CAAC,KAAK,CAAE,CAAC,MAAM,KAAK,mBAAoB,CAAC,MAAM,EACrD,CAAC;wBACD,MAAM,GAAG,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;wBAC3B,MAAM,CAAC,KAAK,CAAC,GAAG;4BACd,GAAG,MAAM,CAAC,KAAK,CAAE;4BACjB,MAAM,EAAE,mBAAoB,CAAC,MAAM;yBACpC,CAAC;oBACJ,CAAC;oBAED,OAAO;wBACL,GAAG,KAAK;wBACR,MAAM;wBACN,kBAAkB,EAAE,KAAK,CAAC,kBAAkB,CAAC,MAAM,CACjD,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,KAAK,KAAK,CAAC,MAAM,CAAC,KAAK,CAAE,CAAC,GAAG,CAC1C;wBACD,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;wBACnC,KAAK;qBACN,CAAC;gBACJ,CAAC;gBAED,KAAK,SAAS,CAAC,CAAC,CAAC;oBACf,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;oBAEzF,IAAI,UAAU,KAAK,CAAC,CAAC,EAAE,CAAC;wBACtB,OAAO,IAAI,CAAC;oBACd,CAAC;oBAED,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,UAAU,CAAE,CAAC;oBAExC,MAAM,KAAK,GAAG,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBAEzC,MAAM,SAAS,GAAG,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;oBACpD,MAAM,MAAM,GAAG,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;oBAE1D,MAAM,GAAG,GAAG,SAAS,KAAK,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,IAAI,IAAA,mBAAM,GAAE,EAAE,CAAC;oBAE3E,MAAM,MAAM,GAAG,IAAA,+CAAsB,EAAC,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC,CAAC;oBAClE,MAAM,QAAQ,GAAG,MAAM,KAAK,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;oBAE7E,OAAO;wBACL,GAAG,KAAK;wBACR,kBAAkB,EAAE,KAAK,CAAC,kBAAkB;6BACzC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,KAAK,KAAK,CAAC,GAAG,CAAC;6BAClC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC;wBACvB,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,KAAK,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;wBACrF,OAAO,EACL,GAAG,KAAK,KAAK,CAAC,GAAG;4BACf,CAAC,CAAC,KAAK,CAAC,OAAO;4BACf,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,KAAK,KAAK,CAAC,GAAG,CAAC;qBACjE,CAAC;gBACJ,CAAC;gBAED;oBACE,OAAO,uBAAU,CAAC,iBAAiB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;YACvD,CAAC;QACH,CAAC;QAED,cAAc,EAAE,kBAAU;KAC3B,CAAC;IAEF,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,SAAgB,SAAS,CACvB,IAAsB;IAEtB,MAAM,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;IACjC,OAAO;QACL,GAAG,IAAI;QACP,iBAAiB,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE;YAC5C,IAAI,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,KAAK,CAAC,GAAG,EAAE,CAAC;gBACjD,OAAO,IAAI,CAAC;YACd,CAAC;YAED,IAAK,MAAM,CAAC,IAAe,KAAK,SAAS,EAAE,CAAC;gBAC1C,MAAM,aAAa,GAAG,MAAkE,CAAC;gBACzF,iDAAiD;gBACjD,IAAI,SAAS,GAAG,IAAI,CAAC,iBAAiB,CACpC,KAAK,EACL;oBACE,GAAG,aAAa;oBAChB,IAAI,EAAE,SAAS;iBAChB,EACD,OAAO,CACR,CAAC;gBAEF,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,KAAK,KAAK,SAAS,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC;oBACrF,OAAO,IAAI,CAAC;gBACd,CAAC;gBAED,sEAAsE;gBACtE,kCAAkC;gBAClC,IAAI,SAAS,CAAC,KAAK,KAAK,CAAC,EAAE,CAAC;oBAC1B,MAAM,aAAa,GAAG,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC;oBAE1C,SAAS,GAAG;wBACV,GAAG,SAAS;wBACZ,GAAG,EAAE,GAAG,SAAS,CAAC,GAAG,UAAU;wBAC/B,wDAAwD;wBACxD,OAAO,EAAE;4BACP,GAAG,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC;4BAC5C,GAAG,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC;yBAC7C;qBACF,CAAC;gBACJ,CAAC;gBAED,OAAO,SAAS,CAAC;YACnB,CAAC;YAED,OAAO,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QACxD,CAAC;KACF,CAAC;AACJ,CAAC","sourcesContent":["import { nanoid } from 'nanoid/non-secure';\n\nimport { BaseRouter } from './BaseRouter';\nimport { createParamsFromAction } from './createParamsFromAction';\nimport type {\n CommonNavigationAction,\n DefaultRouterOptions,\n NavigationState,\n ParamListBase,\n PartialState,\n Route,\n Router,\n} from './types';\nimport type { StackActionType } from '../core';\n\nexport type TabActionType = {\n type: 'JUMP_TO';\n payload: { name: string; params?: object };\n source?: string;\n target?: string;\n};\n\nexport type BackBehavior =\n | 'firstRoute'\n | 'initialRoute'\n | 'order'\n | 'history'\n | 'fullHistory'\n | 'none';\n\nexport type TabRouterOptions = DefaultRouterOptions & {\n /**\n * Control how going back should behave\n * - `firstRoute` - return to the first defined route\n * - `initialRoute` - return to the route from `initialRouteName`\n * - `order` - return to the route defined before the focused route\n * - `history` - return to last visited route; if the same route is visited multiple times, the older entries are dropped from the history\n * - `fullHistory` - return to last visited route; doesn't drop duplicate entries unlike `history` - matches behavior of web pages\n * - `none` - do not handle going back\n */\n backBehavior?: BackBehavior;\n};\n\nexport type TabNavigationState<ParamList extends ParamListBase> = Omit<\n NavigationState<ParamList>,\n 'history'\n> & {\n /**\n * Type of the router, in this case, it's tab.\n */\n type: 'tab';\n /**\n * List of previously visited route keys.\n */\n history: { type: 'route'; key: string; params?: object | undefined }[];\n /**\n * List of routes' key, which are supposed to be preloaded before navigating to.\n */\n preloadedRouteKeys: string[];\n};\n\nexport type TabActionHelpers<ParamList extends ParamListBase> = {\n /**\n * Jump to an existing tab.\n *\n * @param screen Name of the route to jump to.\n * @param [params] Params object for the route.\n */\n jumpTo<RouteName extends keyof ParamList>(\n ...args: RouteName extends unknown\n ? undefined extends ParamList[RouteName]\n ? [screen: RouteName, params?: ParamList[RouteName]]\n : [screen: RouteName, params: ParamList[RouteName]]\n : never\n ): void;\n};\n\nconst TYPE_ROUTE = 'route' as const;\n\nexport const TabActions = {\n jumpTo(name: string, params?: object) {\n return {\n type: 'JUMP_TO',\n payload: { name, params },\n } as const satisfies TabActionType;\n },\n};\n\nconst getRouteHistory = (\n routes: Route<string>[],\n index: number,\n backBehavior: BackBehavior,\n initialRouteName: string | undefined\n) => {\n const history = [\n {\n type: TYPE_ROUTE,\n key: routes[index]!.key,\n },\n ];\n\n let initialRouteIndex;\n\n switch (backBehavior) {\n case 'order':\n for (let i = index; i > 0; i--) {\n history.unshift({\n type: TYPE_ROUTE,\n key: routes[i - 1]!.key,\n });\n }\n break;\n case 'firstRoute':\n if (index !== 0) {\n history.unshift({\n type: TYPE_ROUTE,\n key: routes[0]!.key,\n });\n }\n break;\n case 'initialRoute':\n initialRouteIndex = routes.findIndex((route) => route.name === initialRouteName);\n initialRouteIndex = initialRouteIndex === -1 ? 0 : initialRouteIndex;\n\n if (index !== initialRouteIndex) {\n history.unshift({\n type: TYPE_ROUTE,\n key: routes[initialRouteIndex]!.key,\n });\n }\n break;\n case 'history':\n case 'fullHistory':\n // The history will fill up on navigation\n break;\n }\n\n return history;\n};\n\nconst changeIndex = (\n state: TabNavigationState<ParamListBase>,\n index: number,\n backBehavior: BackBehavior,\n initialRouteName: string | undefined\n) => {\n let history = state.history;\n\n if (backBehavior === 'history' || backBehavior === 'fullHistory') {\n const currentRoute = state.routes[index]!;\n\n if (backBehavior === 'history') {\n // Remove the existing key from the history to de-duplicate it\n history = history.filter((it) => (it.type === 'route' ? it.key !== currentRoute.key : false));\n } else if (backBehavior === 'fullHistory') {\n const lastHistoryRouteItemIndex = history.findLastIndex((item) => item.type === 'route');\n\n if (currentRoute.key === history[lastHistoryRouteItemIndex]?.key) {\n // For full-history, only remove if it matches the last route\n // Useful for drawer, if current route was in history, then drawer state changed\n // Then we only need to move the route to the front\n history = [\n ...history.slice(0, lastHistoryRouteItemIndex),\n ...history.slice(lastHistoryRouteItemIndex + 1),\n ];\n }\n }\n\n history = history.concat({\n type: TYPE_ROUTE,\n key: currentRoute.key,\n params: backBehavior === 'fullHistory' ? currentRoute.params : undefined,\n });\n } else {\n history = getRouteHistory(state.routes, index, backBehavior, initialRouteName);\n }\n\n return {\n ...state,\n index,\n history,\n };\n};\n\n// TODO(@ubax): unify the logic into single router instead of BaseTabRouter and override\n// TODO(@ubax): add REPLACE action to CommonAction type and handle it in all routers\nfunction BaseTabRouter({ initialRouteName, backBehavior = 'firstRoute' }: TabRouterOptions) {\n const router: Router<\n TabNavigationState<ParamListBase>,\n TabActionType | CommonNavigationAction\n > = {\n ...BaseRouter,\n\n type: 'tab',\n\n getInitialState({ routeNames, routeParamList }) {\n const index =\n initialRouteName !== undefined && routeNames.includes(initialRouteName)\n ? routeNames.indexOf(initialRouteName)\n : 0;\n\n const routes = routeNames.map((name) => ({\n name,\n key: `${name}-${nanoid()}`,\n params: routeParamList[name],\n }));\n\n const history = getRouteHistory(routes, index, backBehavior, initialRouteName);\n\n return {\n stale: false,\n type: 'tab',\n key: `tab-${nanoid()}`,\n index,\n routeNames,\n history,\n routes,\n preloadedRouteKeys: [],\n };\n },\n\n getRehydratedState(partialState, { routeNames, routeParamList }) {\n const state = partialState;\n\n if (state.stale === false) {\n return state;\n }\n\n const routes = routeNames.map((name) => {\n const route = (state as PartialState<TabNavigationState<ParamListBase>>).routes.find(\n (r) => r.name === name\n );\n\n return {\n ...route,\n name,\n key: route && route.name === name && route.key ? route.key : `${name}-${nanoid()}`,\n params:\n routeParamList[name] !== undefined\n ? {\n ...routeParamList[name],\n ...(route ? route.params : undefined),\n }\n : route\n ? route.params\n : undefined,\n } as Route<string>;\n });\n\n const index = Math.min(\n Math.max(routeNames.indexOf(state.routes[state?.index ?? 0]?.name as string), 0),\n routes.length - 1\n );\n\n const routeKeys = routes.map((route) => route.key);\n\n const history = state.history?.filter((it) => routeKeys.includes(it.key)) ?? [];\n\n return changeIndex(\n {\n stale: false,\n type: 'tab',\n key: `tab-${nanoid()}`,\n index,\n routeNames,\n history,\n routes,\n preloadedRouteKeys:\n state.preloadedRouteKeys?.filter((key) => routeKeys.includes(key)) ?? [],\n },\n index,\n backBehavior,\n initialRouteName\n );\n },\n\n getStateForRouteNamesChange(state, { routeNames, routeParamList, routeKeyChanges }) {\n const routes = routeNames.map(\n (name) =>\n state.routes.find((r) => r.name === name && !routeKeyChanges.includes(r.name)) || {\n name,\n key: `${name}-${nanoid()}`,\n params: routeParamList[name],\n }\n );\n\n const index = Math.max(0, routeNames.indexOf(state.routes[state.index]!.name));\n\n let history = state.history.filter(\n // Type will always be 'route' for tabs, but could be different in a router extending this (e.g. drawer)\n (it) => it.type !== 'route' || routes.find((r) => r.key === it.key)\n );\n\n if (!history.length) {\n history = getRouteHistory(routes, index, backBehavior, initialRouteName);\n }\n\n return {\n ...state,\n history,\n routeNames,\n routes,\n index,\n };\n },\n\n getStateForRouteFocus(state, key) {\n const index = state.routes.findIndex((r) => r.key === key);\n\n if (index === -1 || index === state.index) {\n return state;\n }\n\n return changeIndex(state, index, backBehavior, initialRouteName);\n },\n\n getStateForAction(state, action, { routeParamList, routeGetIdList }) {\n switch (action.type) {\n case 'JUMP_TO':\n case 'NAVIGATE':\n case 'NAVIGATE_DEPRECATED': {\n const index = state.routes.findIndex((route) => route.name === action.payload.name);\n\n if (index === -1) {\n return null;\n }\n\n const updatedState = changeIndex(\n {\n ...state,\n routes: state.routes.map((route) => {\n if (route.name !== action.payload.name) {\n return route;\n }\n\n const getId = routeGetIdList[route.name];\n\n const currentId = getId?.({ params: route.params });\n const nextId = getId?.({ params: action.payload.params });\n\n const key = currentId === nextId ? route.key : `${route.name}-${nanoid()}`;\n\n let params;\n\n if (\n (action.type === 'NAVIGATE' || action.type === 'NAVIGATE_DEPRECATED') &&\n action.payload.merge &&\n currentId === nextId\n ) {\n params =\n action.payload.params !== undefined || routeParamList[route.name] !== undefined\n ? {\n ...routeParamList[route.name],\n ...route.params,\n ...action.payload.params,\n }\n : route.params;\n } else {\n params = createParamsFromAction({ action, routeParamList });\n }\n\n const path =\n action.type === 'NAVIGATE' && action.payload.path != null\n ? action.payload.path\n : route.path;\n\n return params !== route.params || path !== route.path\n ? { ...route, key, path, params }\n : route;\n }),\n },\n index,\n backBehavior,\n initialRouteName\n );\n\n return {\n ...updatedState,\n preloadedRouteKeys: updatedState.preloadedRouteKeys.filter(\n (key) => key !== state.routes[updatedState.index]!.key\n ),\n };\n }\n\n case 'SET_PARAMS':\n case 'REPLACE_PARAMS': {\n const nextState = BaseRouter.getStateForAction(state, action);\n\n if (nextState !== null) {\n const index = nextState.index;\n\n if (index != null) {\n const focusedRoute = nextState.routes[index]!;\n const historyItemIndex = state.history.findLastIndex(\n (item) => item.key === focusedRoute.key\n );\n\n let updatedHistory = state.history;\n\n if (historyItemIndex !== -1) {\n updatedHistory = [...state.history];\n updatedHistory[historyItemIndex] = {\n ...updatedHistory[historyItemIndex]!,\n params: focusedRoute.params,\n };\n }\n\n return {\n ...nextState,\n history: updatedHistory,\n };\n }\n }\n\n return nextState;\n }\n\n case 'GO_BACK': {\n if (state.history.length === 1) {\n return null;\n }\n\n const previousHistoryItem = state.history[state.history.length - 2];\n const previousKey = previousHistoryItem?.key;\n const index = state.routes.findLastIndex((route) => route.key === previousKey);\n\n if (index === -1) {\n return null;\n }\n\n let routes = state.routes;\n\n if (\n backBehavior === 'fullHistory' &&\n routes[index]!.params !== previousHistoryItem!.params\n ) {\n routes = [...state.routes];\n routes[index] = {\n ...routes[index]!,\n params: previousHistoryItem!.params,\n };\n }\n\n return {\n ...state,\n routes,\n preloadedRouteKeys: state.preloadedRouteKeys.filter(\n (key) => key !== state.routes[index]!.key\n ),\n history: state.history.slice(0, -1),\n index,\n };\n }\n\n case 'PRELOAD': {\n const routeIndex = state.routes.findIndex((route) => route.name === action.payload.name);\n\n if (routeIndex === -1) {\n return null;\n }\n\n const route = state.routes[routeIndex]!;\n\n const getId = routeGetIdList[route.name];\n\n const currentId = getId?.({ params: route.params });\n const nextId = getId?.({ params: action.payload.params });\n\n const key = currentId === nextId ? route.key : `${route.name}-${nanoid()}`;\n\n const params = createParamsFromAction({ action, routeParamList });\n const newRoute = params !== route.params ? { ...route, key, params } : route;\n\n return {\n ...state,\n preloadedRouteKeys: state.preloadedRouteKeys\n .filter((key) => key !== route.key)\n .concat(newRoute.key),\n routes: state.routes.map((route, index) => (index === routeIndex ? newRoute : route)),\n history:\n key === route.key\n ? state.history\n : state.history.filter((record) => record.key !== route.key),\n };\n }\n\n default:\n return BaseRouter.getStateForAction(state, action);\n }\n },\n\n actionCreators: TabActions,\n };\n\n return router;\n}\n\n/**\n * TabRouter is considered an internal implementation and its behavior may change without a notice between expo-router's version\n */\nexport function TabRouter(\n args: TabRouterOptions\n): Router<TabNavigationState<ParamListBase>, TabActionType | CommonNavigationAction> {\n const base = BaseTabRouter(args);\n return {\n ...base,\n getStateForAction: (state, action, options) => {\n if (action.target && action.target !== state.key) {\n return null;\n }\n\n if ((action.type as string) === 'REPLACE') {\n const replaceAction = action as unknown as Extract<StackActionType, { type: 'REPLACE' }>;\n // Generate the state as if we were using JUMP_TO\n let nextState = base.getStateForAction(\n state,\n {\n ...replaceAction,\n type: 'JUMP_TO',\n },\n options\n );\n\n if (!nextState || nextState.index === undefined || !Array.isArray(nextState.history)) {\n return null;\n }\n\n // If the state is valid and we didn't JUMP_TO a single history state,\n // then remove the previous state.\n if (nextState.index !== 0) {\n const previousIndex = nextState.index - 1;\n\n nextState = {\n ...nextState,\n key: `${nextState.key}-replace`,\n // Omit the previous history entry that we are replacing\n history: [\n ...nextState.history.slice(0, previousIndex),\n ...nextState.history.splice(nextState.index),\n ],\n };\n }\n\n return nextState;\n }\n\n return base.getStateForAction(state, action, options);\n },\n };\n}\n"]}
1
+ {"version":3,"file":"TabRouter.js","sourceRoot":"","sources":["../../../src/react-navigation/routers/TabRouter.tsx"],"names":[],"mappings":"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","sourcesContent":["import { nanoid } from 'nanoid/non-secure';\n\nimport { BaseRouter } from './BaseRouter';\nimport { createParamsFromAction } from './createParamsFromAction';\nimport type {\n CommonNavigationAction,\n DefaultRouterOptions,\n NavigationState,\n ParamListBase,\n PartialState,\n Route,\n Router,\n} from './types';\nimport type { StackActionType } from '../core';\n\nexport type TabActionType = {\n type: 'JUMP_TO';\n payload: { name: string; params?: object };\n source?: string;\n target?: string;\n};\n\nexport type BackBehavior =\n | 'firstRoute'\n | 'initialRoute'\n | 'order'\n | 'history'\n | 'fullHistory'\n | 'none';\n\nexport type TabRouterOptions = DefaultRouterOptions & {\n /**\n * Control how going back should behave\n * - `firstRoute` - return to the first defined route\n * - `initialRoute` - return to the route from `initialRouteName`\n * - `order` - return to the route defined before the focused route\n * - `history` - return to last visited route; if the same route is visited multiple times, the older entries are dropped from the history\n * - `fullHistory` - return to last visited route; doesn't drop duplicate entries unlike `history` - matches behavior of web pages\n * - `none` - do not handle going back\n */\n backBehavior?: BackBehavior;\n};\n\nexport type TabNavigationState<ParamList extends ParamListBase> = Omit<\n NavigationState<ParamList>,\n 'history'\n> & {\n /**\n * Type of the router, in this case, it's tab.\n */\n type: 'tab';\n /**\n * List of previously visited route keys.\n */\n history: { type: 'route'; key: string; params?: object | undefined }[];\n /**\n * List of routes' key, which are supposed to be preloaded before navigating to.\n */\n preloadedRouteKeys: string[];\n};\n\nexport type TabActionHelpers<ParamList extends ParamListBase> = {\n /**\n * Jump to an existing tab.\n *\n * @param screen Name of the route to jump to.\n * @param [params] Params object for the route.\n */\n jumpTo<RouteName extends keyof ParamList>(\n ...args: RouteName extends unknown\n ? undefined extends ParamList[RouteName]\n ? [screen: RouteName, params?: ParamList[RouteName]]\n : [screen: RouteName, params: ParamList[RouteName]]\n : never\n ): void;\n};\n\nconst TYPE_ROUTE = 'route' as const;\n\nexport const TabActions = {\n jumpTo(name: string, params?: object) {\n return {\n type: 'JUMP_TO',\n payload: { name, params },\n } as const satisfies TabActionType;\n },\n};\n\nconst getRouteHistory = (\n routes: Route<string>[],\n index: number,\n backBehavior: BackBehavior,\n initialRouteName: string | undefined\n) => {\n const history = [\n {\n type: TYPE_ROUTE,\n key: routes[index]!.key,\n },\n ];\n\n let initialRouteIndex;\n\n switch (backBehavior) {\n case 'order':\n for (let i = index; i > 0; i--) {\n history.unshift({\n type: TYPE_ROUTE,\n key: routes[i - 1]!.key,\n });\n }\n break;\n case 'firstRoute':\n if (index !== 0) {\n history.unshift({\n type: TYPE_ROUTE,\n key: routes[0]!.key,\n });\n }\n break;\n case 'initialRoute':\n initialRouteIndex = routes.findIndex((route) => route.name === initialRouteName);\n initialRouteIndex = initialRouteIndex === -1 ? 0 : initialRouteIndex;\n\n if (index !== initialRouteIndex) {\n history.unshift({\n type: TYPE_ROUTE,\n key: routes[initialRouteIndex]!.key,\n });\n }\n break;\n case 'history':\n case 'fullHistory':\n // The history will fill up on navigation\n break;\n }\n\n return history;\n};\n\nconst changeIndex = (\n state: TabNavigationState<ParamListBase>,\n index: number,\n backBehavior: BackBehavior,\n initialRouteName: string | undefined\n) => {\n let history = state.history;\n\n if (backBehavior === 'history' || backBehavior === 'fullHistory') {\n const currentRoute = state.routes[index]!;\n\n if (backBehavior === 'history') {\n // Remove the existing key from the history to de-duplicate it\n history = history.filter((it) => (it.type === 'route' ? it.key !== currentRoute.key : false));\n } else if (backBehavior === 'fullHistory') {\n const lastHistoryRouteItemIndex = history.findLastIndex((item) => item.type === 'route');\n\n if (currentRoute.key === history[lastHistoryRouteItemIndex]?.key) {\n // For full-history, only remove if it matches the last route\n // Useful for drawer, if current route was in history, then drawer state changed\n // Then we only need to move the route to the front\n history = [\n ...history.slice(0, lastHistoryRouteItemIndex),\n ...history.slice(lastHistoryRouteItemIndex + 1),\n ];\n }\n }\n\n history = history.concat({\n type: TYPE_ROUTE,\n key: currentRoute.key,\n params: backBehavior === 'fullHistory' ? currentRoute.params : undefined,\n });\n } else {\n history = getRouteHistory(state.routes, index, backBehavior, initialRouteName);\n }\n\n return {\n ...state,\n index,\n history,\n };\n};\n\n// TODO(@ubax): unify the logic into single router instead of BaseTabRouter and override\n// TODO(@ubax): add REPLACE action to CommonAction type and handle it in all routers\nfunction BaseTabRouter({ initialRouteName, backBehavior = 'firstRoute' }: TabRouterOptions) {\n const router: Router<\n TabNavigationState<ParamListBase>,\n TabActionType | CommonNavigationAction\n > = {\n ...BaseRouter,\n\n type: 'tab',\n\n getInitialState({ routeNames, routeParamList }) {\n const index =\n initialRouteName !== undefined && routeNames.includes(initialRouteName)\n ? routeNames.indexOf(initialRouteName)\n : 0;\n\n const routes = routeNames.map((name) => ({\n name,\n key: `${name}-${nanoid()}`,\n params: routeParamList[name],\n }));\n\n const history = getRouteHistory(routes, index, backBehavior, initialRouteName);\n\n return {\n stale: false,\n type: 'tab',\n key: `tab-${nanoid()}`,\n index,\n routeNames,\n history,\n routes,\n preloadedRouteKeys: [],\n };\n },\n\n getRehydratedState(partialState, { routeNames, routeParamList }) {\n const state = partialState;\n\n if (state.stale === false) {\n return state;\n }\n\n const routes = routeNames.map((name) => {\n const route = (state as PartialState<TabNavigationState<ParamListBase>>).routes.find(\n (r) => r.name === name\n );\n\n return {\n ...route,\n name,\n key: route && route.name === name && route.key ? route.key : `${name}-${nanoid()}`,\n params:\n routeParamList[name] !== undefined\n ? {\n ...routeParamList[name],\n ...(route ? route.params : undefined),\n }\n : route\n ? route.params\n : undefined,\n } as Route<string>;\n });\n\n const index = Math.min(\n Math.max(routeNames.indexOf(state.routes[state?.index ?? 0]?.name as string), 0),\n routes.length - 1\n );\n\n const routeKeys = routes.map((route) => route.key);\n\n const history = state.history?.filter((it) => routeKeys.includes(it.key)) ?? [];\n\n return changeIndex(\n {\n stale: false,\n type: 'tab',\n key: `tab-${nanoid()}`,\n index,\n routeNames,\n history,\n routes,\n preloadedRouteKeys:\n state.preloadedRouteKeys?.filter((key) => routeKeys.includes(key)) ?? [],\n },\n index,\n backBehavior,\n initialRouteName\n );\n },\n\n getStateForRouteNamesChange(state, { routeNames, routeParamList, routeKeyChanges }) {\n const routes = routeNames.map(\n (name) =>\n state.routes.find((r) => r.name === name && !routeKeyChanges.includes(r.name)) || {\n name,\n key: `${name}-${nanoid()}`,\n params: routeParamList[name],\n }\n );\n\n const preloadedRouteKeys = state.preloadedRouteKeys.filter((key) =>\n routes.some((route) => route.key === key)\n );\n\n const index = Math.max(0, routeNames.indexOf(state.routes[state.index]!.name));\n\n let history = state.history.filter(\n // Type will always be 'route' for tabs, but could be different in a router extending this (e.g. drawer)\n (it) => it.type !== 'route' || routes.find((r) => r.key === it.key)\n );\n\n if (!history.length) {\n history = getRouteHistory(routes, index, backBehavior, initialRouteName);\n }\n\n return {\n ...state,\n history,\n routeNames,\n routes,\n preloadedRouteKeys,\n index,\n };\n },\n\n getStateForRouteFocus(state, key) {\n const index = state.routes.findIndex((r) => r.key === key);\n\n if (index === -1 || index === state.index) {\n return state;\n }\n\n return changeIndex(state, index, backBehavior, initialRouteName);\n },\n\n getStateForAction(state, action, { routeParamList, routeGetIdList }) {\n switch (action.type) {\n case 'JUMP_TO':\n case 'NAVIGATE':\n case 'NAVIGATE_DEPRECATED': {\n const index = state.routes.findIndex((route) => route.name === action.payload.name);\n\n if (index === -1) {\n return null;\n }\n\n const updatedState = changeIndex(\n {\n ...state,\n routes: state.routes.map((route) => {\n if (route.name !== action.payload.name) {\n return route;\n }\n\n const getId = routeGetIdList[route.name];\n\n const currentId = getId?.({ params: route.params });\n const nextId = getId?.({ params: action.payload.params });\n\n const key = currentId === nextId ? route.key : `${route.name}-${nanoid()}`;\n\n let params;\n\n if (\n (action.type === 'NAVIGATE' || action.type === 'NAVIGATE_DEPRECATED') &&\n action.payload.merge &&\n currentId === nextId\n ) {\n params =\n action.payload.params !== undefined || routeParamList[route.name] !== undefined\n ? {\n ...routeParamList[route.name],\n ...route.params,\n ...action.payload.params,\n }\n : route.params;\n } else {\n params = createParamsFromAction({ action, routeParamList });\n }\n\n const path =\n action.type === 'NAVIGATE' && action.payload.path != null\n ? action.payload.path\n : route.path;\n\n return params !== route.params || path !== route.path\n ? { ...route, key, path, params }\n : route;\n }),\n },\n index,\n backBehavior,\n initialRouteName\n );\n\n return {\n ...updatedState,\n preloadedRouteKeys: updatedState.preloadedRouteKeys.filter(\n (key) => key !== state.routes[updatedState.index]!.key\n ),\n };\n }\n\n case 'SET_PARAMS':\n case 'REPLACE_PARAMS': {\n const nextState = BaseRouter.getStateForAction(state, action);\n\n if (nextState !== null) {\n const index = nextState.index;\n\n if (index != null) {\n const focusedRoute = nextState.routes[index]!;\n const historyItemIndex = state.history.findLastIndex(\n (item) => item.key === focusedRoute.key\n );\n\n let updatedHistory = state.history;\n\n if (historyItemIndex !== -1) {\n updatedHistory = [...state.history];\n updatedHistory[historyItemIndex] = {\n ...updatedHistory[historyItemIndex]!,\n params: focusedRoute.params,\n };\n }\n\n return {\n ...nextState,\n history: updatedHistory,\n };\n }\n }\n\n return nextState;\n }\n\n case 'GO_BACK': {\n if (state.history.length === 1) {\n return null;\n }\n\n const previousHistoryItem = state.history[state.history.length - 2];\n const previousKey = previousHistoryItem?.key;\n const index = state.routes.findLastIndex((route) => route.key === previousKey);\n\n if (index === -1) {\n return null;\n }\n\n let routes = state.routes;\n\n if (\n backBehavior === 'fullHistory' &&\n routes[index]!.params !== previousHistoryItem!.params\n ) {\n routes = [...state.routes];\n routes[index] = {\n ...routes[index]!,\n params: previousHistoryItem!.params,\n };\n }\n\n return {\n ...state,\n routes,\n preloadedRouteKeys: state.preloadedRouteKeys.filter(\n (key) => key !== state.routes[index]!.key\n ),\n history: state.history.slice(0, -1),\n index,\n };\n }\n\n case 'PRELOAD': {\n const routeIndex = state.routes.findIndex((route) => route.name === action.payload.name);\n\n if (routeIndex === -1) {\n return null;\n }\n\n const route = state.routes[routeIndex]!;\n\n const getId = routeGetIdList[route.name];\n\n const currentId = getId?.({ params: route.params });\n const nextId = getId?.({ params: action.payload.params });\n\n const key = currentId === nextId ? route.key : `${route.name}-${nanoid()}`;\n\n const params = createParamsFromAction({ action, routeParamList });\n const newRoute = params !== route.params ? { ...route, key, params } : route;\n\n return {\n ...state,\n preloadedRouteKeys: state.preloadedRouteKeys\n .filter((key) => key !== route.key)\n .concat(newRoute.key),\n routes: state.routes.map((route, index) => (index === routeIndex ? newRoute : route)),\n history:\n key === route.key\n ? state.history\n : state.history.filter((record) => record.key !== route.key),\n };\n }\n\n default:\n return BaseRouter.getStateForAction(state, action);\n }\n },\n\n actionCreators: TabActions,\n };\n\n return router;\n}\n\n/**\n * TabRouter is considered an internal implementation and its behavior may change without a notice between expo-router's version\n */\nexport function TabRouter(\n args: TabRouterOptions\n): Router<TabNavigationState<ParamListBase>, TabActionType | CommonNavigationAction> {\n const base = BaseTabRouter(args);\n return {\n ...base,\n getStateForAction: (state, action, options) => {\n if (action.target && action.target !== state.key) {\n return null;\n }\n\n if ((action.type as string) === 'REPLACE') {\n const replaceAction = action as unknown as Extract<StackActionType, { type: 'REPLACE' }>;\n // Generate the state as if we were using JUMP_TO\n let nextState = base.getStateForAction(\n state,\n {\n ...replaceAction,\n type: 'JUMP_TO',\n },\n options\n );\n\n if (!nextState || nextState.index === undefined || !Array.isArray(nextState.history)) {\n return null;\n }\n\n // If the state is valid and we didn't JUMP_TO a single history state,\n // then remove the previous state.\n if (nextState.index !== 0) {\n const previousIndex = nextState.index - 1;\n\n nextState = {\n ...nextState,\n key: `${nextState.key}-replace`,\n // Omit the previous history entry that we are replacing\n history: [\n ...nextState.history.slice(0, previousIndex),\n ...nextState.history.splice(nextState.index),\n ],\n };\n }\n\n return nextState;\n }\n\n return base.getStateForAction(state, action, options);\n },\n };\n}\n"]}
@@ -9,7 +9,7 @@
9
9
  "publication": {
10
10
  "groupId": "expo.modules.router",
11
11
  "artifactId": "expo.modules.router",
12
- "version": "56.2.15",
12
+ "version": "56.2.16",
13
13
  "repository": "local-maven-repo"
14
14
  }
15
15
  }
@@ -3,7 +3,7 @@
3
3
  "component": {
4
4
  "group": "expo.modules.router",
5
5
  "module": "expo.modules.router",
6
- "version": "56.2.15",
6
+ "version": "56.2.16",
7
7
  "attributes": {
8
8
  "org.gradle.status": "release"
9
9
  }
@@ -24,8 +24,8 @@
24
24
  },
25
25
  "files": [
26
26
  {
27
- "name": "expo.modules.router-56.2.15.aar",
28
- "url": "expo.modules.router-56.2.15.aar",
27
+ "name": "expo.modules.router-56.2.16.aar",
28
+ "url": "expo.modules.router-56.2.16.aar",
29
29
  "size": 15835,
30
30
  "sha512": "72b5be73401c4b0a8807373f01bd79e202212f07713d071019c24eb27227a4c8568d6148d0a48338f6955f9dbe713f56e7877d8e3fe0acec28dbb68533953d90",
31
31
  "sha256": "7c41d508ab24d199ead0eb06525957cdd227a73925863865bf2956d48cb707ef",
@@ -74,8 +74,8 @@
74
74
  ],
75
75
  "files": [
76
76
  {
77
- "name": "expo.modules.router-56.2.15.aar",
78
- "url": "expo.modules.router-56.2.15.aar",
77
+ "name": "expo.modules.router-56.2.16.aar",
78
+ "url": "expo.modules.router-56.2.16.aar",
79
79
  "size": 15835,
80
80
  "sha512": "72b5be73401c4b0a8807373f01bd79e202212f07713d071019c24eb27227a4c8568d6148d0a48338f6955f9dbe713f56e7877d8e3fe0acec28dbb68533953d90",
81
81
  "sha256": "7c41d508ab24d199ead0eb06525957cdd227a73925863865bf2956d48cb707ef",
@@ -94,8 +94,8 @@
94
94
  },
95
95
  "files": [
96
96
  {
97
- "name": "expo.modules.router-56.2.15-sources.jar",
98
- "url": "expo.modules.router-56.2.15-sources.jar",
97
+ "name": "expo.modules.router-56.2.16-sources.jar",
98
+ "url": "expo.modules.router-56.2.16-sources.jar",
99
99
  "size": 2326,
100
100
  "sha512": "a1a1537b57bc0d66efbf2bdfd5f514684400b9598e549eaf53c528d1bf32ff42b7826e74fb6e115f8ec0490b9e06ffbb3c3efe9f2f703652c13291ef82b0fa03",
101
101
  "sha256": "2add0f802e663eb9b5f90e086dca0e0e337a1442e15fb372a05945e01ee0d289",
@@ -0,0 +1 @@
1
+ 990d88cedb109901e27e7a757c22bc7282967ec38932fb2e811ccb3b72f0c2e4
@@ -0,0 +1 @@
1
+ d918ba159bd50450a80fdd4eb5da94469b14c7a5736c670acb26ee533f84b659aa56b00e27e6dd9f2b647c4afc125a3e92edbf35b4e86a06a0bbb8efc5d2aaab
@@ -9,7 +9,7 @@
9
9
  <modelVersion>4.0.0</modelVersion>
10
10
  <groupId>expo.modules.router</groupId>
11
11
  <artifactId>expo.modules.router</artifactId>
12
- <version>56.2.15</version>
12
+ <version>56.2.16</version>
13
13
  <packaging>aar</packaging>
14
14
  <name>expo.modules.router</name>
15
15
  <url>https://github.com/expo/expo</url>
@@ -0,0 +1 @@
1
+ fd93d6946c8920b261c0870868cd2a2b99ff46789f135399f8fb52b2fd8506b7
@@ -0,0 +1 @@
1
+ 70271793cd0a4ae8fdc553b99b8fd74bfc9f5ecf9e56d38f02f9f8cbabc426c78564cd3f45316a013f96194a5f413a433a86eee5a553deefc6d209ab3dd74cc4
@@ -3,11 +3,11 @@
3
3
  <groupId>expo.modules.router</groupId>
4
4
  <artifactId>expo.modules.router</artifactId>
5
5
  <versioning>
6
- <latest>56.2.15</latest>
7
- <release>56.2.15</release>
6
+ <latest>56.2.16</latest>
7
+ <release>56.2.16</release>
8
8
  <versions>
9
- <version>56.2.15</version>
9
+ <version>56.2.16</version>
10
10
  </versions>
11
- <lastUpdated>20260715103209</lastUpdated>
11
+ <lastUpdated>20260723094230</lastUpdated>
12
12
  </versioning>
13
13
  </metadata>
@@ -1 +1 @@
1
- 6c726eddc58832b1a40067bd66bc178c
1
+ a7638d2ea412a6bd941ba2b22ec252d4
@@ -1 +1 @@
1
- e746293fbc5a28935e2727ca9578ff823da0aa2b
1
+ 5a6193b3f569642ada41bcd42118a615fd15dd26
@@ -1 +1 @@
1
- d90574fd0dd6fe811f17015659f98bd85b169e1de01753b150e145d99f6906bd
1
+ e0727ee49c98f3b99815c7a6a40932b30bcef57c32fe245ceedafdf5420424a1
@@ -1 +1 @@
1
- a95b15e3685dac89a5958c19ffcfbcf51394c4d997e84940a491ee7540886a6979832f3bfd737f9e2a2c58cc9dd6aef61d4cfa5b24df6e7917b6643be4808573
1
+ 88fb6959302feaa85e4ebade40bd2119621dddd320bacf4ae991d80898226fc6085bf35c2aade647018e17b6a4daa9e3ea6fd82c4862fc6d1f617bcd4792b89f
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "expo-router",
3
- "version": "56.2.15",
3
+ "version": "56.2.16",
4
4
  "description": "Expo Router is a file-based router for React Native and web applications.",
5
5
  "author": "650 Industries, Inc.",
6
6
  "license": "MIT",
@@ -79,18 +79,18 @@
79
79
  ],
80
80
  "peerDependencies": {
81
81
  "@expo/log-box": "^56.0.14",
82
- "@expo/metro-runtime": "^56.0.17",
82
+ "@expo/metro-runtime": "^56.0.18",
83
83
  "@testing-library/react-native": ">= 13.2.0",
84
84
  "expo": "*",
85
- "expo-constants": "^56.0.21",
86
- "expo-linking": "^56.0.15",
85
+ "expo-constants": "^56.0.22",
86
+ "expo-linking": "^56.0.16",
87
87
  "react": "*",
88
88
  "react-dom": "*",
89
89
  "react-native": "*",
90
90
  "react-native-gesture-handler": "*",
91
91
  "react-native-reanimated": "*",
92
92
  "react-native-safe-area-context": ">= 5.4.0",
93
- "react-native-screens": "^4.25.2",
93
+ "react-native-screens": "^4.26.0",
94
94
  "react-native-web": "*",
95
95
  "react-server-dom-webpack": "~19.0.4 || ~19.1.5 || ~19.2.4"
96
96
  },
@@ -132,17 +132,17 @@
132
132
  "react-native-gesture-handler": "~2.30.0",
133
133
  "react-native-reanimated": "~4.3.1",
134
134
  "react-native-safe-area-context": "~5.6.2",
135
- "react-native-screens": "^4.25.2",
135
+ "react-native-screens": "^4.26.0",
136
136
  "react-native-web": "~0.21.0",
137
137
  "react-server-dom-webpack": "~19.0.6",
138
138
  "tsd": "^0.33.0",
139
- "expo": "56.0.16"
139
+ "expo": "56.0.17"
140
140
  },
141
141
  "dependencies": {
142
142
  "@expo/log-box": "^56.0.14",
143
- "@expo/metro-runtime": "^56.0.17",
143
+ "@expo/metro-runtime": "^56.0.18",
144
144
  "@expo/schema-utils": "^56.0.2",
145
- "@expo/ui": "^56.0.22",
145
+ "@expo/ui": "^56.0.23",
146
146
  "@radix-ui/react-slot": "^1.2.0",
147
147
  "@radix-ui/react-tabs": "^1.1.12",
148
148
  "@react-native-masked-view/masked-view": "^0.3.2",
@@ -162,14 +162,14 @@
162
162
  "react-fast-compare": "^3.2.2",
163
163
  "react-is": "^19.1.0",
164
164
  "react-native-drawer-layout": "^4.2.2",
165
- "react-native-screens": "^4.25.2",
165
+ "react-native-screens": "^4.26.0",
166
166
  "server-only": "^0.0.1",
167
167
  "sf-symbols-typescript": "^2.1.0",
168
168
  "shallowequal": "^1.1.0",
169
169
  "standard-navigation": "^0.0.5",
170
170
  "vaul": "^1.1.2"
171
171
  },
172
- "gitHead": "8a480d22f04f94fd36570a319baeaa3529330794",
172
+ "gitHead": "60c9da71e15060aa859a7a6e85f4b14062b761f4",
173
173
  "scripts": {
174
174
  "build": "node ./scripts/build.js",
175
175
  "clean": "expo-module clean",
@@ -1 +0,0 @@
1
- 3dc0d6bc56ab70294b6e84795db16dc5fa4a5bad2691dca14ad6697a5cd68656
@@ -1 +0,0 @@
1
- 31063464ff2761a87097eda8cfc855698e5dfc932f3861ffd0386488540af1c7dc63aee465a86265daa334c84def89acd63c8434942ca98b90cbf69ddb2d1e2d
@@ -1 +0,0 @@
1
- 902e71c385b35ccdd183c9102be9dce31a32f7868a09a8835003a17a1edce83f
@@ -1 +0,0 @@
1
- 7185060eeb924a18bc12c292d2c9122ec4c21dee727bea6511b842e40792fd9cb0f583941891c7d53ff665033d804f4890947d207748ebefa9d8bec1b20346fe