import React, { useMemo, useEffect, ReactElement } from 'react';
import cls from 'classnames';
import type { ChatBoxProps } from '../interface';
import ChatBoxAvatar from './chatBoxAvatar';
import ChatBoxTitle from './chatBoxTitle';
import ChatBoxContent from './chatBoxContent';
import ChatBoxAction from './chatBoxAction';
import { cssClasses, strings } from '@douyinfe/semi-foundation/chat/constants';
const { PREFIX_CHAT_BOX } = cssClasses;
const { ROLE, CHAT_ALIGN } = strings;
const ChatBox = React.memo((props: ChatBoxProps) => {
const { message, lastChat, align, toast, mode,
roleConfig,
onMessageBadFeedback,
onMessageGoodFeedback,
onMessageCopy,
onChatsChange,
onMessageDelete,
onMessageReset,
chatBoxRenderConfig = {},
customMarkDownComponents,
previousMessage,
markdownRenderProps
} = props;
const { renderChatBoxAvatar, renderChatBoxAction,
renderChatBoxContent, renderChatBoxTitle,
renderFullChatBox
} = chatBoxRenderConfig;
const continueSend = useMemo(() => {
return message?.role === previousMessage?.role;
}, [message.role, previousMessage]);
const info = useMemo(() => {
let info = {};
if (roleConfig) {
info = roleConfig[message.role] ?? {};
}
return info;
}, [message.role, roleConfig]);
const avatarNode = useMemo(() => {
return (