{
    "schemaVersion": "2.1.0",
    "readme": "README.md",
    "modules": [
        {
            "kind": "javascript-module",
            "path": "dist/esm/perspective-viewer.js",
            "summary": "The `<perspective-viewer>` and `<perspective-viewer-plugin>` custom elements.",
            "declarations": [
                {
                    "kind": "class",
                    "name": "PerspectiveViewerElement",
                    "description": "The `<perspective-viewer>` custom element.\n\n# JavaScript Examples\n\nCreate a new `<perspective-viewer>`:\n\n```javascript\nconst viewer = document.createElement(\"perspective-viewer\");\nwindow.body.appendChild(viewer);\n```\n\nComplete example including loading and restoring the [`Table`]:\n\n```javascript\nimport perspective from \"@perspective-dev/viewer\";\nimport perspective from \"@perspective-dev/client\";\n\nconst viewer = document.createElement(\"perspective-viewer\");\nconst worker = await perspective.worker();\n\nawait worker.table(\"x\\n1\", {name: \"table_one\"});\nawait viewer.load(worker);\nawait viewer.restore({table: \"table_one\"});\n```\n\n## Open CSS custom property families\n\nBeyond the enumerated `cssProperties`, `<perspective-viewer>` reads these\nfamilies by prefix, so any name under them is honored:\n\n- `--psp-user--color-<name>`, `--psp-user--gradient-<name>`,\n  `--psp-user--palette-<name>`: user-defined swatches offered by the color,\n  gradient and palette pickers.\n- `--psp-label--<slug>--content`: the UI string for any settings-schema key,\n  where `<slug>` is the key lowercased with non-alphanumerics folded to `-`.\n- `--psp-plugin-name--<plugin>--content`: the display name of a registered\n  plugin.",
                    "members": [
                        {
                            "kind": "method",
                            "name": "addPanel",
                            "privacy": "public",
                            "description": "Add a new, independent panel to this viewer's layout, rendering the\nsupplied [`ViewerConfigInitial`] into it. Unlike [`Self::restore`]'s\nupdate-shaped argument, a new panel has no prior state, so `table`\nis REQUIRED — a table-less call rejects before the layout is\ntouched. The panel uses the default [`perspective_client::Client`]\n(the first passed to [`Self::load`]) to resolve its `table`. Returns\nthe generated panel id.\n\nThe element-level `settings` field does not exist on the argument\ntype (it is shared across the element, not per-panel).\n\n# Arguments\n\n- `config` - The new panel's initial config, whose `table` is required.\n- `options.wait_for_table` - when `true`, a `table` no loaded client\n  hosts yet creates the panel empty and pending until the table is\n  created, instead of the default rejection.",
                            "parameters": [
                                {
                                    "name": "config",
                                    "type": {
                                        "text": "ViewerConfigInitial",
                                        "references": [
                                            {
                                                "name": "ViewerConfigInitial",
                                                "package": "@perspective-dev/viewer",
                                                "start": 0,
                                                "end": 19
                                            }
                                        ]
                                    }
                                },
                                {
                                    "name": "options",
                                    "optional": true,
                                    "type": {
                                        "text": "AddPanelOptions | null",
                                        "references": [
                                            {
                                                "name": "AddPanelOptions",
                                                "package": "@perspective-dev/viewer",
                                                "start": 0,
                                                "end": 15
                                            }
                                        ]
                                    }
                                }
                            ],
                            "return": {
                                "type": {
                                    "text": "Promise<any>"
                                }
                            }
                        },
                        {
                            "kind": "method",
                            "name": "agentConfig",
                            "privacy": "public",
                            "description": "Configure the embedded LLM agent (see `prompt()`), replacing any prior\nconfiguration and conversation.\n\nThe agent core is provider-agnostic: one OpenAI-chat-completions\nprotocol over primitive connection fields. Exactly one of\n`config.url` or `config.engine` is required; the `providers` presets\nexported by this package are plain spreadable collections of these\nfields (`{...providers.anthropic, apiKey}`).\n\n- `config.url` - a full chat-completions endpoint URL (any\n  OpenAI-compatible service: Anthropic/Gemini compatibility endpoints,\n  LM Studio, Ollama, OpenRouter, a proxy...).\n- `config.engine` - an in-page engine object with an OpenAI-compatible\n  `chat.completions.create(request)` method (e.g. WebLLM's `MLCEngine`);\n  mutually exclusive with `url`.\n- `config.headers` - extra request headers, sent verbatim.\n- `config.apiKey` - sugar for the `Authorization: Bearer` header.\n- `config.model` - model id sent with each request; local servers and\n  engines generally answer with whatever model is loaded.\n- `config.name` - cosmetic label for the chat badge (presets set this).\n- `config.systemPrompt` - extra system-prompt context appended to the\n  agent's built-in instructions.\n- `config.maxTurns` - max model turns (tool-call rounds + the final\n  answer) per `prompt()` call. Defaults to 16.\n- `config.docs` - the agent metadata bundle, which supplies the\n  `search_docs` corpus and the rich tool parameter schemas: the packaged\n  `dist/docs/perspective-docs.json` asset as a parsed object (`import\n  docs from \"…json\" with { type: \"json\" }`), a `fetch()` `Response`, an\n  `ArrayBuffer`, a JSON string, or a `Promise` of any of those — and/or\n  an inline array of `{title?, text}` entries for host data definitions.\n  Omitted, `search_docs` searches an empty corpus and the parameter\n  schemas degrade to permissive objects.\n- `config.systemRole` - where the preamble (plus `systemPrompt`) is\n  placed: `\"system\"` (default) or `\"user\"`. Some engines refuse a system\n  message alongside `tools` because they substitute their own — WebLLM's\n  Hermes function calling throws `CustomSystemPromptError` on ANY system\n  message — and those need `\"user\"`, which folds the same text into the\n  opening user turn.\n- `config.entitlements` - access grants limiting which tools the agent\n  is offered (and may call): any of `\"read_view\"`, `\"configure_view\"`,\n  `\"manage_layout\"`, `\"read_docs\"`, `\"read_data\"`. Omitted, all but\n  `\"read_data\"` are granted; `[\"read_view\", \"read_docs\"]` yields a\n  read-only agent.\n\n# JavaScript Examples\n\n```javascript\nimport { providers } from \"@perspective-dev/viewer\";\n\nviewer.agentConfig({\n    ...providers.anthropic,\n    apiKey: \"sk-ant-...\",\n    docs: fetch(\n        \"node_modules/@perspective-dev/viewer/dist/docs/perspective-docs.json\",\n    ),\n});\n```",
                            "parameters": [
                                {
                                    "name": "config",
                                    "type": {
                                        "text": "any"
                                    }
                                }
                            ],
                            "return": {
                                "type": {
                                    "text": "void"
                                }
                            }
                        },
                        {
                            "kind": "method",
                            "name": "agentPrompt",
                            "privacy": "public",
                            "description": "Run one conversational turn of the embedded LLM agent (configured via\n`agentConfig()`), resolving with the agent's final text response after\nany tool calls have been applied to this element. Turns share a\nconversation history (and the chat sidebar's transcript) until\n`agentReset()`; a call made while a turn is already running rejects.\nTool activity is emitted as `perspective-agent-tool` CustomEvents on\nthis element.\n\n# JavaScript Examples\n\n```javascript\nawait viewer.agentPrompt(\"Show me sales by region as a bar chart\");\n```",
                            "parameters": [
                                {
                                    "name": "prompt",
                                    "type": {
                                        "text": "string"
                                    }
                                }
                            ],
                            "return": {
                                "type": {
                                    "text": "Promise<any>"
                                }
                            }
                        },
                        {
                            "kind": "method",
                            "name": "agentReset",
                            "privacy": "public",
                            "description": "Clear the agent's conversation (history and chat transcript), keeping\nits configuration. Cancels any in-flight turn.",
                            "return": {
                                "type": {
                                    "text": "Promise<any>"
                                }
                            }
                        },
                        {
                            "kind": "method",
                            "name": "copy",
                            "privacy": "public",
                            "description": "Copy this viewer's `View` or `Table` data as CSV to the system\nclipboard.\n\n# Arguments\n\n- `method` - The `ExportMethod` (serialized as a `String`) to use to\n  render the data to the Clipboard.\n\n# JavaScript Examples\n\n```javascript\nmyDownloadButton.addEventListener(\"click\", async () => {\n    await viewer.copy();\n})\n```",
                            "parameters": [
                                {
                                    "name": "options",
                                    "optional": true,
                                    "type": {
                                        "text": "ExportOptions | null",
                                        "references": [
                                            {
                                                "name": "ExportOptions",
                                                "package": "@perspective-dev/viewer",
                                                "start": 0,
                                                "end": 13
                                            }
                                        ]
                                    }
                                }
                            ],
                            "return": {
                                "type": {
                                    "text": "Promise<any>"
                                }
                            }
                        },
                        {
                            "kind": "method",
                            "name": "delete",
                            "privacy": "public",
                            "description": "Delete all internal [`View`]s and all associated state, rendering this\n`<perspective-viewer>` unusable and freeing all associated resources.\nDoes not delete any supplied [`Table`] (as this is constructed by the\ncallee).\n\nCalling _any_ method on a `<perspective-viewer>` after [`Self::delete`]\nwill throw.\n\n<div class=\"warning\">\n\nAllowing a `<perspective-viewer>` to be garbage-collected\nwithout calling [`PerspectiveViewerElement::delete`] will leak WASM\nmemory!\n\n</div>\n\n# JavaScript Examples\n\n```javascript\nawait viewer.delete();\n```",
                            "return": {
                                "type": {
                                    "text": "Promise<any>"
                                }
                            }
                        },
                        {
                            "kind": "method",
                            "name": "download",
                            "privacy": "public",
                            "description": "Download this viewer's internal [`View`] data via a browser download\nevent.\n\n# Arguments\n\n- `method` - The `ExportMethod` to use to render the data to download.\n\n# JavaScript Examples\n\n```javascript\nmyDownloadButton.addEventListener(\"click\", async () => {\n    await viewer.download();\n})\n```",
                            "parameters": [
                                {
                                    "name": "options",
                                    "optional": true,
                                    "type": {
                                        "text": "ExportOptions | null",
                                        "references": [
                                            {
                                                "name": "ExportOptions",
                                                "package": "@perspective-dev/viewer",
                                                "start": 0,
                                                "end": 13
                                            }
                                        ]
                                    }
                                }
                            ],
                            "return": {
                                "type": {
                                    "text": "Promise<any>"
                                }
                            }
                        },
                        {
                            "kind": "method",
                            "name": "eject",
                            "privacy": "public",
                            "description": "Remove a [`Client`] from this `<perspective-viewer>` and dispose every\npanel bound to it (each panel's `View` is deleted and its `Table`\nreference released).\n\n# Arguments\n\n- `options` - An optional `{client?: string}` dict naming the client to\n  eject; the active panel's client when omitted.\n\n# JavaScript Examples\n\n```javascript\nawait viewer.eject();\nawait viewer.eject({client: \"remote\"});\n```",
                            "parameters": [
                                {
                                    "name": "options",
                                    "optional": true,
                                    "type": {
                                        "text": "ClientOptions | null",
                                        "references": [
                                            {
                                                "name": "ClientOptions",
                                                "package": "@perspective-dev/viewer",
                                                "start": 0,
                                                "end": 13
                                            }
                                        ]
                                    }
                                }
                            ],
                            "return": {
                                "type": {
                                    "text": "Promise<any>"
                                }
                            }
                        },
                        {
                            "kind": "method",
                            "name": "export",
                            "privacy": "public",
                            "description": "Exports this viewer's internal [`View`] as a JavaSript data, the\nexact type of which depends on the `method` but defaults to `String`\nin CSV format.\n\nThis method is only really useful for the `\"plugin\"` method, which\nwill use the configured plugin's export (e.g. PNG for\n`@perspective-dev/viewer-charts`). Otherwise, prefer to call the\nequivalent method on the underlying [`View`] directly.\n\n# Arguments\n\n- `method` - The `ExportMethod` to use to render the data to download.\n\n# JavaScript Examples\n\n```javascript\nconst data = await viewer.export(\"plugin\");\n```",
                            "parameters": [
                                {
                                    "name": "options",
                                    "optional": true,
                                    "type": {
                                        "text": "ExportOptions | null",
                                        "references": [
                                            {
                                                "name": "ExportOptions",
                                                "package": "@perspective-dev/viewer",
                                                "start": 0,
                                                "end": 13
                                            }
                                        ]
                                    }
                                }
                            ],
                            "return": {
                                "type": {
                                    "text": "Promise<any>"
                                }
                            }
                        },
                        {
                            "kind": "method",
                            "name": "flush",
                            "privacy": "public",
                            "description": "Flush any pending modifications to this `<perspective-viewer>`.  Since\n`<perspective-viewer>`'s API is almost entirely `async`, it may take\nsome milliseconds before any user-initiated changes to the [`View`]\naffects the rendered element.  If you want to make sure all pending\nactions have been rendered, call and await [`Self::flush`].\n\n[`Self::flush`] will resolve immediately if there is no [`Table`] set.\n\n# JavaScript Examples\n\nIn this example, [`Self::restore`] is called without `await`, but the\neventual render which results from this call can still be awaited by\nimmediately awaiting [`Self::flush`] instead.\n\n```javascript\nviewer.restore(config);\nawait viewer.flush();\n```",
                            "return": {
                                "type": {
                                    "text": "Promise<any>"
                                }
                            }
                        },
                        {
                            "kind": "method",
                            "name": "getActivePanel",
                            "privacy": "public",
                            "description": "The id of the active panel — the one the settings panel and status-bar\ntoolbar target — or `null` when the element has zero panels.",
                            "return": {
                                "type": {
                                    "text": "any"
                                }
                            }
                        },
                        {
                            "kind": "method",
                            "name": "getAllPlugins",
                            "privacy": "public",
                            "description": "Get an `Array` of all of the plugin custom elements registered for this\nelement. This may not include plugins which called\n[`registerPlugin`] after the host has rendered for the first time.",
                            "return": {
                                "type": {
                                    "text": "Array<any>"
                                }
                            }
                        },
                        {
                            "kind": "method",
                            "name": "getClient",
                            "privacy": "public",
                            "description": "Get the underlying [`Client`] for this viewer (as passed to, or\nassociated with the [`Table`] passed to,\n[`PerspectiveViewerElement::load`]).\n\n# Arguments\n\n- `wait_for_client` - whether to wait for\n  [`PerspectiveViewerElement::load`] to be called, or fail immediately\n  if [`PerspectiveViewerElement::load`] has not yet been called.\n\n# JavaScript Examples\n\n```javascript\nconst client = await viewer.getClient();\n```",
                            "parameters": [
                                {
                                    "name": "options",
                                    "optional": true,
                                    "type": {
                                        "text": "GetClientOptions | null",
                                        "references": [
                                            {
                                                "name": "GetClientOptions",
                                                "package": "@perspective-dev/viewer",
                                                "start": 0,
                                                "end": 16
                                            }
                                        ]
                                    }
                                }
                            ],
                            "return": {
                                "type": {
                                    "text": "Promise<any>"
                                }
                            }
                        },
                        {
                            "kind": "method",
                            "name": "getEditPort",
                            "privacy": "public",
                            "description": "Get this viewer's edit port for the named panel's [`Table`] (see\n[`Table::update`] for details on ports), or the active panel when\n`panel` is omitted.",
                            "parameters": [
                                {
                                    "name": "options",
                                    "optional": true,
                                    "type": {
                                        "text": "PanelOptions | null",
                                        "references": [
                                            {
                                                "name": "PanelOptions",
                                                "package": "@perspective-dev/viewer",
                                                "start": 0,
                                                "end": 12
                                            }
                                        ]
                                    }
                                }
                            ],
                            "return": {
                                "type": {
                                    "text": "number"
                                }
                            }
                        },
                        {
                            "kind": "method",
                            "name": "getPanelNames",
                            "privacy": "public",
                            "description": "Get the ids of all panels in this viewer's layout, in insertion order.",
                            "return": {
                                "type": {
                                    "text": "Array<any>"
                                }
                            }
                        },
                        {
                            "kind": "method",
                            "name": "getPlugin",
                            "privacy": "public",
                            "description": "Gets a plugin Custom Element with the `name` field, or get the active\nplugin if no `name` is provided.\n\n# Arguments\n\n- `name` - The `name` property of a perspective plugin Custom Element,\n  or `None` for the active plugin's Custom Element.",
                            "parameters": [
                                {
                                    "name": "name",
                                    "optional": true,
                                    "type": {
                                        "text": "string | null"
                                    }
                                }
                            ],
                            "return": {
                                "type": {
                                    "text": "any"
                                }
                            }
                        },
                        {
                            "kind": "method",
                            "name": "getRenderStats",
                            "privacy": "public",
                            "description": "Get render statistics. Some fields of the returned stats object are\nrelative to the last time [`PerspectiveViewerElement::getRenderStats`]\nwas called, ergo calling this method resets these fields.\n\n# JavaScript Examples\n\n```javascript\nconst {virtual_fps, actual_fps} = await viewer.getRenderStats();\n```",
                            "parameters": [
                                {
                                    "name": "options",
                                    "optional": true,
                                    "type": {
                                        "text": "PanelOptions | null",
                                        "references": [
                                            {
                                                "name": "PanelOptions",
                                                "package": "@perspective-dev/viewer",
                                                "start": 0,
                                                "end": 12
                                            }
                                        ]
                                    }
                                }
                            ],
                            "return": {
                                "type": {
                                    "text": "any"
                                }
                            }
                        },
                        {
                            "kind": "method",
                            "name": "getSelection",
                            "privacy": "public",
                            "description": "Return a [`perspective_js::JsViewWindow`] for the currently selected\nregion of the named panel, or the active panel when `panel` is omitted.",
                            "parameters": [
                                {
                                    "name": "options",
                                    "optional": true,
                                    "type": {
                                        "text": "PanelOptions | null",
                                        "references": [
                                            {
                                                "name": "PanelOptions",
                                                "package": "@perspective-dev/viewer",
                                                "start": 0,
                                                "end": 12
                                            }
                                        ]
                                    }
                                }
                            ],
                            "return": {
                                "type": {
                                    "text": "ViewWindow | undefined",
                                    "references": [
                                        {
                                            "name": "ViewWindow",
                                            "package": "@perspective-dev/client",
                                            "start": 0,
                                            "end": 10
                                        }
                                    ]
                                }
                            }
                        },
                        {
                            "kind": "method",
                            "name": "getTable",
                            "privacy": "public",
                            "description": "Get the underlying [`Table`] for this viewer (as passed to\n[`PerspectiveViewerElement::load`] or as the `table` field to\n[`PerspectiveViewerElement::restore`]).\n\n# Arguments\n\n- `wait_for_table` - whether to wait for\n  [`PerspectiveViewerElement::load`] to be called, or fail immediately\n  if [`PerspectiveViewerElement::load`] has not yet been called.\n\n# JavaScript Examples\n\n```javascript\nconst table = await viewer.getTable();\n```",
                            "parameters": [
                                {
                                    "name": "options",
                                    "optional": true,
                                    "type": {
                                        "text": "GetTableOptions | null",
                                        "references": [
                                            {
                                                "name": "GetTableOptions",
                                                "package": "@perspective-dev/viewer",
                                                "start": 0,
                                                "end": 15
                                            }
                                        ]
                                    }
                                }
                            ],
                            "return": {
                                "type": {
                                    "text": "Promise<any>"
                                }
                            }
                        },
                        {
                            "kind": "method",
                            "name": "getThemes",
                            "privacy": "public",
                            "return": {
                                "type": {
                                    "text": "Promise<any>"
                                }
                            }
                        },
                        {
                            "kind": "method",
                            "name": "getView",
                            "privacy": "public",
                            "description": "Get a [`View`] for a panel of this viewer, as currently configured by\nthe user.\n\n# Arguments\n\n- `mode` - which [`View`] to return:\n  - `\"live\"` (default) - the panel's own [`View`], which the viewer\n    replaces on every config change and deletes when auto-paused or\n    [`PerspectiveViewerElement::delete`]d, so calls on it may fail with\n    \"View already deleted\", it must never be deleted by the caller, and\n    it rejects with `No View for panel \"<name>\"` while none is bound\n    (auto-paused or not yet rendered).\n  - `\"clone\"` - a new [`View`] built from the panel's effective config\n    (global filter included), independent of the render lifecycle, which\n    the caller owns and must [`View::delete`].\n  - `\"auto\"` - `\"live\"` when the panel has a bound [`View`], else\n    `\"clone\"`.\n- `panel` - the target panel, or the active panel when omitted.\n\nPlugins which rely on the live [`View`] for their\n[`HTMLPerspectiveViewerPluginElement::draw`] implementations should\ntreat \"View already deleted\" as a _cancellation_ by silently aborting.\n\n# JavaScript Examples\n\n```javascript\nconst view = await viewer.getView();\n```\n\nExport every panel without borrowing the viewer's own [`View`]:\n\n```javascript\nfor (const panel of viewer.getPanelNames()) {\n    const view = await viewer.getView({ panel, mode: \"clone\" });\n    const arrow = await view.to_arrow();\n    await view.delete();\n}\n```",
                            "parameters": [
                                {
                                    "name": "options",
                                    "optional": true,
                                    "type": {
                                        "text": "GetViewOptions | null",
                                        "references": [
                                            {
                                                "name": "GetViewOptions",
                                                "package": "@perspective-dev/viewer",
                                                "start": 0,
                                                "end": 14
                                            }
                                        ]
                                    }
                                }
                            ],
                            "return": {
                                "type": {
                                    "text": "Promise<any>"
                                }
                            }
                        },
                        {
                            "kind": "method",
                            "name": "getViewConfig",
                            "privacy": "public",
                            "description": "Get a copy of the [`ViewConfig`] for the current [`View`]. This is\nnon-blocking as it does not need to access the plugin (unlike\n[`PerspectiveViewerElement::save`]), and also makes no API calls to the\nserver (unlike [`PerspectiveViewerElement::getView`] followed by\n[`View::get_config`])",
                            "parameters": [
                                {
                                    "name": "options",
                                    "optional": true,
                                    "type": {
                                        "text": "PanelOptions | null",
                                        "references": [
                                            {
                                                "name": "PanelOptions",
                                                "package": "@perspective-dev/viewer",
                                                "start": 0,
                                                "end": 12
                                            }
                                        ]
                                    }
                                }
                            ],
                            "return": {
                                "type": {
                                    "text": "Promise<any>"
                                }
                            }
                        },
                        {
                            "kind": "method",
                            "name": "load",
                            "privacy": "public",
                            "description": "Loads a [`Client`], or optionally [`Table`], or optionally a Javascript\n`Promise` which returns a [`Client`] or [`Table`], in this viewer.\n\nLoading a [`Client`] does not render, but subsequent calls to\n[`PerspectiveViewerElement::restore`] will use this [`Client`] to look\nup the proviced `table` name field for the provided\n[`ViewerConfigUpdate`].\n\nLoading a [`Table`] is equivalent to subsequently calling\n[`Self::restore`] with the `table` field set to [`Table::get_name`], and\nwill render the UI in its default state when [`Self::load`] resolves.\nIf you plan to call [`Self::restore`] anyway, prefer passing a\n[`Client`] argument to [`Self::load`] as it will conserve one render.\n\nWhen [`PerspectiveViewerElement::load`] resolves, the first frame of the\nUI + visualization is guaranteed to have been drawn. Awaiting the result\nof this method in a `try`/`catch` block will capture any errors\nthrown during the loading process, or from the [`Client`] `Promise`\nitself.\n\n[`PerspectiveViewerElement::load`] may also be called with a [`Table`],\nwhich is equivalent to:\n\n```javascript\nawait viewer.load(await table.get_client());\nawait viewer.restore({name: await table.get_name()})\n```\n\nIf you plan to call [`PerspectiveViewerElement::restore`] immediately\nafter [`PerspectiveViewerElement::load`] yourself, as is commonly\ndone when loading and configuring a new `<perspective-viewer>`, you\nshould use a [`Client`] as an argument and set the `table` field in the\nrestore call as\n\nA [`Table`] can be created using the\n[`@perspective-dev/client`](https://www.npmjs.com/package/@perspective-dev/client)\nlibrary from NPM (see [`perspective_js`] documentation for details).\n\n# JavaScript Examples\n\n```javascript\nimport perspective from \"@perspective-dev/client\";\n\nconst worker = await perspective.worker();\nviewer.load(worker);\n```\n\n... or\n\n```javascript\nconst table = await worker.table(data, {name: \"superstore\"});\nviewer.load(table);\n```\n\nComplete example:\n\n```javascript\nconst viewer = document.createElement(\"perspective-viewer\");\nconst worker = await perspective.worker();\n\nawait worker.table(\"x\\n1\", {name: \"table_one\"});\nawait viewer.load(worker);\nawait viewer.restore({table: \"table_one\", columns: [\"x\"]});\n```\n\n... or, if you don't want to pass your own arguments to `restore`:\n\n```javascript\nconst viewer = document.createElement(\"perspective-viewer\");\nconst worker = await perspective.worker();\n\nconst table = await worker.table(\"x\\n1\", {name: \"table_one\"});\nawait viewer.load(table);\n```",
                            "parameters": [
                                {
                                    "name": "client",
                                    "type": {
                                        "text": "Client | Table | Promise<Client | Table>",
                                        "references": [
                                            {
                                                "name": "Client",
                                                "package": "@perspective-dev/client",
                                                "start": 0,
                                                "end": 6
                                            },
                                            {
                                                "name": "Table",
                                                "package": "@perspective-dev/client",
                                                "start": 9,
                                                "end": 14
                                            },
                                            {
                                                "name": "Client",
                                                "package": "@perspective-dev/client",
                                                "start": 25,
                                                "end": 31
                                            },
                                            {
                                                "name": "Table",
                                                "package": "@perspective-dev/client",
                                                "start": 34,
                                                "end": 39
                                            }
                                        ]
                                    }
                                }
                            ],
                            "return": {
                                "type": {
                                    "text": "Promise<any>"
                                }
                            }
                        },
                        {
                            "kind": "method",
                            "name": "removePanel",
                            "privacy": "public",
                            "description": "Remove the panel with id `name` from the layout, disposing its engines\n(its `View` is deleted and its `Table` reference released). The last\nremaining panel cannot be removed (resolves as a no-op). Resolves\nafter the panel's teardown run completes, carrying any teardown\nerror — previously fire-and-forget and silently dropped (invariant\nI6). See also [`Self::addPanel`].",
                            "parameters": [
                                {
                                    "name": "name",
                                    "type": {
                                        "text": "string"
                                    }
                                }
                            ],
                            "return": {
                                "type": {
                                    "text": "Promise<any>"
                                }
                            }
                        },
                        {
                            "kind": "method",
                            "name": "reset",
                            "privacy": "public",
                            "description": "Reset a panel's `ViewerConfig` to its data-relative default.\n\nWithout a `panel`, this is ELEMENT-LEVEL: EVERY panel is reset and the\ncross-filter overlay cleared (symmetric with\n[`Self::saveWorkspace`] / [`Self::restoreWorkspace`]). With `{panel}`,\nonly that panel is reset — the other panels and the overlay are left\nuntouched.\n\n# Arguments\n\n- `reset_all` - If set, will clear expressions and column settings as\n  well, and tear down the element's ENTIRE derived-table state: every\n  panel bound to a derived `Table` is released to its root table, and\n  every derivation (pending ones included) is deleted.\n- `options` - An optional `{panel?: string}`; the panel to reset, or\n  every panel when omitted.\n\n# JavaScript Examples\n\n```javascript\nawait viewer.reset();                     // every panel\nawait viewer.reset(true, {panel: \"p1\"});  // just \"p1\", + expressions\n```",
                            "parameters": [
                                {
                                    "name": "reset_all",
                                    "optional": true,
                                    "type": {
                                        "text": "boolean | null"
                                    }
                                },
                                {
                                    "name": "options",
                                    "optional": true,
                                    "type": {
                                        "text": "PanelOptions | null",
                                        "references": [
                                            {
                                                "name": "PanelOptions",
                                                "package": "@perspective-dev/viewer",
                                                "start": 0,
                                                "end": 12
                                            }
                                        ]
                                    }
                                }
                            ],
                            "return": {
                                "type": {
                                    "text": "Promise<any>"
                                }
                            }
                        },
                        {
                            "kind": "method",
                            "name": "resetError",
                            "privacy": "public",
                            "description": "If this element is in an _errored_ state, this method will clear it and\nre-render. Calling this method is equivalent to clicking the error reset\nbutton in the UI.",
                            "return": {
                                "type": {
                                    "text": "Promise<any>"
                                }
                            }
                        },
                        {
                            "kind": "method",
                            "name": "resetThemes",
                            "privacy": "public",
                            "description": "Set the available theme names available in the status bar UI.\n\nCalling [`Self::resetThemes`] may cause the current theme to switch,\nif e.g. the new theme set does not contain the current theme.\n\n# JavaScript Examples\n\nRestrict `<perspective-viewer>` theme options to _only_ default light\nand dark themes, regardless of what is auto-detected from the page's\nCSS:\n\n```javascript\nviewer.resetThemes([\"Pro Light\", \"Pro Dark\"])\n```",
                            "parameters": [
                                {
                                    "name": "themes",
                                    "optional": true,
                                    "type": {
                                        "text": "any[] | null"
                                    }
                                }
                            ],
                            "return": {
                                "type": {
                                    "text": "Promise<any>"
                                }
                            }
                        },
                        {
                            "kind": "method",
                            "name": "resize",
                            "privacy": "public",
                            "description": "Recalculate the viewer's dimensions and redraw.\n\nUse this method to tell `<perspective-viewer>` its dimensions have\nchanged when auto-size mode has been disabled via [`Self::setAutoSize`].\n[`Self::resize`] resolves when the resize-initiated redraw of this\nelement has completed.\n\n# Arguments\n\n- `options` - An optional object with the following fields:\n  - `dimensions` - An optional object `{width, height}` providing\n    explicit size hints (in pixels) for the plugin container. When\n    provided, the plugin element will be temporarily sized to these\n    dimensions during resize, then reset.\n\n# JavaScript Examples\n\n```javascript\nawait viewer.resize()\nawait viewer.resize({dimensions: {width: 800, height: 600}})\n```",
                            "parameters": [
                                {
                                    "name": "options",
                                    "optional": true,
                                    "type": {
                                        "text": "any | null"
                                    }
                                }
                            ],
                            "return": {
                                "type": {
                                    "text": "Promise<any>"
                                }
                            }
                        },
                        {
                            "kind": "method",
                            "name": "restore",
                            "privacy": "public",
                            "description": "Restore a single panel from a full/partial\n[`perspective_js::JsViewConfig`] (its user-configurable state, including\nthe `Table` name) — the active panel, or a specific panel via the\noptional `{panel}` selector.\n\nIf `panel` names no existing panel, a NEW panel is created with that id\nand the config restored into it (an upsert). Creation REQUIRES a\n`table` — the same rule [`Self::addPanel`] enforces in its argument\ntype — and a would-create call without one REJECTS before any state\n(including `settings`) is applied: with no panel to target and no\n`table`, the patch has no data arrival path. In particular, on an\nelement with zero panels every `restore` must carry a `table`.\n\nOn an empty element with a pending [`Self::load`] whose payload is not\nyet classified, the active-target form (no `panel`) instead claims and\nrestores into that load's reserved first panel — see [`Self::load`].\n\nThis restores a SINGLE panel; a workspace config (with a `panels`\nmap) must be applied via [`Self::restoreWorkspace`] — its `panels` /\n`layout` keys are rejected here, as is any key the config format does\nnot define; a rejected config stamped by another release names that\nrelease in the error (upgrade those with `perspective-migrate`).\n\nOne of the best ways to use [`Self::restore`] is by first configuring\na `<perspective-viewer>` as you wish, then using either the `Debug`\npanel or \"Copy\" -> \"config.json\" from the toolbar menu to snapshot\nthe [`Self::restore`] argument as JSON.\n\n# Arguments\n\n- `update` - The config to restore to, as returned by [`Self::save`].\n- `options.panel` - The panel to target, or the active panel when\n  omitted.\n- `options.suppress_errors` - when `true`, a config that was applied and\n  then failed to render only rejects the returned `Promise`, without\n  raising the panel's visible error state.\n- `options.wait_for_table` - when `true`, a `table` no loaded client\n  hosts yet leaves the panel empty and pending until the table is\n  created, instead of the default error.\n\n# JavaScript Examples\n\nLoads a default plugin for the table named `\"superstore\"`:\n\n```javascript\nawait viewer.restore({table: \"superstore\"});\n```\n\nApply a `group_by` to the same `viewer` element, without\nmodifying/resetting other fields - you can omit the `table` field,\nthis has already been set once and is not modified:\n\n```javascript\nawait viewer.restore({group_by: [\"State\"]});\n```",
                            "parameters": [
                                {
                                    "name": "update",
                                    "type": {
                                        "text": "ViewerConfigUpdate",
                                        "references": [
                                            {
                                                "name": "ViewerConfigUpdate",
                                                "package": "@perspective-dev/viewer",
                                                "start": 0,
                                                "end": 18
                                            }
                                        ]
                                    }
                                },
                                {
                                    "name": "options",
                                    "optional": true,
                                    "type": {
                                        "text": "RestoreOptions | null",
                                        "references": [
                                            {
                                                "name": "RestoreOptions",
                                                "package": "@perspective-dev/viewer",
                                                "start": 0,
                                                "end": 14
                                            }
                                        ]
                                    }
                                }
                            ],
                            "return": {
                                "type": {
                                    "text": "Promise<void>"
                                }
                            }
                        },
                        {
                            "kind": "method",
                            "name": "restoreWorkspace",
                            "privacy": "public",
                            "description": "Apply a [`WorkspaceConfigUpdate`] to the element — the multi-panel\ncounterpart of [`Self::restore`] and like it a field-wise update, where\nan absent field is unchanged, `null` resets and a value replaces.\n\n# Arguments\n\n- `update` - The workspace config update: a [`Self::saveWorkspace`]\n  token replaces every panel (`panels` is the whole set), while a token\n  without `panels` keeps them and `layout`, `active` and `masters` name\n  them by their existing ids.\n- `options.wait_for_table` - when `true`, a panel whose `table` no\n  loaded client hosts yet is created empty and pending until the table\n  is created, instead of the default error.\n\n# JavaScript Examples\n\n```javascript\nawait viewer.restoreWorkspace(await otherViewer.saveWorkspace());\n```\n\nCross-filter the current panels without re-creating them:\n\n```javascript\nawait viewer.restoreWorkspace({ global_filters: [[\"Region\", \"==\", \"West\"]] });\n```",
                            "parameters": [
                                {
                                    "name": "update",
                                    "type": {
                                        "text": "WorkspaceConfigUpdate",
                                        "references": [
                                            {
                                                "name": "WorkspaceConfigUpdate",
                                                "package": "@perspective-dev/viewer",
                                                "start": 0,
                                                "end": 21
                                            }
                                        ]
                                    }
                                },
                                {
                                    "name": "options",
                                    "optional": true,
                                    "type": {
                                        "text": "RestoreWorkspaceOptions | null",
                                        "references": [
                                            {
                                                "name": "RestoreWorkspaceOptions",
                                                "package": "@perspective-dev/viewer",
                                                "start": 0,
                                                "end": 23
                                            }
                                        ]
                                    }
                                }
                            ],
                            "return": {
                                "type": {
                                    "text": "Promise<void>"
                                }
                            }
                        },
                        {
                            "kind": "method",
                            "name": "restyleElement",
                            "privacy": "public",
                            "description": "Restyle all plugins from current document.\n\n<div class=\"warning\">\n\n[`Self::restyleElement`] _must_ be called for many runtime changes to\nCSS properties to be reflected in an already-rendered\n`<perspective-viewer>`.\n\n</div>\n\n# JavaScript Examples\n\n```javascript\nviewer.style = \"--psp--color: red\";\nawait viewer.restyleElement();\n```",
                            "return": {
                                "type": {
                                    "text": "Promise<any>"
                                }
                            }
                        },
                        {
                            "kind": "method",
                            "name": "save",
                            "privacy": "public",
                            "description": "Save a single panel's user-configurable state as a [`ViewerConfig`], one\nwhich can be restored via [`Self::restore`] — the active panel, or a\nspecific panel via the optional `{panel}` selector.\n\nThis saves a SINGLE panel; to snapshot the ENTIRE element (every panel +\nlayout + cross-filters) use [`Self::saveWorkspace`].\n\n# Arguments\n\n- `options` - An optional `{panel?: string}`; the panel to save, or the\n  active panel when omitted.\n\n# JavaScript Examples\n\nGet the current `group_by` setting:\n\n```javascript\nconst {group_by} = await viewer.save();\n```\n\nReset workflow attached to an external button `myResetButton`:\n\n```javascript\nconst token = await viewer.save();\nmyResetButton.addEventListener(\"click\", async () => {\n    await viewer.restore(token);\n});\n```",
                            "parameters": [
                                {
                                    "name": "options",
                                    "optional": true,
                                    "type": {
                                        "text": "PanelOptions | null",
                                        "references": [
                                            {
                                                "name": "PanelOptions",
                                                "package": "@perspective-dev/viewer",
                                                "start": 0,
                                                "end": 12
                                            }
                                        ]
                                    }
                                }
                            ],
                            "return": {
                                "type": {
                                    "text": "Promise<ViewerConfig>",
                                    "references": [
                                        {
                                            "name": "ViewerConfig",
                                            "package": "@perspective-dev/viewer",
                                            "start": 8,
                                            "end": 20
                                        }
                                    ]
                                }
                            }
                        },
                        {
                            "kind": "method",
                            "name": "saveWorkspace",
                            "privacy": "public",
                            "description": "Save the ENTIRE element to a [`WorkspaceConfig`]\n(`{version, active?, layout, panels, palette?, ...}`) — the\nmulti-panel counterpart of [`Self::save`]. Unlike [`Self::save`]\n(which emits a single `ViewerConfig` for one panel), this ALWAYS\nemits the workspace format, restorable via\n[`Self::restoreWorkspace`].\n\n# JavaScript Examples\n\n```javascript\nconst token = await viewer.saveWorkspace();\nawait viewer.restoreWorkspace(token);\n```",
                            "parameters": [
                                {
                                    "name": "options",
                                    "optional": true,
                                    "type": {
                                        "text": "SaveWorkspaceOptions | null",
                                        "references": [
                                            {
                                                "name": "SaveWorkspaceOptions",
                                                "package": "@perspective-dev/viewer",
                                                "start": 0,
                                                "end": 20
                                            }
                                        ]
                                    }
                                }
                            ],
                            "return": {
                                "type": {
                                    "text": "Promise<WorkspaceConfig>",
                                    "references": [
                                        {
                                            "name": "WorkspaceConfig",
                                            "package": "@perspective-dev/viewer",
                                            "start": 8,
                                            "end": 23
                                        }
                                    ]
                                }
                            }
                        },
                        {
                            "kind": "method",
                            "name": "setActivePanel",
                            "privacy": "public",
                            "description": "Make the panel with id `name` the active panel, re-targeting the\nsettings panel and status-bar toolbar (and the root's\nsession/renderer subscriptions) to its engines. Resolves after the\nactivation-chrome redraws on both sides of the switch have completed\n(invariant I6).",
                            "parameters": [
                                {
                                    "name": "name",
                                    "type": {
                                        "text": "string"
                                    }
                                }
                            ],
                            "return": {
                                "type": {
                                    "text": "Promise<any>"
                                }
                            }
                        },
                        {
                            "kind": "method",
                            "name": "setAutoPause",
                            "privacy": "public",
                            "description": "Sets the auto-pause behavior of this component.\n\nWhen `true`, this `<perspective-viewer>` will skip rendering\nwhenever it cannot be seen — tracked via an `IntersectionObserver`\non itself (scrolled out of the viewport, `display: none`) combined\nwith the document's page visibility (backgrounded browser tab,\nminimized window). Auto-pause is enabled by default.\n\n# Arguments\n\n- `autopause` Whether to enable `auto-pause` behavior or not.\n\n# JavaScript Examples\n\nDisable auto-size behavior:\n\n```javascript\nviewer.setAutoPause(false);\n```",
                            "parameters": [
                                {
                                    "name": "autopause",
                                    "type": {
                                        "text": "boolean"
                                    }
                                }
                            ],
                            "return": {
                                "type": {
                                    "text": "Promise<any>"
                                }
                            }
                        },
                        {
                            "kind": "method",
                            "name": "setAutoSize",
                            "privacy": "public",
                            "description": "Sets the auto-size behavior of this component.\n\nWhen `true`, this `<perspective-viewer>` will register a\n`ResizeObserver` on itself and call [`Self::resize`] whenever its own\ndimensions change. However, when embedded in a larger application\ncontext, you may want to call [`Self::resize`] manually to avoid\nover-rendering; in this case auto-sizing can be disabled via this\nmethod. Auto-size behavior is enabled by default.\n\n# Arguments\n\n- `autosize` - Whether to enable `auto-size` behavior or not.\n\n# JavaScript Examples\n\nDisable auto-size behavior:\n\n```javascript\nviewer.setAutoSize(false);\n```",
                            "parameters": [
                                {
                                    "name": "autosize",
                                    "type": {
                                        "text": "boolean"
                                    }
                                }
                            ],
                            "return": {
                                "type": {
                                    "text": "void"
                                }
                            }
                        },
                        {
                            "kind": "method",
                            "name": "setSelection",
                            "privacy": "public",
                            "description": "Set the selection [`perspective_js::JsViewWindow`] for the named panel,\nor the active panel when `panel` is omitted.",
                            "parameters": [
                                {
                                    "name": "window",
                                    "optional": true,
                                    "type": {
                                        "text": "ViewWindow | null",
                                        "references": [
                                            {
                                                "name": "ViewWindow",
                                                "package": "@perspective-dev/client",
                                                "start": 0,
                                                "end": 10
                                            }
                                        ]
                                    }
                                },
                                {
                                    "name": "options",
                                    "optional": true,
                                    "type": {
                                        "text": "PanelOptions | null",
                                        "references": [
                                            {
                                                "name": "PanelOptions",
                                                "package": "@perspective-dev/viewer",
                                                "start": 0,
                                                "end": 12
                                            }
                                        ]
                                    }
                                }
                            ],
                            "return": {
                                "type": {
                                    "text": "void"
                                }
                            }
                        },
                        {
                            "kind": "method",
                            "name": "setThrottle",
                            "privacy": "public",
                            "description": "Determines the render throttling behavior. Can be an integer, for\nmillisecond window to throttle render event; or, if `None`, adaptive\nthrottling will be calculated from the measured render time of the\nlast 5 frames.\n\n# Arguments\n\n- `throttle` - The throttle rate in milliseconds (f64), or `None` for\n  adaptive throttling.\n\n# JavaScript Examples\n\nOnly draws at most 1 frame/sec:\n\n```rust\nviewer.setThrottle(1000);\n```",
                            "parameters": [
                                {
                                    "name": "val",
                                    "optional": true,
                                    "type": {
                                        "text": "number | null"
                                    }
                                }
                            ],
                            "return": {
                                "type": {
                                    "text": "void"
                                }
                            }
                        },
                        {
                            "kind": "method",
                            "name": "toggleColumnSettings",
                            "privacy": "public",
                            "description": "Asynchronously opens the column settings for a specific column.\nWhen finished, the `<perspective-viewer>` element will emit a\n\"perspective-toggle-column-settings\" CustomEvent.\nThe event's details property has two fields: `{open: bool, column_name?:\nstring}`. The CustomEvent is also fired whenever the user toggles the\nsidebar manually.",
                            "parameters": [
                                {
                                    "name": "column_name",
                                    "type": {
                                        "text": "string"
                                    }
                                },
                                {
                                    "name": "options",
                                    "optional": true,
                                    "type": {
                                        "text": "PanelOptions | null",
                                        "references": [
                                            {
                                                "name": "PanelOptions",
                                                "package": "@perspective-dev/viewer",
                                                "start": 0,
                                                "end": 12
                                            }
                                        ]
                                    }
                                }
                            ],
                            "return": {
                                "type": {
                                    "text": "Promise<any>"
                                }
                            }
                        },
                        {
                            "kind": "method",
                            "name": "toggleConfig",
                            "privacy": "public",
                            "description": "Toggle (or force) the config panel open/closed.\n\n# Arguments\n\n- `force` - Force the state of the panel open or closed, or `None` to\n  toggle.\n\n# JavaScript Examples\n\n```javascript\nawait viewer.toggleConfig();\n```",
                            "parameters": [
                                {
                                    "name": "force",
                                    "optional": true,
                                    "type": {
                                        "text": "boolean | null"
                                    }
                                }
                            ],
                            "return": {
                                "type": {
                                    "text": "Promise<any>"
                                }
                            }
                        },
                        {
                            "kind": "method",
                            "name": "registerPlugin",
                            "privacy": "public",
                            "static": true,
                            "description": "Register a new plugin via its custom element name.  This method is called\nautomatically as a side effect of importing a plugin module, so this\nmethod should only typically be called by plugin authors.\n\n```javascript\ncustomElements.get(\"perspective-viewer\").registerPlugin(\"my-plugin\");\n```",
                            "parameters": [
                                {
                                    "name": "name",
                                    "type": {
                                        "text": "string"
                                    },
                                    "description": "The `name` of the custom element to register, as supplied\nto the `customElements.define(name)` method."
                                }
                            ],
                            "return": {
                                "type": {
                                    "text": "Promise<void>"
                                }
                            }
                        },
                        {
                            "kind": "method",
                            "name": "setPluginConfigDefaults",
                            "privacy": "public",
                            "static": true,
                            "description": "Merge `defaults` into the `plugin_config` defaults every\n`<perspective-viewer>` on the page applies.\n\n```javascript\ncustomElements\n    .get(\"perspective-viewer\")\n    .setPluginConfigDefaults({ group_pad: 10 });\n```",
                            "parameters": [
                                {
                                    "name": "defaults",
                                    "type": {
                                        "text": "Record<string, unknown> | null"
                                    },
                                    "description": "Values keyed like `plugin_config`, where `null` removes\na default, or `null` to clear the slot."
                                },
                                {
                                    "name": "options",
                                    "optional": true,
                                    "type": {
                                        "text": "ConfigDefaultsOptions",
                                        "references": [
                                            {
                                                "name": "ConfigDefaultsOptions",
                                                "package": "@perspective-dev/viewer",
                                                "start": 0,
                                                "end": 21
                                            }
                                        ]
                                    },
                                    "description": "`plugin` limits the defaults to one plugin."
                                }
                            ],
                            "return": {
                                "type": {
                                    "text": "void"
                                }
                            }
                        },
                        {
                            "kind": "method",
                            "name": "setColumnConfigDefaults",
                            "privacy": "public",
                            "static": true,
                            "description": "Merge `defaults` into the `columns_config` defaults every\n`<perspective-viewer>` on the page applies.\n\n```javascript\ncustomElements\n    .get(\"perspective-viewer\")\n    .setColumnConfigDefaults(\n        { date_format: { timeZone: \"UTC\" } },\n        { type: \"datetime\" },\n    );\n```",
                            "parameters": [
                                {
                                    "name": "defaults",
                                    "type": {
                                        "text": "Record<string, unknown> | null"
                                    },
                                    "description": "Values keyed like one `columns_config` entry, where\n`null` removes a default, or `null` to clear the slot."
                                },
                                {
                                    "name": "options",
                                    "optional": true,
                                    "type": {
                                        "text": "ColumnConfigDefaultsOptions",
                                        "references": [
                                            {
                                                "name": "ColumnConfigDefaultsOptions",
                                                "package": "@perspective-dev/viewer",
                                                "start": 0,
                                                "end": 27
                                            }
                                        ]
                                    },
                                    "description": "`plugin` limits the defaults to one plugin, `type` to\ncolumns of one view type."
                                }
                            ],
                            "return": {
                                "type": {
                                    "text": "void"
                                }
                            }
                        },
                        {
                            "kind": "method",
                            "name": "getPluginConfigDefaults",
                            "privacy": "public",
                            "static": true,
                            "description": "The `plugin_config` defaults set by `setPluginConfigDefaults()`, one\nentry per slot.",
                            "return": {
                                "type": {
                                    "text": "Array<{ plugin?: string; defaults: Record<string, unknown>; }>"
                                }
                            }
                        },
                        {
                            "kind": "method",
                            "name": "getColumnConfigDefaults",
                            "privacy": "public",
                            "static": true,
                            "description": "The `columns_config` defaults set by `setColumnConfigDefaults()`, one\nentry per slot.",
                            "return": {
                                "type": {
                                    "text": "Array<{ plugin?: string; type?: ColumnType; defaults: Record<string, unknown>; }>",
                                    "references": [
                                        {
                                            "name": "ColumnType",
                                            "package": "@perspective-dev/viewer",
                                            "start": 32,
                                            "end": 42
                                        }
                                    ]
                                }
                            }
                        },
                        {
                            "kind": "method",
                            "name": "get_wasm_module",
                            "privacy": "public",
                            "static": true,
                            "return": {
                                "type": {
                                    "text": "WebAssembly.Module"
                                }
                            }
                        },
                        {
                            "kind": "method",
                            "name": "get_worker_url",
                            "privacy": "public",
                            "static": true,
                            "return": {
                                "type": {
                                    "text": "URL"
                                }
                            }
                        }
                    ],
                    "tagName": "perspective-viewer",
                    "customElement": true,
                    "superclass": {
                        "name": "HTMLElement"
                    },
                    "events": [
                        {
                            "name": "perspective-click",
                            "type": {
                                "text": "CustomEvent<PerspectiveClickEventDetail>"
                            },
                            "description": "Fires when a plugin's grid or chart is clicked, with the clicked row and a `config` whose filters reproduce it."
                        },
                        {
                            "name": "perspective-select",
                            "type": {
                                "text": "CustomEvent<PerspectiveSelectDetail>"
                            },
                            "description": "Fires when a plugin's selection changes, with the configs whose filters to insert and remove."
                        },
                        {
                            "name": "perspective-global-filter",
                            "type": {
                                "text": "CustomEvent<PerspectiveSelectDetail>"
                            },
                            "description": "Fires on a master panel's selection, before it is applied to the global filter set."
                        },
                        {
                            "name": "perspective-global-filter-update",
                            "type": {
                                "text": "CustomEvent<Filter[]>",
                                "references": [
                                    {
                                        "name": "Filter",
                                        "package": "@perspective-dev/viewer",
                                        "start": 12,
                                        "end": 18
                                    }
                                ]
                            },
                            "description": "Fires whenever the global filter set changes, with the new `Filter[]`."
                        },
                        {
                            "name": "perspective-toggle-settings",
                            "type": {
                                "text": "CustomEvent<boolean>"
                            },
                            "description": "Fires after the settings sidebar opens or closes, with the new open state."
                        },
                        {
                            "name": "perspective-toggle-settings-before",
                            "type": {
                                "text": "CustomEvent<boolean>"
                            },
                            "description": "Fires before the settings sidebar opens or closes, with the pending open state."
                        },
                        {
                            "name": "perspective-toggle-column-settings",
                            "type": {
                                "text": "CustomEvent<PerspectiveToggleColumnSettingsEventDetail>"
                            },
                            "description": "Fires when the column settings sidebar opens or closes, with the column it shows."
                        },
                        {
                            "name": "perspective-config-update",
                            "type": {
                                "text": "CustomEvent<PerspectiveConfigUpdateEventDetail>"
                            },
                            "description": "Fires after a panel's view config changes, with a deferred `getConfig()` accessor valid only during dispatch."
                        },
                        {
                            "name": "perspective-plugin-update",
                            "type": {
                                "text": "CustomEvent<HTMLPerspectiveViewerPluginElement>"
                            },
                            "description": "Fires when a panel's active plugin changes, with the new plugin element as its detail."
                        },
                        {
                            "name": "perspective-column-style-change",
                            "type": {
                                "text": "CustomEvent<PerspectiveColumnStyleChangeEventDetail>"
                            },
                            "description": "Fires when a panel's per-column style config changes, keyed by column name."
                        },
                        {
                            "name": "perspective-layout-update",
                            "type": {
                                "text": "CustomEvent<PerspectiveLayoutUpdateEventDetail>"
                            },
                            "description": "Fires when a panel is added to or removed from the layout, with the placed panel ids in order."
                        },
                        {
                            "name": "perspective-active-panel-update",
                            "type": {
                                "text": "CustomEvent<PerspectiveActivePanelUpdateEventDetail>"
                            },
                            "description": "Fires when the active panel changes, with its id or `null` at zero panels."
                        },
                        {
                            "name": "perspective-statusbar-pointerdown",
                            "type": {
                                "text": "CustomEvent<PointerEvent>"
                            },
                            "description": "Fires with the original `pointerdown` as its detail when the status bar is pressed."
                        },
                        {
                            "name": "perspective-status-indicator-click",
                            "type": {
                                "text": "CustomEvent<undefined>"
                            },
                            "description": "Fires when a panel's status indicator is clicked."
                        },
                        {
                            "name": "perspective-agent-tool",
                            "type": {
                                "text": "CustomEvent<string>"
                            },
                            "description": "Fires when the agent invokes a tool, with a JSON string of `{name, args}` as its detail."
                        },
                        {
                            "name": "perspective-table-delete",
                            "type": {
                                "text": "CustomEvent<undefined>"
                            },
                            "description": "Fires after a panel's `Table` is deleted and the panel unloaded."
                        },
                        {
                            "name": "perspective-table-delete-before",
                            "type": {
                                "text": "CustomEvent<undefined>"
                            },
                            "description": "Fires before a panel's `Table` is deleted, while its `View` is still live."
                        }
                    ],
                    "attributes": [
                        {
                            "name": "theme",
                            "type": {
                                "text": "string"
                            },
                            "description": "The active theme, as a `--psp-theme-name` value declared by a loaded stylesheet; read when the first panel is created and reflected when the user picks a theme."
                        }
                    ],
                    "slots": [
                        {
                            "name": "",
                            "description": "The plugin element of a single-panel viewer, adopted from the light DOM."
                        },
                        {
                            "name": "modal",
                            "description": "Top-layer overlays such as the expression editor and column settings."
                        },
                        {
                            "name": "<panel-id>",
                            "description": "One named slot per panel; the viewer assigns `slot=<panel-id>` to each plugin element it adopts, so authors never set this by hand."
                        }
                    ],
                    "cssParts": [
                        {
                            "name": "tab",
                            "description": "A panel's tab in the `<regular-layout>` titlebar."
                        }
                    ],
                    "cssProperties": [
                        {
                            "name": "--psp--background-color",
                            "syntax": "<color>",
                            "default": "#ffffff",
                            "description": "Viewer chrome"
                        },
                        {
                            "name": "--psp--color",
                            "syntax": "<color>",
                            "default": "#161616",
                            "description": "Viewer chrome"
                        },
                        {
                            "name": "--psp-active--background",
                            "default": "initial",
                            "description": "Viewer chrome"
                        },
                        {
                            "name": "--psp-active--color",
                            "syntax": "<color>",
                            "default": "#2670a9",
                            "description": "Viewer chrome"
                        },
                        {
                            "name": "--psp-button--font-size",
                            "syntax": "<length>",
                            "default": "16px",
                            "description": "Viewer chrome"
                        },
                        {
                            "name": "--psp-button--min-width",
                            "default": "33px",
                            "description": "Viewer chrome"
                        },
                        {
                            "name": "--psp-calendar--filter",
                            "default": "initial",
                            "description": "Viewer chrome"
                        },
                        {
                            "name": "--psp-charts--axis-lines--color",
                            "syntax": "<color>",
                            "default": "#c5c9d0",
                            "description": "Charts plugin"
                        },
                        {
                            "name": "--psp-charts--axis-ticks--color",
                            "syntax": "<color>",
                            "default": "#161616",
                            "description": "Charts plugin"
                        },
                        {
                            "name": "--psp-charts--gradient--background",
                            "default": "linear-gradient( #4d342f 0%, #e4521b 22.5%, #feeb65 42.5%, #f0f0f0 50%, #dcedc8 57.5%, #42b3d5 67.5%, #1a237e 100% )",
                            "description": "Charts plugin"
                        },
                        {
                            "name": "--psp-charts--gridline--color",
                            "syntax": "<color>",
                            "default": "#eaedef",
                            "description": "Charts plugin"
                        },
                        {
                            "name": "--psp-charts--legend--background",
                            "default": "var(--psp--background-color)",
                            "description": "Charts plugin"
                        },
                        {
                            "name": "--psp-charts--legend--color",
                            "syntax": "<color>",
                            "default": "#161616",
                            "description": "Charts plugin"
                        },
                        {
                            "name": "--psp-charts--map-tiles--attribution-",
                            "description": "Charts plugin"
                        },
                        {
                            "name": "--psp-charts--map-tiles--url",
                            "default": "initial",
                            "description": "Charts plugin"
                        },
                        {
                            "name": "--psp-charts--series--color",
                            "syntax": "<color>",
                            "default": "rgba(31, 119, 180, 0.8)",
                            "description": "Charts plugin"
                        },
                        {
                            "name": "--psp-charts--series-1--color",
                            "syntax": "<color>",
                            "default": "#0366d6",
                            "description": "Charts plugin"
                        },
                        {
                            "name": "--psp-charts--series-10--color",
                            "syntax": "<color>",
                            "default": "#17becf",
                            "description": "Charts plugin"
                        },
                        {
                            "name": "--psp-charts--series-11--color",
                            "syntax": "<color>",
                            "default": "initial",
                            "description": "Charts plugin"
                        },
                        {
                            "name": "--psp-charts--series-12--color",
                            "syntax": "<color>",
                            "default": "initial",
                            "description": "Charts plugin"
                        },
                        {
                            "name": "--psp-charts--series-2--color",
                            "syntax": "<color>",
                            "default": "#ff7f0e",
                            "description": "Charts plugin"
                        },
                        {
                            "name": "--psp-charts--series-3--color",
                            "syntax": "<color>",
                            "default": "#2ca02c",
                            "description": "Charts plugin"
                        },
                        {
                            "name": "--psp-charts--series-4--color",
                            "syntax": "<color>",
                            "default": "#d62728",
                            "description": "Charts plugin"
                        },
                        {
                            "name": "--psp-charts--series-5--color",
                            "syntax": "<color>",
                            "default": "#9467bd",
                            "description": "Charts plugin"
                        },
                        {
                            "name": "--psp-charts--series-6--color",
                            "syntax": "<color>",
                            "default": "#8c564b",
                            "description": "Charts plugin"
                        },
                        {
                            "name": "--psp-charts--series-7--color",
                            "syntax": "<color>",
                            "default": "#e377c2",
                            "description": "Charts plugin"
                        },
                        {
                            "name": "--psp-charts--series-8--color",
                            "syntax": "<color>",
                            "default": "#7f7f7f",
                            "description": "Charts plugin"
                        },
                        {
                            "name": "--psp-charts--series-9--color",
                            "syntax": "<color>",
                            "default": "#bcbd22",
                            "description": "Charts plugin"
                        },
                        {
                            "name": "--psp-charts--tooltip--background",
                            "default": "#ffffff",
                            "description": "Charts plugin"
                        },
                        {
                            "name": "--psp-charts--tooltip--border-color",
                            "default": "#ababab",
                            "description": "Charts plugin"
                        },
                        {
                            "name": "--psp-charts--tooltip--color",
                            "syntax": "<color>",
                            "default": "#161616",
                            "description": "Charts plugin"
                        },
                        {
                            "name": "--psp-charts--treemap--hover-highlight",
                            "default": "initial",
                            "description": "Charts plugin"
                        },
                        {
                            "name": "--psp-charts--treemap--labels",
                            "default": "initial",
                            "description": "Charts plugin"
                        },
                        {
                            "name": "--psp-charts--treemap-axis--lines",
                            "default": "none",
                            "description": "Charts plugin"
                        },
                        {
                            "name": "--psp-code-editor--column--color",
                            "syntax": "<color>",
                            "default": "initial",
                            "description": "Expression editor"
                        },
                        {
                            "name": "--psp-code-editor--comment--color",
                            "syntax": "<color>",
                            "default": "initial",
                            "description": "Expression editor"
                        },
                        {
                            "name": "--psp-code-editor--literal--color",
                            "syntax": "<color>",
                            "default": "initial",
                            "description": "Expression editor"
                        },
                        {
                            "name": "--psp-code-editor--operator--color",
                            "syntax": "<color>",
                            "default": "initial",
                            "description": "Expression editor"
                        },
                        {
                            "name": "--psp-code-editor--symbol--color",
                            "syntax": "<color>",
                            "default": "initial",
                            "description": "Expression editor"
                        },
                        {
                            "name": "--psp-column-selector--font-size",
                            "syntax": "<length>",
                            "default": "16px",
                            "description": "Viewer chrome"
                        },
                        {
                            "name": "--psp-column-type--boolean--color",
                            "syntax": "<color>",
                            "default": "initial",
                            "description": "Viewer chrome"
                        },
                        {
                            "name": "--psp-column-type--boolean--mask-image",
                            "syntax": "<image>",
                            "description": "Icon (mask image)"
                        },
                        {
                            "name": "--psp-column-type--date--color",
                            "syntax": "<color>",
                            "default": "initial",
                            "description": "Viewer chrome"
                        },
                        {
                            "name": "--psp-column-type--date--mask-image",
                            "syntax": "<image>",
                            "description": "Icon (mask image)"
                        },
                        {
                            "name": "--psp-column-type--datetime--mask-image",
                            "syntax": "<image>",
                            "description": "Icon (mask image)"
                        },
                        {
                            "name": "--psp-column-type--float--color",
                            "syntax": "<color>",
                            "default": "initial",
                            "description": "Viewer chrome"
                        },
                        {
                            "name": "--psp-column-type--float--mask-image",
                            "syntax": "<image>",
                            "description": "Icon (mask image)"
                        },
                        {
                            "name": "--psp-column-type--integer--mask-image",
                            "syntax": "<image>",
                            "description": "Icon (mask image)"
                        },
                        {
                            "name": "--psp-column-type--string--color",
                            "syntax": "<color>",
                            "default": "initial",
                            "description": "Viewer chrome"
                        },
                        {
                            "name": "--psp-column-type--string--mask-image",
                            "syntax": "<image>",
                            "description": "Icon (mask image)"
                        },
                        {
                            "name": "--psp-column-type--width",
                            "default": "25px",
                            "description": "Viewer chrome"
                        },
                        {
                            "name": "--psp-config-button--padding",
                            "default": "15px 8px 6px 8px",
                            "description": "Viewer chrome"
                        },
                        {
                            "name": "--psp-datagrid--border-color",
                            "default": "initial",
                            "description": "Datagrid plugin"
                        },
                        {
                            "name": "--psp-datagrid--column-edit-button--content",
                            "syntax": "<string>",
                            "description": "Datagrid plugin"
                        },
                        {
                            "name": "--psp-datagrid--hover--border-color",
                            "default": "initial",
                            "description": "Datagrid plugin"
                        },
                        {
                            "name": "--psp-datagrid--neg-cell--color",
                            "syntax": "<color>",
                            "default": "#ff471e",
                            "description": "Datagrid plugin"
                        },
                        {
                            "name": "--psp-datagrid--pos-cell--color",
                            "syntax": "<color>",
                            "default": "#338dcd",
                            "description": "Datagrid plugin"
                        },
                        {
                            "name": "--psp-datagrid--series-1--color",
                            "syntax": "<color>",
                            "default": "#0366d6",
                            "description": "Datagrid plugin"
                        },
                        {
                            "name": "--psp-datagrid--series-10--color",
                            "syntax": "<color>",
                            "default": "#17becf",
                            "description": "Datagrid plugin"
                        },
                        {
                            "name": "--psp-datagrid--series-11--color",
                            "syntax": "<color>",
                            "default": "initial",
                            "description": "Datagrid plugin"
                        },
                        {
                            "name": "--psp-datagrid--series-12--color",
                            "syntax": "<color>",
                            "default": "initial",
                            "description": "Datagrid plugin"
                        },
                        {
                            "name": "--psp-datagrid--series-2--color",
                            "syntax": "<color>",
                            "default": "#ff7f0e",
                            "description": "Datagrid plugin"
                        },
                        {
                            "name": "--psp-datagrid--series-3--color",
                            "syntax": "<color>",
                            "default": "#2ca02c",
                            "description": "Datagrid plugin"
                        },
                        {
                            "name": "--psp-datagrid--series-4--color",
                            "syntax": "<color>",
                            "default": "#d62728",
                            "description": "Datagrid plugin"
                        },
                        {
                            "name": "--psp-datagrid--series-5--color",
                            "syntax": "<color>",
                            "default": "#9467bd",
                            "description": "Datagrid plugin"
                        },
                        {
                            "name": "--psp-datagrid--series-6--color",
                            "syntax": "<color>",
                            "default": "#8c564b",
                            "description": "Datagrid plugin"
                        },
                        {
                            "name": "--psp-datagrid--series-7--color",
                            "syntax": "<color>",
                            "default": "#e377c2",
                            "description": "Datagrid plugin"
                        },
                        {
                            "name": "--psp-datagrid--series-8--color",
                            "syntax": "<color>",
                            "default": "#7f7f7f",
                            "description": "Datagrid plugin"
                        },
                        {
                            "name": "--psp-datagrid--series-9--color",
                            "syntax": "<color>",
                            "default": "#bcbd22",
                            "description": "Datagrid plugin"
                        },
                        {
                            "name": "--psp-derived--mask-image",
                            "syntax": "<image>",
                            "description": "Icon (mask image)"
                        },
                        {
                            "name": "--psp-dropdown--box-shadow",
                            "default": "5px 5px 0 #00000020",
                            "description": "Viewer chrome"
                        },
                        {
                            "name": "--psp-error--color",
                            "syntax": "<color>",
                            "default": "#ff471e",
                            "description": "Viewer chrome"
                        },
                        {
                            "name": "--psp-expression--error--color",
                            "syntax": "<color>",
                            "default": "initial",
                            "description": "Expression editor"
                        },
                        {
                            "name": "--psp-expression--function--color",
                            "syntax": "<color>",
                            "default": "initial",
                            "description": "Expression editor"
                        },
                        {
                            "name": "--psp-expression--operator--color",
                            "syntax": "<color>",
                            "default": "initial",
                            "description": "Expression editor"
                        },
                        {
                            "name": "--psp-expression--psp-error--color",
                            "syntax": "<color>",
                            "default": "initial",
                            "description": "Expression editor"
                        },
                        {
                            "name": "--psp-icon--active-indicator--mask-image",
                            "syntax": "<image>",
                            "description": "Icon (mask image)"
                        },
                        {
                            "name": "--psp-icon--add-expression--mask-image",
                            "syntax": "<image>",
                            "description": "Icon (mask image)"
                        },
                        {
                            "name": "--psp-icon--checkbox-hover--mask-image",
                            "syntax": "<image>",
                            "description": "Icon (mask image)"
                        },
                        {
                            "name": "--psp-icon--checkbox-off--mask-image",
                            "syntax": "<image>",
                            "description": "Icon (mask image)"
                        },
                        {
                            "name": "--psp-icon--checkbox-on--mask-image",
                            "syntax": "<image>",
                            "description": "Icon (mask image)"
                        },
                        {
                            "name": "--psp-icon--close--mask-image",
                            "syntax": "<image>",
                            "description": "Icon (mask image)"
                        },
                        {
                            "name": "--psp-icon--column-drag-handle--mask-image",
                            "syntax": "<image>",
                            "description": "Icon (mask image)"
                        },
                        {
                            "name": "--psp-icon--column-settings--mask-image",
                            "syntax": "<image>",
                            "description": "Icon (mask image)"
                        },
                        {
                            "name": "--psp-icon--copy--mask-image",
                            "syntax": "<image>",
                            "description": "Icon (mask image)"
                        },
                        {
                            "name": "--psp-icon--downloading--mask-image",
                            "syntax": "<image>",
                            "description": "Icon (mask image)"
                        },
                        {
                            "name": "--psp-icon--drawer-tab--mask-image",
                            "syntax": "<image>",
                            "description": "Icon (mask image)"
                        },
                        {
                            "name": "--psp-icon--drawer-tab-hover--mask-image",
                            "syntax": "<image>",
                            "description": "Icon (mask image)"
                        },
                        {
                            "name": "--psp-icon--drawer-tab-inverted--mask-image",
                            "syntax": "<image>",
                            "description": "Icon (mask image)"
                        },
                        {
                            "name": "--psp-icon--drawer-tab-inverted-hover--mask-image",
                            "syntax": "<image>",
                            "description": "Icon (mask image)"
                        },
                        {
                            "name": "--psp-icon--export--mask-image",
                            "syntax": "<image>",
                            "description": "Icon (mask image)"
                        },
                        {
                            "name": "--psp-icon--free-scroll--mask-image",
                            "syntax": "<image>",
                            "description": "Icon (mask image)"
                        },
                        {
                            "name": "--psp-icon--lock--mask-image",
                            "syntax": "<image>",
                            "description": "Icon (mask image)"
                        },
                        {
                            "name": "--psp-icon--new-panel--mask-image",
                            "syntax": "<image>",
                            "description": "Icon (mask image)"
                        },
                        {
                            "name": "--psp-icon--pin--mask-image",
                            "syntax": "<image>",
                            "description": "Icon (mask image)"
                        },
                        {
                            "name": "--psp-icon--radio-hover--mask-image",
                            "syntax": "<image>",
                            "description": "Icon (mask image)"
                        },
                        {
                            "name": "--psp-icon--radio-off--mask-image",
                            "syntax": "<image>",
                            "description": "Icon (mask image)"
                        },
                        {
                            "name": "--psp-icon--radio-on--mask-image",
                            "syntax": "<image>",
                            "description": "Icon (mask image)"
                        },
                        {
                            "name": "--psp-icon--reset--mask-image",
                            "syntax": "<image>",
                            "description": "Icon (mask image)"
                        },
                        {
                            "name": "--psp-icon--select-arrow--mask-image",
                            "syntax": "<image>",
                            "description": "Icon (mask image)"
                        },
                        {
                            "name": "--psp-icon--sort-abs-asc--mask-image",
                            "syntax": "<image>",
                            "description": "Icon (mask image)"
                        },
                        {
                            "name": "--psp-icon--sort-abs-col-asc--mask-image",
                            "syntax": "<image>",
                            "description": "Icon (mask image)"
                        },
                        {
                            "name": "--psp-icon--sort-abs-col-desc--mask-image",
                            "syntax": "<image>",
                            "description": "Icon (mask image)"
                        },
                        {
                            "name": "--psp-icon--sort-abs-desc--mask-image",
                            "syntax": "<image>",
                            "description": "Icon (mask image)"
                        },
                        {
                            "name": "--psp-icon--sort-asc--mask-image",
                            "syntax": "<image>",
                            "description": "Icon (mask image)"
                        },
                        {
                            "name": "--psp-icon--sort-col-asc--mask-image",
                            "syntax": "<image>",
                            "description": "Icon (mask image)"
                        },
                        {
                            "name": "--psp-icon--sort-col-desc--mask-image",
                            "syntax": "<image>",
                            "description": "Icon (mask image)"
                        },
                        {
                            "name": "--psp-icon--sort-desc--mask-image",
                            "syntax": "<image>",
                            "description": "Icon (mask image)"
                        },
                        {
                            "name": "--psp-icon--sort-none--mask-image",
                            "syntax": "<image>",
                            "description": "Icon (mask image)"
                        },
                        {
                            "name": "--psp-icon--status-ok--mask-image",
                            "syntax": "<image>",
                            "description": "Icon (mask image)"
                        },
                        {
                            "name": "--psp-icon--status-pending--mask-image",
                            "syntax": "<image>",
                            "description": "Icon (mask image)"
                        },
                        {
                            "name": "--psp-icon--theme--mask-image",
                            "syntax": "<image>",
                            "description": "Icon (mask image)"
                        },
                        {
                            "name": "--psp-icon--updating--mask-image",
                            "syntax": "<image>",
                            "description": "Icon (mask image)"
                        },
                        {
                            "name": "--psp-icon-overflow-hint--color",
                            "syntax": "<color>",
                            "default": "rgba(0, 0, 0, 0.2)",
                            "description": "Icon"
                        },
                        {
                            "name": "--psp-icon-overflow-hint--content",
                            "syntax": "<string>",
                            "description": "Icon"
                        },
                        {
                            "name": "--psp-inactive--border-color",
                            "default": "#dadada",
                            "description": "Viewer chrome"
                        },
                        {
                            "name": "--psp-inactive--color",
                            "syntax": "<color>",
                            "default": "#ababab",
                            "description": "Viewer chrome"
                        },
                        {
                            "name": "--psp-input--filter",
                            "default": "initial",
                            "description": "Viewer chrome"
                        },
                        {
                            "name": "--psp-interface-monospace--font-family",
                            "syntax": "<family-name>",
                            "default": "\"ui-monospace\", \"SFMono-Regular\", \"SF Mono\", \"Menlo\", \"Consolas\", \"Liberation Mono\", monospace",
                            "description": "Viewer chrome"
                        },
                        {
                            "name": "--psp-label--active-column-selector--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--add-expression-button--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--aggregate-depth--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--align--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--all-columns--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--alt-axis--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--apply-button--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--attributes-tab--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--auto-alt-y-axis--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--band-inner-frac--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--bar-inner-pad--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--bg-color--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--bg-gradient--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--bg-mode--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--chart-type--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--chat-placeholder--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--chat-reasoning--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--chat-send--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--chat-stop--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--chat-tab--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--color--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--color-range--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--column-color--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--column-columns--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--column-label--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--column-latitude--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--column-longitude--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--column-menus--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--column-size--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--column-size-override--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--column-style-close-button--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--column-style-open-button--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--column-symbol--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--column-tooltip--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--column-x-axis--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--column-y-axis--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--config-button--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--copy-button--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--date-style--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--day--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--debug-tab--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--derive-table--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--derive-table-title--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--derived-release-delete-title--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--derived-release-title--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--derived-snapshot--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--derived-snapshot-title--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--disabled--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--domain-mode--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--edit-mode--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--edit-mode-edit--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--edit-mode-read-only--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--edit-mode-select-column--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--edit-mode-select-region--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--edit-mode-select-row--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--enabled--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--export-button--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--facet-mode--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--facet-zoom-mode--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--fg-color--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--fg-gradient--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--fg-mode--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--filter--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--font-family--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--font-size--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--fractional-digits--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--fractional-seconds--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--gradient--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--gradient-color-mode--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--gradient-heat-max--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--gradient-intensity--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--gradient-radius-px--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--group-axes--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--group-basemap--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--group-by--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--group-color--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--group-column--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--group-density--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--group-facets--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--group-font--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--group-format--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--group-glyph--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--group-legend--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--group-pad--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--group-rows--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--group-tooltip--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--hour--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--hours--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--inactive-column-selector--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--include-zero--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--interpolate--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--legend-anchor--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--legend-height-px--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--legend-mode--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--legend-opacity--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--legend-size-mode--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--legend-width-px--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--legend-x--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--legend-y--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--line-width-px--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--link--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--local-fonts-blocked--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--local-fonts-blocked-title--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--map-tile-alpha--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--map-tile-provider--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--minimum-integer-digits--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--minute--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--month--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--new-from-panel--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--new-from-table--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--new-panel-button--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--no-results--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--notation--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--numeric-axes--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--ohlc-line-width-px--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--palette--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--paste-button--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--plugin-tab--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--point-size-px--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--query-tab--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--request-local-fonts--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--request-local-fonts-title--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--reset-button--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--reset-button-icon--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--role--column-groups--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--role--facets--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--role--hierarchy--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--role--row-groups--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--role--series--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--role--x-axis--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--role--y-axis--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--rounding-increment--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--rounding-mode--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--rounding-priority--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--row-height--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--save-button-icon--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--scroll-lock--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--scroll-lock-alt-toggle--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--scroll-lock-toggle--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--second--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--series--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--series-zoom-mode--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--sign-display--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--significant-digits--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--sort--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--split-by--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--stack--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--style--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--style-tab--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--time-style--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--timezone--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--tooltip-max-column-px--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--tooltip-opacity--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--trailing-zero-display--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--transpose-button--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--tree-collapse--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--tree-expand--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--untitled--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--use-grouping--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--webgl-y1--content",
                            "syntax": "<string>",
                            "default": "\"arrow_upward\"",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--webgl-y2--content",
                            "syntax": "<string>",
                            "default": "\"arrow_downward\"",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--weekday--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--wick-width-px--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--window-alpha--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--window-frame--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--window-offset--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--window-order-by--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--window-partition-by--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--window-source--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--window-tab--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--word-wrap--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--year--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--zebra-color--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-label--zebra-rows--content",
                            "syntax": "<string>",
                            "description": "UI label (intl string)"
                        },
                        {
                            "name": "--psp-openlayers--attribution--filter",
                            "default": "initial",
                            "description": "Map plugin (OpenLayers)"
                        },
                        {
                            "name": "--psp-openlayers--category-1--color",
                            "syntax": "<color>",
                            "default": "#0366d6",
                            "description": "Map plugin (OpenLayers)"
                        },
                        {
                            "name": "--psp-openlayers--category-10--color",
                            "syntax": "<color>",
                            "default": "#17becf",
                            "description": "Map plugin (OpenLayers)"
                        },
                        {
                            "name": "--psp-openlayers--category-2--color",
                            "syntax": "<color>",
                            "default": "#ff7f0e",
                            "description": "Map plugin (OpenLayers)"
                        },
                        {
                            "name": "--psp-openlayers--category-3--color",
                            "syntax": "<color>",
                            "default": "#2ca02c",
                            "description": "Map plugin (OpenLayers)"
                        },
                        {
                            "name": "--psp-openlayers--category-4--color",
                            "syntax": "<color>",
                            "default": "#d62728",
                            "description": "Map plugin (OpenLayers)"
                        },
                        {
                            "name": "--psp-openlayers--category-5--color",
                            "syntax": "<color>",
                            "default": "#9467bd",
                            "description": "Map plugin (OpenLayers)"
                        },
                        {
                            "name": "--psp-openlayers--category-6--color",
                            "syntax": "<color>",
                            "default": "#8c564b",
                            "description": "Map plugin (OpenLayers)"
                        },
                        {
                            "name": "--psp-openlayers--category-7--color",
                            "syntax": "<color>",
                            "default": "#e377c2",
                            "description": "Map plugin (OpenLayers)"
                        },
                        {
                            "name": "--psp-openlayers--category-8--color",
                            "syntax": "<color>",
                            "default": "#7f7f7f",
                            "description": "Map plugin (OpenLayers)"
                        },
                        {
                            "name": "--psp-openlayers--category-9--color",
                            "syntax": "<color>",
                            "default": "#bcbd22",
                            "description": "Map plugin (OpenLayers)"
                        },
                        {
                            "name": "--psp-openlayers--element--background",
                            "default": "#fff",
                            "description": "Map plugin (OpenLayers)"
                        },
                        {
                            "name": "--psp-openlayers--gradient--background",
                            "default": "linear-gradient( #4d342f 0%, #e4521b 22.5%, #feeb65 42.5%, #f0f0f0 50%, #dcedc8 57.5%, #42b3d5 67.5%, #1a237e 100% )",
                            "description": "Map plugin (OpenLayers)"
                        },
                        {
                            "name": "--psp-openlayers--tile-url",
                            "default": "\"http://{a-c}.basemaps.cartocdn.com/light_all/{z}/{x}/{y}.png\"",
                            "description": "Map plugin (OpenLayers)"
                        },
                        {
                            "name": "--psp-placeholder--background",
                            "default": "#8b868045",
                            "description": "Viewer chrome"
                        },
                        {
                            "name": "--psp-plugin-name--candlestick--content",
                            "syntax": "<string>",
                            "description": "Plugin display name (intl string)"
                        },
                        {
                            "name": "--psp-plugin-name--datagrid--content",
                            "syntax": "<string>",
                            "description": "Plugin display name (intl string)"
                        },
                        {
                            "name": "--psp-plugin-name--density--content",
                            "syntax": "<string>",
                            "description": "Plugin display name (intl string)"
                        },
                        {
                            "name": "--psp-plugin-name--heatmap--content",
                            "syntax": "<string>",
                            "description": "Plugin display name (intl string)"
                        },
                        {
                            "name": "--psp-plugin-name--map-density--content",
                            "syntax": "<string>",
                            "description": "Plugin display name (intl string)"
                        },
                        {
                            "name": "--psp-plugin-name--map-line--content",
                            "syntax": "<string>",
                            "description": "Plugin display name (intl string)"
                        },
                        {
                            "name": "--psp-plugin-name--map-scatter--content",
                            "syntax": "<string>",
                            "description": "Plugin display name (intl string)"
                        },
                        {
                            "name": "--psp-plugin-name--ohlc--content",
                            "syntax": "<string>",
                            "description": "Plugin display name (intl string)"
                        },
                        {
                            "name": "--psp-plugin-name--sunburst--content",
                            "syntax": "<string>",
                            "description": "Plugin display name (intl string)"
                        },
                        {
                            "name": "--psp-plugin-name--treemap--content",
                            "syntax": "<string>",
                            "description": "Plugin display name (intl string)"
                        },
                        {
                            "name": "--psp-plugin-name--x-bar--content",
                            "syntax": "<string>",
                            "description": "Plugin display name (intl string)"
                        },
                        {
                            "name": "--psp-plugin-name--x-y-line--content",
                            "syntax": "<string>",
                            "description": "Plugin display name (intl string)"
                        },
                        {
                            "name": "--psp-plugin-name--x-y-scatter--content",
                            "syntax": "<string>",
                            "description": "Plugin display name (intl string)"
                        },
                        {
                            "name": "--psp-plugin-name--y-area--content",
                            "syntax": "<string>",
                            "description": "Plugin display name (intl string)"
                        },
                        {
                            "name": "--psp-plugin-name--y-bar--content",
                            "syntax": "<string>",
                            "description": "Plugin display name (intl string)"
                        },
                        {
                            "name": "--psp-plugin-name--y-line--content",
                            "syntax": "<string>",
                            "description": "Plugin display name (intl string)"
                        },
                        {
                            "name": "--psp-plugin-name--y-scatter--content",
                            "syntax": "<string>",
                            "description": "Plugin display name (intl string)"
                        },
                        {
                            "name": "--psp-plugin-selector--candlestick--content",
                            "syntax": "<string>",
                            "description": "Plugin area"
                        },
                        {
                            "name": "--psp-plugin-selector--datagrid--content",
                            "syntax": "<string>",
                            "description": "Plugin area"
                        },
                        {
                            "name": "--psp-plugin-selector--density--content",
                            "syntax": "<string>",
                            "description": "Plugin area"
                        },
                        {
                            "name": "--psp-plugin-selector--heatmap--content",
                            "syntax": "<string>",
                            "description": "Plugin area"
                        },
                        {
                            "name": "--psp-plugin-selector--map-density--content",
                            "syntax": "<string>",
                            "description": "Plugin area"
                        },
                        {
                            "name": "--psp-plugin-selector--map-line--content",
                            "syntax": "<string>",
                            "description": "Plugin area"
                        },
                        {
                            "name": "--psp-plugin-selector--map-scatter--content",
                            "syntax": "<string>",
                            "description": "Plugin area"
                        },
                        {
                            "name": "--psp-plugin-selector--ohlc--content",
                            "syntax": "<string>",
                            "description": "Plugin area"
                        },
                        {
                            "name": "--psp-plugin-selector--sunburst--content",
                            "syntax": "<string>",
                            "description": "Plugin area"
                        },
                        {
                            "name": "--psp-plugin-selector--treemap--content",
                            "syntax": "<string>",
                            "description": "Plugin area"
                        },
                        {
                            "name": "--psp-plugin-selector--x-bar--content",
                            "syntax": "<string>",
                            "description": "Plugin area"
                        },
                        {
                            "name": "--psp-plugin-selector--x-y-line--content",
                            "syntax": "<string>",
                            "description": "Plugin area"
                        },
                        {
                            "name": "--psp-plugin-selector--x-y-scatter--content",
                            "syntax": "<string>",
                            "description": "Plugin area"
                        },
                        {
                            "name": "--psp-plugin-selector--y-area--content",
                            "syntax": "<string>",
                            "description": "Plugin area"
                        },
                        {
                            "name": "--psp-plugin-selector--y-bar--content",
                            "syntax": "<string>",
                            "description": "Plugin area"
                        },
                        {
                            "name": "--psp-plugin-selector--y-line--content",
                            "syntax": "<string>",
                            "description": "Plugin area"
                        },
                        {
                            "name": "--psp-plugin-selector--y-scatter--content",
                            "syntax": "<string>",
                            "description": "Plugin area"
                        },
                        {
                            "name": "--psp-select--background-color",
                            "syntax": "<color>",
                            "default": "none",
                            "description": "Viewer chrome"
                        },
                        {
                            "name": "--psp-select--padding",
                            "default": "0px",
                            "description": "Viewer chrome"
                        },
                        {
                            "name": "--psp-sidebar--background",
                            "description": "Viewer chrome"
                        },
                        {
                            "name": "--psp-status-icon--connected--color",
                            "syntax": "<color>",
                            "default": "initial",
                            "description": "Status bar"
                        },
                        {
                            "name": "--psp-status-icon--initializing--color",
                            "syntax": "<color>",
                            "default": "initial",
                            "description": "Status bar"
                        },
                        {
                            "name": "--psp-status-icon--keyframes-end--transform",
                            "description": "Status bar"
                        },
                        {
                            "name": "--psp-status-icon--keyframes-start--transform",
                            "description": "Status bar"
                        },
                        {
                            "name": "--psp-status-icon--psp-error--color",
                            "syntax": "<color>",
                            "default": "initial",
                            "description": "Status bar"
                        },
                        {
                            "name": "--psp-status-icon--updating-keyframes-end--filter",
                            "description": "Status bar"
                        },
                        {
                            "name": "--psp-status-icon--updating-keyframes-end--transform",
                            "description": "Status bar"
                        },
                        {
                            "name": "--psp-status-icon--updating-keyframes-start--filter",
                            "description": "Status bar"
                        },
                        {
                            "name": "--psp-status-icon--updating-keyframes-start--transform",
                            "description": "Status bar"
                        },
                        {
                            "name": "--psp-theme-name",
                            "syntax": "<string>",
                            "default": "\"Pro Light\"",
                            "description": "Theme name"
                        },
                        {
                            "name": "--psp-toolbar-edit-mode-edit--content",
                            "syntax": "<string>",
                            "description": "Viewer chrome"
                        },
                        {
                            "name": "--psp-toolbar-edit-mode-read-only--content",
                            "syntax": "<string>",
                            "description": "Viewer chrome"
                        },
                        {
                            "name": "--psp-toolbar-edit-mode-select-column--content",
                            "syntax": "<string>",
                            "description": "Viewer chrome"
                        },
                        {
                            "name": "--psp-toolbar-edit-mode-select-region--content",
                            "syntax": "<string>",
                            "description": "Viewer chrome"
                        },
                        {
                            "name": "--psp-toolbar-edit-mode-select-row--content",
                            "syntax": "<string>",
                            "description": "Viewer chrome"
                        },
                        {
                            "name": "--psp-toolbar-edit-mode-select-row-tree--content",
                            "syntax": "<string>",
                            "description": "Viewer chrome"
                        },
                        {
                            "name": "--psp-toolbar-scroll-lock--content",
                            "syntax": "<string>",
                            "description": "Viewer chrome"
                        },
                        {
                            "name": "--psp-toolbar-scroll-lock-active--content",
                            "syntax": "<string>",
                            "description": "Viewer chrome"
                        },
                        {
                            "name": "--psp-top-panel-row--display",
                            "default": "inline-flex",
                            "description": "Viewer chrome"
                        },
                        {
                            "name": "--psp-warning--background",
                            "default": "#042121",
                            "description": "Viewer chrome"
                        },
                        {
                            "name": "--psp-warning--color",
                            "syntax": "<color>",
                            "default": "#fdfffd",
                            "description": "Viewer chrome"
                        }
                    ]
                },
                {
                    "kind": "class",
                    "name": "PerspectiveDebugPluginElement",
                    "description": "The `<perspective-viewer-plugin>` element.\n\nThe default perspective plugin which is registered and activated\nautomcatically when a `<perspective-viewer>` is loaded without plugins.\nWhile you will not typically instantiate this class directly, it is simple\nenough to function as a good \"default\" plugin implementation which can be\nextended to create custom plugins.\n\n# Example\n```javascript\nclass MyPlugin extends customElements.get(\"perspective-viewer-plugin\") {\n   // Custom plugin overrides\n}\n```",
                    "members": [
                        {
                            "kind": "method",
                            "name": "clear",
                            "privacy": "public",
                            "return": {
                                "type": {
                                    "text": "Promise<any>"
                                }
                            }
                        },
                        {
                            "kind": "method",
                            "name": "delete",
                            "privacy": "public",
                            "return": {
                                "type": {
                                    "text": "Promise<any>"
                                }
                            }
                        },
                        {
                            "kind": "method",
                            "name": "draw",
                            "privacy": "public",
                            "description": "# Notes\n\nWhen you pass a `wasm_bindgen` wrapped type _into_ Rust, it acts like a\nmove. Ergo, if you replace the `&` in the `view` argument, the JS copy\nof the `View` will be invalid",
                            "parameters": [
                                {
                                    "name": "view",
                                    "type": {
                                        "text": "View",
                                        "references": [
                                            {
                                                "name": "View",
                                                "package": "@perspective-dev/client",
                                                "start": 0,
                                                "end": 4
                                            }
                                        ]
                                    }
                                }
                            ],
                            "return": {
                                "type": {
                                    "text": "Promise<any>"
                                }
                            }
                        },
                        {
                            "kind": "method",
                            "name": "resize",
                            "privacy": "public",
                            "return": {
                                "type": {
                                    "text": "Promise<any>"
                                }
                            }
                        },
                        {
                            "kind": "method",
                            "name": "restore",
                            "privacy": "public",
                            "parameters": [
                                {
                                    "name": "_config",
                                    "optional": true,
                                    "type": {
                                        "text": "any | null"
                                    }
                                }
                            ],
                            "return": {
                                "type": {
                                    "text": "void"
                                }
                            }
                        },
                        {
                            "kind": "method",
                            "name": "restyle",
                            "privacy": "public",
                            "return": {
                                "type": {
                                    "text": "void"
                                }
                            }
                        },
                        {
                            "kind": "method",
                            "name": "save",
                            "privacy": "public",
                            "return": {
                                "type": {
                                    "text": "any"
                                }
                            }
                        },
                        {
                            "kind": "method",
                            "name": "update",
                            "privacy": "public",
                            "description": "Delegates to `draw()` VIRTUALLY — through the JS element's `draw`\nproperty, never `self.draw(view)` (Rust static dispatch).",
                            "parameters": [
                                {
                                    "name": "view",
                                    "type": {
                                        "text": "View",
                                        "references": [
                                            {
                                                "name": "View",
                                                "package": "@perspective-dev/client",
                                                "start": 0,
                                                "end": 4
                                            }
                                        ]
                                    }
                                }
                            ],
                            "return": {
                                "type": {
                                    "text": "Promise<any>"
                                }
                            }
                        },
                        {
                            "kind": "field",
                            "name": "config_column_names",
                            "privacy": "public",
                            "type": {
                                "text": "any"
                            },
                            "readonly": true
                        },
                        {
                            "kind": "field",
                            "name": "min_config_columns",
                            "privacy": "public",
                            "type": {
                                "text": "any"
                            },
                            "readonly": true
                        },
                        {
                            "kind": "field",
                            "name": "name",
                            "privacy": "public",
                            "type": {
                                "text": "string"
                            },
                            "readonly": true
                        },
                        {
                            "kind": "field",
                            "name": "select_mode",
                            "privacy": "public",
                            "type": {
                                "text": "string"
                            },
                            "readonly": true
                        }
                    ],
                    "tagName": "perspective-viewer-plugin",
                    "customElement": true,
                    "superclass": {
                        "name": "HTMLElement"
                    }
                },
                {
                    "kind": "class",
                    "name": "HTMLPerspectiveViewerPluginElement",
                    "description": "The `<perspective-viewer-plugin>` element, the default perspective plugin\nwhich is registered and activated automcatically when a\n`<perspective-viewer>` is loaded without plugins.  While you will not\ntypically instantiate this class directly, it is simple enough to function\nas a good \"default\" plugin implementation which can be extended to create\ncustom plugins.\n\n```javascript\nclass MyPlugin extends customElements.get(\"perspective-viewer-plugin\") {\n   // Custom plugin overrides\n}\n```",
                    "superclass": {
                        "name": "HTMLElement"
                    },
                    "members": [
                        {
                            "kind": "method",
                            "name": "get_static_config",
                            "privacy": "public",
                            "return": {
                                "type": {
                                    "text": "PluginStaticConfig",
                                    "references": [
                                        {
                                            "name": "PluginStaticConfig",
                                            "package": "@perspective-dev/viewer",
                                            "start": 0,
                                            "end": 18
                                        }
                                    ]
                                }
                            }
                        },
                        {
                            "kind": "method",
                            "name": "column_style_config",
                            "privacy": "public",
                            "return": {
                                "type": {
                                    "text": "any"
                                }
                            }
                        },
                        {
                            "kind": "method",
                            "name": "update",
                            "privacy": "public",
                            "parameters": [
                                {
                                    "name": "view",
                                    "type": {
                                        "text": "View",
                                        "references": [
                                            {
                                                "name": "View",
                                                "package": "@perspective-dev/client",
                                                "start": 0,
                                                "end": 4
                                            }
                                        ]
                                    }
                                }
                            ],
                            "return": {
                                "type": {
                                    "text": "Promise<void>"
                                }
                            }
                        },
                        {
                            "kind": "method",
                            "name": "draw",
                            "privacy": "public",
                            "parameters": [
                                {
                                    "name": "view",
                                    "type": {
                                        "text": "View",
                                        "references": [
                                            {
                                                "name": "View",
                                                "package": "@perspective-dev/client",
                                                "start": 0,
                                                "end": 4
                                            }
                                        ]
                                    }
                                }
                            ],
                            "return": {
                                "type": {
                                    "text": "Promise<void>"
                                }
                            }
                        },
                        {
                            "kind": "method",
                            "name": "clear",
                            "privacy": "public",
                            "return": {
                                "type": {
                                    "text": "Promise<void>"
                                }
                            }
                        },
                        {
                            "kind": "method",
                            "name": "resize",
                            "privacy": "public",
                            "parameters": [
                                {
                                    "name": "view",
                                    "type": {
                                        "text": "View",
                                        "references": [
                                            {
                                                "name": "View",
                                                "package": "@perspective-dev/client",
                                                "start": 0,
                                                "end": 4
                                            }
                                        ]
                                    }
                                }
                            ],
                            "return": {
                                "type": {
                                    "text": "Promise<void>"
                                }
                            }
                        },
                        {
                            "kind": "method",
                            "name": "restyle",
                            "privacy": "public",
                            "return": {
                                "type": {
                                    "text": "void"
                                }
                            }
                        },
                        {
                            "kind": "method",
                            "name": "restore",
                            "privacy": "public",
                            "return": {
                                "type": {
                                    "text": "void"
                                }
                            }
                        },
                        {
                            "kind": "method",
                            "name": "delete",
                            "privacy": "public",
                            "return": {
                                "type": {
                                    "text": "Promise<void>"
                                }
                            }
                        },
                        {
                            "kind": "field",
                            "name": "supports_streaming",
                            "privacy": "public",
                            "type": {
                                "text": "boolean"
                            },
                            "readonly": true
                        }
                    ]
                },
                {
                    "kind": "variable",
                    "name": "providers",
                    "type": {
                        "text": "{ readonly anthropic: { readonly name: \"anthropic\"; readonly url: \"https://api.anthropic.com/v1/chat/completions\"; readonly headers: { readonly \"anthropic-dangerous-direct-browser-access\": \"true\"; }; readonly model: \"claude-opus-5\"; }; readonly gemini: { readonly name: \"gemini\"; readonly url: \"https://generativelanguage.googleapis.com/v1beta/openai/chat/completions\"; readonly model: \"gemini-2.5-flash\"; }; readonly lmstudio: { readonly name: \"lmstudio\"; readonly url: \"http://localhost:1234/v1/chat/completions\"; }; readonly ollama: { readonly name: \"ollama\"; readonly url: \"http://localhost:11434/v1/chat/completions\"; }; readonly openrouter: { readonly name: \"openrouter\"; readonly url: \"https://openrouter.ai/api/v1/chat/completions\"; }; readonly openai: { readonly name: \"openai\"; readonly url: \"https://api.openai.com/v1/chat/completions\"; readonly model: \"gpt-5.2\"; }; }"
                    }
                },
                {
                    "kind": "function",
                    "name": "createNumberFormatter",
                    "description": "`defaults` is the calling plugin's declared default format, filling in\nthe fields `cfg` leaves unset.",
                    "parameters": [
                        {
                            "name": "type",
                            "type": {
                                "text": "string"
                            }
                        },
                        {
                            "name": "cfg",
                            "optional": true,
                            "type": {
                                "text": "NumberFormatConfig"
                            }
                        },
                        {
                            "name": "defaults",
                            "optional": true,
                            "type": {
                                "text": "NumberFormatConfig"
                            }
                        }
                    ],
                    "return": {
                        "type": {
                            "text": "Intl.NumberFormat"
                        }
                    }
                },
                {
                    "kind": "function",
                    "name": "createDatetimeFormatter",
                    "description": "`defaults` is the calling plugin's declared default `date_format`, which\n`cfg` overrides by the `date_format` group rule.",
                    "parameters": [
                        {
                            "name": "cfg",
                            "optional": true,
                            "type": {
                                "text": "DateFormatConfig"
                            }
                        },
                        {
                            "name": "defaults",
                            "optional": true,
                            "type": {
                                "text": "DateFormatConfig"
                            }
                        }
                    ],
                    "return": {
                        "type": {
                            "text": "Intl.DateTimeFormat"
                        }
                    }
                },
                {
                    "kind": "function",
                    "name": "createDateFormatter",
                    "description": "`defaults` follows the same contract as [`createDatetimeFormatter`];\nonly `dateStyle` applies, in UTC.",
                    "parameters": [
                        {
                            "name": "cfg",
                            "optional": true,
                            "type": {
                                "text": "DateFormatConfig"
                            }
                        },
                        {
                            "name": "defaults",
                            "optional": true,
                            "type": {
                                "text": "DateFormatConfig"
                            }
                        }
                    ],
                    "return": {
                        "type": {
                            "text": "Intl.DateTimeFormat"
                        }
                    }
                },
                {
                    "kind": "function",
                    "name": "sourceColumn",
                    "description": "Recover the source column name from a synthetic split-by path. Split\npivoting produces paths of the form `<split_val_1>|...|<source_col>`;\nper-column config (formatters, aggregate styling, …) is always keyed\non the trailing source column.",
                    "parameters": [
                        {
                            "name": "path",
                            "type": {
                                "text": "string"
                            }
                        }
                    ],
                    "return": {
                        "type": {
                            "text": "string"
                        }
                    }
                },
                {
                    "kind": "class",
                    "name": "PerspectiveSelectDetail",
                    "description": "The `detail` of a `perspective-global-filter` event.",
                    "members": [
                        {
                            "kind": "field",
                            "name": "selected",
                            "privacy": "public",
                            "type": {
                                "text": "boolean"
                            }
                        },
                        {
                            "kind": "field",
                            "name": "row",
                            "privacy": "public",
                            "type": {
                                "text": "Record<string, unknown>"
                            }
                        },
                        {
                            "kind": "field",
                            "name": "column_names",
                            "privacy": "public",
                            "type": {
                                "text": "string[]"
                            }
                        },
                        {
                            "kind": "field",
                            "name": "removeConfigs",
                            "privacy": "public",
                            "type": {
                                "text": "ViewConfigUpdate[]",
                                "references": [
                                    {
                                        "name": "ViewConfigUpdate",
                                        "package": "@perspective-dev/client",
                                        "start": 0,
                                        "end": 16
                                    }
                                ]
                            }
                        },
                        {
                            "kind": "field",
                            "name": "insertConfigs",
                            "privacy": "public",
                            "type": {
                                "text": "ViewConfigUpdate[]",
                                "references": [
                                    {
                                        "name": "ViewConfigUpdate",
                                        "package": "@perspective-dev/client",
                                        "start": 0,
                                        "end": 16
                                    }
                                ]
                            }
                        },
                        {
                            "kind": "field",
                            "name": "panel",
                            "privacy": "public",
                            "type": {
                                "text": "string"
                            }
                        },
                        {
                            "kind": "field",
                            "name": "removeFilters",
                            "privacy": "public",
                            "type": {
                                "text": "Filter[]",
                                "references": [
                                    {
                                        "name": "Filter",
                                        "package": "@perspective-dev/viewer",
                                        "start": 0,
                                        "end": 6
                                    }
                                ]
                            },
                            "readonly": true
                        },
                        {
                            "kind": "field",
                            "name": "insertFilters",
                            "privacy": "public",
                            "type": {
                                "text": "Filter[]",
                                "references": [
                                    {
                                        "name": "Filter",
                                        "package": "@perspective-dev/viewer",
                                        "start": 0,
                                        "end": 6
                                    }
                                ]
                            },
                            "readonly": true
                        }
                    ]
                },
                {
                    "kind": "function",
                    "name": "create_validator",
                    "description": "Load the `migrate` binary registered with `init()` and return synchronous\n`migrate()` and `validate()` over it; the page shares one instance.\n\n# Examples\n\n```javascript\nconst validator = await perspective_viewer.create_validator();\nfor (const token of tokens) {\n    validator.validate(\"viewer\", token, { strict: true });\n}\n```",
                    "return": {
                        "type": {
                            "text": "Promise<Validator>"
                        }
                    }
                },
                {
                    "kind": "function",
                    "name": "init",
                    "description": "Register Perspective's WebAssembly binaries for this page; the same function\nas `@perspective-dev/client`'s `init()`.",
                    "parameters": [
                        {
                            "name": "wasm",
                            "type": {
                                "text": "WasmRegistration"
                            }
                        },
                        {
                            "name": "options",
                            "optional": true,
                            "type": {
                                "text": "InitOptions"
                            }
                        }
                    ],
                    "return": {
                        "type": {
                            "text": "Promise<void>"
                        }
                    }
                },
                {
                    "kind": "function",
                    "name": "init_client",
                    "description": "Initialize `<perspective-viewer>` from its WebAssembly binary, and register\nthe `perspective-migrate` binary which `migrate()` downloads on first use;\na wrapper over `init()`'s `viewer` and `migrate` roles.\n\n# Examples\n\n```javascript\nawait init_client({\n    viewer: () => fetch(\"perspective-viewer.wasm\"),\n    migrate: () => fetch(\"perspective-migrate.wasm\"),\n});\n```",
                    "parameters": [
                        {
                            "name": "wasm",
                            "type": {
                                "text": "ViewerWasmSource | ViewerWasmRegistration"
                            }
                        },
                        {
                            "name": "wasm_module",
                            "optional": true,
                            "type": {
                                "text": "typeof wasm_module_type"
                            }
                        }
                    ],
                    "return": {
                        "type": {
                            "text": "Promise<void>"
                        }
                    }
                },
                {
                    "kind": "function",
                    "name": "migrate",
                    "description": "Upgrade a persisted config written by any Perspective release since 2.0.0\nto the current schema, using the `migrate` binary registered with `init()`.\n\n# Arguments\n\n- `kind` - `\"view\"` for a `ViewConfig`, `\"viewer\"` for a `save()` token,\n  `\"panel\"` for one workspace panel, or `\"workspace\"` for a\n  `saveWorkspace()` token.\n- `config` - The config to upgrade.\n- `from_version` - The release which wrote `config`, used only when it has\n  no `version` field.",
                    "parameters": [
                        {
                            "name": "kind",
                            "type": {
                                "text": "MigrateKind"
                            }
                        },
                        {
                            "name": "config",
                            "type": {
                                "text": "unknown"
                            }
                        },
                        {
                            "name": "from_version",
                            "optional": true,
                            "type": {
                                "text": "string"
                            }
                        }
                    ],
                    "return": {
                        "type": {
                            "text": "Promise<MigrateResult<T>>"
                        }
                    }
                },
                {
                    "kind": "function",
                    "name": "validate",
                    "description": "Check that a config is valid for this release without migrating it,\nrejecting with the offending JSON pointer and reason otherwise.\n\n# Arguments\n\n- `kind` - `\"view\"`, `\"viewer\"`, `\"panel\"` or `\"workspace\"`.\n- `config` - The config to check.\n- `options.strict` - Require the complete `save()` form rather than the\n  field-wise `restore()` update form.",
                    "parameters": [
                        {
                            "name": "kind",
                            "type": {
                                "text": "MigrateKind"
                            }
                        },
                        {
                            "name": "config",
                            "type": {
                                "text": "unknown"
                            }
                        },
                        {
                            "name": "options",
                            "optional": true,
                            "type": {
                                "text": "{ strict?: boolean }"
                            }
                        }
                    ],
                    "return": {
                        "type": {
                            "text": "Promise<void>"
                        }
                    }
                },
                {
                    "kind": "variable",
                    "name": "default",
                    "type": {
                        "text": "{ create_validator: typeof create_validator; init: typeof init; init_client: typeof init_client; migrate: typeof migrate; validate: typeof validate }"
                    }
                }
            ],
            "exports": [
                {
                    "kind": "custom-element-definition",
                    "name": "perspective-viewer",
                    "declaration": {
                        "name": "PerspectiveViewerElement",
                        "module": "dist/esm/perspective-viewer.js"
                    }
                },
                {
                    "kind": "custom-element-definition",
                    "name": "perspective-viewer-plugin",
                    "declaration": {
                        "name": "PerspectiveDebugPluginElement",
                        "module": "dist/esm/perspective-viewer.js"
                    }
                },
                {
                    "kind": "js",
                    "name": "HTMLPerspectiveViewerPluginElement",
                    "declaration": {
                        "name": "HTMLPerspectiveViewerPluginElement",
                        "module": "dist/esm/perspective-viewer.js"
                    }
                },
                {
                    "kind": "js",
                    "name": "providers",
                    "declaration": {
                        "name": "providers",
                        "module": "dist/esm/perspective-viewer.js"
                    }
                },
                {
                    "kind": "js",
                    "name": "createNumberFormatter",
                    "declaration": {
                        "name": "createNumberFormatter",
                        "module": "dist/esm/perspective-viewer.js"
                    }
                },
                {
                    "kind": "js",
                    "name": "createDatetimeFormatter",
                    "declaration": {
                        "name": "createDatetimeFormatter",
                        "module": "dist/esm/perspective-viewer.js"
                    }
                },
                {
                    "kind": "js",
                    "name": "createDateFormatter",
                    "declaration": {
                        "name": "createDateFormatter",
                        "module": "dist/esm/perspective-viewer.js"
                    }
                },
                {
                    "kind": "js",
                    "name": "sourceColumn",
                    "declaration": {
                        "name": "sourceColumn",
                        "module": "dist/esm/perspective-viewer.js"
                    }
                },
                {
                    "kind": "js",
                    "name": "PerspectiveSelectDetail",
                    "declaration": {
                        "name": "PerspectiveSelectDetail",
                        "module": "dist/esm/perspective-viewer.js"
                    }
                },
                {
                    "kind": "js",
                    "name": "create_validator",
                    "declaration": {
                        "name": "create_validator",
                        "module": "dist/esm/perspective-viewer.js"
                    }
                },
                {
                    "kind": "js",
                    "name": "init",
                    "declaration": {
                        "name": "init",
                        "module": "dist/esm/perspective-viewer.js"
                    }
                },
                {
                    "kind": "js",
                    "name": "init_client",
                    "declaration": {
                        "name": "init_client",
                        "module": "dist/esm/perspective-viewer.js"
                    }
                },
                {
                    "kind": "js",
                    "name": "migrate",
                    "declaration": {
                        "name": "migrate",
                        "module": "dist/esm/perspective-viewer.js"
                    }
                },
                {
                    "kind": "js",
                    "name": "validate",
                    "declaration": {
                        "name": "validate",
                        "module": "dist/esm/perspective-viewer.js"
                    }
                },
                {
                    "kind": "js",
                    "name": "default",
                    "declaration": {
                        "name": "default",
                        "module": "dist/esm/perspective-viewer.js"
                    }
                }
            ]
        }
    ]
}
