Files
MyGoNavi/frontend/src/utils/sqlFileTabDrafts.ts
Syngnat c405eb08b5 feat(tabs): 支持标签展示配置并提示保存 SQL 文件
- 新增标签展示元素配置,支持单行、双行布局和元素排序

- 在设置面板提供标签展示入口并持久化用户配置

- 标签右键菜单增加标签设置入口并优化悬浮信息展示

- 关闭外部 SQL 文件标签前检测未保存草稿并支持保存后关闭
2026-06-02 11:16:25 +08:00

45 lines
1.2 KiB
TypeScript

const drafts = new Map<string, string>();
const toTabId = (value: unknown): string => String(value ?? '').trim();
export const setQueryTabDraft = (tabId: string, content: string): void => {
const id = toTabId(tabId);
if (!id) return;
drafts.set(id, String(content ?? ''));
};
export const getQueryTabDraft = (tabId: string, fallback = ''): string => {
const id = toTabId(tabId);
if (!id || !drafts.has(id)) {
return fallback;
}
return drafts.get(id) ?? fallback;
};
export const clearQueryTabDraft = (tabId: string): void => {
const id = toTabId(tabId);
if (!id) return;
drafts.delete(id);
};
export const hasQueryTabDraft = (tabId: string): boolean => {
const id = toTabId(tabId);
return Boolean(id && drafts.has(id));
};
export const setSQLFileTabDraft = (tabId: string, content: string): void => {
setQueryTabDraft(tabId, content);
};
export const getSQLFileTabDraft = (tabId: string, fallback = ''): string => {
return getQueryTabDraft(tabId, fallback);
};
export const clearSQLFileTabDraft = (tabId: string): void => {
clearQueryTabDraft(tabId);
};
export const hasSQLFileTabDraft = (tabId: string): boolean => {
return hasQueryTabDraft(tabId);
};