{"ast":null,"code":"import _toConsumableArray from \"@babel/runtime/helpers/toConsumableArray\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nimport { nanoid } from 'nanoid/non-secure';\nimport BaseRouter from \"./BaseRouter\";\nexport var StackActions = {\n  replace: function replace(name, params) {\n    return {\n      type: 'REPLACE',\n      payload: {\n        name: name,\n        params: params\n      }\n    };\n  },\n  push: function push(name, params) {\n    return {\n      type: 'PUSH',\n      payload: {\n        name: name,\n        params: params\n      }\n    };\n  },\n  pop: function pop() {\n    var count = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1;\n    return {\n      type: 'POP',\n      payload: {\n        count: count\n      }\n    };\n  },\n  popToTop: function popToTop() {\n    return {\n      type: 'POP_TO_TOP'\n    };\n  }\n};\nexport default function StackRouter(options) {\n  var router = _objectSpread(_objectSpread({}, BaseRouter), {}, {\n    type: 'stack',\n    getInitialState: function getInitialState(_ref) {\n      var routeNames = _ref.routeNames,\n        routeParamList = _ref.routeParamList;\n      var initialRouteName = options.initialRouteName !== undefined && routeNames.includes(options.initialRouteName) ? options.initialRouteName : routeNames[0];\n      return {\n        stale: false,\n        type: 'stack',\n        key: `stack-${nanoid()}`,\n        index: 0,\n        routeNames: routeNames,\n        routes: [{\n          key: `${initialRouteName}-${nanoid()}`,\n          name: initialRouteName,\n          params: routeParamList[initialRouteName]\n        }]\n      };\n    },\n    getRehydratedState: function getRehydratedState(partialState, _ref2) {\n      var routeNames = _ref2.routeNames,\n        routeParamList = _ref2.routeParamList;\n      var state = partialState;\n      if (state.stale === false) {\n        return state;\n      }\n      var routes = state.routes.filter(function (route) {\n        return routeNames.includes(route.name);\n      }).map(function (route) {\n        return _objectSpread(_objectSpread({}, route), {}, {\n          key: route.key || `${route.name}-${nanoid()}`,\n          params: routeParamList[route.name] !== undefined ? _objectSpread(_objectSpread({}, routeParamList[route.name]), route.params) : route.params\n        });\n      });\n      if (routes.length === 0) {\n        var initialRouteName = options.initialRouteName !== undefined ? options.initialRouteName : routeNames[0];\n        routes.push({\n          key: `${initialRouteName}-${nanoid()}`,\n          name: initialRouteName,\n          params: routeParamList[initialRouteName]\n        });\n      }\n      return {\n        stale: false,\n        type: 'stack',\n        key: `stack-${nanoid()}`,\n        index: routes.length - 1,\n        routeNames: routeNames,\n        routes: routes\n      };\n    },\n    getStateForRouteNamesChange: function getStateForRouteNamesChange(state, _ref3) {\n      var routeNames = _ref3.routeNames,\n        routeParamList = _ref3.routeParamList,\n        routeKeyChanges = _ref3.routeKeyChanges;\n      var routes = state.routes.filter(function (route) {\n        return routeNames.includes(route.name) && !routeKeyChanges.includes(route.name);\n      });\n      if (routes.length === 0) {\n        var initialRouteName = options.initialRouteName !== undefined && routeNames.includes(options.initialRouteName) ? options.initialRouteName : routeNames[0];\n        routes.push({\n          key: `${initialRouteName}-${nanoid()}`,\n          name: initialRouteName,\n          params: routeParamList[initialRouteName]\n        });\n      }\n      return _objectSpread(_objectSpread({}, state), {}, {\n        routeNames: routeNames,\n        routes: routes,\n        index: Math.min(state.index, routes.length - 1)\n      });\n    },\n    getStateForRouteFocus: function getStateForRouteFocus(state, key) {\n      var index = state.routes.findIndex(function (r) {\n        return r.key === key;\n      });\n      if (index === -1 || index === state.index) {\n        return state;\n      }\n      return _objectSpread(_objectSpread({}, state), {}, {\n        index: index,\n        routes: state.routes.slice(0, index + 1)\n      });\n    },\n    getStateForAction: function getStateForAction(state, action, options) {\n      var routeParamList = options.routeParamList;\n      switch (action.type) {\n        case 'REPLACE':\n          {\n            var index = action.target === state.key && action.source ? state.routes.findIndex(function (r) {\n              return r.key === action.source;\n            }) : state.index;\n            if (index === -1) {\n              return null;\n            }\n            var _action$payload = action.payload,\n              name = _action$payload.name,\n              key = _action$payload.key,\n              params = _action$payload.params;\n            if (!state.routeNames.includes(name)) {\n              return null;\n            }\n            return _objectSpread(_objectSpread({}, state), {}, {\n              routes: state.routes.map(function (route, i) {\n                return i === index ? {\n                  key: key !== undefined ? key : `${name}-${nanoid()}`,\n                  name: name,\n                  params: routeParamList[name] !== undefined ? _objectSpread(_objectSpread({}, routeParamList[name]), params) : params\n                } : route;\n              })\n            });\n          }\n        case 'PUSH':\n          if (state.routeNames.includes(action.payload.name)) {\n            var getId = options.routeGetIdList[action.payload.name];\n            var id = getId === null || getId === void 0 ? void 0 : getId({\n              params: action.payload.params\n            });\n            var route = id ? state.routes.find(function (route) {\n              return route.name === action.payload.name && id === (getId === null || getId === void 0 ? void 0 : getId({\n                params: route.params\n              }));\n            }) : undefined;\n            var routes;\n            if (route) {\n              routes = state.routes.filter(function (r) {\n                return r.key !== route.key;\n              });\n              routes.push(_objectSpread(_objectSpread({}, route), {}, {\n                params: routeParamList[action.payload.name] !== undefined ? _objectSpread(_objectSpread({}, routeParamList[action.payload.name]), action.payload.params) : action.payload.params\n              }));\n            } else {\n              routes = [].concat(_toConsumableArray(state.routes), [{\n                key: `${action.payload.name}-${nanoid()}`,\n                name: action.payload.name,\n                params: routeParamList[action.payload.name] !== undefined ? _objectSpread(_objectSpread({}, routeParamList[action.payload.name]), action.payload.params) : action.payload.params\n              }]);\n            }\n            return _objectSpread(_objectSpread({}, state), {}, {\n              index: routes.length - 1,\n              routes: routes\n            });\n          }\n          return null;\n        case 'POP':\n          {\n            var _index = action.target === state.key && action.source ? state.routes.findIndex(function (r) {\n              return r.key === action.source;\n            }) : state.index;\n            if (_index > 0) {\n              var count = Math.max(_index - action.payload.count + 1, 1);\n              var _routes = state.routes.slice(0, count).concat(state.routes.slice(_index + 1));\n              return _objectSpread(_objectSpread({}, state), {}, {\n                index: _routes.length - 1,\n                routes: _routes\n              });\n            }\n            return null;\n          }\n        case 'POP_TO_TOP':\n          return router.getStateForAction(state, {\n            type: 'POP',\n            payload: {\n              count: state.routes.length - 1\n            }\n          }, options);\n        case 'NAVIGATE':\n          if (action.payload.name !== undefined && !state.routeNames.includes(action.payload.name)) {\n            return null;\n          }\n          if (action.payload.key || action.payload.name) {\n            var _action$payload$path;\n            var _index2 = -1;\n            var _getId = action.payload.key === undefined && action.payload.name !== undefined ? options.routeGetIdList[action.payload.name] : undefined;\n            var _id = _getId === null || _getId === void 0 ? void 0 : _getId({\n              params: action.payload.params\n            });\n            if (_id) {\n              _index2 = state.routes.findIndex(function (route) {\n                return route.name === action.payload.name && _id === (_getId === null || _getId === void 0 ? void 0 : _getId({\n                  params: route.params\n                }));\n              });\n            } else if (state.routes[state.index].name === action.payload.name && action.payload.key === undefined || state.routes[state.index].key === action.payload.key) {\n              _index2 = state.index;\n            } else {\n              for (var i = state.routes.length - 1; i >= 0; i--) {\n                if (state.routes[i].name === action.payload.name && action.payload.key === undefined || state.routes[i].key === action.payload.key) {\n                  _index2 = i;\n                  break;\n                }\n              }\n            }\n            if (_index2 === -1 && action.payload.key && action.payload.name === undefined) {\n              return null;\n            }\n            if (_index2 === -1 && action.payload.name !== undefined) {\n              var _action$payload$key;\n              var _routes2 = [].concat(_toConsumableArray(state.routes), [{\n                key: (_action$payload$key = action.payload.key) != null ? _action$payload$key : `${action.payload.name}-${nanoid()}`,\n                name: action.payload.name,\n                path: action.payload.path,\n                params: routeParamList[action.payload.name] !== undefined ? _objectSpread(_objectSpread({}, routeParamList[action.payload.name]), action.payload.params) : action.payload.params\n              }]);\n              return _objectSpread(_objectSpread({}, state), {}, {\n                routes: _routes2,\n                index: _routes2.length - 1\n              });\n            }\n            var _route = state.routes[_index2];\n            var _params;\n            if (action.payload.merge) {\n              _params = action.payload.params !== undefined || routeParamList[_route.name] !== undefined ? _objectSpread(_objectSpread(_objectSpread({}, routeParamList[_route.name]), _route.params), action.payload.params) : _route.params;\n            } else {\n              _params = routeParamList[_route.name] !== undefined ? _objectSpread(_objectSpread({}, routeParamList[_route.name]), action.payload.params) : action.payload.params;\n            }\n            return _objectSpread(_objectSpread({}, state), {}, {\n              index: _index2,\n              routes: [].concat(_toConsumableArray(state.routes.slice(0, _index2)), [_params !== _route.params || action.payload.path && action.payload.path !== _route.path ? _objectSpread(_objectSpread({}, _route), {}, {\n                path: (_action$payload$path = action.payload.path) != null ? _action$payload$path : _route.path,\n                params: _params\n              }) : state.routes[_index2]])\n            });\n          }\n          return null;\n        case 'GO_BACK':\n          if (state.index > 0) {\n            return router.getStateForAction(state, {\n              type: 'POP',\n              payload: {\n                count: 1\n              },\n              target: action.target,\n              source: action.source\n            }, options);\n          }\n          return null;\n        default:\n          return BaseRouter.getStateForAction(state, action);\n      }\n    },\n    actionCreators: StackActions\n  });\n  return router;\n}","map":{"version":3,"sources":["StackRouter.tsx"],"names":["nanoid","BaseRouter","StackActions","replace","name","params","type","payload","push","pop","count","popToTop","StackRouter","options","router","getInitialState","routeNames","routeParamList","initialRouteName","undefined","includes","stale","key","index","routes","getRehydratedState","partialState","state","filter","route","map","length","getStateForRouteNamesChange","routeKeyChanges","Math","min","getStateForRouteFocus","findIndex","r","slice","getStateForAction","action","target","source","i","getId","routeGetIdList","id","find","max","concat","path","merge","actionCreators"],"mappings":"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","sourceRoot":"../../src","sourcesContent":["import { nanoid } from 'nanoid/non-secure';\nimport BaseRouter from './BaseRouter';\nexport const StackActions = {\n  replace(name, params) {\n    return {\n      type: 'REPLACE',\n      payload: {\n        name,\n        params\n      }\n    };\n  },\n  push(name, params) {\n    return {\n      type: 'PUSH',\n      payload: {\n        name,\n        params\n      }\n    };\n  },\n  pop() {\n    let count = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1;\n    return {\n      type: 'POP',\n      payload: {\n        count\n      }\n    };\n  },\n  popToTop() {\n    return {\n      type: 'POP_TO_TOP'\n    };\n  }\n};\nexport default function StackRouter(options) {\n  const router = {\n    ...BaseRouter,\n    type: 'stack',\n    getInitialState(_ref) {\n      let {\n        routeNames,\n        routeParamList\n      } = _ref;\n      const initialRouteName = options.initialRouteName !== undefined && routeNames.includes(options.initialRouteName) ? options.initialRouteName : routeNames[0];\n      return {\n        stale: false,\n        type: 'stack',\n        key: `stack-${nanoid()}`,\n        index: 0,\n        routeNames,\n        routes: [{\n          key: `${initialRouteName}-${nanoid()}`,\n          name: initialRouteName,\n          params: routeParamList[initialRouteName]\n        }]\n      };\n    },\n    getRehydratedState(partialState, _ref2) {\n      let {\n        routeNames,\n        routeParamList\n      } = _ref2;\n      let state = partialState;\n      if (state.stale === false) {\n        return state;\n      }\n      const routes = state.routes.filter(route => routeNames.includes(route.name)).map(route => ({\n        ...route,\n        key: route.key || `${route.name}-${nanoid()}`,\n        params: routeParamList[route.name] !== undefined ? {\n          ...routeParamList[route.name],\n          ...route.params\n        } : route.params\n      }));\n      if (routes.length === 0) {\n        const initialRouteName = options.initialRouteName !== undefined ? options.initialRouteName : routeNames[0];\n        routes.push({\n          key: `${initialRouteName}-${nanoid()}`,\n          name: initialRouteName,\n          params: routeParamList[initialRouteName]\n        });\n      }\n      return {\n        stale: false,\n        type: 'stack',\n        key: `stack-${nanoid()}`,\n        index: routes.length - 1,\n        routeNames,\n        routes\n      };\n    },\n    getStateForRouteNamesChange(state, _ref3) {\n      let {\n        routeNames,\n        routeParamList,\n        routeKeyChanges\n      } = _ref3;\n      const routes = state.routes.filter(route => routeNames.includes(route.name) && !routeKeyChanges.includes(route.name));\n      if (routes.length === 0) {\n        const initialRouteName = options.initialRouteName !== undefined && routeNames.includes(options.initialRouteName) ? options.initialRouteName : routeNames[0];\n        routes.push({\n          key: `${initialRouteName}-${nanoid()}`,\n          name: initialRouteName,\n          params: routeParamList[initialRouteName]\n        });\n      }\n      return {\n        ...state,\n        routeNames,\n        routes,\n        index: Math.min(state.index, routes.length - 1)\n      };\n    },\n    getStateForRouteFocus(state, key) {\n      const index = state.routes.findIndex(r => r.key === key);\n      if (index === -1 || index === state.index) {\n        return state;\n      }\n      return {\n        ...state,\n        index,\n        routes: state.routes.slice(0, index + 1)\n      };\n    },\n    getStateForAction(state, action, options) {\n      const {\n        routeParamList\n      } = options;\n      switch (action.type) {\n        case 'REPLACE':\n          {\n            const index = action.target === state.key && action.source ? state.routes.findIndex(r => r.key === action.source) : state.index;\n            if (index === -1) {\n              return null;\n            }\n            const {\n              name,\n              key,\n              params\n            } = action.payload;\n            if (!state.routeNames.includes(name)) {\n              return null;\n            }\n            return {\n              ...state,\n              routes: state.routes.map((route, i) => i === index ? {\n                key: key !== undefined ? key : `${name}-${nanoid()}`,\n                name,\n                params: routeParamList[name] !== undefined ? {\n                  ...routeParamList[name],\n                  ...params\n                } : params\n              } : route)\n            };\n          }\n        case 'PUSH':\n          if (state.routeNames.includes(action.payload.name)) {\n            const getId = options.routeGetIdList[action.payload.name];\n            const id = getId === null || getId === void 0 ? void 0 : getId({\n              params: action.payload.params\n            });\n            const route = id ? state.routes.find(route => route.name === action.payload.name && id === (getId === null || getId === void 0 ? void 0 : getId({\n              params: route.params\n            }))) : undefined;\n            let routes;\n            if (route) {\n              routes = state.routes.filter(r => r.key !== route.key);\n              routes.push({\n                ...route,\n                params: routeParamList[action.payload.name] !== undefined ? {\n                  ...routeParamList[action.payload.name],\n                  ...action.payload.params\n                } : action.payload.params\n              });\n            } else {\n              routes = [...state.routes, {\n                key: `${action.payload.name}-${nanoid()}`,\n                name: action.payload.name,\n                params: routeParamList[action.payload.name] !== undefined ? {\n                  ...routeParamList[action.payload.name],\n                  ...action.payload.params\n                } : action.payload.params\n              }];\n            }\n            return {\n              ...state,\n              index: routes.length - 1,\n              routes\n            };\n          }\n          return null;\n        case 'POP':\n          {\n            const index = action.target === state.key && action.source ? state.routes.findIndex(r => r.key === action.source) : state.index;\n            if (index > 0) {\n              const count = Math.max(index - action.payload.count + 1, 1);\n              const routes = state.routes.slice(0, count).concat(state.routes.slice(index + 1));\n              return {\n                ...state,\n                index: routes.length - 1,\n                routes\n              };\n            }\n            return null;\n          }\n        case 'POP_TO_TOP':\n          return router.getStateForAction(state, {\n            type: 'POP',\n            payload: {\n              count: state.routes.length - 1\n            }\n          }, options);\n        case 'NAVIGATE':\n          if (action.payload.name !== undefined && !state.routeNames.includes(action.payload.name)) {\n            return null;\n          }\n          if (action.payload.key || action.payload.name) {\n            // If the route already exists, navigate to that\n            let index = -1;\n            const getId =\n            // `getId` and `key` can't be used together\n            action.payload.key === undefined && action.payload.name !== undefined ? options.routeGetIdList[action.payload.name] : undefined;\n            const id = getId === null || getId === void 0 ? void 0 : getId({\n              params: action.payload.params\n            });\n            if (id) {\n              index = state.routes.findIndex(route => route.name === action.payload.name && id === (getId === null || getId === void 0 ? void 0 : getId({\n                params: route.params\n              })));\n            } else if (state.routes[state.index].name === action.payload.name && action.payload.key === undefined || state.routes[state.index].key === action.payload.key) {\n              index = state.index;\n            } else {\n              for (let i = state.routes.length - 1; i >= 0; i--) {\n                if (state.routes[i].name === action.payload.name && action.payload.key === undefined || state.routes[i].key === action.payload.key) {\n                  index = i;\n                  break;\n                }\n              }\n            }\n            if (index === -1 && action.payload.key && action.payload.name === undefined) {\n              return null;\n            }\n            if (index === -1 && action.payload.name !== undefined) {\n              const routes = [...state.routes, {\n                key: action.payload.key ?? `${action.payload.name}-${nanoid()}`,\n                name: action.payload.name,\n                path: action.payload.path,\n                params: routeParamList[action.payload.name] !== undefined ? {\n                  ...routeParamList[action.payload.name],\n                  ...action.payload.params\n                } : action.payload.params\n              }];\n              return {\n                ...state,\n                routes,\n                index: routes.length - 1\n              };\n            }\n            const route = state.routes[index];\n            let params;\n            if (action.payload.merge) {\n              params = action.payload.params !== undefined || routeParamList[route.name] !== undefined ? {\n                ...routeParamList[route.name],\n                ...route.params,\n                ...action.payload.params\n              } : route.params;\n            } else {\n              params = routeParamList[route.name] !== undefined ? {\n                ...routeParamList[route.name],\n                ...action.payload.params\n              } : action.payload.params;\n            }\n            return {\n              ...state,\n              index,\n              routes: [...state.routes.slice(0, index), params !== route.params || action.payload.path && action.payload.path !== route.path ? {\n                ...route,\n                path: action.payload.path ?? route.path,\n                params\n              } : state.routes[index]]\n            };\n          }\n          return null;\n        case 'GO_BACK':\n          if (state.index > 0) {\n            return router.getStateForAction(state, {\n              type: 'POP',\n              payload: {\n                count: 1\n              },\n              target: action.target,\n              source: action.source\n            }, options);\n          }\n          return null;\n        default:\n          return BaseRouter.getStateForAction(state, action);\n      }\n    },\n    actionCreators: StackActions\n  };\n  return router;\n}\n//# sourceMappingURL=StackRouter.js.map"]},"metadata":{},"sourceType":"module"}