1export const THREAD_SIDEBAR_WIDTH_STORAGE_KEY = "chat_thread_sidebar_width";
2const THREAD_SIDEBAR_DEFAULT_WIDTH = 16 * 16;
3const THREAD_SIDEBAR_MIN_WIDTH = 13 * 16;
4export const THREAD_MAIN_CONTENT_MIN_WIDTH = 40 * 16;
5
6export function resolveThreadSidebarMinimumWidth(brandWidth: number): number {
7 return Math.max(THREAD_SIDEBAR_MIN_WIDTH, Math.ceil(brandWidth));
8}
9
10export function resolveThreadSidebarMaximumWidth(
11 viewportWidth: number,
12 minimumWidth = THREAD_SIDEBAR_MIN_WIDTH,
13): number {
14 return Math.max(minimumWidth, Math.floor(viewportWidth) - THREAD_MAIN_CONTENT_MIN_WIDTH);
15}
16
17export function clampThreadSidebarWidth(
18 width: number,
19 minimumWidth: number,
20 maximumWidth: number,
21): number {
22 return Math.min(maximumWidth, Math.max(minimumWidth, width));
23}
24
25export function resolveInitialThreadSidebarWidth(
26 storedWidth: number | null,
27 viewportWidth: number,
28): number {
29 const preferredWidth =
30 storedWidth === null
31 ? THREAD_SIDEBAR_DEFAULT_WIDTH
32 : Math.max(THREAD_SIDEBAR_MIN_WIDTH, storedWidth);
33 return Math.min(preferredWidth, resolveThreadSidebarMaximumWidth(viewportWidth));
34}