import { useEffect, FunctionComponent } from 'react' import axios from 'axios' import useSWR from 'swr' import Prism from 'prismjs' import ReactMarkdown from 'react-markdown' import gfm from 'remark-gfm' import remarkMath from 'remark-math' import rehypeKatex from 'rehype-katex' import 'katex/dist/katex.min.css' import 'github-markdown-css/github-markdown.css' import FourOhFour from '../FourOhFour' import Loading from '../Loading' import DownloadBtn from '../DownloadBtn' const fetcher = (url: string) => axios.get(url).then(res => res.data) const MarkdownPreview: FunctionComponent<{ file: any; standalone?: boolean }> = ({ file, standalone = true }) => { const { data, error } = useSWR(file['@microsoft.graph.downloadUrl'], fetcher) useEffect(() => { if (typeof window !== 'undefined') { Prism.highlightAll() } }, [data]) if (error) { return (
) } if (!data) { return (
) } return ( <>
{data}
{standalone && (
)} ) } export default MarkdownPreview