// Copyright 2021-2022 Signal Messenger, LLC // SPDX-License-Identifier: AGPL-3.0-only export const getScrollBottom = ( el: Readonly<Pick<HTMLElement, 'clientHeight' | 'scrollHeight' | 'scrollTop'>> ): number => el.scrollHeight - el.scrollTop - el.clientHeight; export function setScrollBottom( el: Pick<HTMLElement, 'clientHeight' | 'scrollHeight' | 'scrollTop'>, newScrollBottom: number ): void { // We want to mutate the parameter here. // eslint-disable-next-line no-param-reassign el.scrollTop = el.scrollHeight - newScrollBottom - el.clientHeight; } export function scrollToBottom( el: Pick<HTMLElement, 'scrollHeight' | 'scrollTop'> ): void { // We want to mutate the parameter here. // eslint-disable-next-line no-param-reassign el.scrollTop = el.scrollHeight; }