{"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"}