diff --git a/src/lib/components/chat/Chat.svelte b/src/lib/components/chat/Chat.svelte index 03af994a68..28333f4aef 100644 --- a/src/lib/components/chat/Chat.svelte +++ b/src/lib/components/chat/Chat.svelte @@ -121,9 +121,26 @@ let messageInput: MessageInput | undefined; let autoScroll = true; + let showScrollToTop = false; + let showScrollToBottom = false; let processing = ''; let messagesContainerElement: HTMLDivElement; + const updateScrollButtonsState = () => { + if (!messagesContainerElement) return; + + const distanceFromBottom = + messagesContainerElement.scrollHeight - + messagesContainerElement.scrollTop - + messagesContainerElement.clientHeight; + const distanceFromTop = messagesContainerElement.scrollTop; + const visibilityThreshold = Math.max(120, messagesContainerElement.clientHeight * 0.5); + + autoScroll = distanceFromBottom <= 5; + showScrollToBottom = distanceFromBottom > visibilityThreshold; + showScrollToTop = !autoScroll && distanceFromTop > visibilityThreshold; + }; + let navbarElement; let showEventConfirmation = false; @@ -2903,13 +2920,11 @@