import React, { useState, useEffect } from 'react';
import { useRecoilValue } from 'recoil';
import ReactMarkdown from 'react-markdown';
import rehypeKatex from 'rehype-katex';
import rehypeHighlight from 'rehype-highlight';
import remarkMath from 'remark-math';
import supersub from 'remark-supersub';
import remarkGfm from 'remark-gfm';
import rehypeRaw from 'rehype-raw';
import CodeBlock from './CodeBlock';
import store from '~/store';
import { langSubset } from '~/utils/languages.mjs';
const code = React.memo((props) => {
const { inline, className, children } = props;
const match = /language-(\w+)/.exec(className || '');
const lang = match && match[1];
if (inline) {
return {children}
;
} else {
return
{props?.children}
; }); const Content = React.memo(({ content, message }) => { const [cursor, setCursor] = useState('█'); const isSubmitting = useRecoilValue(store.isSubmitting); const latestMessage = useRecoilValue(store.latestMessage); const isInitializing = content === '█'; const isLatestMessage = message?.messageId === latestMessage?.messageId; const currentContent = content?.replace('z-index: 1;', '') ?? ''; const isIFrame = currentContent.includes('