Spaces:
Running
Running
File size: 1,068 Bytes
6e29063 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
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[];
}
const MessageList = memo(function MessageList({ messages }: MessageListProps) {
if (messages.length <= 2) return null;
return (
<Stack gap="md">
{messages
.slice(2)
.filter((message) => message.content.length > 0)
.map((message, index) => (
<Paper
key={`${message.role}-${index}`}
shadow="xs"
radius="xl"
p="sm"
maw="90%"
style={{
alignSelf: message.role === "user" ? "flex-end" : "flex-start",
}}
>
<Suspense fallback={message.content}>
<FormattedMarkdown>{message.content}</FormattedMarkdown>
</Suspense>
</Paper>
))}
</Stack>
);
});
export default MessageList;
|