{ e.preventDefault(); }} ondrop={(e) => { e.preventDefault(); onDrag = false; }} />
{#if shareModalOpen} shareModal.close()} /> {/if}
{#if preprompt && preprompt != currentModel.preprompt} {/if} {#if messages.length > 0}
{#each messages as message, idx (message.id)} a.includes(message.id)) ?? []} isAuthor={!shared} readOnly={isReadOnly} isLast={idx === messages.length - 1} personaName={message.from === "assistant" && !message.personaResponses ? persona?.name : undefined} personaOccupation={message.from === "assistant" && !message.personaResponses ? persona?.jobSector : undefined} personaStance={message.from === "assistant" && !message.personaResponses ? persona?.stance : undefined} bind:editMsdgId onretry={(payload) => onretry?.(payload)} onshowAlternateMsg={(payload) => onshowAlternateMsg?.(payload)} /> {/each} {#if isReadOnly} {/if}
{:else if pending} {:else} { if (page.data.loginRequired) { $loginModalOpen = true; } else { onmessage?.(content); } }} /> {/if}
{#if !message.length && !messages.length && !sources.length && !loading && currentModel.isRouter && routerExamples.length && !hideRouterExamples}
{#each routerExamples as ex} {/each}
{/if} {#if shouldShowRouterFollowUps}
{#each routerFollowUps as followUp} {/each}
{/if} {#if sources?.length && !loading}
{#each sources as source, index} {#await source then src} { files = files.filter((_, i) => i !== index); }} /> {/await} {/each}
{/if}
{#if !loading} {#if messages && lastMessage && lastMessage.interrupted && !isReadOnly}
{ if (lastMessage && lastMessage.ancestors) { oncontinue?.({ id: lastMessage?.id, }); } }} />
{/if} {/if}
{#if models.find((m) => m.id === currentModel.id)} {#if !currentModel.isRouter || !loading} {#if currentModel.isRouter} {currentModel.displayName} {:else} {currentModel.displayName} {/if} {:else if showRouterDetails && streamingRouterMetadata}
{streamingRouterMetadata.route} with {streamingRouterModelName}
{:else}
Routing
{/if} {:else} {currentModel.id} {/if}
{ e.preventDefault(); handleSubmit(); }} class={{ "relative flex w-full max-w-4xl flex-1 items-center rounded-xl border bg-gray-100 dark:border-gray-700 dark:bg-gray-800": true, "opacity-30": isReadOnly, "max-sm:mb-4": focused && isVirtualKeyboard(), }} > {#if onDrag && isFileUploadEnabled} {:else}
{#if lastIsError} {:else} {/if} {#if loading} onstop?.()} showBorder={true} classNames="absolute bottom-2 right-2 size-7 self-end rounded-full border bg-white text-black shadow transition-none dark:border-transparent dark:bg-gray-600 dark:text-white" /> {:else} {/if}
{/if}