| <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 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) ?? [])} |
| {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 ?? []} |
| {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> |
| |