/* eslint-disable react/require-default-props */ import React from 'react'; import { observer } from 'mobx-react'; import { MathJax, MathJaxContext } from 'better-react-mathjax'; import ReactMarkdown from 'react-markdown'; import { TbCircle0Filled, TbCircle1Filled, TbCircle2Filled, TbCircle3Filled, TbCircle4Filled, TbCircle5Filled, TbCircle6Filled, TbCircle7Filled, TbCircle8Filled, TbCircle9Filled } from 'react-icons/tb'; import { AssistantMessage } from './types'; interface MessageComponentProps { message: AssistantMessage; toggleToolLogs: (index: number) => void; expandedLogIndex: number | null; index: number; showModal: () => void; goToLinkedDoc: (url: string) => void; setCurrentFile: (file: { url: string }) => void; isCurrent?: boolean; } const MessageComponent: React.FC = function ({ message, toggleToolLogs, expandedLogIndex, goToLinkedDoc, index, showModal, setCurrentFile, isCurrent = false }) { // const messageClass = `${message.role} ${isCurrent ? 'current-message' : ''}`; const LinkRenderer = ({ href, children }: { href: string; children: React.ReactNode }) => { // console.log(href + " " + children) const regex = /([a-zA-Z0-9_.!-]+)~~~(citation|file_path)/; const matches = href.match(regex); // console.log(href) // console.log(matches) const url = matches ? matches[1] : href; const linkType = matches ? matches[2] : null; if (linkType === 'citation') { switch (children) { case '0': children = ; break; case '1': children = ; break; case '2': children = ; break; case '3': children = ; break; case '4': children = ; break; case '5': children = ; break; case '6': children = ; break; case '7': children = ; break; case '8': children = ; break; case '9': children = ; break; default: break; } } // console.log(linkType) const style = { color: 'lightblue', verticalAlign: linkType === 'citation' ? 'super' : 'baseline', fontSize: linkType === 'citation' ? 'smaller' : 'inherit', }; return ( { e.preventDefault(); if (linkType === 'citation') { goToLinkedDoc(url); } else if (linkType === 'file_path') { showModal(); setCurrentFile({ url }); } }} style={style}> {children} ); }; return (
{message.text ? message.text : ''} {message.image && }
{message.tool_logs && ( )} {expandedLogIndex === index && (
{message.tool_logs}
)}
); }; export default observer(MessageComponent);