{"ast":null,"code":"\"use strict\";\n\nimport _slicedToArray from \"@babel/runtime/helpers/slicedToArray\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nexport function getActionFromState(state, options) {\n  var _state$index, _normalizedConfig$scr, _config;\n  var normalizedConfig = options ? createNormalizedConfigItem(options) : {};\n  var routes = state.index != null ? state.routes.slice(0, state.index + 1) : state.routes;\n  if (routes.length === 0) {\n    return undefined;\n  }\n  if (!(routes.length === 1 && routes[0].key === undefined || routes.length === 2 && routes[0].key === undefined && routes[0].name === (normalizedConfig == null ? void 0 : normalizedConfig.initialRouteName) && routes[1].key === undefined)) {\n    return {\n      type: 'RESET',\n      payload: state\n    };\n  }\n  var route = state.routes[(_state$index = state.index) != null ? _state$index : state.routes.length - 1];\n  var current = route == null ? void 0 : route.state;\n  var config = normalizedConfig == null ? void 0 : (_normalizedConfig$scr = normalizedConfig.screens) == null ? void 0 : _normalizedConfig$scr[route == null ? void 0 : route.name];\n  var params = _objectSpread({}, route.params);\n  var payload = route ? {\n    name: route.name,\n    path: route.path,\n    params: params\n  } : undefined;\n  if (payload && (_config = config) != null && _config.screens && Object.keys(config.screens).length) {\n    payload.pop = true;\n  }\n  while (current) {\n    var _config2, _config3, _config3$screens, _config4;\n    if (current.routes.length === 0) {\n      return undefined;\n    }\n    var _routes = current.index != null ? current.routes.slice(0, current.index + 1) : current.routes;\n    var _route = _routes[_routes.length - 1];\n    Object.assign(params, {\n      initial: undefined,\n      screen: undefined,\n      params: undefined,\n      state: undefined\n    });\n    if (_routes.length === 1 && _routes[0].key === undefined) {\n      params.initial = true;\n      params.screen = _route.name;\n    } else if (_routes.length === 2 && _routes[0].key === undefined && _routes[0].name === ((_config2 = config) == null ? void 0 : _config2.initialRouteName) && _routes[1].key === undefined) {\n      params.initial = false;\n      params.screen = _route.name;\n    } else {\n      params.state = current;\n      break;\n    }\n    if (_route.state) {\n      params.params = _objectSpread({}, _route.params);\n      params.pop = true;\n      params = params.params;\n    } else {\n      params.path = _route.path;\n      params.params = _route.params;\n    }\n    current = _route.state;\n    config = (_config3 = config) == null ? void 0 : (_config3$screens = _config3.screens) == null ? void 0 : _config3$screens[_route.name];\n    if ((_config4 = config) != null && _config4.screens && Object.keys(config.screens).length) {\n      params.pop = true;\n    }\n  }\n  if (payload != null && payload.params.screen || payload != null && payload.params.state) {\n    payload.pop = true;\n  }\n  if (!payload) {\n    return;\n  }\n  return {\n    type: 'NAVIGATE',\n    payload: payload\n  };\n}\nvar createNormalizedConfigItem = function createNormalizedConfigItem(config) {\n  return typeof config === 'object' && config != null ? {\n    initialRouteName: config.initialRouteName,\n    screens: config.screens != null ? createNormalizedConfigs(config.screens) : undefined\n  } : {};\n};\nvar createNormalizedConfigs = function createNormalizedConfigs(options) {\n  return Object.entries(options).reduce(function (acc, _ref) {\n    var _ref2 = _slicedToArray(_ref, 2),\n      k = _ref2[0],\n      v = _ref2[1];\n    acc[k] = createNormalizedConfigItem(v);\n    return acc;\n  }, {});\n};","map":{"version":3,"names":["getActionFromState","state","options","_state$index","_normalizedConfig$scr","_config","normalizedConfig","createNormalizedConfigItem","routes","index","slice","length","undefined","key","name","initialRouteName","type","payload","route","current","config","screens","params","_objectSpread","path","Object","keys","pop","_config2","_config3","_config3$screens","_config4","assign","initial","screen","createNormalizedConfigs","entries","reduce","acc","_ref","_ref2","_slicedToArray","k","v"],"sources":["/Users/pmouli/Documents/GitHub.nosync/boots-strapper/mobile/node_modules/@react-navigation/core/src/getActionFromState.tsx"],"sourcesContent":["import type {\n  CommonActions,\n  NavigationState,\n  ParamListBase,\n  PartialRoute,\n  PartialState,\n  Route,\n} from '@react-navigation/routers';\n\nimport type { NavigatorScreenParams, PathConfig, PathConfigMap } from './types';\n\ntype ConfigItem = {\n  initialRouteName?: string;\n  screens?: Record<string, ConfigItem>;\n};\n\ntype Options = {\n  initialRouteName?: string;\n  screens: PathConfigMap<object>;\n};\n\ntype NavigateAction<State extends NavigationState> = {\n  type: 'NAVIGATE';\n  payload: {\n    name: string;\n    params?: NavigatorScreenParams<State>;\n    path?: string;\n  };\n};\n\nexport function getActionFromState(\n  state: PartialState<NavigationState>,\n  options?: Options\n): NavigateAction<NavigationState> | CommonActions.Action | undefined {\n  // Create a normalized configs object which will be easier to use\n  const normalizedConfig = options\n    ? createNormalizedConfigItem(options as PathConfig<object> | string)\n    : {};\n\n  const routes =\n    state.index != null ? state.routes.slice(0, state.index + 1) : state.routes;\n\n  if (routes.length === 0) {\n    return undefined;\n  }\n\n  if (\n    !(\n      (routes.length === 1 && routes[0].key === undefined) ||\n      (routes.length === 2 &&\n        routes[0].key === undefined &&\n        routes[0].name === normalizedConfig?.initialRouteName &&\n        routes[1].key === undefined)\n    )\n  ) {\n    return {\n      type: 'RESET',\n      payload: state,\n    };\n  }\n\n  const route = state.routes[state.index ?? state.routes.length - 1];\n\n  let current: PartialState<NavigationState> | undefined = route?.state;\n  let config: ConfigItem | undefined = normalizedConfig?.screens?.[route?.name];\n  let params = { ...route.params } as NavigatorScreenParams<ParamListBase>;\n\n  const payload:\n    | {\n        name: string;\n        params: NavigatorScreenParams<ParamListBase>;\n        path?: string;\n        pop?: boolean;\n      }\n    | undefined = route\n    ? { name: route.name, path: route.path, params }\n    : undefined;\n\n  // If the screen contains a navigator, pop other screens to navigate to it\n  // This avoid pushing multiple instances of navigators onto a stack\n  //\n  // For example:\n  // - RootStack\n  //   - BottomTabs\n  //   - SomeScreen\n  //\n  // In this case, if deep linking to `BottomTabs`, we should pop `SomeScreen`\n  // Otherwise, we'll end up with 2 instances of `BottomTabs` in the stack\n  //\n  // There are 2 ways we can detect if a screen contains a navigator:\n  // - The route contains nested state in `route.state`\n  // - Nested screens are defined in the config\n  if (payload && config?.screens && Object.keys(config.screens).length) {\n    payload.pop = true;\n  }\n\n  while (current) {\n    if (current.routes.length === 0) {\n      return undefined;\n    }\n\n    const routes =\n      current.index != null\n        ? current.routes.slice(0, current.index + 1)\n        : current.routes;\n\n    const route: Route<string> | PartialRoute<Route<string>> =\n      routes[routes.length - 1];\n\n    // Explicitly set to override existing value when merging params\n    Object.assign(params, {\n      initial: undefined,\n      screen: undefined,\n      params: undefined,\n      state: undefined,\n    });\n\n    if (routes.length === 1 && routes[0].key === undefined) {\n      params.initial = true;\n      params.screen = route.name;\n    } else if (\n      routes.length === 2 &&\n      routes[0].key === undefined &&\n      routes[0].name === config?.initialRouteName &&\n      routes[1].key === undefined\n    ) {\n      params.initial = false;\n      params.screen = route.name;\n    } else {\n      params.state = current;\n      break;\n    }\n\n    if (route.state) {\n      params.params = { ...route.params };\n      params.pop = true;\n      params = params.params as NavigatorScreenParams<ParamListBase>;\n    } else {\n      params.path = route.path;\n      params.params = route.params;\n    }\n\n    current = route.state;\n    config = config?.screens?.[route.name];\n\n    if (config?.screens && Object.keys(config.screens).length) {\n      params.pop = true;\n    }\n  }\n\n  if (payload?.params.screen || payload?.params.state) {\n    payload.pop = true;\n  }\n\n  if (!payload) {\n    return;\n  }\n\n  // Try to construct payload for a `NAVIGATE` action from the state\n  // This lets us preserve the navigation state and not lose it\n  return {\n    type: 'NAVIGATE',\n    payload,\n  };\n}\n\nconst createNormalizedConfigItem = (config: PathConfig<object> | string) =>\n  typeof config === 'object' && config != null\n    ? {\n        initialRouteName: config.initialRouteName,\n        screens:\n          config.screens != null\n            ? createNormalizedConfigs(config.screens)\n            : undefined,\n      }\n    : {};\n\nconst createNormalizedConfigs = (options: PathConfigMap<object>) =>\n  Object.entries(options).reduce<Record<string, ConfigItem>>((acc, [k, v]) => {\n    acc[k] = createNormalizedConfigItem(v);\n    return acc;\n  }, {});\n"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}