InfoLens / client /src /ts /utils /panelSplitStorage.ts
dqy08's picture
DAG增加linear-arc布局模式;增加DAG用户自定义选项;UI改进
b704fe2
/** 左栏宽度占「主区宽度 − resizer(8px)」的比例,与 LayoutController / chatPanelLayout 内逻辑一致 */
const DEFAULT_RATIO = 0.5;
const MIN_RATIO = 0.1;
const MAX_RATIO = 0.9;
export const PANEL_SPLIT_STORAGE_KEY_START = 'info_radar_panel_split_start';
export const PANEL_SPLIT_STORAGE_KEY_CHAT = 'info_radar_panel_split_chat';
export const PANEL_SPLIT_STORAGE_KEY_ATTRIBUTION = 'info_radar_panel_split_attribution';
export const PANEL_SPLIT_STORAGE_KEY_GEN_ATTRIBUTE = 'info_radar_panel_split_gen_attribute';
export function readPanelSplitRatio(storageKey: string): number {
try {
const raw = localStorage.getItem(storageKey);
if (raw === null) {
return DEFAULT_RATIO;
}
const n = Number(raw);
if (!Number.isFinite(n)) {
return DEFAULT_RATIO;
}
return Math.max(MIN_RATIO, Math.min(MAX_RATIO, n));
} catch {
return DEFAULT_RATIO;
}
}
export function writePanelSplitRatio(storageKey: string, ratio: number): void {
try {
const clamped = Math.max(MIN_RATIO, Math.min(MAX_RATIO, ratio));
localStorage.setItem(storageKey, String(clamped));
} catch {
// ignore quota / private mode
}
}