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 EliTabelaColunasConfig const visiveis = Array.isArray(v.visiveis) ? v.visiveis.filter((x: unknown) => typeof x === "string") : [] const invisiveis = Array.isArray(v.invisiveis) ? v.invisiveis.filter((x: unknown) => 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 } }