{"ast":null,"code":"import _toConsumableArray from \"@babel/runtime/helpers/toConsumableArray\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nvar _excluded = [\"defaultStatus\"];\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 TabRouter, { TabActions } from \"./TabRouter\";\nexport var DrawerActions = _objectSpread(_objectSpread({}, TabActions), {}, {\n openDrawer: function openDrawer() {\n return {\n type: 'OPEN_DRAWER'\n };\n },\n closeDrawer: function closeDrawer() {\n return {\n type: 'CLOSE_DRAWER'\n };\n },\n toggleDrawer: function toggleDrawer() {\n return {\n type: 'TOGGLE_DRAWER'\n };\n }\n});\nexport default function DrawerRouter(_ref) {\n var _ref$defaultStatus = _ref.defaultStatus,\n defaultStatus = _ref$defaultStatus === void 0 ? 'closed' : _ref$defaultStatus,\n rest = _objectWithoutProperties(_ref, _excluded);\n var router = TabRouter(rest);\n var isDrawerInHistory = function isDrawerInHistory(state) {\n var _state$history;\n return Boolean((_state$history = state.history) === null || _state$history === void 0 ? void 0 : _state$history.some(function (it) {\n return it.type === 'drawer';\n }));\n };\n var addDrawerToHistory = function addDrawerToHistory(state) {\n if (isDrawerInHistory(state)) {\n return state;\n }\n return _objectSpread(_objectSpread({}, state), {}, {\n history: [].concat(_toConsumableArray(state.history), [{\n type: 'drawer',\n status: defaultStatus === 'open' ? 'closed' : 'open'\n }])\n });\n };\n var removeDrawerFromHistory = function removeDrawerFromHistory(state) {\n if (!isDrawerInHistory(state)) {\n return state;\n }\n return _objectSpread(_objectSpread({}, state), {}, {\n history: state.history.filter(function (it) {\n return it.type !== 'drawer';\n })\n });\n };\n var openDrawer = function openDrawer(state) {\n if (defaultStatus === 'open') {\n return removeDrawerFromHistory(state);\n }\n return addDrawerToHistory(state);\n };\n var closeDrawer = function closeDrawer(state) {\n if (defaultStatus === 'open') {\n return addDrawerToHistory(state);\n }\n return removeDrawerFromHistory(state);\n };\n return _objectSpread(_objectSpread({}, router), {}, {\n type: 'drawer',\n getInitialState: function getInitialState(_ref2) {\n var routeNames = _ref2.routeNames,\n routeParamList = _ref2.routeParamList,\n routeGetIdList = _ref2.routeGetIdList;\n var state = router.getInitialState({\n routeNames: routeNames,\n routeParamList: routeParamList,\n routeGetIdList: routeGetIdList\n });\n return _objectSpread(_objectSpread({}, state), {}, {\n default: defaultStatus,\n stale: false,\n type: 'drawer',\n key: \"drawer-\" + nanoid()\n });\n },\n getRehydratedState: function getRehydratedState(partialState, _ref3) {\n var routeNames = _ref3.routeNames,\n routeParamList = _ref3.routeParamList,\n routeGetIdList = _ref3.routeGetIdList;\n if (partialState.stale === false) {\n return partialState;\n }\n var state = router.getRehydratedState(partialState, {\n routeNames: routeNames,\n routeParamList: routeParamList,\n routeGetIdList: routeGetIdList\n });\n if (isDrawerInHistory(partialState)) {\n state = removeDrawerFromHistory(state);\n state = addDrawerToHistory(state);\n }\n return _objectSpread(_objectSpread({}, state), {}, {\n default: defaultStatus,\n type: 'drawer',\n key: \"drawer-\" + nanoid()\n });\n },\n getStateForRouteFocus: function getStateForRouteFocus(state, key) {\n var result = router.getStateForRouteFocus(state, key);\n return closeDrawer(result);\n },\n getStateForAction: function getStateForAction(state, action, options) {\n switch (action.type) {\n case 'OPEN_DRAWER':\n return openDrawer(state);\n case 'CLOSE_DRAWER':\n return closeDrawer(state);\n case 'TOGGLE_DRAWER':\n if (isDrawerInHistory(state)) {\n return removeDrawerFromHistory(state);\n }\n return addDrawerToHistory(state);\n case 'JUMP_TO':\n case 'NAVIGATE':\n {\n var result = router.getStateForAction(state, action, options);\n if (result != null && result.index !== state.index) {\n return closeDrawer(result);\n }\n return result;\n }\n case 'GO_BACK':\n if (isDrawerInHistory(state)) {\n return removeDrawerFromHistory(state);\n }\n return router.getStateForAction(state, action, options);\n default:\n return router.getStateForAction(state, action, options);\n }\n },\n actionCreators: DrawerActions\n });\n}","map":{"version":3,"sources":["DrawerRouter.tsx"],"names":["nanoid","TabRouter","TabActions","DrawerActions","openDrawer","type","closeDrawer","toggleDrawer","DrawerRouter","defaultStatus","rest","router","isDrawerInHistory","state","Boolean","history","some","it","addDrawerToHistory","status","removeDrawerFromHistory","filter","getInitialState","routeNames","routeParamList","routeGetIdList","default","stale","key","getRehydratedState","partialState","getStateForRouteFocus","result","getStateForAction","action","options","index","actionCreators"],"mappings":"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","sourceRoot":"../../src","sourcesContent":["import { nanoid } from 'nanoid/non-secure';\nimport TabRouter, { TabActions } from './TabRouter';\nexport const DrawerActions = {\n ...TabActions,\n openDrawer() {\n return {\n type: 'OPEN_DRAWER'\n };\n },\n closeDrawer() {\n return {\n type: 'CLOSE_DRAWER'\n };\n },\n toggleDrawer() {\n return {\n type: 'TOGGLE_DRAWER'\n };\n }\n};\nexport default function DrawerRouter(_ref) {\n let {\n defaultStatus = 'closed',\n ...rest\n } = _ref;\n const router = TabRouter(rest);\n const isDrawerInHistory = state => {\n var _state$history;\n return Boolean((_state$history = state.history) === null || _state$history === void 0 ? void 0 : _state$history.some(it => it.type === 'drawer'));\n };\n const addDrawerToHistory = state => {\n if (isDrawerInHistory(state)) {\n return state;\n }\n return {\n ...state,\n history: [...state.history, {\n type: 'drawer',\n status: defaultStatus === 'open' ? 'closed' : 'open'\n }]\n };\n };\n const removeDrawerFromHistory = state => {\n if (!isDrawerInHistory(state)) {\n return state;\n }\n return {\n ...state,\n history: state.history.filter(it => it.type !== 'drawer')\n };\n };\n const openDrawer = state => {\n if (defaultStatus === 'open') {\n return removeDrawerFromHistory(state);\n }\n return addDrawerToHistory(state);\n };\n const closeDrawer = state => {\n if (defaultStatus === 'open') {\n return addDrawerToHistory(state);\n }\n return removeDrawerFromHistory(state);\n };\n return {\n ...router,\n type: 'drawer',\n getInitialState(_ref2) {\n let {\n routeNames,\n routeParamList,\n routeGetIdList\n } = _ref2;\n const state = router.getInitialState({\n routeNames,\n routeParamList,\n routeGetIdList\n });\n return {\n ...state,\n default: defaultStatus,\n stale: false,\n type: 'drawer',\n key: `drawer-${nanoid()}`\n };\n },\n getRehydratedState(partialState, _ref3) {\n let {\n routeNames,\n routeParamList,\n routeGetIdList\n } = _ref3;\n if (partialState.stale === false) {\n return partialState;\n }\n let state = router.getRehydratedState(partialState, {\n routeNames,\n routeParamList,\n routeGetIdList\n });\n if (isDrawerInHistory(partialState)) {\n // Re-sync the drawer entry in history to correct it if it was wrong\n state = removeDrawerFromHistory(state);\n state = addDrawerToHistory(state);\n }\n return {\n ...state,\n default: defaultStatus,\n type: 'drawer',\n key: `drawer-${nanoid()}`\n };\n },\n getStateForRouteFocus(state, key) {\n const result = router.getStateForRouteFocus(state, key);\n return closeDrawer(result);\n },\n getStateForAction(state, action, options) {\n switch (action.type) {\n case 'OPEN_DRAWER':\n return openDrawer(state);\n case 'CLOSE_DRAWER':\n return closeDrawer(state);\n case 'TOGGLE_DRAWER':\n if (isDrawerInHistory(state)) {\n return removeDrawerFromHistory(state);\n }\n return addDrawerToHistory(state);\n case 'JUMP_TO':\n case 'NAVIGATE':\n {\n const result = router.getStateForAction(state, action, options);\n if (result != null && result.index !== state.index) {\n return closeDrawer(result);\n }\n return result;\n }\n case 'GO_BACK':\n if (isDrawerInHistory(state)) {\n return removeDrawerFromHistory(state);\n }\n return router.getStateForAction(state, action, options);\n default:\n return router.getStateForAction(state, action, options);\n }\n },\n actionCreators: DrawerActions\n };\n}\n//# sourceMappingURL=DrawerRouter.js.map"]},"metadata":{},"sourceType":"module"}