import { BasePlugin } from "../-private/base.js"; import { Plugin, PluginPreferences } from "../index.js"; import { Column, Table } from "../../index.js"; interface ColumnVisibilityPreferences extends PluginPreferences { columns: { [columnKey: string]: { isVisible?: boolean; }; }; } declare module "plugins/index" { interface Registry { ColumnVisibility?: ColumnVisibilityPreferences; } } interface Signature { Meta: { Table: TableMeta; Column: ColumnMeta; }; Options: { Plugin: { enabled?: boolean; }; Column: { /** * The default visibilty of the column, when rendered. * The column can still be toggled on and off. * * When interacting with preferences, the value stored in preferenced * will be the inverse of this value (to save space in storage). */ isVisible?: boolean; }; }; } declare class ColumnVisibility extends BasePlugin implements Plugin { name: string; static features: string[]; meta: { column: typeof ColumnMeta; table: typeof TableMeta; }; reset(): void; get columns(): Column[]; } declare class ColumnMeta { private column; constructor(column: Column); get isVisible(): boolean; get isHidden(): boolean; hide: () => void; show: () => void; toggle: () => void; } declare class TableMeta { private table; constructor(table: Table); get visibleColumns(): Column[]; toggleColumnVisibility(column: Column): void; } export { Signature, ColumnVisibility, ColumnMeta, TableMeta };