UNPKG

@lobehub/ui

Version:

Lobe UI is an open-source UI component library for building AIGC web apps

111 lines (108 loc) 3.5 kB
'use client'; import FlexBasic_default from "../../Flex/FlexBasic.mjs"; import ActionIcon_default from "../../ActionIcon/ActionIcon.mjs"; import Button_default from "../../Button/Button.mjs"; import { useTranslation } from "../../i18n/useTranslation.mjs"; import ControlInput_default from "../../EditableText/ControlInput.mjs"; import Select_default from "../../Select/Select.mjs"; import editableMessage_default from "../../i18n/resources/en/editableMessage.mjs"; import { messagesReducer } from "./messageReducer.mjs"; import { memo, useEffect, useReducer } from "react"; import { jsx, jsxs } from "react/jsx-runtime"; import { Plus, Trash } from "lucide-react"; import isEqual from "fast-deep-equal"; //#region src/chat/EditableMessageList/EditableMessageList.tsx const EditableMessageList = memo(({ disabled, dataSources, onChange, texts }) => { const [chatMessages, dispatch] = useReducer(messagesReducer, dataSources); const { t } = useTranslation(editableMessage_default); const addPropsText = texts?.addProps ?? t("editableMessage.addProps"); const deleteText = texts?.delete ?? t("editableMessage.delete"); const inputPlaceholderText = texts?.inputPlaceholder ?? t("editableMessage.inputPlaceholder"); const outputPlaceholderText = texts?.outputPlaceholder ?? t("editableMessage.outputPlaceholder"); const systemText = texts?.system ?? t("editableMessage.system"); const inputText = texts?.input ?? t("editableMessage.input"); const outputText = texts?.output ?? t("editableMessage.output"); useEffect(() => { if (!isEqual(dataSources, chatMessages)) onChange?.(chatMessages); }, [chatMessages]); return dataSources ? /* @__PURE__ */ jsxs(FlexBasic_default, { gap: 12, children: [chatMessages.map((item, index) => /* @__PURE__ */ jsxs(FlexBasic_default, { align: "center", gap: 8, horizontal: true, width: "100%", children: [ /* @__PURE__ */ jsx(Select_default, { disabled, onChange: (value) => { dispatch({ index, role: value, type: "updateMessageRole" }); }, options: [ { label: systemText, value: "system" }, { label: inputText, value: "user" }, { label: outputText, value: "assistant" } ], style: { width: 120 }, styles: { popup: { root: { zIndex: 100 } } }, value: item.role }), /* @__PURE__ */ jsx(ControlInput_default, { disabled, onChange: (e) => { dispatch({ index, message: e, type: "updateMessage" }); }, placeholder: item.role === "user" ? inputPlaceholderText : outputPlaceholderText, value: item.content }), /* @__PURE__ */ jsx(ActionIcon_default, { icon: Trash, onClick: () => { dispatch({ index, type: "deleteMessage" }); }, title: deleteText, variant: "filled" }) ] }, `${index}-${item.content}`)), /* @__PURE__ */ jsx(Button_default, { block: true, disabled, icon: Plus, onClick: () => { dispatch({ message: { content: "", role: chatMessages.at(-1)?.role === "user" ? "assistant" : "user" }, type: "addMessage" }); }, children: addPropsText })] }) : void 0; }, isEqual); EditableMessageList.displayName = "EditableMessageList"; var EditableMessageList_default = EditableMessageList; //#endregion export { EditableMessageList_default as default }; //# sourceMappingURL=EditableMessageList.mjs.map