import React from "react"
import Document, { Head, Main, NextScript } from "next/document"
import JssProvider from "react-jss/lib/JssProvider"
import flush from "styled-jsx/server"
import getPageContext from "lib/getPageContext"
import { ServerStyleSheet } from "styled-components"
class MyDocument extends Document {
static async getInitialProps(ctx) {
// Resolution order
//
// On the server:
// 1. page.getInitialProps
// 2. document.getInitialProps
// 3. page.render
// 4. document.render
//
// On the server with error:
// 2. document.getInitialProps
// 3. page.render
// 4. document.render
//
// On the client
// 1. page.getInitialProps
// 3. page.render
// Get the context of the page to collected side effects.
const pageContext = getPageContext()
const sheet = new ServerStyleSheet()
const page = ctx.renderPage(Component => props =>
sheet.collectStyles(