signal-desktop/ts/util/leftPaneWidth.ts
2022-03-04 13:14:52 -08:00

28 lines
790 B
TypeScript

// Copyright 2022 Signal Messenger, LLC
// SPDX-License-Identifier: AGPL-3.0-only
import { clamp } from 'lodash';
import { isSorted } from './isSorted';
import { strictAssert } from './assert';
export const MIN_WIDTH = 97;
export const SNAP_WIDTH = 200;
export const MIN_FULL_WIDTH = 280;
export const MAX_WIDTH = 380;
strictAssert(
isSorted([MIN_WIDTH, SNAP_WIDTH, MIN_FULL_WIDTH, MAX_WIDTH]),
'Expected widths to be in the right order'
);
export function getWidthFromPreferredWidth(
preferredWidth: number,
{ requiresFullWidth }: { requiresFullWidth: boolean }
): number {
const clampedWidth = clamp(preferredWidth, MIN_WIDTH, MAX_WIDTH);
if (requiresFullWidth || clampedWidth >= SNAP_WIDTH) {
return Math.max(clampedWidth, MIN_FULL_WIDTH);
}
return MIN_WIDTH;
}