import React, { Fragment } from 'react' import hljs from 'highlight.js' import { Marked } from 'marked' import { markedHighlight } from 'marked-highlight' import { twMerge } from 'tailwind-merge' import LogoMark from '@/containers/Brand/Logo/Mark' import { displayDate } from '@/utils/datetime' import LoadingIndicator from '../../../components/LoadingIndicator' import { MessageSenderType } from '@/models/ChatMessage' type Props = { avatarUrl: string senderName: string createdAt: number senderType: MessageSenderType text?: string } const marked = new Marked( // markedHighlight({ // langPrefix: 'hljs', // highlight(code, lang) { // if (lang === undefined || lang === '') { // return hljs.highlightAuto(code).value // } // return hljs.highlight(code, { language: lang }).value // }, // }), markedHighlight({ langPrefix: 'hljs language-', highlight(code, lang) { const language = hljs.getLanguage(lang) ? lang : 'plaintext' return hljs.highlight(code, { language }).value }, }), { renderer: { code(code, lang, escaped) { return `
${escaped ? code : encodeURIComponent(code)}
` }, }, } ) const SimpleTextMessage: React.FC = ({ senderName, senderType, createdAt, text = '', }) => { const parsedText = marked.parse(text) const isUser = senderType === 'user' return (
{!isUser && }
{senderName}

{displayDate(createdAt)}

{text === '' ? ( ) : ( <> )}
) } export default React.memo(SimpleTextMessage)