You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1 line
34 KiB
1 line
34 KiB
{"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"} |