UNPKG

5.88 kBJavaScriptView Raw
1'use strict';
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6
7var _extends2 = require('babel-runtime/helpers/extends');
8
9var _extends3 = _interopRequireDefault(_extends2);
10
11var _keys = require('babel-runtime/core-js/object/keys');
12
13var _keys2 = _interopRequireDefault(_keys);
14
15var _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');
16
17var _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);
18
19var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');
20
21var _classCallCheck3 = _interopRequireDefault(_classCallCheck2);
22
23var _createClass2 = require('babel-runtime/helpers/createClass');
24
25var _createClass3 = _interopRequireDefault(_createClass2);
26
27var _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');
28
29var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);
30
31var _inherits2 = require('babel-runtime/helpers/inherits');
32
33var _inherits3 = _interopRequireDefault(_inherits2);
34
35var _redboxReact2 = require('redbox-react');
36
37var _redboxReact3 = _interopRequireDefault(_redboxReact2);
38
39var _react2 = require('react');
40
41var _react3 = _interopRequireDefault(_react2);
42
43var _reactTransformCatchErrors3 = require('react-transform-catch-errors');
44
45var _reactTransformCatchErrors4 = _interopRequireDefault(_reactTransformCatchErrors3);
46
47var _class, _temp;
48
49var _propTypes = require('prop-types');
50
51var _propTypes2 = _interopRequireDefault(_propTypes);
52
53var _server = require('react-dom/server');
54
55var _server2 = _interopRequireDefault(_server);
56
57var _reactHelmet = require('react-helmet');
58
59var _reactHelmet2 = _interopRequireDefault(_reactHelmet);
60
61var _Body = require('./Body');
62
63var _Body2 = _interopRequireDefault(_Body);
64
65function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
66
67var _components = {
68 Html: {
69 displayName: 'Html'
70 }
71};
72
73var _reactTransformCatchErrors2 = (0, _reactTransformCatchErrors4.default)({
74 filename: 'src/Html.js',
75 components: _components,
76 locals: [],
77 imports: [_react3.default, _redboxReact3.default]
78});
79
80function _wrapComponent(id) {
81 return function (Component) {
82 return _reactTransformCatchErrors2(Component, id);
83 };
84}
85
86/**
87 * Wrapper component containing HTML metadata and boilerplate tags.
88 * Used in server-side code only to wrap the string output of the
89 * rendered route component.
90 *
91 * The only thing this component doesn't (and can't) include is the
92 * HTML doctype declaration, which is added to the rendered output
93 * by the server.js file.
94 */
95var Html = _wrapComponent('Html')((_temp = _class = function (_Component) {
96 (0, _inherits3.default)(Html, _Component);
97
98 function Html() {
99 (0, _classCallCheck3.default)(this, Html);
100 return (0, _possibleConstructorReturn3.default)(this, (Html.__proto__ || (0, _getPrototypeOf2.default)(Html)).apply(this, arguments));
101 }
102
103 (0, _createClass3.default)(Html, [{
104 key: 'render',
105 value: function render() {
106 var _props = this.props,
107 assets = _props.assets,
108 component = _props.component,
109 store = _props.store,
110 statics = _props.statics,
111 fetcher = _props.fetcher,
112 _props$enableScript = _props.enableScript,
113 enableScript = _props$enableScript === undefined ? true : _props$enableScript;
114
115 var content = component ? _server2.default.renderToString(component) : '';
116 var head = _reactHelmet2.default.rewind();
117
118 return _react3.default.createElement(
119 'html',
120 { lang: 'en-us' },
121 _react3.default.createElement(
122 'head',
123 null,
124 _react3.default.createElement('meta', { name: 'viewport', content: 'width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no' }),
125 _react3.default.createElement('meta', { name: 'apple-mobile-web-app-capable', content: 'yes' }),
126 _react3.default.createElement('script', { src: '/koiki-sw-register.js' }),
127 _react3.default.createElement('link', { rel: 'manifest', href: '/manifest.json' }),
128 _react3.default.createElement('link', { rel: 'shortcut icon', href: '/images/favicon.png' }),
129 _react3.default.createElement('link', { rel: 'apple-touch-icon', href: '/images/favicon.png' }),
130 (0, _keys2.default)(assets.styles).map(function (style, key) {
131 return _react3.default.createElement('link', { href: assets.styles[style], key: key, media: 'screen, projection',
132 rel: 'stylesheet', type: 'text/css', charSet: 'UTF-8' });
133 }),
134 (0, _keys2.default)(statics || {}).map(function (tag) {
135 return tag === 'link' ? statics[tag].map(function (attributes) {
136 return _react3.default.createElement('link', (0, _extends3.default)({ key: attributes.rel + '-' + attributes.href }, attributes));
137 }) : tag === 'script' && enableScript ? statics[tag].map(function (attributes) {
138 return _react3.default.createElement('script', (0, _extends3.default)({ key: attributes.src }, attributes));
139 }) : '';
140 }),
141 head.base.toComponent(),
142 head.title.toComponent(),
143 head.meta.toComponent(),
144 head.link.toComponent(),
145 enableScript ? head.script.toComponent() : null
146 ),
147 _react3.default.createElement(_Body2.default, { assets: assets, content: content, store: store, fetcher: fetcher, enableScript: enableScript })
148 );
149 }
150 }]);
151 return Html;
152}(_react2.Component), _class.propTypes = {
153 assets: _propTypes2.default.object,
154 component: _propTypes2.default.node,
155 store: _propTypes2.default.object,
156 statics: _propTypes2.default.object,
157 fetcher: _propTypes2.default.object,
158 enableScript: _propTypes2.default.bool
159}, _temp));
160
161exports.default = Html;
162module.exports = exports['default'];
\No newline at end of file