@lyra/default-layout
Version:
The default layout components for Lyra
41 lines (28 loc) • 1.37 kB
JavaScript
;
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;