import { useTheme } from 'antd-style'; import { memo } from 'react'; import { PrismLight as SyntaxHighlighter } from 'react-syntax-highlighter'; import { oneDark, oneLight } from 'react-syntax-highlighter/dist/esm/styles/prism'; import { languageMap } from './language'; Object.entries(languageMap).forEach(([key, value]) => { SyntaxHighlighter.registerLanguage(key, value); }); export interface PrismSyntaxTheme { dark: { [key: string]: React.CSSProperties }; light: { [key: string]: React.CSSProperties }; } export interface HighlighterProps { children: string; language: string; theme?: Partial; } const defaultTheme: PrismSyntaxTheme = { dark: oneDark, light: oneLight, }; export const Prism = memo(({ children, language, theme }) => { const { isDarkMode, lineHeight } = useTheme(); const Theme = { ...defaultTheme, ...theme }; return ( {children} ); });