{#if message.from === "assistant"}
(isTapped = !isTapped)} onkeydown={() => (isTapped = !isTapped)} >
{#if message.files?.length}
{#each message.files as file (file.value)}
{/each}
{/if}
{#if isLast && loading && blocks.length === 0}
{/if} {#if isProcessStreaming} {#each blocks as block, blockIndex (block.type === "tool" ? `tool-${block.uuid}-${blockIndex}` : `block-${blockIndex}`)} {#if block.type === "text"} {#if block.content.trim().length > 0}
{/if} {:else if block.type === "artifact"}
{:else}
{#if block.type === "think"}
{:else}
{/if}
{/if} {/each} {:else} {#each renderUnits as unit, unitIndex (`${unit.kind}-${unitIndex}`)} {#if unit.kind === "text"} {#if isLast && loading && unit.content.length === 0}
{:else if unit.content.trim().length > 0}
{/if} {:else if unit.kind === "artifact"}
{:else if unit.kind === "group"}
{#if unit.blocks.length > 1}
{:else} {@const only = unit.blocks[0]} {#if only.type === "think"}
{:else}
{/if} {/if}
{/if} {/each} {/if}
{#if message.routerMetadata || (!loading && message.content)}
{#if message.routerMetadata && (message.routerMetadata.route || message.routerMetadata.model || message.routerMetadata.provider) && (!isLast || !loading)}
{#if message.routerMetadata.route && message.routerMetadata.model}
{message.routerMetadata.route}
with
{#if publicConfig.isHuggingChat}
{message.routerMetadata.model.split("/").pop()}
{:else}
{message.routerMetadata.model.split("/").pop()}
{/if} {/if} {#if message.routerMetadata.provider} {@const hubOrg = PROVIDERS_HUB_ORGS[message.routerMetadata.provider]}
via
((e.currentTarget as HTMLImageElement).style.display = "none")} /> {message.routerMetadata.provider}
{/if}
{/if} {#if !isLast || !loading}
{ isCopied = true; }} classNames="btn rounded-xs p-1 text-sm text-gray-400 hover:text-gray-500 focus:ring-0 dark:text-gray-400 dark:hover:text-gray-300" value={contentWithoutThink} iconClassNames="text-xs" />
{ onretry?.({ id: message.id }); }} >
{#if alternatives.length > 1 && editMsdgId === null}
onshowAlternateMsg?.(payload)} /> {/if} {/if}
{/if}
{#if lightboxSrc}
(lightboxSrc = null)} /> {/if} {/if} {#if message.from === "user"}
(isTapped = !isTapped)} onkeydown={() => (isTapped = !isTapped)} >
{#if message.files?.length}
{#each message.files as file}
{/each}
{/if}
{#if !editMode}
{message.content.trim()}
{:else}
{ e.preventDefault(); onretry?.({ content: editContentEl?.value, id: message.id }); editMsdgId = null; }} >
Send
{ editMsdgId = null; }} > Cancel
{/if}
{#if alternatives.length > 1 && editMsdgId === null}
onshowAlternateMsg?.(payload)} /> {/if} {#if (alternatives.length > 1 && editMsdgId === null) || (!loading && !editMode)}
{ if (requireAuthUser()) return; editMsdgId = message.id; }} >
Edit
{ try { if (window.isSecureContext && navigator.clipboard) { await navigator.clipboard.writeText(message.content); } else { const textArea = document.createElement("textarea"); textArea.value = message.content; document.body.appendChild(textArea); textArea.focus(); textArea.select(); document.execCommand("copy"); document.body.removeChild(textArea); } isUserMsgCopied = true; clearTimeout(userCopyTimeout); userCopyTimeout = setTimeout(() => { isUserMsgCopied = false; }, 1000); } catch (err) { console.error("Failed to copy:", err); } }} > {#if isUserMsgCopied}
Copied {:else}
Copy {/if}
{/if}
{/if}