From feaf434d4e8ede0fe1a5397afac9fb20b0cc18c5 Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Fri, 4 Apr 2025 09:11:54 -0600 Subject: [PATCH] refac: input prompt --- src/lib/components/chat/MessageInput.svelte | 10 +++++-- .../chat/MessageInput/Commands/Prompts.svelte | 17 +++++++----- .../chat/MessageInput/VoiceRecording.svelte | 2 +- src/lib/components/chat/Messages.svelte | 15 +---------- src/lib/components/chat/Placeholder.svelte | 26 +++++++++---------- src/lib/utils/index.ts | 6 ++--- 6 files changed, 35 insertions(+), 41 deletions(-) diff --git a/src/lib/components/chat/MessageInput.svelte b/src/lib/components/chat/MessageInput.svelte index 9251ba4e4..045fe0a3d 100644 --- a/src/lib/components/chat/MessageInput.svelte +++ b/src/lib/components/chat/MessageInput.svelte @@ -21,7 +21,12 @@ TTSWorker } from '$lib/stores'; - import { blobToFile, compressImage, createMessagesList, findWordIndices } from '$lib/utils'; + import { + blobToFile, + compressImage, + createMessagesList, + extractCurlyBraceWords + } from '$lib/utils'; import { transcribeAudio } from '$lib/apis/audio'; import { uploadFile } from '$lib/apis/files'; import { generateAutoCompletion } from '$lib/apis'; @@ -631,6 +636,7 @@ {#if $settings?.richTextInput ?? true}
0) { const word = words.at(0); diff --git a/src/lib/components/chat/MessageInput/Commands/Prompts.svelte b/src/lib/components/chat/MessageInput/Commands/Prompts.svelte index 26cf1d368..1ac6ae193 100644 --- a/src/lib/components/chat/MessageInput/Commands/Prompts.svelte +++ b/src/lib/components/chat/MessageInput/Commands/Prompts.svelte @@ -1,7 +1,7 @@ diff --git a/src/lib/components/chat/MessageInput/VoiceRecording.svelte b/src/lib/components/chat/MessageInput/VoiceRecording.svelte index 7a30fb74d..a5b781247 100644 --- a/src/lib/components/chat/MessageInput/VoiceRecording.svelte +++ b/src/lib/components/chat/MessageInput/VoiceRecording.svelte @@ -2,7 +2,7 @@ import { toast } from 'svelte-sonner'; import { createEventDispatcher, tick, getContext, onMount, onDestroy } from 'svelte'; import { config, settings } from '$lib/stores'; - import { blobToFile, calculateSHA256, findWordIndices } from '$lib/utils'; + import { blobToFile, calculateSHA256, extractCurlyBraceWords } from '$lib/utils'; import { transcribeAudio } from '$lib/apis/audio'; diff --git a/src/lib/components/chat/Messages.svelte b/src/lib/components/chat/Messages.svelte index b55a27b40..160d7eb37 100644 --- a/src/lib/components/chat/Messages.svelte +++ b/src/lib/components/chat/Messages.svelte @@ -14,7 +14,7 @@ import { toast } from 'svelte-sonner'; import { getChatList, updateChatById } from '$lib/apis/chats'; - import { copyToClipboard, findWordIndices } from '$lib/utils'; + import { copyToClipboard, extractCurlyBraceWords } from '$lib/utils'; import Message from './Messages/Message.svelte'; import Loader from '../common/Loader.svelte'; @@ -406,19 +406,6 @@ } prompt = text; - - await tick(); - - const chatInputContainerElement = document.getElementById('chat-input-container'); - if (chatInputContainerElement) { - prompt = p; - - chatInputContainerElement.style.height = ''; - chatInputContainerElement.style.height = - Math.min(chatInputContainerElement.scrollHeight, 200) + 'px'; - chatInputContainerElement.focus(); - } - await tick(); }} /> diff --git a/src/lib/components/chat/Placeholder.svelte b/src/lib/components/chat/Placeholder.svelte index be700ab00..545d43c44 100644 --- a/src/lib/components/chat/Placeholder.svelte +++ b/src/lib/components/chat/Placeholder.svelte @@ -8,7 +8,7 @@ const dispatch = createEventDispatcher(); import { config, user, models as _models, temporaryChatEnabled } from '$lib/stores'; - import { sanitizeResponseContent, findWordIndices } from '$lib/utils'; + import { sanitizeResponseContent, extractCurlyBraceWords } from '$lib/utils'; import { WEBUI_BASE_URL } from '$lib/constants'; import Suggestions from './Suggestions.svelte'; @@ -65,9 +65,7 @@ const chatInputElement = document.getElementById('chat-input'); if (chatInputContainerElement) { - chatInputContainerElement.style.height = ''; - chatInputContainerElement.style.height = - Math.min(chatInputContainerElement.scrollHeight, 200) + 'px'; + chatInputContainerElement.scrollTop = chatInputContainerElement.scrollHeight; } await tick(); @@ -86,21 +84,21 @@ } $: models = selectedModels.map((id) => $_models.find((m) => m.id === id)); - + onMount(() => {});
{#if $temporaryChatEnabled} - -
- {$i18n.t('Temporary Chat')} -
-
+ +
+ {$i18n.t('Temporary Chat')} +
+
{/if}
{ }) < 0; }; -export const findWordIndices = (text) => { - const regex = /\[([^\]]+)\]/g; +export const extractCurlyBraceWords = (text) => { + const regex = /\{\{([^}]+)\}\}/g; const matches = []; let match; while ((match = regex.exec(text)) !== null) { matches.push({ - word: match[1], + word: match[1].trim(), startIndex: match.index, endIndex: regex.lastIndex - 1 });