balibabu
Fix: Fixed an issue where math formulas could not be displayed correctly #4405 (#4506)
18e87af
| import { EmptyConversationId } from '@/constants/chat'; | |
| import { Message } from '@/interfaces/database/chat'; | |
| import { IMessage } from '@/pages/chat/interface'; | |
| import { omit } from 'lodash'; | |
| import { v4 as uuid } from 'uuid'; | |
| export const isConversationIdExist = (conversationId: string) => { | |
| return conversationId !== EmptyConversationId && conversationId !== ''; | |
| }; | |
| export const buildMessageUuid = (message: Partial<Message | IMessage>) => { | |
| if ('id' in message && message.id) { | |
| return message.id; | |
| } | |
| return uuid(); | |
| }; | |
| export const buildMessageListWithUuid = (messages?: Message[]) => { | |
| return ( | |
| messages?.map((x: Message | IMessage) => ({ | |
| ...omit(x, 'reference'), | |
| id: buildMessageUuid(x), | |
| })) ?? [] | |
| ); | |
| }; | |
| export const getConversationId = () => { | |
| return uuid().replace(/-/g, ''); | |
| }; | |
| // When rendering each message, add a prefix to the id to ensure uniqueness. | |
| export const buildMessageUuidWithRole = ( | |
| message: Partial<Message | IMessage>, | |
| ) => { | |
| return `${message.role}_${message.id}`; | |
| }; | |
| // Preprocess LaTeX equations to be rendered by KaTeX | |
| // ref: https://github.com/remarkjs/react-markdown/issues/785 | |
| export const preprocessLaTeX = (content: string) => { | |
| const blockProcessedContent = content.replace( | |
| /\\\[([\s\S]*?)\\\]/g, | |
| (_, equation) => `$$${equation}$$`, | |
| ); | |
| const inlineProcessedContent = blockProcessedContent.replace( | |
| /\\\(([\s\S]*?)\\\)/g, | |
| (_, equation) => `$${equation}$`, | |
| ); | |
| return inlineProcessedContent; | |
| }; | |