You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
35 lines
920 B
35 lines
920 B
/* eslint-disable react/no-danger */ |
|
import { Html, Head, Main, NextScript } from 'next/document'; |
|
import { readFileSync } from 'fs'; |
|
import { join } from 'path'; |
|
|
|
class InlineStylesHead extends Head { |
|
getCssLinks: Head['getCssLinks'] = ({ allFiles }) => { |
|
const { assetPrefix } = this.context; |
|
if (!allFiles || allFiles.length === 0) return null; |
|
return allFiles |
|
.filter((file: any) => /\.css$/.test(file)) |
|
.map((file: any) => ( |
|
<style |
|
key={file} |
|
nonce={this.props.nonce} |
|
data-href={`${assetPrefix}/_next/${file}`} |
|
dangerouslySetInnerHTML={{ |
|
__html: readFileSync(join(process.cwd(), '.next', file), 'utf-8'), |
|
}} |
|
/> |
|
)); |
|
}; |
|
} |
|
|
|
export default function Document() { |
|
return ( |
|
<Html lang="en"> |
|
<InlineStylesHead /> |
|
<body> |
|
<Main /> |
|
<NextScript /> |
|
</body> |
|
</Html> |
|
); |
|
}
|
|
|