@perspective-dev/viewer
    Preparing search index...

    Static, immutable configuration for a plugin.

    Returned once per plugin from get_static_config() at registration time and cached in [crate::renderer::PluginRecord]. Consumers (renderer, session, queries, components) read these fields off the renderer's active-plugin metadata rather than calling back into JS.

    <perspective-viewer> reads this exactly once per plugin (at registerPlugin time) and caches it for the lifetime of the application. The result must be stable; do not mutate any field after registration.

    type PluginStaticConfig = {
        can_render_column_styles?: boolean;
        category?: string | null;
        config_column_names?: string[];
        connects_row_order?: boolean;
        group_by_role?: string | null;
        group_rollup_modes?: GroupRollupMode[] | null;
        max_cells?: number | null;
        max_columns?: number | null;
        min_config_columns?: number | null;
        name: string;
        priority?: number | null;
        select_mode?: ColumnSelectMode;
        split_by_role?: string | null;
        split_rollup_modes?: SplitRollupMode[] | null;
    }
    Index

    Properties

    can_render_column_styles?: boolean

    Whether this plugin opts into per-column style controls in the settings sidebar. When true, the StyleTab is shown for active columns and the plugin's column_config_schema is queried for the per-column field set. When false or omitted, no StyleTab is shown.

    category?: string | null

    Category in the plugin picker menu.

    config_column_names?: string[]

    Named column slots. Named columns have replace/swap behavior in drag/drop rather than insert. The length must be at least min_config_columns.

    connects_row_order?: boolean

    true when this plugin CONNECTS its points in row order, so the View's row order is visible in the drawing: an unsorted config renders the table's natural order, which reads as a tangle unless the rows already arrive ordered along the axis. Declared rather than inferred, because "unsorted" is not itself a mistake — a pre-ordered table needs no sort, and the point plugins (scatter, density) do not care at all.

    group_by_role?: string | null

    What group_by MEANS visually for this plugin, e.g. "X Axis" for the Y-series charts or "Hierarchy" for treemap/sunburst. None where the field has no visual role of its own and is a plain aggregation key (the X/Y charts, whose axes both come from columns).

    This is the group_by counterpart of [Self::config_column_names]: the same declaration that names the positional columns slots should say what the other view fields draw, so that consumers — the settings UI's field labels, and the agent's list_plugins contract — read one source instead of restating the mapping.

    group_rollup_modes?: GroupRollupMode[] | null

    Group-rollup modes the plugin accepts, in preference order. The first entry that matches a feature flag becomes the default.

    max_cells?: number | null

    Soft limit on the number of cells (rows × columns) the plugin will render. Triggers the "Rendering N of M" warning when the view exceeds this value (until dismissed).

    max_columns?: number | null

    Soft limit on the number of columns the plugin will render. Triggers the "Rendering N of M" warning when the view exceeds this value (until dismissed).

    min_config_columns?: number | null

    Minimum number of columns the plugin requires to render. Mostly affects drag/drop and column-remove button behavior. undefined is treated identically to 1.

    name: string

    The unique key for this plugin. Used as the plugin field in a ViewerConfig and as the display name key in the <perspective-viewer> UI.

    priority?: number | null

    Plugin load priority. Higher numbers win; ties resolve in registration order. The highest-priority plugin is loaded by default unless restore({ plugin }) overrides it.

    select_mode?: ColumnSelectMode

    Column add/remove behavior. "select" exclusively selects the added column, removing other columns. "toggle" toggles the column on or off based on its current state, leaving other columns alone.

    split_by_role?: string | null

    What split_by MEANS visually for this plugin, e.g. "Series". See [Self::group_by_role].

    split_rollup_modes?: SplitRollupMode[] | null

    Split-rollup modes the plugin accepts, in preference order. The first entry that matches a feature flag becomes the default.