{"ast":null,"code":"import _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';\nvar BaseRouter = {\n  getStateForAction: function getStateForAction(state, action) {\n    switch (action.type) {\n      case 'SET_PARAMS':\n        {\n          var index = 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          return _objectSpread(_objectSpread({}, state), {}, {\n            routes: state.routes.map(function (r, i) {\n              return i === index ? _objectSpread(_objectSpread({}, r), {}, {\n                params: _objectSpread(_objectSpread({}, r.params), action.payload.params)\n              }) : r;\n            })\n          });\n        }\n      case 'RESET':\n        {\n          var nextState = action.payload;\n          if (nextState.routes.length === 0 || nextState.routes.some(function (route) {\n            return !state.routeNames.includes(route.name);\n          })) {\n            return null;\n          }\n          if (nextState.stale === false) {\n            if (state.routeNames.length !== nextState.routeNames.length || nextState.routeNames.some(function (name) {\n              return !state.routeNames.includes(name);\n            })) {\n              return null;\n            }\n            return _objectSpread(_objectSpread({}, nextState), {}, {\n              routes: nextState.routes.map(function (route) {\n                return route.key ? route : _objectSpread(_objectSpread({}, route), {}, {\n                  key: `${route.name}-${nanoid()}`\n                });\n              })\n            });\n          }\n          return nextState;\n        }\n      default:\n        return null;\n    }\n  },\n  shouldActionChangeFocus: function shouldActionChangeFocus(action) {\n    return action.type === 'NAVIGATE';\n  }\n};\nexport default BaseRouter;","map":{"version":3,"sources":["BaseRouter.tsx"],"names":["nanoid","BaseRouter","getStateForAction","state","action","type","index","source","routes","findIndex","r","key","map","i","params","payload","nextState","length","some","route","routeNames","includes","name","stale","shouldActionChangeFocus"],"mappings":";;;AAAA,SAASA,MAAM,QAAQ,mBAAmB;AAY1C,IAAMC,UAAU,GAAG;EACjBC,iBAAiB,WAAA,kBACfC,KAAY,EACZC,MAA8B,EACM;IACpC,QAAQA,MAAM,CAACC,IAAI;MACjB,KAAK,YAAY;QAAE;UACjB,IAAMC,KAAK,GAAGF,MAAM,CAACG,MAAM,GACvBJ,KAAK,CAACK,MAAM,CAACC,SAAS,CAAEC,UAAAA,CAAC;YAAA,OAAKA,CAAC,CAACC,GAAG,KAAKP,MAAM,CAACG,MAAM;UAAA,EAAC,GACtDJ,KAAK,CAACG,KAAK;UAEf,IAAIA,KAAK,KAAK,CAAC,CAAC,EAAE;YAChB,OAAO,IAAI;UACb;UAEA,OAAA,aAAA,CAAA,aAAA,KACKH,KAAK;YACRK,MAAM,EAAEL,KAAK,CAACK,MAAM,CAACI,GAAG,CAAC,UAACF,CAAC,EAAEG,CAAC;cAAA,OAC5BA,CAAC,KAAKP,KAAK,GAAA,aAAA,CAAA,aAAA,KACFI,CAAC;gBAAEI,MAAM,EAAA,aAAA,CAAA,aAAA,KAAOJ,CAAC,CAACI,MAAM,GAAKV,MAAM,CAACW,OAAO,CAACD,MAAAA;cAAO,KACxDJ,CAAC;YAAA;UAAA;QAGX;MAEA,KAAK,OAAO;QAAE;UACZ,IAAMM,SAAS,GAAGZ,MAAM,CAACW,OAAsC;UAE/D,IACEC,SAAS,CAACR,MAAM,CAACS,MAAM,KAAK,CAAC,IAC7BD,SAAS,CAACR,MAAM,CAACU,IAAI,CAClBC,UAAAA,KAAuB;YAAA,OAAK,CAAChB,KAAK,CAACiB,UAAU,CAACC,QAAQ,CAACF,KAAK,CAACG,IAAI,CAAC;UAAA,EACpE,EACD;YACA,OAAO,IAAI;UACb;UAEA,IAAIN,SAAS,CAACO,KAAK,KAAK,KAAK,EAAE;YAC7B,IACEpB,KAAK,CAACiB,UAAU,CAACH,MAAM,KAAKD,SAAS,CAACI,UAAU,CAACH,MAAM,IACvDD,SAAS,CAACI,UAAU,CAACF,IAAI,CACtBI,UAAAA,IAAI;cAAA,OAAK,CAACnB,KAAK,CAACiB,UAAU,CAACC,QAAQ,CAACC,IAAI,CAAC;YAAA,EAC3C,EACD;cACA,OAAO,IAAI;YACb;YAEA,OAAA,aAAA,CAAA,aAAA,KACKN,SAAS;cACZR,MAAM,EAAEQ,SAAS,CAACR,MAAM,CAACI,GAAG,CAAEO,UAAAA,KAAK;gBAAA,OACjCA,KAAK,CAACR,GAAG,GAAGQ,KAAK,GAAA,aAAA,CAAA,aAAA,KAAQA,KAAK;kBAAER,GAAG,EAAG,GAAEQ,KAAK,CAACG,IAAK,IAAGtB,MAAM,CAAA,CAAG;gBAAA,EAAG;cAAA;YAAA;UAGxE;UAEA,OAAOgB,SAAS;QAClB;MAEA;QACE,OAAO,IAAI;IAAC;EAElB,CAAC;EAEDQ,uBAAuB,WAAA,wBAACpB,MAA8B,EAAE;IACtD,OAAOA,MAAM,CAACC,IAAI,KAAK,UAAU;EACnC;AACF,CAAC;AAED,eAAeJ,UAAU","sourceRoot":"../../src","sourcesContent":["import { nanoid } from 'nanoid/non-secure';\n/**\n * Base router object that can be used when writing custom routers.\n * This provides few helper methods to handle common actions such as `RESET`.\n */\nconst BaseRouter = {\n  getStateForAction(state, action) {\n    switch (action.type) {\n      case 'SET_PARAMS':\n        {\n          const index = action.source ? state.routes.findIndex(r => r.key === action.source) : state.index;\n          if (index === -1) {\n            return null;\n          }\n          return {\n            ...state,\n            routes: state.routes.map((r, i) => i === index ? {\n              ...r,\n              params: {\n                ...r.params,\n                ...action.payload.params\n              }\n            } : r)\n          };\n        }\n      case 'RESET':\n        {\n          const nextState = action.payload;\n          if (nextState.routes.length === 0 || nextState.routes.some(route => !state.routeNames.includes(route.name))) {\n            return null;\n          }\n          if (nextState.stale === false) {\n            if (state.routeNames.length !== nextState.routeNames.length || nextState.routeNames.some(name => !state.routeNames.includes(name))) {\n              return null;\n            }\n            return {\n              ...nextState,\n              routes: nextState.routes.map(route => route.key ? route : {\n                ...route,\n                key: `${route.name}-${nanoid()}`\n              })\n            };\n          }\n          return nextState;\n        }\n      default:\n        return null;\n    }\n  },\n  shouldActionChangeFocus(action) {\n    return action.type === 'NAVIGATE';\n  }\n};\nexport default BaseRouter;\n//# sourceMappingURL=BaseRouter.js.map"]},"metadata":{},"sourceType":"module"}