import type { Aggregate } from "./Aggregate.js"; import type { Expressions } from "./Expressions.js"; import type { Filter } from "./Filter.js"; import type { FilterReducer } from "./FilterReducer.js"; import type { GroupRollupMode } from "./GroupRollupMode.js"; import type { Sort } from "./Sort.js"; import type { JsonValue } from "./serde_json/JsonValue.js"; /** * The state of an entire `custom_elements::PerspectiveViewerElement` component * and its `Plugin`: the element-level `settings` flag plus the per-panel * [`PanelViewerConfig`]. The split exists so the whole-element config format * can serialize panel entries *without* a `settings` key (it is element-level * state there, carried by the top-level `active` field instead), while the * single-panel format flattens back to the legacy shape. */ export type ViewerConfig = { settings: boolean; version: V; columns_config: { [key in string]?: { [key in string]?: JsonValue; }; }; plugin: string; plugin_config: { [key in string]?: JsonValue; }; table: string | null; theme: string | null; title: string | null; group_by: Array; split_by: Array; sort: Array; filter: Array; group_rollup_mode: GroupRollupMode; filter_op?: FilterReducer; expressions: Expressions; columns: Array; aggregates: { [key in string]?: Aggregate; }; group_by_depth?: number | null; };