@plteam/chat-ui
Version:
CUI Kit is a free and open-source library for creating AI assistant chat interfaces, built with React, Material UI, and TypeScript
31 lines (30 loc) • 1.76 kB
JavaScript
import * as React from 'react';
import Stack from '@mui/material/Stack';
import MessageUserEditorTextfield from './MessageUserEditorTextfield';
import { useChatCoreSlots } from '../../core/ChatSlotsContext';
import { useLocalizationContext } from '../../core/LocalizationContext';
import { useChatContext } from '../../core/ChatGlobalContext';
import { useObserverValue } from '../../hooks/useObserverValue';
const MessageUserEditor = ({ onClickApply, onClickCancel, message }) => {
const [newText, setNewText] = React.useState(message.text);
const coreSlots = useChatCoreSlots();
const locale = useLocalizationContext();
const { enableFileAttachments, disableFileAttachmentsEditing } = useChatContext();
const deletedIds = useObserverValue(message.attachments.deletedIds);
const onClick = () => {
if (!disabled) {
onClickApply(newText);
}
};
const disabled = (enableFileAttachments && !disableFileAttachmentsEditing)
? deletedIds?.length
? message.attachments.itemsAll.value.length === deletedIds.length && !newText
: message.text === newText
: (message.text === newText || !newText);
return (React.createElement(Stack, { gap: 1.5, width: "100%" },
React.createElement(MessageUserEditorTextfield, { newText: newText, setNewText: setNewText, onEnterPress: onClick }),
React.createElement(Stack, { gap: 1.5, direction: "row" },
React.createElement(coreSlots.button, { variant: "outlined", onClick: onClickCancel }, locale.cancel),
React.createElement(coreSlots.button, { disabled: disabled, variant: "contained", onClick: onClick }, locale.send))));
};
export default MessageUserEditor;