import type { Filter } from "./Filter.js"; import type { Layout } from "./Layout.js"; import type { ViewerConfigInitial } from "./ViewerConfigInitial.js"; /** * The parse target of a workspace config in * [`PerspectiveViewerElement::restoreWorkspace`]. Mirrors * [`WorkspaceConfig`], but `panels` entries are [`ViewerConfigInitial`]s — * every entry creates a NEW panel, so `table` is required by type (a * stray per-panel `settings` key is ignored; it is element-level state, * carried by the top-level `active` field). */ export type WorkspaceConfigUpdate = { active?: string; layout?: Layout; panels: { [key in string]?: ViewerConfigInitial; }; /** * The element-level global (master/detail cross-) filters to re-apply as * a transient overlay on every DETAIL panel. Restored as one * unattributed bucket: the next selection on any master replaces it. * `Option` so an explicit `undefined` property deserializes as * `None` like an absent key (also `masters` / `palette` below). */ global_filters?: Array | null; /** * The master (filter-source) panels, by saved `panels` key. An id not in * `panels` warns and is dropped. */ masters?: Array | null; /** * Named color-scale definitions to apply to the host (see * [`WorkspaceConfig::palette`]), replacing any previously restored * palette. */ palette?: { [key in string]?: string; } | null; };