UNPKG

react-static

Version:

A progressive static site generator for React

155 lines (129 loc) 16.9 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = makeHeadWithMeta; exports.InlineStyle = void 0; var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator")); var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray")); var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties")); var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator")); var _react = _interopRequireDefault(require("react")); var _utils = require("../../utils"); var _plugins = _interopRequireDefault(require("../plugins")); // // import packagejson from '../../../package.json' // const { version } = packagejson var REGEX_FOR_STYLE_TAG = /<style>|<\/style>/gi; var InlineStyle = function InlineStyle(_ref) { var clientCss = _ref.clientCss; return /*#__PURE__*/_react["default"].createElement("style", { key: "clientCss", type: "text/css", dangerouslySetInnerHTML: { __html: clientCss.toString().replace(REGEX_FOR_STYLE_TAG, '') } }); }; exports.InlineStyle = InlineStyle; function makeHeadWithMeta(_x) { return _makeHeadWithMeta.apply(this, arguments); } function _makeHeadWithMeta() { _makeHeadWithMeta = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(state) { var head, route, clientScripts, config, clientStyleSheets, clientCss, pluginHeads; return _regenerator["default"].wrap(function _callee$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: head = state.head, route = state.route, clientScripts = state.clientScripts, config = state.config, clientStyleSheets = state.clientStyleSheets, clientCss = state.clientCss; _context.next = 3; return _plugins["default"].headElements([], state); case 3: pluginHeads = _context.sent; return _context.abrupt("return", function (_ref2) { var children = _ref2.children, rest = (0, _objectWithoutProperties2["default"])(_ref2, ["children"]); var renderLinkCSS = !route.redirect && !config.inlineCss; var useHelmetTitle = head.title && head.title[0] && head.title[0].props.children !== ''; var childrenArray = _react["default"].Children.toArray(children); if (useHelmetTitle) { head.title[0] = /*#__PURE__*/_react["default"].cloneElement(head.title[0], { key: 'title' }); childrenArray = childrenArray.filter(function (child) { if (child.type === 'title') { // Filter out the title of the Document in static.config.js // if there is a helmet title on this route return false; } return true; }); } var childrenCSS = childrenArray.filter(function (child) { if (child.type === 'link' && child.props && child.props.rel === 'stylesheet') { return true; } if (child.type === 'style') { return true; } return false; }); var childrenMeta = childrenArray.filter(function (child) { return child.type === 'meta'; }); var childrenJS = childrenArray.filter(function (child) { return child.type === 'script'; }); childrenArray = childrenArray.filter(function (child) { if (child.type === 'link' && child.props && child.props.rel === 'stylesheet') { return false; } if (child.type === 'style') { return false; } if (child.type === 'script') { return false; } if (child.type === 'meta') { return false; } return true; }); return /*#__PURE__*/_react["default"].createElement("head", rest, /*#__PURE__*/_react["default"].createElement("meta", { name: "generator", content: "React Static" }), head.base, useHelmetTitle && head.title, childrenMeta, head.meta, childrenJS, !route.redirect && clientScripts.map(function (script) { return /*#__PURE__*/_react["default"].createElement("link", { key: "clientScript_".concat(script), rel: "preload", as: "script", href: (0, _utils.makePathAbsolute)((0, _utils.pathJoin)(process.env.REACT_STATIC_ASSETS_PATH, script)) }); }), childrenCSS, renderLinkCSS && clientStyleSheets.reduce(function (memo, styleSheet) { var href = (0, _utils.makePathAbsolute)((0, _utils.pathJoin)(process.env.REACT_STATIC_ASSETS_PATH, styleSheet)); return [].concat((0, _toConsumableArray2["default"])(memo), [/*#__PURE__*/_react["default"].createElement("link", { key: "clientStyleSheetPreload_".concat(styleSheet), rel: "preload", as: "style", href: href }), /*#__PURE__*/_react["default"].createElement("link", { key: "clientStyleSheet_".concat(styleSheet), rel: "stylesheet", href: href })]); }, []), head.link, head.noscript, head.script, config.inlineCss && /*#__PURE__*/_react["default"].createElement(InlineStyle, { clientCss: clientCss }), head.style, pluginHeads, childrenArray); }); case 5: case "end": return _context.stop(); } } }, _callee); })); return _makeHeadWithMeta.apply(this, arguments); } //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zdGF0aWMvY29tcG9uZW50cy9IZWFkV2l0aE1ldGEuanMiXSwibmFtZXMiOlsiUkVHRVhfRk9SX1NUWUxFX1RBRyIsIklubGluZVN0eWxlIiwiY2xpZW50Q3NzIiwiX19odG1sIiwidG9TdHJpbmciLCJyZXBsYWNlIiwibWFrZUhlYWRXaXRoTWV0YSIsInN0YXRlIiwiaGVhZCIsInJvdXRlIiwiY2xpZW50U2NyaXB0cyIsImNvbmZpZyIsImNsaWVudFN0eWxlU2hlZXRzIiwicGx1Z2lucyIsImhlYWRFbGVtZW50cyIsInBsdWdpbkhlYWRzIiwiY2hpbGRyZW4iLCJyZXN0IiwicmVuZGVyTGlua0NTUyIsInJlZGlyZWN0IiwiaW5saW5lQ3NzIiwidXNlSGVsbWV0VGl0bGUiLCJ0aXRsZSIsInByb3BzIiwiY2hpbGRyZW5BcnJheSIsIlJlYWN0IiwiQ2hpbGRyZW4iLCJ0b0FycmF5IiwiY2xvbmVFbGVtZW50Iiwia2V5IiwiZmlsdGVyIiwiY2hpbGQiLCJ0eXBlIiwiY2hpbGRyZW5DU1MiLCJyZWwiLCJjaGlsZHJlbk1ldGEiLCJjaGlsZHJlbkpTIiwiYmFzZSIsIm1ldGEiLCJtYXAiLCJzY3JpcHQiLCJwcm9jZXNzIiwiZW52IiwiUkVBQ1RfU1RBVElDX0FTU0VUU19QQVRIIiwicmVkdWNlIiwibWVtbyIsInN0eWxlU2hlZXQiLCJocmVmIiwibGluayIsIm5vc2NyaXB0Iiwic3R5bGUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBOztBQUVBOztBQUNBOztBQUZBO0FBR0E7QUFFQTtBQUVBLElBQU1BLG1CQUFtQixHQUFHLHFCQUE1Qjs7QUFFTyxJQUFNQyxXQUFXLEdBQUcsU0FBZEEsV0FBYztBQUFBLE1BQUdDLFNBQUgsUUFBR0EsU0FBSDtBQUFBLHNCQUN6QjtBQUNFLElBQUEsR0FBRyxFQUFDLFdBRE47QUFFRSxJQUFBLElBQUksRUFBQyxVQUZQO0FBR0UsSUFBQSx1QkFBdUIsRUFBRTtBQUN2QkMsTUFBQUEs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QUFSLENBQVlDLHdCQUFyQixFQUErQ0csVUFBL0MsQ0FEVyxDQUFiO0FBSUEscUVBQ0tELElBREwsaUJBRUU7QUFDRSxrQkFBQSxHQUFHLG9DQUE2QkMsVUFBN0IsQ0FETDtBQUVFLGtCQUFBLEdBQUcsRUFBQyxTQUZOO0FBR0Usa0JBQUEsRUFBRSxFQUFDLE9BSEw7QUFJRSxrQkFBQSxJQUFJLEVBQUVDO0FBSlIsa0JBRkYsZUFRRTtBQUNFLGtCQUFBLEdBQUcsNkJBQXNCRCxVQUF0QixDQURMO0FBRUUsa0JBQUEsR0FBRyxFQUFDLFlBRk47QUFHRSxrQkFBQSxJQUFJLEVBQUVDO0FBSFIsa0JBUkY7QUFjRCxlQW5CRCxFQW1CRyxFQW5CSCxDQXBCSixFQXdDR3ZDLElBQUksQ0FBQ3dDLElBeENSLEVBeUNHeEMsSUFBSSxDQUFDeUMsUUF6Q1IsRUEwQ0d6QyxJQUFJLENBQUNnQyxNQTFDUixFQTJDRzdCLE1BQU0sQ0FBQ1MsU0FBUCxpQkFBb0IsZ0NBQUMsV0FBRDtBQUFhLGdCQUFBLFNBQVMsRUFBRWxCO0FBQXhCLGdCQTNDdkIsRUE0Q0dNLElBQUksQ0FBQzBDLEtBNUNSLEVBNkNHbkMsV0E3Q0gsRUE4Q0dTLGFBOUNILENBREY7QUFrREQsYUF0SFk7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcbi8vXG5pbXBvcnQgeyBwYXRoSm9pbiwgbWFrZVBhdGhBYnNvbHV0ZSB9IGZyb20gJy4uLy4uL3V0aWxzJ1xuaW1wb3J0IHBsdWdpbnMgZnJvbSAnLi4vcGx1Z2lucydcbi8vIGltcG9ydCBwYWNrYWdlanNvbiBmcm9tICcuLi8uLi8uLi9wYWNrYWdlLmpzb24nXG5cbi8vIGNvbnN0IHsgdmVyc2lvbiB9ID0gcGFja2FnZWpzb25cblxuY29uc3QgUkVHRVhfRk9SX1NUWUxFX1RBRyA9IC88c3R5bGU+fDxcXC9zdHlsZT4vZ2lcblxuZXhwb3J0IGNvbnN0IElubGluZVN0eWxlID0gKHsgY2xpZW50Q3NzIH0pID0+IChcbiAgPHN0eWxlXG4gICAga2V5PVwiY2xpZW50Q3NzXCJcbiAgICB0eXBlPVwidGV4dC9jc3NcIlxuICAgIGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MPXt7XG4gICAgICBfX2h0bWw6IGNsaWVudENzcy50b1N0cmluZygpLnJlcGxhY2UoUkVHRVhfRk9SX1NUWUxFX1RBRywgJycpLFxuICAgIH19XG4gIC8+XG4pXG5cbmV4cG9ydCBkZWZhdWx0IGFzeW5jIGZ1bmN0aW9uIG1ha2VIZWFkV2l0aE1ldGEoc3RhdGUpIHtcbiAgY29uc3Qge1xuICAgIGhlYWQsXG4gICAgcm91dGUsXG4gICAgY2xpZW50U2NyaXB0cyxcbiAgICBjb25maWcsXG4gICAgY2xpZW50U3R5bGVTaGVldHMsXG4gICAgY2xpZW50Q3NzLFxuICB9ID0gc3RhdGVcblxuICBjb25zdCBwbHVnaW5IZWFkcyA9IGF3YWl0IHBsdWdpbnMuaGVhZEVsZW1lbnRzKFtdLCBzdGF0ZSlcblxuICByZXR1cm4gKHsgY2hpbGRyZW4sIC4uLnJlc3QgfSkgPT4ge1xuICAgIGNvbnN0IHJlbmRlckxpbmtDU1MgPSAhcm91dGUucmVkaXJlY3QgJiYgIWNvbmZpZy5pbmxpbmVDc3NcblxuICAgIGNvbnN0IHVzZUhlbG1ldFRpdGxlID1cbiAgICAgIGhlYWQudGl0bGUgJiYgaGVhZC50aXRsZVswXSAmJiBoZWFkLnRpdGxlWzBdLnByb3BzLmNoaWxkcmVuICE9PSAnJ1xuXG4gICAgbGV0IGNoaWxkcmVuQXJyYXkgPSBSZWFjdC5DaGlsZHJlbi50b0FycmF5KGNoaWxkcmVuKVxuXG4gICAgaWYgKHVzZUhlbG1ldFRpdGxlKSB7XG4gICAgICBoZWFkLnRpdGxlWzBdID0gUmVhY3QuY2xvbmVFbGVtZW50KGhlYWQudGl0bGVbMF0sIHsga2V5OiAndGl0bGUnIH0pXG4gICAgICBjaGlsZHJlbkFycmF5ID0gY2hpbGRyZW5BcnJheS5maWx0ZXIoY2hpbGQgPT4ge1xuICAgICAgICBpZiAoY2hpbGQudHlwZSA9PT0gJ3RpdGxlJykge1xuICAgICAgICAgIC8vIEZpbHRlciBvdXQgdGhlIHRpdGxlIG9mIHRoZSBEb2N1bWVudCBpbiBzdGF0aWMuY29uZmlnLmpzXG4gICAgICAgICAgLy8gaWYgdGhlcmUgaXMgYSBoZWxtZXQgdGl0bGUgb24gdGhpcyByb3V0ZVxuICAgICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlXG4gICAgICB9KVxuICAgIH1cblxuICAgIGNvbnN0IGNoaWxkcmVuQ1NTID0gY2hpbGRyZW5BcnJheS5maWx0ZXIoY2hpbGQgPT4ge1xuICAgICAgaWYgKFxuICAgICAgICBjaGlsZC50eXBlID09PSAnbGluaycgJiZcbiAgICAgICAgY2hpbGQucHJvcHMgJiZcbiAgICAgICAgY2hpbGQucHJvcHMucmVsID09PSAnc3R5bGVzaGVldCdcbiAgICAgICkge1xuICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgfVxuICAgICAgaWYgKGNoaWxkLnR5cGUgPT09ICdzdHlsZScpIHtcbiAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgIH1cbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH0pXG5cbiAgICBjb25zdCBjaGlsZHJlbk1ldGEgPSBjaGlsZHJlbkFycmF5LmZpbHRlcihjaGlsZCA9PiBjaGlsZC50eXBlID09PSAnbWV0YScpXG4gICAgY29uc3QgY2hpbGRyZW5KUyA9IGNoaWxkcmVuQXJyYXkuZmlsdGVyKGNoaWxkID0+IGNoaWxkLnR5cGUgPT09ICdzY3JpcHQnKVxuICAgIGNoaWxkcmVuQXJyYXkgPSBjaGlsZHJlbkFycmF5LmZpbHRlcihjaGlsZCA9PiB7XG4gICAgICBpZiAoXG4gICAgICAgIGNoaWxkLnR5cGUgPT09ICdsaW5rJyAmJlxuICAgICAgICBjaGlsZC5wcm9wcyAmJlxuICAgICAgICBjaGlsZC5wcm9wcy5yZWwgPT09ICdzdHlsZXNoZWV0J1xuICAgICAgKSB7XG4gICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgfVxuICAgICAgaWYgKGNoaWxkLnR5cGUgPT09ICdzdHlsZScpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICB9XG4gICAgICBpZiAoY2hpbGQudHlwZSA9PT0gJ3NjcmlwdCcpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICB9XG4gICAgICBpZiAoY2hpbGQudHlwZSA9PT0gJ21ldGEnKSB7XG4gICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgfVxuICAgICAgcmV0dXJuIHRydWVcbiAgICB9KVxuXG4gICAgcmV0dXJuIChcbiAgICAgIDxoZWFkIHsuLi5yZXN0fT5cbiAgICAgICAgPG1ldGEgbmFtZT1cImdlbmVyYXRvclwiIGNvbnRlbnQ9XCJSZWFjdCBTdGF0aWNcIiAvPlxuICAgICAgICB7aGVhZC5iYXNlfVxuICAgICAgICB7dXNlSGVsbWV0VGl0bGUgJiYgaGVhZC50aXRsZX1cbiAgICAgICAge2NoaWxkcmVuTWV0YX1cbiAgICAgICAge2hlYWQubWV0YX1cbiAgICAgICAge2NoaWxkcmVuSlN9XG4gICAgICAgIHshcm91dGUucmVkaXJlY3QgJiZcbiAgICAgICAgICBjbGllbnRTY3JpcHRzLm1hcChzY3JpcHQgPT4gKFxuICAgICAgICAgICAgPGxpbmtcbiAgICAgICAgICAgICAga2V5PXtgY2xpZW50U2NyaXB0XyR7c2NyaXB0fWB9XG4gICAgICAgICAgICAgIHJlbD1cInByZWxvYWRcIlxuICAgICAgICAgICAgICBhcz1cInNjcmlwdFwiXG4gICAgICAgICAgICAgIGhyZWY9e21ha2VQYXRoQWJzb2x1dGUoXG4gICAgICAgICAgICAgICAgcGF0aEpvaW4ocHJvY2Vzcy5lbnYuUkVBQ1RfU1RBVElDX0FTU0VUU19QQVRILCBzY3JpcHQpXG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICkpfVxuICAgICAgICB7Y2hpbGRyZW5DU1N9XG4gICAgICAgIHtyZW5kZXJMaW5rQ1NTICYmXG4gICAgICAgICAgY2xpZW50U3R5bGVTaGVldHMucmVkdWNlKChtZW1vLCBzdHlsZVNoZWV0KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBocmVmID0gbWFrZVBhdGhBYnNvbHV0ZShcbiAgICAgICAgICAgICAgcGF0aEpvaW4ocHJvY2Vzcy5lbnYuUkVBQ1RfU1RBVElDX0FTU0VUU19QQVRILCBzdHlsZVNoZWV0KVxuICAgICAgICAgICAgKVxuXG4gICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICAuLi5tZW1vLFxuICAgICAgICAgICAgICA8bGlua1xuICAgICAgICAgICAgICAgIGtleT17YGNsaWVudFN0eWxlU2hlZXRQcmVsb2FkXyR7c3R5bGVTaGVldH1gfVxuICAgICAgICAgICAgICAgIHJlbD1cInByZWxvYWRcIlxuICAgICAgICAgICAgICAgIGFzPVwic3R5bGVcIlxuICAgICAgICAgICAgICAgIGhyZWY9e2hyZWZ9XG4gICAgICAgICAgICAgIC8+LFxuICAgICAgICAgICAgICA8bGlua1xuICAgICAgICAgICAgICAgIGtleT17YGNsaWVudFN0eWxlU2hlZXRfJHtzdHlsZVNoZWV0fWB9XG4gICAgICAgICAgICAgICAgcmVsPVwic3R5bGVzaGVldFwiXG4gICAgICAgICAgICAgICAgaHJlZj17aHJlZn1cbiAgICAgICAgICAgICAgLz4sXG4gICAgICAgICAgICBdXG4gICAgICAgICAgfSwgW10pfVxuICAgICAgICB7aGVhZC5saW5rfVxuICAgICAgICB7aGVhZC5ub3NjcmlwdH1cbiAgICAgICAge2hlYWQuc2NyaXB0fVxuICAgICAgICB7Y29uZmlnLmlubGluZUNzcyAmJiA8SW5saW5lU3R5bGUgY2xpZW50Q3NzPXtjbGllbnRDc3N9IC8+fVxuICAgICAgICB7aGVhZC5zdHlsZX1cbiAgICAgICAge3BsdWdpbkhlYWRzfVxuICAgICAgICB7Y2hpbGRyZW5BcnJheX1cbiAgICAgIDwvaGVhZD5cbiAgICApXG4gIH1cbn1cbiJdfQ==