import { Paper, Stack } from "@mantine/core"; import type { ChatMessage } from "gpt-tokenizer/GptEncoding"; import { Suspense, lazy, memo } from "react"; const FormattedMarkdown = lazy(() => import("./FormattedMarkdown")); interface MessageListProps { messages: ChatMessage[]; } interface MessageProps { message: ChatMessage; index: number; } const Message = memo( function Message({ message, index }: MessageProps) { return ( {message.content} ); }, (prevProps, nextProps) => { return ( prevProps.message.content === nextProps.message.content && prevProps.message.role === nextProps.message.role ); }, ); const MessageList = memo(function MessageList({ messages }: MessageListProps) { if (messages.length <= 2) return null; return ( {messages .slice(2) .filter((message) => message.content.length > 0) .map((message, index) => ( ))} ); }); export default MessageList;