{"ast":null,"code":"\"use strict\";\n\nimport _toConsumableArray from \"@babel/runtime/helpers/toConsumableArray\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport _slicedToArray from \"@babel/runtime/helpers/slicedToArray\";\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; }\nimport * as queryString from 'query-string';\nimport { getPatternParts } from \"./getPatternParts.js\";\nimport { validatePathConfig } from \"./validatePathConfig.js\";\nvar _getActiveRoute = function getActiveRoute(state) {\n  var route = typeof state.index === 'number' ? state.routes[state.index] : state.routes[state.routes.length - 1];\n  if (route.state) {\n    return _getActiveRoute(route.state);\n  }\n  return route;\n};\nvar cachedNormalizedConfigs = new WeakMap();\nvar getNormalizedConfigs = function getNormalizedConfigs(options) {\n  if (!(options != null && options.screens)) return {};\n  var cached = cachedNormalizedConfigs.get(options == null ? void 0 : options.screens);\n  if (cached) return cached;\n  var normalizedConfigs = createNormalizedConfigs(options.screens);\n  cachedNormalizedConfigs.set(options.screens, normalizedConfigs);\n  return normalizedConfigs;\n};\nexport function getPathFromState(state, options) {\n  if (state == null) {\n    throw Error(`Got '${String(state)}' for the navigation state. You must pass a valid state object.`);\n  }\n  if (options) {\n    validatePathConfig(options);\n  }\n  var configs = getNormalizedConfigs(options);\n  var path = '/';\n  var current = state;\n  var allParams = {};\n  var _loop = function _loop() {\n    var index = typeof current.index === 'number' ? current.index : 0;\n    var route = current.routes[index];\n    var parts;\n    var focusedParams;\n    var currentOptions = configs;\n    var focusedRoute = _getActiveRoute(state);\n    var nestedRouteNames = [];\n    var hasNext = true;\n    var _loop2 = function _loop2() {\n      parts = currentOptions[route.name].parts;\n      nestedRouteNames.push(route.name);\n      if (route.params) {\n        var _parts2;\n        var _options = currentOptions[route.name];\n        var currentParams = Object.fromEntries(Object.entries(route.params).map(function (_ref4) {\n          var _options$stringify$ke, _options$stringify;\n          var _ref5 = _slicedToArray(_ref4, 2),\n            key = _ref5[0],\n            value = _ref5[1];\n          if (value === undefined) {\n            if (_options) {\n              var _options$parts, _options$parts$find;\n              var optional = (_options$parts = _options.parts) == null ? void 0 : (_options$parts$find = _options$parts.find(function (part) {\n                return part.param === key;\n              })) == null ? void 0 : _options$parts$find.optional;\n              if (optional) {\n                return null;\n              }\n            } else {\n              return null;\n            }\n          }\n          var stringify = (_options$stringify$ke = _options == null ? void 0 : (_options$stringify = _options.stringify) == null ? void 0 : _options$stringify[key]) != null ? _options$stringify$ke : String;\n          return [key, stringify(value)];\n        }).filter(function (entry) {\n          return entry != null;\n        }));\n        if ((_parts2 = parts) != null && _parts2.length) {\n          Object.assign(allParams, currentParams);\n        }\n        if (focusedRoute === route) {\n          var _parts3;\n          focusedParams = _objectSpread({}, currentParams);\n          (_parts3 = parts) == null ? void 0 : _parts3.forEach(function (_ref6) {\n            var param = _ref6.param;\n            if (param) {\n              if (focusedParams) {\n                delete focusedParams[param];\n              }\n            }\n          });\n        }\n      }\n      if (!currentOptions[route.name].screens || route.state === undefined) {\n        hasNext = false;\n      } else {\n        index = typeof route.state.index === 'number' ? route.state.index : route.state.routes.length - 1;\n        var nextRoute = route.state.routes[index];\n        var nestedConfig = currentOptions[route.name].screens;\n        if (nestedConfig && nextRoute.name in nestedConfig) {\n          route = nextRoute;\n          currentOptions = nestedConfig;\n        } else {\n          hasNext = false;\n        }\n      }\n    };\n    while (route.name in currentOptions && hasNext) {\n      _loop2();\n    }\n    if (currentOptions[route.name] !== undefined) {\n      var _parts;\n      path += (_parts = parts) == null ? void 0 : _parts.map(function (_ref) {\n        var segment = _ref.segment,\n          param = _ref.param,\n          optional = _ref.optional;\n        if (segment === '*') {\n          return route.name;\n        }\n        if (param) {\n          var value = allParams[param];\n          if (value === undefined && optional) {\n            return '';\n          }\n          return String(value).replace(/[^A-Za-z0-9\\-._~!$&'()*+,;=:@]/g, function (char) {\n            return encodeURIComponent(char);\n          });\n        }\n        return encodeURIComponent(segment);\n      }).join('/');\n    } else {\n      path += encodeURIComponent(route.name);\n    }\n    if (!focusedParams && focusedRoute.params) {\n      focusedParams = Object.fromEntries(Object.entries(focusedRoute.params).map(function (_ref2) {\n        var _ref3 = _slicedToArray(_ref2, 2),\n          key = _ref3[0],\n          value = _ref3[1];\n        return [key, String(value)];\n      }));\n    }\n    if (route.state) {\n      path += '/';\n    } else if (focusedParams) {\n      for (var param in focusedParams) {\n        if (focusedParams[param] === 'undefined') {\n          delete focusedParams[param];\n        }\n      }\n      var query = queryString.stringify(focusedParams, {\n        sort: false\n      });\n      if (query) {\n        path += `?${query}`;\n      }\n    }\n    current = route.state;\n  };\n  while (current) {\n    _loop();\n  }\n  if (options != null && options.path) {\n    path = `${options.path}/${path}`;\n  }\n  path = path.replace(/\\/+/g, '/');\n  path = path.length > 1 ? path.replace(/\\/$/, '') : path;\n  if (!path.startsWith('/')) {\n    path = `/${path}`;\n  }\n  return path;\n}\nvar createConfigItem = function createConfigItem(config, parentParts) {\n  if (typeof config === 'string') {\n    var _parts4 = getPatternParts(config);\n    if (parentParts) {\n      return {\n        parts: [].concat(_toConsumableArray(parentParts), _toConsumableArray(_parts4))\n      };\n    }\n    return {\n      parts: _parts4\n    };\n  }\n  if (config.exact && config.path === undefined) {\n    throw new Error(\"A 'path' needs to be specified when specifying 'exact: true'. If you don't want this screen in the URL, specify it as empty string, e.g. `path: ''`.\");\n  }\n  var parts = config.exact !== true ? [].concat(_toConsumableArray(parentParts || []), _toConsumableArray(config.path ? getPatternParts(config.path) : [])) : config.path ? getPatternParts(config.path) : undefined;\n  var screens = config.screens ? createNormalizedConfigs(config.screens, parts) : undefined;\n  return {\n    parts: parts,\n    stringify: config.stringify,\n    screens: screens\n  };\n};\nvar createNormalizedConfigs = function createNormalizedConfigs(options, parts) {\n  return Object.fromEntries(Object.entries(options).map(function (_ref7) {\n    var _ref8 = _slicedToArray(_ref7, 2),\n      name = _ref8[0],\n      c = _ref8[1];\n    var result = createConfigItem(c, parts);\n    return [name, result];\n  }));\n};","map":{"version":3,"names":["queryString","getPatternParts","validatePathConfig","getActiveRoute","state","route","index","routes","length","cachedNormalizedConfigs","WeakMap","getNormalizedConfigs","options","screens","cached","get","normalizedConfigs","createNormalizedConfigs","set","getPathFromState","Error","String","configs","path","current","allParams","_loop","parts","focusedParams","currentOptions","focusedRoute","nestedRouteNames","hasNext","_loop2","name","push","params","_parts2","currentParams","Object","fromEntries","entries","map","_ref4","_options$stringify$ke","_options$stringify","_ref5","_slicedToArray","key","value","undefined","_options$parts","_options$parts$find","optional","find","part","param","stringify","filter","entry","assign","_parts3","_objectSpread","forEach","_ref6","nextRoute","nestedConfig","_parts","_ref","segment","replace","char","encodeURIComponent","join","_ref2","_ref3","query","sort","startsWith","createConfigItem","config","parentParts","concat","_toConsumableArray","exact","_ref7","_ref8","c","result"],"sources":["/Users/pmouli/Documents/GitHub.nosync/boots-strapper/mobile/node_modules/@react-navigation/core/src/getPathFromState.tsx"],"sourcesContent":["import type {\n  NavigationState,\n  PartialState,\n  Route,\n} from '@react-navigation/routers';\nimport * as queryString from 'query-string';\n\nimport { getPatternParts, type PatternPart } from './getPatternParts';\nimport type { PathConfig, PathConfigMap } from './types';\nimport { validatePathConfig } from './validatePathConfig';\n\ntype Options<ParamList extends {}> = {\n  path?: string;\n  initialRouteName?: string;\n  screens: PathConfigMap<ParamList>;\n};\n\ntype State = NavigationState | Omit<PartialState<NavigationState>, 'stale'>;\n\ntype StringifyConfig = Record<string, (value: unknown) => string>;\n\ntype ConfigItem = {\n  parts?: PatternPart[];\n  stringify?: StringifyConfig;\n  screens?: Record<string, ConfigItem>;\n};\n\nconst getActiveRoute = (state: State): { name: string; params?: object } => {\n  const route =\n    typeof state.index === 'number'\n      ? state.routes[state.index]\n      : state.routes[state.routes.length - 1];\n\n  if (route.state) {\n    return getActiveRoute(route.state);\n  }\n\n  return route;\n};\n\nconst cachedNormalizedConfigs = new WeakMap<\n  PathConfigMap<{}>,\n  Record<string, ConfigItem>\n>();\n\nconst getNormalizedConfigs = (options?: Options<{}>) => {\n  if (!options?.screens) return {};\n\n  const cached = cachedNormalizedConfigs.get(options?.screens);\n\n  if (cached) return cached;\n\n  const normalizedConfigs = createNormalizedConfigs(options.screens);\n\n  cachedNormalizedConfigs.set(options.screens, normalizedConfigs);\n\n  return normalizedConfigs;\n};\n\n/**\n * Utility to serialize a navigation state object to a path string.\n *\n * @example\n * ```js\n * getPathFromState(\n *   {\n *     routes: [\n *       {\n *         name: 'Chat',\n *         params: { author: 'Jane', id: 42 },\n *       },\n *     ],\n *   },\n *   {\n *     screens: {\n *       Chat: {\n *         path: 'chat/:author/:id',\n *         stringify: { author: author => author.toLowerCase() }\n *       }\n *     }\n *   }\n * )\n * ```\n *\n * @param state Navigation state to serialize.\n * @param options Extra options to fine-tune how to serialize the path.\n * @returns Path representing the state, e.g. /foo/bar?count=42.\n */\nexport function getPathFromState<ParamList extends {}>(\n  state: State,\n  options?: Options<ParamList>\n): string {\n  if (state == null) {\n    throw Error(\n      `Got '${String(state)}' for the navigation state. You must pass a valid state object.`\n    );\n  }\n\n  if (options) {\n    validatePathConfig(options);\n  }\n\n  const configs = getNormalizedConfigs(options);\n\n  let path = '/';\n  let current: State | undefined = state;\n\n  const allParams: Record<string, string> = {};\n\n  while (current) {\n    let index = typeof current.index === 'number' ? current.index : 0;\n    let route = current.routes[index] as Route<string> & {\n      state?: State;\n    };\n\n    let parts: PatternPart[] | undefined;\n\n    let focusedParams: Record<string, string> | undefined;\n    let currentOptions = configs;\n\n    const focusedRoute = getActiveRoute(state);\n\n    // Keep all the route names that appeared during going deeper in config in case the pattern is resolved to undefined\n    const nestedRouteNames = [];\n\n    let hasNext = true;\n\n    while (route.name in currentOptions && hasNext) {\n      parts = currentOptions[route.name].parts;\n\n      nestedRouteNames.push(route.name);\n\n      if (route.params) {\n        const options = currentOptions[route.name];\n\n        const currentParams = Object.fromEntries(\n          Object.entries(route.params)\n            .map(([key, value]): [string, string] | null => {\n              if (value === undefined) {\n                if (options) {\n                  const optional = options.parts?.find(\n                    (part) => part.param === key\n                  )?.optional;\n\n                  if (optional) {\n                    return null;\n                  }\n                } else {\n                  return null;\n                }\n              }\n\n              const stringify = options?.stringify?.[key] ?? String;\n\n              return [key, stringify(value)];\n            })\n            .filter((entry) => entry != null)\n        );\n\n        if (parts?.length) {\n          Object.assign(allParams, currentParams);\n        }\n\n        if (focusedRoute === route) {\n          // If this is the focused route, keep the params for later use\n          // We save it here since it's been stringified already\n          focusedParams = { ...currentParams };\n\n          parts\n            // eslint-disable-next-line no-loop-func\n            ?.forEach(({ param }) => {\n              if (param) {\n                // Remove the params present in the pattern since we'll only use the rest for query string\n                if (focusedParams) {\n                  // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n                  delete focusedParams[param];\n                }\n              }\n            });\n        }\n      }\n\n      // If there is no `screens` property or no nested state, we return pattern\n      if (!currentOptions[route.name].screens || route.state === undefined) {\n        hasNext = false;\n      } else {\n        index =\n          typeof route.state.index === 'number'\n            ? route.state.index\n            : route.state.routes.length - 1;\n\n        const nextRoute = route.state.routes[index];\n        const nestedConfig = currentOptions[route.name].screens;\n\n        // if there is config for next route name, we go deeper\n        if (nestedConfig && nextRoute.name in nestedConfig) {\n          route = nextRoute as Route<string> & { state?: State };\n          currentOptions = nestedConfig;\n        } else {\n          // If not, there is no sense in going deeper in config\n          hasNext = false;\n        }\n      }\n    }\n\n    if (currentOptions[route.name] !== undefined) {\n      path += parts\n        ?.map(({ segment, param, optional }) => {\n          // We don't know what to show for wildcard patterns\n          // Showing the route name seems ok, though whatever we show here will be incorrect\n          // Since the page doesn't actually exist\n          if (segment === '*') {\n            return route.name;\n          }\n\n          // If the path has a pattern for a param, put the param in the path\n          if (param) {\n            const value = allParams[param];\n\n            if (value === undefined && optional) {\n              // Optional params without value assigned in route.params should be ignored\n              return '';\n            }\n\n            // Valid characters according to\n            // https://datatracker.ietf.org/doc/html/rfc3986#section-3.3 (see pchar definition)\n            return String(value).replace(\n              /[^A-Za-z0-9\\-._~!$&'()*+,;=:@]/g,\n              (char) => encodeURIComponent(char)\n            );\n          }\n\n          return encodeURIComponent(segment);\n        })\n        .join('/');\n    } else {\n      path += encodeURIComponent(route.name);\n    }\n\n    if (!focusedParams && focusedRoute.params) {\n      focusedParams = Object.fromEntries(\n        Object.entries(focusedRoute.params).map(([key, value]) => [\n          key,\n          String(value),\n        ])\n      );\n    }\n\n    if (route.state) {\n      path += '/';\n    } else if (focusedParams) {\n      for (const param in focusedParams) {\n        if (focusedParams[param] === 'undefined') {\n          // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n          delete focusedParams[param];\n        }\n      }\n\n      const query = queryString.stringify(focusedParams, { sort: false });\n\n      if (query) {\n        path += `?${query}`;\n      }\n    }\n\n    current = route.state;\n  }\n\n  // Include the root path if specified\n  if (options?.path) {\n    path = `${options.path}/${path}`;\n  }\n\n  // Remove multiple as well as trailing slashes\n  path = path.replace(/\\/+/g, '/');\n  path = path.length > 1 ? path.replace(/\\/$/, '') : path;\n\n  // If path doesn't start with a slash, add it\n  // This makes sure that history.pushState will update the path correctly instead of appending\n  if (!path.startsWith('/')) {\n    path = `/${path}`;\n  }\n\n  return path;\n}\n\nconst createConfigItem = (\n  config: PathConfig<object> | string,\n  parentParts?: PatternPart[]\n): ConfigItem => {\n  if (typeof config === 'string') {\n    // If a string is specified as the value of the key(e.g. Foo: '/path'), use it as the pattern\n    const parts = getPatternParts(config);\n\n    if (parentParts) {\n      return { parts: [...parentParts, ...parts] };\n    }\n\n    return { parts };\n  }\n\n  if (config.exact && config.path === undefined) {\n    throw new Error(\n      \"A 'path' needs to be specified when specifying 'exact: true'. If you don't want this screen in the URL, specify it as empty string, e.g. `path: ''`.\"\n    );\n  }\n\n  // If an object is specified as the value (e.g. Foo: { ... }),\n  // It can have `path` property and `screens` prop which has nested configs\n  const parts =\n    config.exact !== true\n      ? [\n          ...(parentParts || []),\n          ...(config.path ? getPatternParts(config.path) : []),\n        ]\n      : config.path\n        ? getPatternParts(config.path)\n        : undefined;\n\n  const screens = config.screens\n    ? createNormalizedConfigs(config.screens, parts)\n    : undefined;\n\n  return {\n    parts,\n    stringify: config.stringify,\n    screens,\n  };\n};\n\nconst createNormalizedConfigs = (\n  options: PathConfigMap<object>,\n  parts?: PatternPart[]\n): Record<string, ConfigItem> =>\n  Object.fromEntries(\n    Object.entries(options).map(([name, c]) => {\n      const result = createConfigItem(c, parts);\n\n      return [name, result];\n    })\n  );\n"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}