### What problem does this PR solve? Embed the chat window into other websites through iframe #345 ### Type of change - [x] New Feature (non-breaking change which adds functionality)
37 lines
928 B
TypeScript
37 lines
928 B
TypeScript
import Markdown from 'react-markdown';
|
|
import SyntaxHighlighter from 'react-syntax-highlighter';
|
|
import remarkGfm from 'remark-gfm';
|
|
|
|
const HightLightMarkdown = ({
|
|
children,
|
|
}: {
|
|
children: string | null | undefined;
|
|
}) => {
|
|
return (
|
|
<Markdown
|
|
remarkPlugins={[remarkGfm]}
|
|
components={
|
|
{
|
|
code(props: any) {
|
|
const { children, className, node, ...rest } = props;
|
|
const match = /language-(\w+)/.exec(className || '');
|
|
return match ? (
|
|
<SyntaxHighlighter {...rest} PreTag="div" language={match[1]}>
|
|
{String(children).replace(/\n$/, '')}
|
|
</SyntaxHighlighter>
|
|
) : (
|
|
<code {...rest} className={className}>
|
|
{children}
|
|
</code>
|
|
);
|
|
},
|
|
} as any
|
|
}
|
|
>
|
|
{children}
|
|
</Markdown>
|
|
);
|
|
};
|
|
|
|
export default HightLightMarkdown;
|