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

33 lines (32 loc) 1.63 kB
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;