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
26 KiB
1 line
26 KiB
{"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';\nimport BaseRouter from \"./BaseRouter\";\nvar TYPE_ROUTE = 'route';\nexport var TabActions = {\n jumpTo: function jumpTo(name, params) {\n return {\n type: 'JUMP_TO',\n payload: {\n name: name,\n params: params\n }\n };\n }\n};\nvar getRouteHistory = function getRouteHistory(routes, index, backBehavior, initialRouteName) {\n var history = [{\n type: TYPE_ROUTE,\n key: routes[index].key\n }];\n var initialRouteIndex;\n switch (backBehavior) {\n case 'order':\n for (var i = index; i > 0; i--) {\n history.unshift({\n type: TYPE_ROUTE,\n key: routes[i - 1].key\n });\n }\n break;\n case 'firstRoute':\n if (index !== 0) {\n history.unshift({\n type: TYPE_ROUTE,\n key: routes[0].key\n });\n }\n break;\n case 'initialRoute':\n initialRouteIndex = routes.findIndex(function (route) {\n return route.name === initialRouteName;\n });\n initialRouteIndex = initialRouteIndex === -1 ? 0 : initialRouteIndex;\n if (index !== initialRouteIndex) {\n history.unshift({\n type: TYPE_ROUTE,\n key: routes[initialRouteIndex].key\n });\n }\n break;\n case 'history':\n break;\n }\n return history;\n};\nvar changeIndex = function changeIndex(state, index, backBehavior, initialRouteName) {\n var history;\n if (backBehavior === 'history') {\n var currentKey = state.routes[index].key;\n history = state.history.filter(function (it) {\n return it.type === 'route' ? it.key !== currentKey : false;\n }).concat({\n type: TYPE_ROUTE,\n key: currentKey\n });\n } else {\n history = getRouteHistory(state.routes, index, backBehavior, initialRouteName);\n }\n return _objectSpread(_objectSpread({}, state), {}, {\n index: index,\n history: history\n });\n};\nexport default function TabRouter(_ref) {\n var initialRouteName = _ref.initialRouteName,\n _ref$backBehavior = _ref.backBehavior,\n backBehavior = _ref$backBehavior === void 0 ? 'firstRoute' : _ref$backBehavior;\n var router = _objectSpread(_objectSpread({}, BaseRouter), {}, {\n type: 'tab',\n getInitialState: function getInitialState(_ref2) {\n var routeNames = _ref2.routeNames,\n routeParamList = _ref2.routeParamList;\n var index = initialRouteName !== undefined && routeNames.includes(initialRouteName) ? routeNames.indexOf(initialRouteName) : 0;\n var routes = routeNames.map(function (name) {\n return {\n name: name,\n key: name + \"-\" + nanoid(),\n params: routeParamList[name]\n };\n });\n var history = getRouteHistory(routes, index, backBehavior, initialRouteName);\n return {\n stale: false,\n type: 'tab',\n key: \"tab-\" + nanoid(),\n index: index,\n routeNames: routeNames,\n history: history,\n routes: routes\n };\n },\n getRehydratedState: function getRehydratedState(partialState, _ref3) {\n var _ref6, _ref7;\n var _state$routes, _state$history;\n var routeNames = _ref3.routeNames,\n routeParamList = _ref3.routeParamList;\n var state = partialState;\n if (state.stale === false) {\n return state;\n }\n var routes = routeNames.map(function (name) {\n var route = state.routes.find(function (r) {\n return r.name === name;\n });\n return _objectSpread(_objectSpread({}, route), {}, {\n name: name,\n key: route && route.name === name && route.key ? route.key : name + \"-\" + nanoid(),\n params: routeParamList[name] !== undefined ? _objectSpread(_objectSpread({}, routeParamList[name]), route ? route.params : undefined) : route ? route.params : undefined\n });\n });\n var index = Math.min(Math.max(routeNames.indexOf((_state$routes = state.routes[(_ref6 = state === null || state === void 0 ? void 0 : state.index) != null ? _ref6 : 0]) === null || _state$routes === void 0 ? void 0 : _state$routes.name), 0), routes.length - 1);\n var history = (_ref7 = (_state$history = state.history) === null || _state$history === void 0 ? void 0 : _state$history.filter(function (it) {\n return routes.find(function (r) {\n return r.key === it.key;\n });\n })) != null ? _ref7 : [];\n return changeIndex({\n stale: false,\n type: 'tab',\n key: \"tab-\" + nanoid(),\n index: index,\n routeNames: routeNames,\n history: history,\n routes: routes\n }, index, backBehavior, initialRouteName);\n },\n getStateForRouteNamesChange: function getStateForRouteNamesChange(state, _ref4) {\n var routeNames = _ref4.routeNames,\n routeParamList = _ref4.routeParamList,\n routeKeyChanges = _ref4.routeKeyChanges;\n var routes = routeNames.map(function (name) {\n return state.routes.find(function (r) {\n return r.name === name && !routeKeyChanges.includes(r.name);\n }) || {\n name: name,\n key: name + \"-\" + nanoid(),\n params: routeParamList[name]\n };\n });\n var index = Math.max(0, routeNames.indexOf(state.routes[state.index].name));\n var history = state.history.filter(function (it) {\n return it.type !== 'route' || routes.find(function (r) {\n return r.key === it.key;\n });\n });\n if (!history.length) {\n history = getRouteHistory(routes, index, backBehavior, initialRouteName);\n }\n return _objectSpread(_objectSpread({}, state), {}, {\n history: history,\n routeNames: routeNames,\n routes: routes,\n index: index\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 changeIndex(state, index, backBehavior, initialRouteName);\n },\n getStateForAction: function getStateForAction(state, action, _ref5) {\n var routeParamList = _ref5.routeParamList;\n switch (action.type) {\n case 'JUMP_TO':\n case 'NAVIGATE':\n {\n var index = -1;\n if (action.type === 'NAVIGATE' && action.payload.key) {\n index = state.routes.findIndex(function (route) {\n return route.key === action.payload.key;\n });\n } else {\n index = state.routes.findIndex(function (route) {\n return route.name === action.payload.name;\n });\n }\n if (index === -1) {\n return null;\n }\n return changeIndex(_objectSpread(_objectSpread({}, state), {}, {\n routes: state.routes.map(function (route, i) {\n if (i !== index) {\n return route;\n }\n var params;\n if (action.type === 'NAVIGATE' && 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 var path = action.type === 'NAVIGATE' && action.payload.path != null ? action.payload.path : route.path;\n return params !== route.params || path !== route.path ? _objectSpread(_objectSpread({}, route), {}, {\n path: path,\n params: params\n }) : route;\n })\n }), index, backBehavior, initialRouteName);\n }\n case 'GO_BACK':\n {\n if (state.history.length === 1) {\n return null;\n }\n var previousKey = state.history[state.history.length - 2].key;\n var _index = state.routes.findIndex(function (route) {\n return route.key === previousKey;\n });\n if (_index === -1) {\n return null;\n }\n return _objectSpread(_objectSpread({}, state), {}, {\n history: state.history.slice(0, -1),\n index: _index\n });\n }\n default:\n return BaseRouter.getStateForAction(state, action);\n }\n },\n shouldActionChangeFocus: function shouldActionChangeFocus(action) {\n return action.type === 'NAVIGATE';\n },\n actionCreators: TabActions\n });\n return router;\n}","map":{"version":3,"sources":["TabRouter.tsx"],"names":["nanoid","BaseRouter","TYPE_ROUTE","TabActions","jumpTo","name","params","type","payload","getRouteHistory","routes","index","backBehavior","initialRouteName","history","key","initialRouteIndex","i","unshift","findIndex","route","changeIndex","state","currentKey","filter","it","concat","TabRouter","router","getInitialState","routeNames","routeParamList","undefined","includes","indexOf","map","stale","getRehydratedState","partialState","find","r","Math","min","max","length","getStateForRouteNamesChange","routeKeyChanges","getStateForRouteFocus","getStateForAction","action","merge","path","previousKey","slice","shouldActionChangeFocus","actionCreators"],"mappings":"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","sourceRoot":"../../src","sourcesContent":["import { nanoid } from 'nanoid/non-secure';\nimport BaseRouter from './BaseRouter';\nconst TYPE_ROUTE = 'route';\nexport const TabActions = {\n jumpTo(name, params) {\n return {\n type: 'JUMP_TO',\n payload: {\n name,\n params\n }\n };\n }\n};\nconst getRouteHistory = (routes, index, backBehavior, initialRouteName) => {\n const history = [{\n type: TYPE_ROUTE,\n key: routes[index].key\n }];\n let initialRouteIndex;\n switch (backBehavior) {\n case 'order':\n for (let i = index; i > 0; i--) {\n history.unshift({\n type: TYPE_ROUTE,\n key: routes[i - 1].key\n });\n }\n break;\n case 'firstRoute':\n if (index !== 0) {\n history.unshift({\n type: TYPE_ROUTE,\n key: routes[0].key\n });\n }\n break;\n case 'initialRoute':\n initialRouteIndex = routes.findIndex(route => route.name === initialRouteName);\n initialRouteIndex = initialRouteIndex === -1 ? 0 : initialRouteIndex;\n if (index !== initialRouteIndex) {\n history.unshift({\n type: TYPE_ROUTE,\n key: routes[initialRouteIndex].key\n });\n }\n break;\n case 'history':\n // The history will fill up on navigation\n break;\n }\n return history;\n};\nconst changeIndex = (state, index, backBehavior, initialRouteName) => {\n let history;\n if (backBehavior === 'history') {\n const currentKey = state.routes[index].key;\n history = state.history.filter(it => it.type === 'route' ? it.key !== currentKey : false).concat({\n type: TYPE_ROUTE,\n key: currentKey\n });\n } else {\n history = getRouteHistory(state.routes, index, backBehavior, initialRouteName);\n }\n return {\n ...state,\n index,\n history\n };\n};\nexport default function TabRouter(_ref) {\n let {\n initialRouteName,\n backBehavior = 'firstRoute'\n } = _ref;\n const router = {\n ...BaseRouter,\n type: 'tab',\n getInitialState(_ref2) {\n let {\n routeNames,\n routeParamList\n } = _ref2;\n const index = initialRouteName !== undefined && routeNames.includes(initialRouteName) ? routeNames.indexOf(initialRouteName) : 0;\n const routes = routeNames.map(name => ({\n name,\n key: `${name}-${nanoid()}`,\n params: routeParamList[name]\n }));\n const history = getRouteHistory(routes, index, backBehavior, initialRouteName);\n return {\n stale: false,\n type: 'tab',\n key: `tab-${nanoid()}`,\n index,\n routeNames,\n history,\n routes\n };\n },\n getRehydratedState(partialState, _ref3) {\n var _state$routes, _state$history;\n let {\n routeNames,\n routeParamList\n } = _ref3;\n let state = partialState;\n if (state.stale === false) {\n return state;\n }\n const routes = routeNames.map(name => {\n const route = state.routes.find(r => r.name === name);\n return {\n ...route,\n name,\n key: route && route.name === name && route.key ? route.key : `${name}-${nanoid()}`,\n params: routeParamList[name] !== undefined ? {\n ...routeParamList[name],\n ...(route ? route.params : undefined)\n } : route ? route.params : undefined\n };\n });\n const index = Math.min(Math.max(routeNames.indexOf((_state$routes = state.routes[(state === null || state === void 0 ? void 0 : state.index) ?? 0]) === null || _state$routes === void 0 ? void 0 : _state$routes.name), 0), routes.length - 1);\n const history = ((_state$history = state.history) === null || _state$history === void 0 ? void 0 : _state$history.filter(it => routes.find(r => r.key === it.key))) ?? [];\n return changeIndex({\n stale: false,\n type: 'tab',\n key: `tab-${nanoid()}`,\n index,\n routeNames,\n history,\n routes\n }, index, backBehavior, initialRouteName);\n },\n getStateForRouteNamesChange(state, _ref4) {\n let {\n routeNames,\n routeParamList,\n routeKeyChanges\n } = _ref4;\n const routes = routeNames.map(name => state.routes.find(r => r.name === name && !routeKeyChanges.includes(r.name)) || {\n name,\n key: `${name}-${nanoid()}`,\n params: routeParamList[name]\n });\n const index = Math.max(0, routeNames.indexOf(state.routes[state.index].name));\n let history = state.history.filter(\n // Type will always be 'route' for tabs, but could be different in a router extending this (e.g. drawer)\n it => it.type !== 'route' || routes.find(r => r.key === it.key));\n if (!history.length) {\n history = getRouteHistory(routes, index, backBehavior, initialRouteName);\n }\n return {\n ...state,\n history,\n routeNames,\n routes,\n index\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 changeIndex(state, index, backBehavior, initialRouteName);\n },\n getStateForAction(state, action, _ref5) {\n let {\n routeParamList\n } = _ref5;\n switch (action.type) {\n case 'JUMP_TO':\n case 'NAVIGATE':\n {\n let index = -1;\n if (action.type === 'NAVIGATE' && action.payload.key) {\n index = state.routes.findIndex(route => route.key === action.payload.key);\n } else {\n index = state.routes.findIndex(route => route.name === action.payload.name);\n }\n if (index === -1) {\n return null;\n }\n return changeIndex({\n ...state,\n routes: state.routes.map((route, i) => {\n if (i !== index) {\n return route;\n }\n let params;\n if (action.type === 'NAVIGATE' && 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 const path = action.type === 'NAVIGATE' && action.payload.path != null ? action.payload.path : route.path;\n return params !== route.params || path !== route.path ? {\n ...route,\n path,\n params\n } : route;\n })\n }, index, backBehavior, initialRouteName);\n }\n case 'GO_BACK':\n {\n if (state.history.length === 1) {\n return null;\n }\n const previousKey = state.history[state.history.length - 2].key;\n const index = state.routes.findIndex(route => route.key === previousKey);\n if (index === -1) {\n return null;\n }\n return {\n ...state,\n history: state.history.slice(0, -1),\n index\n };\n }\n default:\n return BaseRouter.getStateForAction(state, action);\n }\n },\n shouldActionChangeFocus(action) {\n return action.type === 'NAVIGATE';\n },\n actionCreators: TabActions\n };\n return router;\n}\n//# sourceMappingURL=TabRouter.js.map"]},"metadata":{},"sourceType":"module"} |