export type EliTabelaColunasConfig = { /** Rotulos das colunas visiveis (em ordem). */ visiveis: string[]; /** Rotulos das colunas invisiveis. */ invisiveis: string[]; }; const STORAGE_PREFIX = "eli:tabela"; export function storageKeyColunas(nomeTabela: string) { return `${STORAGE_PREFIX}:${nomeTabela}:colunas`; } function normalizarConfig(valor: unknown): EliTabelaColunasConfig { if (!valor || typeof valor !== "object") { return { visiveis: [], invisiveis: [] }; } const v = valor as any; const visiveis = Array.isArray(v.visiveis) ? v.visiveis.filter((x: any) => typeof x === "string") : []; const invisiveis = Array.isArray(v.invisiveis) ? v.invisiveis.filter((x: any) => typeof x === "string") : []; return { visiveis, invisiveis }; } export function carregarConfigColunas(nomeTabela: string): EliTabelaColunasConfig { try { const raw = window.localStorage.getItem(storageKeyColunas(nomeTabela)); if (!raw) return { visiveis: [], invisiveis: [] }; return normalizarConfig(JSON.parse(raw)); } catch { return { visiveis: [], invisiveis: [] }; } } export function salvarConfigColunas(nomeTabela: string, config: EliTabelaColunasConfig) { try { window.localStorage.setItem(storageKeyColunas(nomeTabela), JSON.stringify(normalizarConfig(config))); } catch { // ignore } } export function limparConfigColunas(nomeTabela: string) { try { window.localStorage.removeItem(storageKeyColunas(nomeTabela)); } catch { // ignore } }