@bbc/spartacus
Version:
88 lines (78 loc) • 2.76 kB
JavaScript
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
var _ampBoilerplate = require('@bbc/psammead-assets/amp-boilerplate');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
/* eslint-disable react/prop-types */
var Document = function Document(_ref) {
var assets = _ref.assets,
app = _ref.app,
data = _ref.data,
styleTags = _ref.styleTags,
helmet = _ref.helmet,
ResourceHints = _ref.ResourceHints;
var htmlAttrs = helmet.htmlAttributes.toComponent();
var meta = helmet.meta.toComponent();
var title = helmet.title.toComponent();
var links = helmet.link.toComponent();
var serialisedData = JSON.stringify(data);
var scriptsAllowed = !data.isAmp;
var scripts = assets.map(function (asset) {
return _react2.default.createElement('script', {
crossOrigin: 'anonymous',
key: asset,
type: 'text/javascript',
src: asset,
defer: true
});
});
return _react2.default.createElement(
'html',
_extends({ lang: 'en-GB' }, htmlAttrs),
_react2.default.createElement(
'head',
null,
meta,
_react2.default.createElement('link', { rel: 'shortcut icon', href: '/favicon.ico', type: 'image/x-icon' }),
_react2.default.createElement(ResourceHints, null),
title,
links,
styleTags,
data.isAmp && _react2.default.createElement(
_react.Fragment,
null,
_react2.default.createElement(
'style',
{ 'amp-boilerplate': '' },
_ampBoilerplate.AMP_SCRIPT
),
_react2.default.createElement(
'noscript',
null,
_react2.default.createElement(
'style',
{ 'amp-boilerplate': '' },
_ampBoilerplate.AMP_NO_SCRIPT
)
)
),
data.isAmp && _react2.default.createElement('script', { key: 'amp', async: true, src: 'https://cdn.ampproject.org/v0.js' })
),
_react2.default.createElement(
'body',
null,
_react2.default.createElement('div', { id: 'root', dangerouslySetInnerHTML: { __html: app } }),
scriptsAllowed && _react2.default.createElement('script', {
dangerouslySetInnerHTML: {
__html: 'window.SPARTACUS_DATA=' + serialisedData
}
}),
scriptsAllowed && scripts
)
);
};
exports.default = Document;