sharyn
Version:
Combines all the other packages under one.
109 lines (87 loc) • 3.45 kB
JavaScript
"use strict";
var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/objectSpread"));
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/objectWithoutProperties"));
var _extends2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/extends"));
var _map = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/map"));
var _react = _interopRequireDefault(require("react"));
var _server = require("react-dom/server");
var _reactRedux = require("react-redux");
var _redux = require("redux");
var _reactHelmet = _interopRequireDefault(require("react-helmet"));
var _jss = require("react-jss/lib/jss");
var _JssProvider = _interopRequireDefault(require("react-jss/lib/JssProvider"));
var _env = require("@sharyn/env");
var _styles = require("@material-ui/core/styles");
var _reactRouterDom = require("react-router-dom");
var _htmlBase = _interopRequireDefault(require("./html-base"));
var _propTypes = _interopRequireDefault(require("prop-types"));
/* eslint-disable import/no-extraneous-dependencies */
// flow-disable-next-line
// flow-disable-next-line
// flow-disable-next-line
// flow-disable-next-line
var renderPage = function renderPage(_ref) {
var ctx = _ref.ctx,
App = _ref.App,
theme = _ref.theme,
jss = _ref.jss,
_ref$preloadedState = _ref.preloadedState,
preloadedState = _ref$preloadedState === void 0 ? {} : _ref$preloadedState,
swPath = _ref.swPath;
var appHtml;
var css;
var helmet;
var routerContext = {};
if (!_env.NO_SSR) {
var sheetsRegistry = new _jss.SheetsRegistry();
appHtml = (0, _server.renderToString)(_react.default.createElement(_JssProvider.default, (0, _extends2.default)({
jss: jss
}, {
registry: sheetsRegistry,
generateClassName: (0, _styles.createGenerateClassName)()
}), _react.default.createElement(_styles.MuiThemeProvider, (0, _extends2.default)({
theme: theme
}, {
sheetsManager: new _map.default()
}), _react.default.createElement(_reactRedux.Provider, {
store: (0, _redux.createStore)(function () {
return preloadedState;
})
}, _react.default.createElement(_reactRouterDom.StaticRouter, {
location: ctx.req.url,
context: routerContext
}, _react.default.createElement(App, null))))));
css = sheetsRegistry.toString();
helmet = _reactHelmet.default.renderStatic();
}
if (routerContext.action === 'REPLACE') {
ctx.redirect(routerContext.url);
} else {
var data = preloadedState.data,
rest = (0, _objectWithoutProperties2.default)(preloadedState, ["data"]);
ctx.body = (0, _htmlBase.default)({
appHtml: appHtml,
css: css,
helmet: helmet,
swPath: swPath,
windowVars: [['__PRELOADED_STATE__', (0, _objectSpread2.default)({
data: _env.NO_SSR ? {} : data
}, rest)]]
});
}
};
renderPage.propTypes = {
ctx: _propTypes.default.object.isRequired,
App: _propTypes.default.func.isRequired,
theme: _propTypes.default.object,
jss: _propTypes.default.any,
preloadedState: _propTypes.default.object,
swPath: _propTypes.default.string
};
var _default = renderPage;
exports.default = _default;