radish
Version:
Radish is a React-based static site generator that outputs plain HTML and CSS.
24 lines (23 loc) • 1.17 kB
JavaScript
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
import { Head, HeadProvider } from "radish";
import style from "styles/style.css";
export default function Document(props) {
const { children, serviceWorker, websocket, preload = [] } = props;
return (_jsxs(HeadProvider, { children: [_jsxs(Head, { children: [_jsx("meta", { charSet: "utf-8" }), _jsx("link", { rel: "stylesheet", href: style }), preload.map((resource, i) => (_jsx("link", { href: resource.href, as: resource.as, rel: "preload" }, i))), serviceWorker ? _jsx("script", { children: sw }) : null, websocket ? _jsx("script", { children: ws(websocket) }) : null] }), children] }));
}
Document.head = HeadProvider.context;
const sw = `
if ("serviceWorker" in navigator) {
window.addEventListener('load', () => {
navigator.serviceWorker.register("/sw.js", { type: "module" })
.catch(error => console.error("Couldn't load service worker", error));
});
}`.trim();
const ws = (port) => {
return `
const ws = new WebSocket("ws://localhost:${port}");
ws.onmessage = msg => {
const data = JSON.parse(msg.data);
if (data.type === "refresh") location.reload();
}`.trim();
};