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