@lyra/default-layout
Version:
The default layout components for Lyra
116 lines (85 loc) • 3.31 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
var _loginWrapper = require('part:@lyra/base/login-wrapper?');
var _loginWrapper2 = _interopRequireDefault(_loginWrapper);
var _router = require('part:@lyra/base/router');
var _appLoadingScreen = require('part:@lyra/base/app-loading-screen');
var _appLoadingScreen2 = _interopRequireDefault(_appLoadingScreen);
var _urlState = require('../datastores/urlState');
var urlStateStore = _interopRequireWildcard(_urlState);
var _getOrderedTools = require('../util/getOrderedTools');
var _getOrderedTools2 = _interopRequireDefault(_getOrderedTools);
var _defaultLayoutRouter = require('../defaultLayoutRouter');
var _defaultLayoutRouter2 = _interopRequireDefault(_defaultLayoutRouter);
var _DefaultLayout = require('./DefaultLayout');
var _DefaultLayout2 = _interopRequireDefault(_DefaultLayout);
var _NotFound = require('./NotFound');
var _NotFound2 = _interopRequireDefault(_NotFound);
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
const handleNavigate = urlStateStore.navigate;
class DefaultLayoutContainer extends _react2.default.PureComponent {
constructor(...args) {
var _temp;
return _temp = super(...args), this.state = {}, _temp;
}
componentWillMount() {
(0, _defaultLayoutRouter.maybeRedirectToBase)();
this.urlStateSubscription = urlStateStore.state.subscribe({
next: event => this.setState({
urlState: event.state,
isNotFound: event.isNotFound,
intent: event.intent
})
});
}
componentWillUnmount() {
this.urlStateSubscription.unsubscribe();
}
render() {
var _state = this.state;
const intent = _state.intent,
urlState = _state.urlState,
isNotFound = _state.isNotFound;
const tools = (0, _getOrderedTools2.default)();
const content = isNotFound ? _react2.default.createElement(
_NotFound2.default,
null,
intent && _react2.default.createElement(
'div',
null,
'No tool can handle the intent: ',
_react2.default.createElement(
'strong',
null,
intent.name
),
' with parameters ',
_react2.default.createElement(
'pre',
null,
JSON.stringify(intent.params)
)
)
) : _react2.default.createElement(_DefaultLayout2.default, { tools: tools });
const router = _react2.default.createElement(
_router.RouterProvider,
{
router: _defaultLayoutRouter2.default,
state: urlState,
onNavigate: handleNavigate
},
content
);
return _loginWrapper2.default ? _react2.default.createElement(
_loginWrapper2.default,
{ LoadingScreen: _react2.default.createElement(_appLoadingScreen2.default, { text: 'Logging in' }) },
router
) : router;
}
}
exports.default = DefaultLayoutContainer;