UNPKG

@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
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;