UNPKG

react-static-webpack-plugin

Version:

Build full static sites using React, React Router and Webpack

76 lines (68 loc) 2.62 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.Html = undefined; var _react = require('react'); var _react2 = _interopRequireDefault(_react); var _server = require('react-dom/server'); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var Html = exports.Html = function Html(_ref) { var _ref$title = _ref.title; var title = _ref$title === undefined ? 'Rainbow Unicorns' : _ref$title; var _ref$bundle = _ref.bundle; var bundle = _ref$bundle === undefined ? '/app.js' : _ref$bundle; var _ref$body = _ref.body; var body = _ref$body === undefined ? '' : _ref$body; var _ref$favicon = _ref.favicon; var favicon = _ref$favicon === undefined ? '' : _ref$favicon; var _ref$stylesheet = _ref.stylesheet; var stylesheet = _ref$stylesheet === undefined ? '' : _ref$stylesheet; return _react2.default.createElement( 'html', { lang: 'en' }, _react2.default.createElement( 'head', null, _react2.default.createElement('meta', { charSet: 'utf-8' }), _react2.default.createElement('meta', { httpEquiv: 'X-UA-Compatible', content: 'IE=edge' }), _react2.default.createElement('meta', { name: 'viewport', content: 'width=device-width, initial-scale=1' }), _react2.default.createElement( 'title', null, title ), favicon && _react2.default.createElement('link', { rel: 'shortcut icon', href: favicon }), stylesheet && _react2.default.createElement('link', { rel: 'stylesheet', href: stylesheet }) ), _react2.default.createElement( 'body', null, _react2.default.createElement('div', { id: 'root', dangerouslySetInnerHTML: { __html: body } }), _react2.default.createElement('script', { src: bundle }) ) ); }; Html.propTypes = { title: _react.PropTypes.string, body: _react.PropTypes.string, bundle: _react.PropTypes.string, favicon: _react.PropTypes.string, stylesheet: _react.PropTypes.string }; /** * Render the entire web page to a string. We use render to static markup here * to avoid react hooking on to the document HTML that will not be managed by * React. The body prop is a string that contains the actual document body, * which react will hook on to. * * We also take this opportunity to prepend the doctype string onto the * document. * * @param {object} props * @return {string} */ Html.renderToDocumentString = function (props) { return '<!doctype html>' + (0, _server.renderToStaticMarkup)(_react2.default.createElement(Html, props)); }; exports.default = Html;