|
<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> |
|
|