sharyn
Version:
Combines all the other packages under one.
84 lines (69 loc) • 2.42 kB
JavaScript
"use strict";
var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _extends2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/extends"));
var _react = _interopRequireDefault(require("react"));
var _server = require("react-dom/server");
var _reactHelmet = _interopRequireDefault(require("react-helmet"));
var _jss = require("react-jss/lib/jss");
var _env = require("@sharyn/env");
var _Providers = _interopRequireDefault(require("@sharyn/shared/Providers"));
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
var renderPage = function renderPage(ctx, _ref) {
var _ref$Providers = _ref.Providers,
Providers = _ref$Providers === void 0 ? _Providers.default : _ref$Providers,
App = _ref.App,
theme = _ref.theme,
store = _ref.store,
globalStyles = _ref.globalStyles,
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(Providers, (0, _extends2.default)({
url: ctx.req.url
}, {
theme: theme,
store: store,
globalStyles: globalStyles,
routerContext: routerContext,
sheetsRegistry: sheetsRegistry
}, {
isSsr: true
}), _react.default.createElement(App, null)));
css = sheetsRegistry.toString();
helmet = _reactHelmet.default.renderStatic();
}
if (routerContext.action === 'REPLACE') {
ctx.redirect(routerContext.url);
} else {
ctx.body = (0, _htmlBase.default)({
appHtml: appHtml,
css: css,
helmet: helmet,
swPath: swPath,
windowVars: [['__PRELOADED_STATE__', store.getState()]]
});
}
};
renderPage.contextTypes = {
Providers: _propTypes.default.func,
App: _propTypes.default.func.isRequired,
theme: _propTypes.default.object.isRequired,
store: _propTypes.default.object.isRequired,
globalStyles: _propTypes.default.any,
swPath: _propTypes.default.string
};
var _default = renderPage;
exports.default = _default;