UNPKG

@lyra/default-layout

Version:

The default layout components for Lyra

41 lines (28 loc) 1.37 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.maybeRedirectToBase = maybeRedirectToBase; var _tool = require('all:part:@lyra/base/tool'); var _tool2 = _interopRequireDefault(_tool); var _configLyra = require('config:lyra'); var _router = require('part:@lyra/base/router'); var _spaces = require('./util/spaces'); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } const basePath = (_configLyra.project && _configLyra.project.basePath || '').replace(/\/+$/, ''); const toolRoute = (0, _router.route)('/:tool', toolParams => { const foundTool = _tool2.default.find(current => current.name === toolParams.tool); return foundTool ? _router.route.scope(foundTool.name, '/', foundTool.router) : (0, _router.route)('/'); }); const spaceRoute = (0, _router.route)('/:space', params => { const foundSpace = _spaces.CONFIGURED_SPACES.find(sp => sp.name === params.space); return foundSpace ? toolRoute : (0, _router.route)('/'); }); const rootRouter = (0, _router.route)(`${basePath}/`, [_router.route.intents('/intent'), _spaces.HAS_SPACES ? spaceRoute : toolRoute]); function maybeRedirectToBase() { const redirectTo = rootRouter.getRedirectBase(location.pathname); if (redirectTo) { history.replaceState(null, null, redirectTo); } } exports.default = rootRouter;