返回 DeepSeek-Reasonix
workspaceLayout.ts
根目录 / desktop / frontend / src / lib / workspaceLayout.ts
1 export function availableWorkspacePanelWidth({
2 viewportWidth,
3 sidebarCollapsed,
4 sidebarWidth,
5 chatMinWidth,
6 resizerWidth,
7 }: {
8 viewportWidth: number;
9 sidebarCollapsed: boolean;
10 sidebarWidth: number;
11 chatMinWidth: number;
12 resizerWidth: number;
13 }): number {
14 return Math.max(0, viewportWidth - (sidebarCollapsed ? 0 : sidebarWidth) - chatMinWidth - resizerWidth);
15 }
16
17 export function resolveWorkspacePanelWidth({
18 open,
19 maximized,
20 preferredWidth,
21 minWidth,
22 availableWidth,
23 }: {
24 open: boolean;
25 maximized: boolean;
26 preferredWidth: number;
27 minWidth: number;
28 availableWidth: number;
29 }): number {
30 if (!open || maximized) return preferredWidth;
31 return Math.min(Math.max(minWidth, preferredWidth), Math.max(0, availableWidth));
32 }
33
34 export function resolveLiveWorkspacePanelWidth({
35 viewportWidth,
36 sidebarCollapsed,
37 sidebarWidth,
38 chatMinWidth,
39 resizerWidth,
40 open,
41 maximized,
42 preferredWidth,
43 minWidth,
44 }: {
45 viewportWidth: number;
46 sidebarCollapsed: boolean;
47 sidebarWidth: number;
48 chatMinWidth: number;
49 resizerWidth: number;
50 open: boolean;
51 maximized: boolean;
52 preferredWidth: number;
53 minWidth: number;
54 }): number {
55 return resolveWorkspacePanelWidth({
56 open,
57 maximized,
58 preferredWidth,
59 minWidth,
60 availableWidth: availableWorkspacePanelWidth({
61 viewportWidth,
62 sidebarCollapsed,
63 sidebarWidth,
64 chatMinWidth,
65 resizerWidth,
66 }),
67 });
68 }
69
70 export function workspacePanelAriaMinWidth(minWidth: number, renderedWidth: number): number {
71 return Math.min(minWidth, renderedWidth);
72 }
73
73 lines TYPESCRIPT