UNPKG

3.03 kBJavaScriptView Raw
1"use strict";
2
3var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
5Object.defineProperty(exports, "__esModule", {
6 value: true
7});
8exports.default = void 0;
9
10var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
11
12var _map = _interopRequireDefault(require("@babel/runtime/core-js/map"));
13
14var _react = _interopRequireDefault(require("react"));
15
16var _server = require("react-dom/server");
17
18var _reactRedux = require("react-redux");
19
20var _redux = require("redux");
21
22var _reactHelmet = _interopRequireDefault(require("react-helmet"));
23
24var _jss = require("react-jss/lib/jss");
25
26var _JssProvider = _interopRequireDefault(require("react-jss/lib/JssProvider"));
27
28var _env = require("@sharyn/env");
29
30var _styles = require("@material-ui/core/styles");
31
32var _reactRouterDom = require("react-router-dom");
33
34var _htmlBase = _interopRequireDefault(require("./html-base"));
35
36var _propTypes = _interopRequireDefault(require("prop-types"));
37
38/* eslint-disable import/no-extraneous-dependencies */
39// flow-disable-next-line
40// flow-disable-next-line
41// flow-disable-next-line
42// flow-disable-next-line
43var renderPage = function renderPage(_ref) {
44 var ctx = _ref.ctx,
45 App = _ref.App,
46 theme = _ref.theme,
47 jss = _ref.jss,
48 env = _ref.env,
49 data = _ref.data,
50 user = _ref.user;
51 var appHtml;
52 var css;
53 var helmet;
54
55 if (!_env.NO_SSR) {
56 var sheetsRegistry = new _jss.SheetsRegistry();
57 var routerContext = {};
58 appHtml = (0, _server.renderToString)(_react.default.createElement(_JssProvider.default, (0, _extends2.default)({
59 jss: jss
60 }, {
61 registry: sheetsRegistry,
62 generateClassName: (0, _styles.createGenerateClassName)()
63 }), _react.default.createElement(_styles.MuiThemeProvider, (0, _extends2.default)({
64 theme: theme
65 }, {
66 sheetsManager: new _map.default()
67 }), _react.default.createElement(_reactRedux.Provider, {
68 store: (0, _redux.createStore)(function () {
69 return {
70 data: data,
71 user: user
72 };
73 })
74 }, _react.default.createElement(_reactRouterDom.StaticRouter, {
75 location: ctx.req.url,
76 context: routerContext
77 }, _react.default.createElement(App, null))))));
78
79 if (routerContext.action === 'REPLACE') {
80 ctx.redirect(routerContext.url);
81 return null;
82 }
83
84 css = sheetsRegistry.toString();
85 helmet = _reactHelmet.default.renderStatic();
86 }
87
88 return (0, _htmlBase.default)({
89 appHtml: appHtml,
90 css: css,
91 helmet: helmet,
92 windowVars: [['__ENV__', env], ['__PRELOADED_STATE__', {
93 data: _env.NO_SSR ? {} : data,
94 user: user
95 }]]
96 });
97};
98
99renderPage.propTypes = {
100 ctx: _propTypes.default.object.isRequired,
101 App: _propTypes.default.func.isRequired,
102 theme: _propTypes.default.object,
103 jss: _propTypes.default.any,
104 env: _propTypes.default.object,
105 data: _propTypes.default.object,
106 user: _propTypes.default.object
107};
108var _default = renderPage;
109exports.default = _default;
\No newline at end of file