import { marked } from "marked"; import { memo, useMemo } from "react"; import ReactMarkdown from "react-markdown"; function parseMarkdownIntoBlocks(markdown: string): string[] { const tokens = marked.lexer(markdown); return tokens.map((token) => token.raw); } const MemoizedMarkdownBlock = memo( ({ content }: { content: string }) => { return {content}; }, (prevProps, nextProps) => { if (prevProps.content !== nextProps.content) return false; return true; }, ); MemoizedMarkdownBlock.displayName = "MemoizedMarkdownBlock"; export const MemoizedMarkdown = memo( ({ content, id }: { content: string; id: string }) => { const blocks = useMemo(() => parseMarkdownIntoBlocks(content), [content]); return blocks.map((block, index) => ( )); }, ); MemoizedMarkdown.displayName = "MemoizedMarkdown";