UNPKG

@bbc/spartacus

Version:
88 lines (78 loc) 2.76 kB
'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;