'use client' import { memo, useMemo } from 'react' import ReactMarkdown from 'react-markdown' import remarkGfm from 'remark-gfm' import remarkMath from 'remark-math' import rehypeKatex from 'rehype-katex' import rehypeRaw from 'rehype-raw' import 'katex/dist/katex.min.css' import { NoteChartFromCode } from './note-chart' // Memoized wrapper to prevent infinite re-renders const ChartWrapper = memo(function ChartWrapper({ code }: { code: string }) { return }) interface MarkdownContentProps { content: string className?: string } export const MarkdownContent = memo(function MarkdownContent({ content, className }: MarkdownContentProps) { return (
( ), code({ node, inline, className, children, ...props }: any) { const match = /language-(\w+)/.exec(className || '') const language = match ? match[1] : '' // Chart code blocks - memoized to prevent infinite loops if (language === 'chart') { const chartCode = String(children).replace(/\n$/, '') return } // Other code blocks if (!inline && match) { return ( {children} ) } return ( {children} ) }, }} > {content}
) })