Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 | 4x 4x 4x 4x 4x 4x 7x 21x 5x 5x 5x 5x 15x 5x 4x 12x 12x 12x 3x | export const EXPERIMENTAL_WORKSPACE_LAYOUT_KEY = "unoExperimentalWorkspaceLayout";
export const EXPERIMENTAL_WORKSPACE_COLUMNS_KEY = "unoExperimentalWorkspaceColumns";
export const EXPERIMENTAL_WORKSPACE_LAYOUT_CHANGE_EVENT = "experimentalWorkspaceLayoutChange";
export const DEFAULT_EXPERIMENTAL_WORKSPACE_LAYOUT = false;
export type WorkspaceColumn = "code" | "simulation" | "tutor";
export type WorkspaceColumnVisibility = Record<WorkspaceColumn, boolean>;
export type WorkspaceColumnSizes = Record<WorkspaceColumn, number>;
export const DEFAULT_WORKSPACE_COLUMN_VISIBILITY: WorkspaceColumnVisibility = {
code: true,
simulation: true,
tutor: false,
};
export const DEFAULT_WORKSPACE_COLUMN_SIZES: WorkspaceColumnSizes = {
code: 42,
simulation: 33,
tutor: 25,
};
export function getVisibleWorkspaceColumns(
visibility: WorkspaceColumnVisibility,
): WorkspaceColumn[] {
return (["code", "simulation", "tutor"] as WorkspaceColumn[]).filter(
(column) => visibility[column],
);
}
export function getWorkspaceResizePairs(
columns: WorkspaceColumn[],
): Array<[WorkspaceColumn, WorkspaceColumn]> {
return columns.slice(0, -1).map((column, index) => [column, columns[index + 1]]);
}
export function getWorkspaceDefaultSizes(
columns: WorkspaceColumn[],
rememberedSizes: WorkspaceColumnSizes = DEFAULT_WORKSPACE_COLUMN_SIZES,
): number[] {
Iif (columns.length === 0) return [];
Iif (columns.length === 1) return [100];
const rememberedDefaults = Object.entries(DEFAULT_WORKSPACE_COLUMN_SIZES).every(
([column, size]) => rememberedSizes[column as WorkspaceColumn] === size,
);
if (columns.length === 2 && rememberedDefaults) return [50, 50];
const defaults = DEFAULT_WORKSPACE_COLUMN_SIZES;
const rawSizes = columns.map((column) => rememberedSizes[column] ?? defaults[column]);
const total = rawSizes.reduce((sum, size) => sum + size, 0);
return total > 0 ? rawSizes.map((size) => (size / total) * 100) : columns.map(() => 100 / columns.length);
}
export function parseWorkspaceColumnVisibility(value: string | null): WorkspaceColumnVisibility {
Eif (!value) return { ...DEFAULT_WORKSPACE_COLUMN_VISIBILITY };
try {
const parsed = JSON.parse(value) as Partial<WorkspaceColumnVisibility>;
return {
code: parsed.code !== false,
simulation: parsed.simulation !== false,
tutor: parsed.tutor === true,
};
} catch {
return { ...DEFAULT_WORKSPACE_COLUMN_VISIBILITY };
}
}
|