import type { Message } from "@langchain/langgraph-sdk"; import { memo, useMemo } from "react"; import { Message as AIElementMessage, MessageContent as AIElementMessageContent, MessageResponse as AIElementMessageResponse, MessageToolbar, } from "@/components/ai-elements/message"; import { extractContentFromMessage, extractReasoningContentFromMessage, } from "@/core/messages/utils"; import { useRehypeSplitWordsIntoSpans } from "@/core/rehype"; import { cn } from "@/lib/utils"; import { CopyButton } from "../copy-button"; export function MessageListItem({ className, message, isLoading, }: { className?: string; message: Message; isLoading?: boolean; }) { return (
); } function MessageContent_({ className, message, isLoading = false, }: { className?: string; message: Message; isLoading?: boolean; }) { const rehypePlugins = useRehypeSplitWordsIntoSpans(isLoading); const content = useMemo(() => { const reasoningContent = extractReasoningContentFromMessage(message); const content = extractContentFromMessage(message); if (!isLoading && reasoningContent && !content) { return reasoningContent; } return content; }, [isLoading, message]); return ( {content} ); } const MessageContent = memo(MessageContent_);