mirror of
https://github.com/explosion/spaCy.git
synced 2025-11-15 15:25:53 +03:00
* Extract `CodeBlock` component into own file * Extract `InlineCode` component into own file * Extract `TypeAnnotation` component into own file * Convert named `export` to `default export` * Remove unused `export` * Simplify `TypeAnnotation` to remove dependency for Prism * Load `Code` component dynamically * Extract `MarkdownToReact` component into own file * WIP Code Dynamic * Load `MarkdownToReact` component dynamically * Extract `htmlToReact` to own file * Load `htmlToReact` component dynamically * Dynamically load `Juniper`
33 lines
950 B
JavaScript
33 lines
950 B
JavaScript
import React, { useEffect, useState } from 'react'
|
|
import { serialize } from 'next-mdx-remote/serialize'
|
|
import { MDXRemote } from 'next-mdx-remote'
|
|
import remarkPlugins from '../../plugins/index.mjs'
|
|
|
|
/**
|
|
* Convert raw Markdown to React
|
|
* @param {String} markdown - The Markdown markup to convert.
|
|
* @param {Object} [remarkReactComponents] - Optional React components to use
|
|
* for HTML elements.
|
|
* @returns {Node} - The converted React elements.
|
|
*/
|
|
export default function MarkdownToReact({ markdown }) {
|
|
const [mdx, setMdx] = useState(null)
|
|
|
|
useEffect(() => {
|
|
const getMdx = async () => {
|
|
setMdx(
|
|
await serialize(markdown, {
|
|
parseFrontmatter: false,
|
|
mdxOptions: {
|
|
remarkPlugins,
|
|
},
|
|
})
|
|
)
|
|
}
|
|
|
|
getMdx()
|
|
}, [markdown])
|
|
|
|
return mdx ? <MDXRemote {...mdx} /> : <></>
|
|
}
|