28 lines
679 B
TypeScript
28 lines
679 B
TypeScript
import * as React from "react";
|
|
const emoji = require("markdown-it-emoji");
|
|
const md = require("markdown-it")({
|
|
/** Enable HTML tags in source */
|
|
html: true,
|
|
/** Convert '\n' in paragraphs into <br> */
|
|
breaks: true,
|
|
/** Autoconvert URL-like text to links */
|
|
linkify: true,
|
|
/** Enable some language-neutral replacement + quotes beautification */
|
|
typographer: true,
|
|
});
|
|
|
|
md.disable("heading");
|
|
md.use(emoji);
|
|
|
|
interface MarkdownProps {
|
|
children?: React.ReactNode;
|
|
}
|
|
|
|
export function Markdown(props: MarkdownProps) {
|
|
const result = md.render(props.children);
|
|
return <span
|
|
className="markdown"
|
|
dangerouslySetInnerHTML={{ __html: result }}>
|
|
</span>;
|
|
}
|