import React, { createContext, useContext, FC, useState, useEffect, ReactNode, } from 'react'; import { DocumentResult } from '@morten-olsen/goodwrites'; type Document = DocumentResult; declare var __DOC_LOCATION__: string; type DocContextValue = { doc: Document; }; type DocProviderProps = { children: ReactNode; }; const DocContext = createContext(null as any); const DocProvider: FC = ({ children }) => { const [doc, setDoc] = useState( require(__DOC_LOCATION__) as Document ); useEffect(() => { const hot = (module as any).hot; if (hot) { hot.accept('../../../../demo-article/index.yml', () => { const newDoc = require(__DOC_LOCATION__) as Document; setDoc(newDoc); }); } }, []); return {children}; }; const useDoc = () => { const { doc } = useContext(DocContext); return doc; }; export { DocProvider, DocContext, useDoc };