File size: 2,893 Bytes
bc27e65
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
<script lang="ts">

	import { toast } from 'svelte-sonner';



	import { tick, getContext, onMount, createEventDispatcher } from 'svelte';

	const dispatch = createEventDispatcher();

	const i18n = getContext('i18n');



	import { settings } from '$lib/stores';

	import { copyToClipboard } from '$lib/utils';



	import MultiResponseMessages from './MultiResponseMessages.svelte';

	import ResponseMessage from './ResponseMessage.svelte';

	import UserMessage from './UserMessage.svelte';



	export let chatId;

	export let idx = 0;



	export let history;

	export let messageId;



	export let user;



	export let gotoMessage;

	export let showPreviousMessage;

	export let showNextMessage;

	export let updateChat;



	export let editMessage;

	export let saveMessage;

	export let deleteMessage;

	export let rateMessage;

	export let actionMessage;

	export let submitMessage;



	export let regenerateResponse;

	export let continueResponse;

	export let mergeResponses;



	export let addMessages;

	export let triggerScroll;

	export let readOnly = false;

</script>



<div

	class="flex flex-col justify-between px-5 mb-3 w-full {($settings?.widescreenMode ?? null)

		? 'max-w-full'

		: 'max-w-5xl'} mx-auto rounded-lg group"

>

	{#if history.messages[messageId]}

		{#if history.messages[messageId].role === 'user'}

			<UserMessage

				{user}

				{history}

				{messageId}

				isFirstMessage={idx === 0}

				siblings={history.messages[messageId].parentId !== null

					? (history.messages[history.messages[messageId].parentId]?.childrenIds ?? [])

					: (Object.values(history.messages)

							.filter((message) => message.parentId === null)

							.map((message) => message.id) ?? [])}

				{gotoMessage}

				{showPreviousMessage}

				{showNextMessage}

				{editMessage}

				{deleteMessage}

				{readOnly}

			/>

		{:else if (history.messages[history.messages[messageId].parentId]?.models?.length ?? 1) === 1}

			<ResponseMessage

				{chatId}

				{history}

				{messageId}

				isLastMessage={messageId === history.currentId}

				siblings={history.messages[history.messages[messageId].parentId]?.childrenIds ?? []}

				{gotoMessage}

				{showPreviousMessage}

				{showNextMessage}

				{updateChat}

				{editMessage}

				{saveMessage}

				{rateMessage}

				{actionMessage}

				{submitMessage}

				{deleteMessage}

				{continueResponse}

				{regenerateResponse}

				{addMessages}

				{readOnly}

			/>

		{:else}

			<MultiResponseMessages

				bind:history

				{chatId}

				{messageId}

				isLastMessage={messageId === history?.currentId}

				{updateChat}

				{editMessage}

				{saveMessage}

				{rateMessage}

				{actionMessage}

				{submitMessage}

				{deleteMessage}

				{continueResponse}

				{regenerateResponse}

				{mergeResponses}

				{triggerScroll}

				{addMessages}

				{readOnly}

			/>

		{/if}

	{/if}

</div>