2018-07-31 17:07:27 +00:00
|
|
|
const React = require("react");
|
|
|
|
const PropTypes = require("prop-types");
|
|
|
|
|
2018-07-31 22:34:34 +00:00
|
|
|
const createHTML = require("./utils/createHTML");
|
2018-07-31 17:07:27 +00:00
|
|
|
const x = require("./utils/execScript");
|
|
|
|
|
|
|
|
function MainPage({ title, description, scripts, styles, data, content }) {
|
|
|
|
return (
|
|
|
|
<html lang="en">
|
|
|
|
<head>
|
|
|
|
<meta charSet="utf-8" />
|
|
|
|
<meta name="description" content={description} />
|
|
|
|
<meta httpEquiv="X-UA-Compatible" content="IE=edge,chrome=1" />
|
|
|
|
<meta
|
|
|
|
name="viewport"
|
|
|
|
content="width=device-width,initial-scale=1,maximum-scale=1"
|
|
|
|
/>
|
|
|
|
<meta name="timestamp" content={new Date().toISOString()} />
|
|
|
|
<link rel="shortcut icon" href="/favicon.ico" />
|
|
|
|
{styles.map(s => <link key={s} rel="stylesheet" href={s} />)}
|
|
|
|
{x(
|
|
|
|
"window.Promise || document.write('\\x3Cscript src=\"/_polyfills/es6-promise.min.js\">\\x3C/script>\\x3Cscript>ES6Promise.polyfill()\\x3C/script>')"
|
|
|
|
)}
|
|
|
|
{x(
|
|
|
|
"window.fetch || document.write('\\x3Cscript src=\"/_polyfills/fetch.min.js\">\\x3C/script>')"
|
|
|
|
)}
|
|
|
|
{x(`window.__DATA__ = ${JSON.stringify(data)}`)}
|
|
|
|
<title>{title}</title>
|
|
|
|
</head>
|
|
|
|
<body>
|
2018-07-31 22:34:34 +00:00
|
|
|
<div id="root" dangerouslySetInnerHTML={content} />
|
2018-07-31 17:07:27 +00:00
|
|
|
{scripts.map(s => <script key={s} src={s} />)}
|
|
|
|
</body>
|
|
|
|
</html>
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
2018-07-31 22:34:34 +00:00
|
|
|
const htmlType = PropTypes.shape({
|
|
|
|
__html: PropTypes.string
|
|
|
|
});
|
|
|
|
|
2018-07-31 17:07:27 +00:00
|
|
|
MainPage.propTypes = {
|
|
|
|
title: PropTypes.string,
|
|
|
|
description: PropTypes.string,
|
|
|
|
scripts: PropTypes.arrayOf(PropTypes.string),
|
|
|
|
styles: PropTypes.arrayOf(PropTypes.string),
|
|
|
|
data: PropTypes.any,
|
2018-07-31 22:34:34 +00:00
|
|
|
content: htmlType
|
2018-07-31 17:07:27 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
MainPage.defaultProps = {
|
|
|
|
title: "UNPKG",
|
|
|
|
description: "The CDN for everything on npm",
|
|
|
|
scripts: [],
|
|
|
|
styles: [],
|
|
|
|
data: {},
|
2018-07-31 22:34:34 +00:00
|
|
|
content: createHTML("")
|
2018-07-31 17:07:27 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
module.exports = MainPage;
|