UNPKG

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