import { AssistantMessageProps } from "../props"; import { useChatContext } from "../ChatContext"; import { Markdown } from "../Markdown"; import { useState } from "react"; export const AssistantMessage = (props: AssistantMessageProps) => { const { icons, labels } = useChatContext(); const { message, isLoading, onRegenerate, onCopy, onThumbsUp, onThumbsDown, isCurrentMessage, markdownTagRenderers, } = props; const [copied, setCopied] = useState(false); const handleCopy = () => { const content = message?.content || ""; if (content && onCopy) { navigator.clipboard.writeText(content); setCopied(true); onCopy(content); setTimeout(() => setCopied(false), 2000); } else if (content) { navigator.clipboard.writeText(content); setCopied(true); setTimeout(() => setCopied(false), 2000); } }; const handleRegenerate = () => { if (onRegenerate) onRegenerate(); }; const handleThumbsUp = () => { if (onThumbsUp && message) onThumbsUp(message); }; const handleThumbsDown = () => { if (onThumbsDown && message) onThumbsDown(message); }; const LoadingIcon = () => {icons.activityIcon}; const content = message?.content || ""; const subComponent = message?.generativeUI?.(); return ( <> {content && (
{content && } {content && !isLoading && (
{onThumbsUp && ( )} {onThumbsDown && ( )}
)}
)}
{subComponent}
{isLoading && } ); };