UNPKG

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