forked from CopilotKit/CopilotKit
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathRenderMessage.tsx
More file actions
61 lines (59 loc) · 1.71 KB
/
Copy pathRenderMessage.tsx
File metadata and controls
61 lines (59 loc) · 1.71 KB
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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
import { RenderMessageProps } from "../props";
import { UserMessage as DefaultUserMessage } from "./UserMessage";
import { AssistantMessage as DefaultAssistantMessage } from "./AssistantMessage";
import { ImageRenderer as DefaultImageRenderer } from "./ImageRenderer";
export function RenderMessage({
UserMessage = DefaultUserMessage,
AssistantMessage = DefaultAssistantMessage,
ImageRenderer = DefaultImageRenderer,
...props
}: RenderMessageProps) {
const {
message,
messages,
inProgress,
index,
isCurrentMessage,
onRegenerate,
onCopy,
onThumbsUp,
onThumbsDown,
messageFeedback,
markdownTagRenderers,
} = props;
switch (message.role) {
case "user":
return (
<UserMessage
key={index}
rawData={message}
data-message-role="user"
message={message}
ImageRenderer={ImageRenderer}
/>
);
case "assistant":
return (
<AssistantMessage
key={index}
data-message-role="assistant"
subComponent={message.generativeUI?.()}
rawData={message}
message={message}
messages={messages}
isLoading={inProgress && isCurrentMessage && !message.content}
isGenerating={inProgress && isCurrentMessage && !!message.content}
isCurrentMessage={isCurrentMessage}
onRegenerate={() => onRegenerate?.(message.id)}
onCopy={onCopy}
onThumbsUp={onThumbsUp}
onThumbsDown={onThumbsDown}
feedback={messageFeedback?.[message.id] || null}
markdownTagRenderers={markdownTagRenderers}
ImageRenderer={ImageRenderer}
/>
);
default:
return null;
}
}