import { memo, useMemo, ReactElement } from 'react'; import { useRecoilValue } from 'recoil'; import MarkdownLite from '~/components/Chat/Messages/Content/MarkdownLite'; import Markdown from '~/components/Chat/Messages/Content/Markdown'; import { useChatContext, useMessageContext } from '~/Providers'; import { cn } from '~/utils'; import store from '~/store'; type TextPartProps = { text: string; showCursor: boolean; isCreatedByUser: boolean; }; type ContentType = | ReactElement> | ReactElement> | ReactElement; const TextPart = memo(({ text, isCreatedByUser, showCursor }: TextPartProps) => { const { messageId } = useMessageContext(); const { isSubmitting, latestMessage } = useChatContext(); const enableUserMsgMarkdown = useRecoilValue(store.enableUserMsgMarkdown); const showCursorState = useMemo(() => showCursor && isSubmitting, [showCursor, isSubmitting]); const isLatestMessage = useMemo( () => messageId === latestMessage?.messageId, [messageId, latestMessage?.messageId], ); const content: ContentType = useMemo(() => { if (!isCreatedByUser) { return ; } else if (enableUserMsgMarkdown) { return ; } else { return <>{text}; } }, [isCreatedByUser, enableUserMsgMarkdown, text, isLatestMessage]); return (
{content}
); }); export default TextPart;