MarkdownView.tsx 581 B

123456789101112131415161718192021
  1. import { type JSX, splitProps, createResource } from "solid-js"
  2. import { marked } from "marked"
  3. import styles from "./markdownview.module.css"
  4. interface MarkdownViewProps extends JSX.HTMLAttributes<HTMLDivElement> {
  5. markdown: string
  6. }
  7. function MarkdownView(props: MarkdownViewProps) {
  8. const [local, rest] = splitProps(props, ["markdown"])
  9. const [html] = createResource(() => local.markdown, async (markdown) => {
  10. return marked.parse(markdown)
  11. })
  12. return (
  13. <div innerHTML={html()} class={styles["markdown-body"]} {...rest} />
  14. )
  15. }
  16. export default MarkdownView