import { memo, useMemo } from 'react'; import ReactMarkdown, { type Components } from 'react-markdown'; import type { BundledLanguage } from 'shiki'; import { createScopedLogger } from '~/utils/logger'; import { rehypePlugins, remarkPlugins, allowedHTMLElements } from '~/utils/markdown'; import { CodeBlock } from './CodeBlock'; import styles from './Markdown.module.scss'; const logger = createScopedLogger('MarkdownComponent'); interface MarkdownProps { children: string; html?: boolean; limitedMarkdown?: boolean; } export const Markdown = memo(({ children, html = false, limitedMarkdown = false }: MarkdownProps) => { logger.trace('Render'); const components = useMemo(() => { return { div: ({ className, children, node, ...props }) => { return (
{children}; }, } satisfies Components; }, []); return (