@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.
69 lines (68 loc) • 2.45 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _react = _interopRequireDefault(require("react"));
var _divider = _interopRequireDefault(require("../divider"));
var _chatBox = _interopRequireDefault(require("./chatBox"));
var _constants = require("@douyinfe/semi-foundation/lib/cjs/chat/constants");
var _localeConsumer = _interopRequireDefault(require("../locale/localeConsumer"));
var _index = require("../index");
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
const {
PREFIX_DIVIDER,
PREFIX
} = _constants.cssClasses;
const {
ROLE
} = _constants.strings;
const ChatContent = /*#__PURE__*/_react.default.memo(props => {
const {
chats,
onMessageBadFeedback,
onMessageCopy,
mode,
onChatsChange,
onMessageDelete,
onMessageGoodFeedback,
onMessageReset,
roleConfig,
chatBoxRenderConfig,
align,
customMarkDownComponents,
renderDivider,
markdownRenderProps
} = props;
const [toast, contextHolder] = _index.Toast.useToast();
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, chats.map((item, index) => {
const lastMessage = index === chats.length - 1;
return item.role === ROLE.DIVIDER ? renderDivider ? renderDivider(item) : /*#__PURE__*/_react.default.createElement(_divider.default, {
key: item.id,
className: PREFIX_DIVIDER
}, /*#__PURE__*/_react.default.createElement(_localeConsumer.default, {
componentName: "Chat"
}, locale => locale['clearContext'])) : /*#__PURE__*/_react.default.createElement(_chatBox.default, {
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.default.createElement("div", {
className: `${PREFIX}-toast`
}, contextHolder));
});
var _default = exports.default = ChatContent;