serlina
Version:
A progressive React serverside-rendering framework
37 lines (36 loc) • 1.89 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const React = require("react");
const serialize = require("serialize-javascript");
exports.default = ({ pageStyles, pageScripts, initialProps = {}, publicPath, body, pageName, inlineCSSString, helmet }) => {
const scripts = [...pageScripts];
const main = scripts.pop();
const vendors = scripts.pop();
const otherScripts = scripts;
return (React.createElement("html", Object.assign({}, helmet.htmlAttributes.toComponent()),
React.createElement("head", null,
helmet.title.toComponent(),
helmet.meta.toComponent(),
helmet.script.toComponent(),
helmet.noscript.toComponent(),
helmet.style.toComponent(),
helmet.link.toComponent(),
inlineCSSString ? inlineCSSString.map(str => {
return React.createElement("style", { key: str.slice(0, 8), dangerouslySetInnerHTML: { __html: str } });
}) : pageStyles.map(url => {
return React.createElement("link", { key: url, rel: 'stylesheet', href: publicPath + url });
}),
React.createElement("script", { dangerouslySetInnerHTML: {
__html: `
window.__serlina__DATA = {};
window.__serlina__DATA.pageInitialProps = ${serialize(initialProps)};
`
} })),
React.createElement("body", Object.assign({}, helmet.bodyAttributes.toComponent()),
React.createElement("div", { id: "app", dangerouslySetInnerHTML: { __html: body } }),
React.createElement("script", { src: publicPath + vendors }),
otherScripts.map(script => {
return React.createElement("script", { key: script, src: publicPath + script });
}),
React.createElement("script", { src: publicPath + main }))));
};