UNPKG

3.45 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 swPath = _ref.swPath;
55 var appHtml;
56 var css;
57 var helmet;
58 var routerContext = {};
59
60 if (!_env.NO_SSR) {
61 var sheetsRegistry = new _jss.SheetsRegistry();
62 appHtml = (0, _server.renderToString)(_react.default.createElement(_JssProvider.default, (0, _extends2.default)({
63 jss: jss
64 }, {
65 registry: sheetsRegistry,
66 generateClassName: (0, _styles.createGenerateClassName)()
67 }), _react.default.createElement(_styles.MuiThemeProvider, (0, _extends2.default)({
68 theme: theme
69 }, {
70 sheetsManager: new _map.default()
71 }), _react.default.createElement(_reactRedux.Provider, {
72 store: (0, _redux.createStore)(function () {
73 return preloadedState;
74 })
75 }, _react.default.createElement(_reactRouterDom.StaticRouter, {
76 location: ctx.req.url,
77 context: routerContext
78 }, _react.default.createElement(App, null))))));
79 css = sheetsRegistry.toString();
80 helmet = _reactHelmet.default.renderStatic();
81 }
82
83 if (routerContext.action === 'REPLACE') {
84 ctx.redirect(routerContext.url);
85 } else {
86 var data = preloadedState.data,
87 rest = (0, _objectWithoutProperties2.default)(preloadedState, ["data"]);
88 ctx.body = (0, _htmlBase.default)({
89 appHtml: appHtml,
90 css: css,
91 helmet: helmet,
92 swPath: swPath,
93 windowVars: [['__PRELOADED_STATE__', (0, _objectSpread2.default)({
94 data: _env.NO_SSR ? {} : data
95 }, rest)]]
96 });
97 }
98};
99
100renderPage.propTypes = {
101 ctx: _propTypes.default.object.isRequired,
102 App: _propTypes.default.func.isRequired,
103 theme: _propTypes.default.object,
104 jss: _propTypes.default.any,
105 preloadedState: _propTypes.default.object,
106 swPath: _propTypes.default.string
107};
108var _default = renderPage;
109exports.default = _default;
\No newline at end of file