UNPKG

2.43 kBJavaScriptView Raw
1"use strict";
2
3var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
4
5Object.defineProperty(exports, "__esModule", {
6 value: true
7});
8exports.default = void 0;
9
10var _extends2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/extends"));
11
12var _react = _interopRequireDefault(require("react"));
13
14var _server = require("react-dom/server");
15
16var _reactHelmet = _interopRequireDefault(require("react-helmet"));
17
18var _jss = require("react-jss/lib/jss");
19
20var _env = require("@sharyn/env");
21
22var _Providers = _interopRequireDefault(require("@sharyn/components/Providers"));
23
24var _htmlBase = _interopRequireDefault(require("./html-base"));
25
26var _propTypes = _interopRequireDefault(require("prop-types"));
27
28/* eslint-disable import/no-extraneous-dependencies */
29// flow-disable-next-line
30// flow-disable-next-line
31// flow-disable-next-line
32var renderPage = function renderPage(ctx, _ref) {
33 var _ref$Providers = _ref.Providers,
34 Providers = _ref$Providers === void 0 ? _Providers.default : _ref$Providers,
35 App = _ref.App,
36 theme = _ref.theme,
37 store = _ref.store,
38 globalStyles = _ref.globalStyles,
39 swPath = _ref.swPath;
40 var appHtml;
41 var css;
42 var helmet;
43 var routerContext = {};
44
45 if (!_env.NO_SSR) {
46 var sheetsRegistry = new _jss.SheetsRegistry();
47 appHtml = (0, _server.renderToString)(_react.default.createElement(Providers, (0, _extends2.default)({
48 url: ctx.req.url
49 }, {
50 theme: theme,
51 store: store,
52 globalStyles: globalStyles,
53 routerContext: routerContext,
54 sheetsRegistry: sheetsRegistry
55 }, {
56 isSsr: true
57 }), _react.default.createElement(App, null)));
58 css = sheetsRegistry.toString();
59 helmet = _reactHelmet.default.renderStatic();
60 }
61
62 if (routerContext.action === 'REPLACE') {
63 ctx.redirect(routerContext.url);
64 } else {
65 ctx.body = (0, _htmlBase.default)({
66 appHtml: appHtml,
67 css: css,
68 helmet: helmet,
69 swPath: swPath,
70 windowVars: [['__PRELOADED_STATE__', store.getState()]]
71 });
72 }
73};
74
75renderPage.contextTypes = {
76 Providers: _propTypes.default.func,
77 App: _propTypes.default.func.isRequired,
78 theme: _propTypes.default.object.isRequired,
79 store: _propTypes.default.object.isRequired,
80 globalStyles: _propTypes.default.any,
81 swPath: _propTypes.default.string
82};
83var _default = renderPage;
84exports.default = _default;
\No newline at end of file