import { useEffect, FunctionComponent } from 'react' 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 rehypeRaw from 'rehype-raw' import 'katex/dist/katex.min.css' import FourOhFour from '../FourOhFour' import Loading from '../Loading' import DownloadBtn from '../DownloadBtn' import { useStaleSWR } from '../../utils/tools' const MarkdownPreview: FunctionComponent<{ file: any; standalone?: boolean }> = ({ file, standalone = true }) => { const { data, error } = useStaleSWR(file['@microsoft.graph.downloadUrl']) useEffect(() => { if (typeof window !== 'undefined') { Prism.highlightAll() } }, [data]) if (error) { return (
) } if (!data) { return (
) } return ( <>
{/* Using rehypeRaw to render HTML inside Markdown, is potentially dangerous, use under safe environments. (#18) */} {data}
{standalone && (
)} ) } export default MarkdownPreview