@douyinfe/semi-ui
Version:
A modern, comprehensive, flexible design system and UI library. Connect DesignOps & DevOps. Quickly build beautiful React apps. Maintained by Douyin-fe team.
62 lines • 2.02 kB
JavaScript
import React from "react";
import Divider from '../divider';
import ChatBox from './chatBox';
import { cssClasses, strings } from '@douyinfe/semi-foundation/lib/es/chat/constants';
import LocaleConsumer from "../locale/localeConsumer";
import { Toast } from '../index';
const {
PREFIX_DIVIDER,
PREFIX
} = cssClasses;
const {
ROLE
} = strings;
const ChatContent = /*#__PURE__*/React.memo(props => {
const {
chats,
onMessageBadFeedback,
onMessageCopy,
mode,
onChatsChange,
onMessageDelete,
onMessageGoodFeedback,
onMessageReset,
roleConfig,
chatBoxRenderConfig,
align,
customMarkDownComponents,
renderDivider,
markdownRenderProps
} = props;
const [toast, contextHolder] = Toast.useToast();
return /*#__PURE__*/React.createElement(React.Fragment, null, chats.map((item, index) => {
const lastMessage = index === chats.length - 1;
return item.role === ROLE.DIVIDER ? renderDivider ? renderDivider(item) : /*#__PURE__*/React.createElement(Divider, {
key: item.id,
className: PREFIX_DIVIDER
}, /*#__PURE__*/React.createElement(LocaleConsumer, {
componentName: "Chat"
}, locale => locale['clearContext'])) : /*#__PURE__*/React.createElement(ChatBox, {
previousMessage: index ? chats[index - 1] : undefined,
toast: toast,
align: align,
mode: mode,
key: item.id,
message: item,
roleConfig: roleConfig,
onMessageBadFeedback: onMessageBadFeedback,
onMessageCopy: onMessageCopy,
onChatsChange: onChatsChange,
onMessageDelete: onMessageDelete,
onMessageGoodFeedback: onMessageGoodFeedback,
onMessageReset: onMessageReset,
lastChat: lastMessage,
customMarkDownComponents: customMarkDownComponents,
chatBoxRenderConfig: chatBoxRenderConfig,
markdownRenderProps: markdownRenderProps
});
}), /*#__PURE__*/React.createElement("div", {
className: `${PREFIX}-toast`
}, contextHolder));
});
export default ChatContent;