import fs from 'fs';
import Document, { Html, Head, Main, NextScript } from 'next/document';
import { CustomJavascript, CustomHtml, Favicon } from '~/elements';
import favicons from '../favicon-formats';
import type { DocumentContext, DocumentInitialProps } from 'next/document';
interface DocumentExtra extends DocumentInitialProps {
customJs: string;
customHtml: string;
}
class MyDocument extends Document {
static async getInitialProps(ctx: DocumentContext): Promise {
const initialProps = await Document.getInitialProps(ctx);
let customJs = '',
customHtml = '';
if (fs.existsSync('custom.js')) {
customJs = fs.readFileSync('custom.js').toString();
}
if (fs.existsSync('custom.html')) {
customHtml = fs.readFileSync('custom.html').toString();
}
return { customJs, customHtml, ...initialProps };
}
render(): JSX.Element {
return (
{favicons.map((favicon, idx) => (
))}
{this.props.customJs}
{this.props.customHtml}
);
}
}
export default MyDocument;