UNPKG

sharyn

Version:

Combines all the other packages under one.

109 lines (87 loc) 3.45 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _objectSpread2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/objectSpread")); var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/objectWithoutProperties")); var _extends2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/extends")); var _map = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/map")); var _react = _interopRequireDefault(require("react")); var _server = require("react-dom/server"); var _reactRedux = require("react-redux"); var _redux = require("redux"); var _reactHelmet = _interopRequireDefault(require("react-helmet")); var _jss = require("react-jss/lib/jss"); var _JssProvider = _interopRequireDefault(require("react-jss/lib/JssProvider")); var _env = require("@sharyn/env"); var _styles = require("@material-ui/core/styles"); var _reactRouterDom = require("react-router-dom"); 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 // flow-disable-next-line var renderPage = function renderPage(_ref) { var ctx = _ref.ctx, App = _ref.App, theme = _ref.theme, jss = _ref.jss, _ref$preloadedState = _ref.preloadedState, preloadedState = _ref$preloadedState === void 0 ? {} : _ref$preloadedState, 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(_JssProvider.default, (0, _extends2.default)({ jss: jss }, { registry: sheetsRegistry, generateClassName: (0, _styles.createGenerateClassName)() }), _react.default.createElement(_styles.MuiThemeProvider, (0, _extends2.default)({ theme: theme }, { sheetsManager: new _map.default() }), _react.default.createElement(_reactRedux.Provider, { store: (0, _redux.createStore)(function () { return preloadedState; }) }, _react.default.createElement(_reactRouterDom.StaticRouter, { location: ctx.req.url, context: routerContext }, _react.default.createElement(App, null)))))); css = sheetsRegistry.toString(); helmet = _reactHelmet.default.renderStatic(); } if (routerContext.action === 'REPLACE') { ctx.redirect(routerContext.url); } else { var data = preloadedState.data, rest = (0, _objectWithoutProperties2.default)(preloadedState, ["data"]); ctx.body = (0, _htmlBase.default)({ appHtml: appHtml, css: css, helmet: helmet, swPath: swPath, windowVars: [['__PRELOADED_STATE__', (0, _objectSpread2.default)({ data: _env.NO_SSR ? {} : data }, rest)]] }); } }; renderPage.propTypes = { ctx: _propTypes.default.object.isRequired, App: _propTypes.default.func.isRequired, theme: _propTypes.default.object, jss: _propTypes.default.any, preloadedState: _propTypes.default.object, swPath: _propTypes.default.string }; var _default = renderPage; exports.default = _default;