@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
33 lines (32 loc) • 1.63 kB
JavaScript
import * as React from 'react';
import { CodeIcon, HtmlIcon } from '../../../icons';
import { messageToHtml } from './messageToHtml';
import { useChatSlots } from '../../core/ChatSlotsContext';
import { useChatContext } from '../../core/ChatGlobalContext';
import { useLocalizationContext } from '../../core/LocalizationContext';
const MessageCopyMenuItems = ({ handleClose, text, short }) => {
const { snackbar } = useChatContext();
const { coreSlots } = useChatSlots();
const locale = useLocalizationContext();
const handleCopyMarkdown = () => {
navigator.clipboard.writeText(text)
.then(() => snackbar.show(locale.messageCopiedToClipboard, 'info'));
handleClose();
};
const handleCopyHTML = () => {
const html = messageToHtml(text);
const blobHtml = new Blob([html], { type: 'text/html' });
const blobText = new Blob([html], { type: 'text/plain' });
const item = new window.ClipboardItem({
'text/html': blobHtml,
'text/plain': blobText,
});
navigator.clipboard.write([item])
.then(() => snackbar.show(locale.messageCopiedToClipboard, 'info'));
handleClose();
};
return (React.createElement(React.Fragment, null,
React.createElement(coreSlots.menuItem, { startIcon: CodeIcon, onClick: handleCopyMarkdown }, short ? 'Markdown' : locale.messageCopyMarkdown),
React.createElement(coreSlots.menuItem, { startIcon: HtmlIcon, onClick: handleCopyHTML }, short ? 'HTML' : locale.messageCopyHTML)));
};
export default MessageCopyMenuItems;