[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-splunk-custom-visualization-builder":3,"mdc-rhvmjz-key":33,"related-org-splunk-custom-visualization-builder":8095,"related-repo-splunk-custom-visualization-builder":8138},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":11,"stars":22,"repoUrl":23,"updatedAt":24,"license":25,"forks":26,"topics":27,"repo":28,"sourceUrl":31,"mdContent":32},"custom-visualization-builder","build and install custom Splunk visualizations","Scaffold, build, package, and install a custom visualization into Splunk using the dashboard-studio-extension framework. Use when the user wants to create a new custom viz, add a visualization to an existing project, or migrate a legacy custom viz.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},"splunk","Splunk","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fsplunk.jpg",[12,16,19],{"name":13,"slug":14,"type":15},"Plugin Development","plugin-development","tag",{"name":17,"slug":18,"type":15},"Visualization","visualization",{"name":20,"slug":21,"type":15},"UI Components","ui-components",3,"https:\u002F\u002Fgithub.com\u002Fsplunk\u002Fsplunk-agent-skills","2026-08-02T06:09:08.393955","Apache-2.0",0,[],{"repoUrl":23,"stars":22,"forks":26,"topics":29,"description":30},[],"Open source, enterprise-ready AI skills for Splunk use cases, built for secure discovery, consistent execution, and production-grade customer workflows.","https:\u002F\u002Fgithub.com\u002Fsplunk\u002Fsplunk-agent-skills\u002Ftree\u002FHEAD\u002Fskills\u002Fcustom-visualization-builder","---\nname: custom-visualization-builder\ndescription: Scaffold, build, package, and install a custom visualization into Splunk using the dashboard-studio-extension framework. Use when the user wants to create a new custom viz, add a visualization to an existing project, or migrate a legacy custom viz.\nlicense: Apache-2.0\nallowed-tools:\n  - shell\nrequires-mcp: false\nmetadata:\n  splunk:\n    domain: dashboarding\n    products:\n      - splunk-enterprise\n      - splunk-cloud-platform\n      - dashboard-studio\n    entities:\n      - custom visualizations\n      - dashboard extension projects\n      - Splunk apps\n      - SPL data contracts\n      - visualization config.json files\n    triggers:\n      - Custom Visualization Builder\n      - custom viz\n      - custom visualization\n      - dashboard-studio-extension\n      - build custom visualization\n      - migrate legacy visualization\n    not-for:\n      - production Splunk app installation without explicit user approval\n      - credential collection\n      - Splunk configuration changes outside the visualization app\n    outcomes:\n      - scaffolded visualization project\n      - packaged Splunk visualization app\n      - migrated legacy custom visualization\n      - sample SPL data contract\n---\n\n# Custom Visualization Builder\n\nScaffold, build, package, and install a custom Splunk dashboard visualization using the `@splunk\u002Fdashboard-studio-extension` framework. Vizzes run in a sandboxed iframe and receive data from Splunk searches. You can build them with plain JavaScript or React — pick based on what the viz needs.\n\nNo local Splunk instance is required for development. Build and package locally, then install the `.spl` into a supported instance. Requires Splunk Enterprise 10.4+ or Splunk Cloud Platform (equivalent release).\n\n## When to Use\n\nUse this skill when a user asks to create a new Splunk custom visualization, add a visualization to an existing dashboard-studio-extension project, package a visualization as a Splunk app, or migrate a legacy RequireJS custom viz to the current extension framework.\n\nDo not install or update a visualization in a production or shared Splunk environment unless the user explicitly confirms that target. Do not ask users for raw credentials; use already configured local Splunk auth or a user-run install command.\n\n---\n\n## Prerequisites\n\n- Node.js >= 22\n- Yarn >= 1.22\n- Target instance: Splunk Enterprise 10.4+ or Splunk Cloud Platform (equivalent release)\n\n---\n\n## Choose a framework\n\n| | JavaScript (`@splunk\u002Fdashboard-studio-extension`) | React (`@splunk\u002Fdashboard-studio-extension\u002Freact`) |\n|---|---|---|\n| Use when | Canvas rendering, D3, plain DOM, minimal deps | Component-heavy UI, hooks-based state, most new projects |\n| API style | Event listeners + getters | Hooks (`useDataSources`, `useDimensions`, `useOptions`, …) |\n| Entry file | `visualization.js` | `visualization.jsx` |\n| Extra deps | None | `react`, `react-dom` (peer deps, added by scaffold) |\n\n---\n\n## Project Structure\n\nA project is a Splunk app that can contain one or more visualizations under `visualizations\u002F`. Each viz has its own directory with `config.json`, `src\u002F`, and `SPL.md`.\n\n```\nmy-viz-project\u002F\n├── package.json\n├── build.mjs                    # esbuild orchestrator\n├── build-plugins\u002F\n│   └── css-and-size.mjs         # CSS injection + asset inlining plugin\n├── package.mjs                  # .spl packager\n├── package\u002F\n│   └── app\u002F\n│       └── app.conf             # Splunk app identity (source of truth for id\u002Fversion)\n├── visualizations\u002F\n│   ├── \u003Cviz-one>\u002F\n│   │   ├── SPL.md               # SPL reference for this viz (you create this)\n│   │   ├── config.json\n│   │   └── src\u002F\n│   │       ├── visualization.js(x)\n│   │       └── visualization.css\n│   └── \u003Cviz-two>\u002F\n│       ├── SPL.md\n│       ├── config.json\n│       └── src\u002F\n│           ├── visualization.js(x)\n│           └── visualization.css\n└── dist\u002F                        # build output (generated)\n```\n\nThe build system automatically discovers all directories under `visualizations\u002F` and builds them all. Name the project folder after the collection, not a single viz (e.g. `splunk-custom-vizzes`, not `gauge`).\n\n---\n\n## Workflow Overview\n\n### 1. Gather requirements\n\nBefore generating any code, ask the user (or extract from context):\n\n1. **Project name** — used as the Splunk app ID. Only letters, numbers, dots, and underscores. Cannot start or end with a dot or underscore. E.g. `my_custom_viz`.\n2. **Viz slug** — the directory name under `visualizations\u002F`. Only lowercase letters, numbers, and underscores (`[a-z0-9_]`). No dots, slashes, or spaces. Reject any value that would place files outside `visualizations\u002F\u003Cviz-slug>\u002F`. E.g. `network_graph`.\n3. **Viz display label** — human-readable name shown in the Splunk UI, e.g. \"Network Graph\".\n4. **Description** — one-line description of what the viz does.\n5. **Author** — for `app.conf`.\n6. **Expected SPL columns** — which fields the search must produce. Distinguish required from optional.\n7. **Configurable settings** — what the user should be able to tweak (colors, thresholds, toggles). For each: name, type, default.\n8. **Rendering approach** — what to draw\u002Frender (canvas shapes, chart, table, map, etc.) to inform framework choice.\n\nApply the defaults in [Accessibility & safe rendering](#accessibility--safe-rendering) unless the user's request or context makes them clearly inapplicable.\n\nIf the user's request is vague, ask before scaffolding.\n\n### 2. Determine project location\n\nAsk the user where to create the project if not specified. This can be any empty directory — no existing dashboard-enterprise repo required.\n\n**Adding a viz to an existing project**: If a project already exists with build infrastructure, skip step 3 entirely. Just create `visualizations\u002F\u003Cviz-name>\u002F` with `config.json`, `src\u002Fvisualization.js(x)`, `src\u002Fvisualization.css`, and `SPL.md`. The build discovers all viz directories automatically — no registration needed. Then go to step 5.\n\n### 3. Scaffold the project\n\nThe `@splunk\u002Fcreate` CLI currently requires interactive prompts for label, description, author, and template — only the project name can be passed as a positional arg. Full non-interactive support is planned. Ask the user to run the command and answer the remaining prompts:\n\n> \"Please run this in your terminal and follow the prompts, then let me know when done:\"\n> ```\n> mkdir \u003Cproject-name> && cd \u003Cproject-name>\n> npx @splunk\u002Fcreate@latest --mode=dashboard-studio-extension \u003Capp_id>\n> ```\n> Use these values when prompted:\n> - **Display label**: `\u003CHuman Readable Label>`\n> - **Description**: `\u003Cdescription>`\n> - **Author**: `\u003Cauthor>`\n> - **Template**: JavaScript or React (per your framework choice above)\n>\n> Then run `yarn` to install dependencies.\n\nWait for the user to confirm the scaffold is complete before proceeding.\n\nAfter scaffolding, verify `package\u002Fapp\u002Fapp.conf` has the correct app identity. The\nscaffold generates this shape (values filled from your prompt answers):\n\n```ini\n[package]\nid = \u003Capp_id>\n\n[id]\nversion = 0.1.0\nname = \u003Capp_id>\n\n[ui]\nis_visible = 1\nlabel = \u003CHuman Readable Label>\nshow_in_nav = 0\n\n[launcher]\nauthor = \u003Cauthor>\ndescription = \u003Cdescription>\nversion = 0.1.0\n\n[install]\nis_configured = 0\nbuild = \u003C@- buildNumber @>\ncheck_for_updates = 0\n\n[manifest]\ncategory = Custom\n```\n\nApp `id`: only letters, numbers, dots, underscores. Cannot start or end with a dot or underscore.\n\n> **Leave `build = \u003C@- buildNumber @>` exactly as-is.** That template tag is intentional —\n> the packager (`yarn package`) substitutes a real build number when it stages the app.\n> Do not replace it with a literal.\n\nThen create `SPL.md` inside the viz directory (`visualizations\u002F\u003Cviz-name>\u002FSPL.md`):\n\n```markdown\n# \u003CDisplay Label> — SPL Reference\n\n## Expected Columns\n\n| Column | Type | Required? | Description |\n|--------|------|-----------|-------------|\n| \u003Ccol>  | \u003Ctype> | Yes\u002FOptional | \u003Cwhat it is> |\n\n## Notes\n\n- Key data assumptions, units, fallback behavior, etc.\n\n## Full SPL\n\n\\`\\`\\`spl\n\u003Cfull working SPL query>\n\\`\\`\\`\n\n## Time range\n\n`rt-1m` to `rt` (or `-60m` to `now` for historical)\n```\n\n### 4. Create the visualization\n\n**`visualizations\u002F\u003Cviz-name>\u002Fconfig.json`** — see `references\u002Fconfig-json.md` for full field reference including `optionsSchema` and `editorConfig`:\n\n```json\n{\n  \"showTitleAndDescription\": true,\n  \"includeInToolbar\": true,\n  \"includeInVizSwitcher\": true,\n  \"showDrilldown\": false,\n  \"canSetTokens\": [],\n  \"hasEventHandlers\": false,\n  \"config\": {\n    \"name\": \"\u003CHuman Readable Name>\",\n    \"description\": \"\u003Cdescription>\",\n    \"category\": \"Custom\",\n    \"icon\": null,\n    \"dataContract\": {\n      \"requiredDataSources\": [\"primary\"],\n      \"optionalDataSources\": []\n    },\n    \"size\": { \"initialWidth\": 600, \"initialHeight\": 500 },\n    \"optionsSchema\": {},\n    \"editorConfig\": []\n  }\n}\n```\n\n---\n\n**JavaScript — `visualization.js`**:\n\nData always arrives in columnar format: `{ fields: [{name}, ...], columns: [[col0val0, col0val1, ...], ...] }`. All values are strings — parse numerics explicitly. Listener methods return a cleanup function.\n\n```js\nimport { VisualizationAPI } from '@splunk\u002Fdashboard-studio-extension';\nimport '.\u002Fvisualization.css';\n\nconst container = document.createElement('div');\ncontainer.className = 'viz-container';\ndocument.body.appendChild(container);\n\nconst state = { data: null, loading: false, options: {}, width: 0, height: 0, theme: 'light' };\n\nfunction render() {\n    if (state.loading) { container.innerHTML = '\u003Cdiv class=\"loading\">Loading...\u003C\u002Fdiv>'; return; }\n    if (!state.data)   { container.innerHTML = '\u003Cdiv class=\"empty\">No data\u003C\u002Fdiv>'; return; }\n\n    const { fields, columns } = state.data;\n    if (!columns?.length || !columns[0].length) {\n        container.innerHTML = '\u003Cdiv class=\"empty\">No data\u003C\u002Fdiv>';\n        return;\n    }\n\n    \u002F\u002F Always provide fallbacks — options may be unset even if optionsSchema declares defaults\n    const myOption = state.options.myOption ?? 'default';\n    const isDark = state.theme === 'dark';\n\n    \u002F\u002F implement visualization here\n}\n\nVisualizationAPI.addDataSourcesListener(\n    ({ dataSources, loading }) => {\n        state.loading = loading;\n        state.data = dataSources?.primary?.data ?? null;\n        render();\n    },\n    { invokeImmediately: true }\n);\n\nVisualizationAPI.addOptionsListener(({ options }) => {\n    state.options = options;\n    render();\n});\n\nVisualizationAPI.addDimensionsListener(({ width, height }) => {\n    state.width = width;\n    state.height = height;\n    render();\n}, { invokeImmediately: true });\n\nVisualizationAPI.addThemeListener(({ theme }) => {\n    state.theme = theme;\n    render();\n}, { invokeImmediately: true });\n```\n\n---\n\n**React — `visualization.jsx`**:\n\nCall the hooks directly from your component.\n\n```jsx\nimport {\n    useDataSources,\n    useDimensions,\n    useOptions,\n    useTheme,\n} from '@splunk\u002Fdashboard-studio-extension\u002Freact';\nimport { createRoot } from 'react-dom\u002Fclient';\nimport '.\u002Fvisualization.css';\n\nfunction Viz() {\n    const { dataSources, loading } = useDataSources();\n    const { width, height } = useDimensions();\n    const { options } = useOptions();\n    const { theme } = useTheme();\n\n    \u002F\u002F Always provide fallbacks — options may be unset even if optionsSchema declares defaults\n    const myOption = options?.myOption ?? 'default';\n    const isDark = theme === 'dark';\n\n    if (loading) return \u003Cdiv className=\"loading\">Loading...\u003C\u002Fdiv>;\n\n    const data = dataSources?.primary?.data;\n    if (!data?.columns?.length || !data.columns[0].length)\n        return \u003Cdiv className=\"empty\">No data\u003C\u002Fdiv>;\n\n    const { fields, columns } = data;\n\n    \u002F\u002F implement visualization here\n    return \u003Cdiv style={{ width, height }} \u002F>;\n}\n\ncreateRoot(document.getElementById('root')).render(\u003CViz \u002F>);\n```\n\n---\n\n### 5. Develop\n\n```bash\n# Watch mode — rebuilds on file changes\nyarn dev\n```\n\nVerify `dist\u002F\u003Cviz-name>\u002Fvisualization.js` is created. Hard-refresh the browser to see changes.\n\n### 6. Build for production\n\n```bash\nyarn build:prod\n```\n\n### 7. Package\n\n```bash\nyarn package\n```\n\nOutput: `dist\u002F\u003Capp-id>-\u003Cversion>-\u003Chash>.spl`\n\nThe packager auto-generates `default\u002Fvisualizations.conf` (with `framework_type = studio_visualization`) and `metadata\u002Fdefault.meta` from the vizzes it finds in `dist\u002F`.\n\n### 8. Install into Splunk\n\n**Splunk Enterprise (10.4+)**: Apps > Manage Apps > Install app from file → select the `.spl`. No restart needed — the app loads immediately.\n\n**Splunk Cloud Platform**: Private app installation requires the ACS CLI and AppInspect vetting. Do not direct Cloud users to the Splunk Web install UI — it will not work for private apps. Direct the user to the Splunk ACS documentation for the private app submission process.\n\n**Local Docker**: Copy the `.spl` into the container and install via the Splunk CLI:\n```\ndocker cp dist\u002F\u003Capp-id>-\u003Cversion>-\u003Chash>.spl \u003Ccontainer>:\u002Ftmp\u002Fapp.spl\ndocker exec \u003Ccontainer> \u002Fopt\u002Fsplunk\u002Fbin\u002Fsplunk install app \u002Ftmp\u002Fapp.spl -update 1\n```\n\n### 9. Tell the user\n\n- The Splunk app ID\n- The viz type string for dashboard JSON: `\u003Capp-id>.\u003Cviz-name>`\n- A sample SPL query to wire up data\n\nBefore reporting the viz as complete, verify (unless the request made them inapplicable):\n- Untrusted search values are escaped before being written to the DOM\n- Interactive elements are keyboard-reachable and have accessible labels\n- Text and icon colors meet WCAG AA contrast against their backgrounds in both light and dark theme\n- Animations respect `prefers-reduced-motion`\n\n---\n\n## Examples\n\n**New canvas viz from scratch:**\n> \"Build me a network graph visualization that shows connections between hosts.\"\n\nSkill gathers requirements, asks the user to scaffold, creates `visualization.js` with canvas rendering, wires up data\u002Fdimensions\u002Ftheme listeners, and packages the `.spl`.\n\n**Adding a viz to an existing project:**\n> \"Add a gauge viz to my existing custom viz project.\"\n\nSkill skips scaffolding, creates `visualizations\u002Fgauge\u002F` with `config.json`, `src\u002Fvisualization.js`, and `SPL.md`, and instructs the user to rebuild.\n\n**Migrating a legacy viz:**\n> \"Migrate my RequireJS custom viz to the new framework.\"\n\nSkill reads the existing viz, maps `updateView` → `render()`, replaces `SplunkVisualizationBase` with `VisualizationAPI` listeners, removes RequireJS wrapper, and re-scaffolds the project.\n\n---\n\n## Updating the viz (fast iteration)\n\nFor changes to visualization code only, copy the built JS directly — no reinstall needed:\n\n```bash\nyarn dev  # or yarn build:prod\n\ncp dist\u002F\u003Cviz-name>\u002Fvisualization.js \\\n   $SPLUNK_HOME\u002Fetc\u002Fapps\u002F\u003Capp-id>\u002Fappserver\u002Fstatic\u002Fvisualizations\u002F\u003Cviz-name>\u002Fvisualization.js\n```\n\nHard-refresh the browser. No Splunk restart needed.\n\nFor changes to `app.conf`, `config.json`, or adding a new viz, do a full reinstall (step 7–8).\n\n> **Restart required for `showDrilldown`**: After enabling `showDrilldown: true` in an already-installed app, Splunk must be restarted — the REST layer caches `config.json` at startup, and reinstalling alone won't update the Interactions panel.\n\n---\n\n## Theme support\n\nVizzes should respond to Splunk's light\u002Fdark theme. The iframe is sandboxed — CSS custom properties from the host page are not inherited. Use hardcoded enterprise theme values.\n\n**JavaScript:**\n\n```js\nconst THEME_COLORS = {\n    light: { background: '#ffffff', text: '#1a1a1a', accent: '#4e9cf5' },\n    dark:  { background: '#1a1c21', text: '#c3cbd4', accent: '#4e9cf5' },\n};\n\nVisualizationAPI.addThemeListener(({ theme }) => {\n    state.theme = theme;\n    render();\n}, { invokeImmediately: true });\n\nfunction render() {\n    const colors = THEME_COLORS[state.theme] ?? THEME_COLORS.light;\n    container.style.background = colors.background;\n    \u002F\u002F use colors.text, colors.accent in drawing logic\n}\n```\n\n**React:**\n\n```jsx\nconst THEME_COLORS = {\n    light: { background: '#ffffff', text: '#1a1a1a', accent: '#4e9cf5' },\n    dark:  { background: '#1a1c21', text: '#c3cbd4', accent: '#4e9cf5' },\n};\n\nfunction Viz() {\n    const { theme } = useTheme();\n    const colors = THEME_COLORS[theme] ?? THEME_COLORS.light;\n    return \u003Cdiv style={{ background: colors.background, color: colors.text }}>...\u003C\u002Fdiv>;\n}\n```\n\n---\n\n## Accessibility & safe rendering\n\nThese are defaults — apply them unless the user's request or context makes them clearly inapplicable.\n\n**Escape untrusted search values before writing to the DOM.** Never use `innerHTML` or `insertAdjacentHTML` with raw field values from `dataSources`. Use `textContent`, `createElement`, or a sanitizing helper instead.\n\n```js\n\u002F\u002F safe\nconst el = document.createElement('div');\nel.textContent = row.label;\n\n\u002F\u002F unsafe — do not do this\ncontainer.innerHTML = `\u003Cdiv>${row.label}\u003C\u002Fdiv>`;\n```\n\n**Make interactive elements keyboard-reachable.** If clicking or hovering triggers behavior, ensure the element has `tabIndex=\"0\"` and handles `keydown` for Enter\u002FSpace.\n\n```js\nel.setAttribute('tabindex', '0');\nel.setAttribute('role', 'button');\nel.addEventListener('keydown', (e) => {\n    if (e.key === 'Enter' || e.key === ' ') handleClick();\n});\n```\n\n**Provide text alternatives.** Canvas elements and icon-only controls need an accessible label.\n\n```js\ncanvas.setAttribute('role', 'img');\ncanvas.setAttribute('aria-label', 'Network graph showing host connections');\n```\n\n**Meet WCAG AA contrast.** Foreground text and icons must have at least 4.5:1 contrast against their background (3:1 for large text). The hardcoded `THEME_COLORS` values in [Theme support](#theme-support) already satisfy this for default text — use them as the baseline and verify any custom accent or status colors.\n\n**Respect `prefers-reduced-motion`.** If the viz uses animation, check the media query and skip or minimise motion when it is set.\n\n```js\nconst reduceMotion = window.matchMedia('(prefers-reduced-motion: reduce)').matches;\nif (!reduceMotion) requestAnimationFrame(animate);\n```\n\n---\n\n## Canvas\n\nSee `references\u002Fcanvas.md` for sizing, interactivity, and drilldown patterns.\n\n---\n\n## How the scaffolded build picks entry files\n\nThe scaffolded `build.mjs` does **not** auto-detect each viz's extension. Every\n`package.json` script passes a single global `--entry=\u003Cfilename>`, and the build applies\nthat one filename to **every** directory under `visualizations\u002F`:\n\n```js\nconst entryArg = process.argv.find((a) => a.startsWith('--entry='));\nconst entryFileName = entryArg ? entryArg.split('=')[1] : 'visualization.js';\n\u002F\u002F for each viz: build visualizations\u002F\u003Cviz>\u002Fsrc\u002F\u003CentryFileName>\n\u002F\u002F if that file is missing: \"Warning: \u003Cviz>\u002Fsrc\u002F\u003CentryFileName> not found, skipping\"\n```\n\n`jsx: 'automatic'` is enabled only when `entryFileName` ends in `.jsx`.\n\nConsequences you must design around:\n- **All vizzes in one scaffolded project share one extension.** A JavaScript-scaffolded\n  project (`--entry=visualization.js`) builds only `visualization.js` files; a\n  React-scaffolded project (`--entry=visualization.jsx`) builds only `visualization.jsx`.\n- **Mismatched files are silently skipped** — the build warns and exits 0, so a viz can\n  vanish from `dist\u002F` without an obvious error. If a viz doesn't appear in `dist\u002F`, check\n  that its entry file matches the project's `--entry` extension.\n\n### Adding a React viz\n\n- **React-scaffolded project:** just add `visualizations\u002F\u003Cviz>\u002Fsrc\u002Fvisualization.jsx` —\n  it builds automatically.\n- **JavaScript-scaffolded project, no JS vizzes worth keeping:** the simplest path is to\n  flip the whole project to `.jsx`. Add React (`yarn add react react-dom`), rename the\n  existing entry to `visualization.jsx`, and change every `--entry=visualization.js` to\n  `--entry=visualization.jsx` in `package.json`. `jsx: 'automatic'` turns on by itself.\n- **You truly need both `.js` and `.jsx` vizzes in one project:** the scaffolded\n  single-`--entry` build can't do this. Replace the entry lookup in `build.mjs` with\n  per-viz resolution (prefer `.jsx`, fall back to `.js`) and always set\n  `jsx: 'automatic'`:\n\n   ```js\n   const buildOptions = { jsx: 'automatic', \u002F* ... *\u002F };\n\n   function resolveEntry(vizName) {\n       for (const name of ['visualization.jsx', 'visualization.js']) {\n           const p = join(visualizationsDir, vizName, 'src', name);\n           if (existsSync(p)) return p;\n       }\n       return null;\n   }\n   ```\n\n   Then drop the `--entry` flag from the `package.json` scripts. (This is a local\n   modification, not what `@splunk\u002Fcreate` produces.)\n\n> **Avoid `@splunk\u002Freact-ui` in the entry file.** The scaffolded React template's default\n> viz imports `@splunk\u002Freact-ui` components (`Table`, `Paragraph`, `WaitSpinner`), but\n> those are pre-bundled CommonJS and their default exports do **not** survive the\n> scaffold's esbuild ESM pipeline — the built viz throws `Minified React error #130`\n> (got an object instead of a component) on load. Build your UI with plain elements (or\n> your own components). If you must use `@splunk\u002Freact-ui`, expect to add esbuild interop\n> configuration to `build.mjs` first.\n\n---\n\n## Migrating a legacy custom viz\n\nSee `references\u002Fmigration.md` for a full mapping from `SplunkVisualizationBase` to the new framework and step-by-step migration instructions.\n\n---\n\n## Troubleshooting\n\nSee `references\u002Ftroubleshooting.md`.\n\n---\n\n## Key Constraints\n\n- `app.conf` uses literal values **except** `build = \u003C@- buildNumber @>` — that template tag is intentional and the packager fills it in. Don't replace it with a literal.\n- App `id`: only letters, numbers, dots, underscores. Cannot start or end with a dot or underscore.\n- Viz slug: only `[a-z0-9_]`. Reject values containing dots, slashes, or spaces. Confirm the resolved path is `visualizations\u002F\u003Cviz-slug>\u002F` with no traversal.\n- CSS is injected into the iframe via the build plugin — no separate `\u003Clink>` tag needed\n- Images, SVGs, and fonts are inlined as data URLs by the build — import them directly\n- Do not load fonts or other assets from external URLs at runtime. Vendor them locally and import from `src\u002F` so the build inlines them as data URLs.\n- `setOptions` is silently ignored in view mode — only works during edit mode\n- Always provide option fallback values — `optionsSchema` defaults are not guaranteed at runtime\n- The viz runs in a sandboxed iframe — `window.parent` is not accessible and CSS custom properties from the host page are not inherited\n\n---\n\n## References\n\n- `references\u002Fapi-reference.md` — full API listing for JavaScript and React\n- `references\u002Fconfig-json.md` — `config.json` field reference, `optionsSchema`, `editorConfig` editor types\n- `references\u002Fdrilldown-and-tokens.md` — drilldown patterns and token read\u002Fwrite\n- `references\u002Fcanvas.md` — canvas sizing, interactivity, and drilldown patterns\n- `references\u002Fmigration.md` — migrating from legacy `SplunkVisualizationBase` vizzes\n- `references\u002Ftroubleshooting.md` — common errors and fixes\n",{"data":34,"body":67},{"name":4,"description":6,"license":25,"allowed-tools":35,"requires-mcp":37,"metadata":38},[36],"shell",false,{"splunk":39},{"domain":40,"products":41,"entities":45,"triggers":51,"not-for":58,"outcomes":62},"dashboarding",[42,43,44],"splunk-enterprise","splunk-cloud-platform","dashboard-studio",[46,47,48,49,50],"custom visualizations","dashboard extension projects","Splunk apps","SPL data contracts","visualization config.json files",[52,53,54,55,56,57],"Custom Visualization Builder","custom viz","custom visualization","dashboard-studio-extension","build custom visualization","migrate legacy visualization",[59,60,61],"production Splunk app installation without explicit user approval","credential collection","Splunk configuration changes outside the visualization app",[63,64,65,66],"scaffolded visualization project","packaged Splunk visualization app","migrated legacy custom visualization","sample SPL data contract",{"type":68,"children":69},"root",[70,77,92,105,112,117,122,126,132,152,155,161,322,325,331,367,379,407,410,416,423,428,557,571,576,582,587,632,638,651,744,749,762,984,997,1026,1046,1385,1391,1429,2003,2006,2020,2033,3548,3551,3565,3570,4481,4484,4490,4519,4532,4538,4557,4563,4582,4593,4629,4635,4652,4662,4679,4688,4694,4718,4723,4752,4755,4761,4769,4777,4795,4803,4811,4843,4851,4859,4894,4897,4903,4908,5037,5042,5060,5093,5096,5102,5107,5115,5608,5616,6033,6036,6041,6046,6093,6279,6305,6584,6594,6715,6740,6756,6862,6865,6870,6883,6886,6892,6941,7151,7177,7182,7255,7261,7732,7810,7813,7819,7838,7841,7847,7858,7861,7867,7989,7992,7998,8090],{"type":71,"tag":72,"props":73,"children":74},"element","h1",{"id":4},[75],{"type":76,"value":52},"text",{"type":71,"tag":78,"props":79,"children":80},"p",{},[81,83,90],{"type":76,"value":82},"Scaffold, build, package, and install a custom Splunk dashboard visualization using the ",{"type":71,"tag":84,"props":85,"children":87},"code",{"className":86},[],[88],{"type":76,"value":89},"@splunk\u002Fdashboard-studio-extension",{"type":76,"value":91}," framework. Vizzes run in a sandboxed iframe and receive data from Splunk searches. You can build them with plain JavaScript or React — pick based on what the viz needs.",{"type":71,"tag":78,"props":93,"children":94},{},[95,97,103],{"type":76,"value":96},"No local Splunk instance is required for development. Build and package locally, then install the ",{"type":71,"tag":84,"props":98,"children":100},{"className":99},[],[101],{"type":76,"value":102},".spl",{"type":76,"value":104}," into a supported instance. Requires Splunk Enterprise 10.4+ or Splunk Cloud Platform (equivalent release).",{"type":71,"tag":106,"props":107,"children":109},"h2",{"id":108},"when-to-use",[110],{"type":76,"value":111},"When to Use",{"type":71,"tag":78,"props":113,"children":114},{},[115],{"type":76,"value":116},"Use this skill when a user asks to create a new Splunk custom visualization, add a visualization to an existing dashboard-studio-extension project, package a visualization as a Splunk app, or migrate a legacy RequireJS custom viz to the current extension framework.",{"type":71,"tag":78,"props":118,"children":119},{},[120],{"type":76,"value":121},"Do not install or update a visualization in a production or shared Splunk environment unless the user explicitly confirms that target. Do not ask users for raw credentials; use already configured local Splunk auth or a user-run install command.",{"type":71,"tag":123,"props":124,"children":125},"hr",{},[],{"type":71,"tag":106,"props":127,"children":129},{"id":128},"prerequisites",[130],{"type":76,"value":131},"Prerequisites",{"type":71,"tag":133,"props":134,"children":135},"ul",{},[136,142,147],{"type":71,"tag":137,"props":138,"children":139},"li",{},[140],{"type":76,"value":141},"Node.js >= 22",{"type":71,"tag":137,"props":143,"children":144},{},[145],{"type":76,"value":146},"Yarn >= 1.22",{"type":71,"tag":137,"props":148,"children":149},{},[150],{"type":76,"value":151},"Target instance: Splunk Enterprise 10.4+ or Splunk Cloud Platform (equivalent release)",{"type":71,"tag":123,"props":153,"children":154},{},[],{"type":71,"tag":106,"props":156,"children":158},{"id":157},"choose-a-framework",[159],{"type":76,"value":160},"Choose a framework",{"type":71,"tag":162,"props":163,"children":164},"table",{},[165,201],{"type":71,"tag":166,"props":167,"children":168},"thead",{},[169],{"type":71,"tag":170,"props":171,"children":172},"tr",{},[173,177,189],{"type":71,"tag":174,"props":175,"children":176},"th",{},[],{"type":71,"tag":174,"props":178,"children":179},{},[180,182,187],{"type":76,"value":181},"JavaScript (",{"type":71,"tag":84,"props":183,"children":185},{"className":184},[],[186],{"type":76,"value":89},{"type":76,"value":188},")",{"type":71,"tag":174,"props":190,"children":191},{},[192,194,200],{"type":76,"value":193},"React (",{"type":71,"tag":84,"props":195,"children":197},{"className":196},[],[198],{"type":76,"value":199},"@splunk\u002Fdashboard-studio-extension\u002Freact",{"type":76,"value":188},{"type":71,"tag":202,"props":203,"children":204},"tbody",{},[205,224,265,291],{"type":71,"tag":170,"props":206,"children":207},{},[208,214,219],{"type":71,"tag":209,"props":210,"children":211},"td",{},[212],{"type":76,"value":213},"Use when",{"type":71,"tag":209,"props":215,"children":216},{},[217],{"type":76,"value":218},"Canvas rendering, D3, plain DOM, minimal deps",{"type":71,"tag":209,"props":220,"children":221},{},[222],{"type":76,"value":223},"Component-heavy UI, hooks-based state, most new projects",{"type":71,"tag":170,"props":225,"children":226},{},[227,232,237],{"type":71,"tag":209,"props":228,"children":229},{},[230],{"type":76,"value":231},"API style",{"type":71,"tag":209,"props":233,"children":234},{},[235],{"type":76,"value":236},"Event listeners + getters",{"type":71,"tag":209,"props":238,"children":239},{},[240,242,248,250,256,257,263],{"type":76,"value":241},"Hooks (",{"type":71,"tag":84,"props":243,"children":245},{"className":244},[],[246],{"type":76,"value":247},"useDataSources",{"type":76,"value":249},", ",{"type":71,"tag":84,"props":251,"children":253},{"className":252},[],[254],{"type":76,"value":255},"useDimensions",{"type":76,"value":249},{"type":71,"tag":84,"props":258,"children":260},{"className":259},[],[261],{"type":76,"value":262},"useOptions",{"type":76,"value":264},", …)",{"type":71,"tag":170,"props":266,"children":267},{},[268,273,282],{"type":71,"tag":209,"props":269,"children":270},{},[271],{"type":76,"value":272},"Entry file",{"type":71,"tag":209,"props":274,"children":275},{},[276],{"type":71,"tag":84,"props":277,"children":279},{"className":278},[],[280],{"type":76,"value":281},"visualization.js",{"type":71,"tag":209,"props":283,"children":284},{},[285],{"type":71,"tag":84,"props":286,"children":288},{"className":287},[],[289],{"type":76,"value":290},"visualization.jsx",{"type":71,"tag":170,"props":292,"children":293},{},[294,299,304],{"type":71,"tag":209,"props":295,"children":296},{},[297],{"type":76,"value":298},"Extra deps",{"type":71,"tag":209,"props":300,"children":301},{},[302],{"type":76,"value":303},"None",{"type":71,"tag":209,"props":305,"children":306},{},[307,313,314,320],{"type":71,"tag":84,"props":308,"children":310},{"className":309},[],[311],{"type":76,"value":312},"react",{"type":76,"value":249},{"type":71,"tag":84,"props":315,"children":317},{"className":316},[],[318],{"type":76,"value":319},"react-dom",{"type":76,"value":321}," (peer deps, added by scaffold)",{"type":71,"tag":123,"props":323,"children":324},{},[],{"type":71,"tag":106,"props":326,"children":328},{"id":327},"project-structure",[329],{"type":76,"value":330},"Project Structure",{"type":71,"tag":78,"props":332,"children":333},{},[334,336,342,344,350,351,357,359,365],{"type":76,"value":335},"A project is a Splunk app that can contain one or more visualizations under ",{"type":71,"tag":84,"props":337,"children":339},{"className":338},[],[340],{"type":76,"value":341},"visualizations\u002F",{"type":76,"value":343},". Each viz has its own directory with ",{"type":71,"tag":84,"props":345,"children":347},{"className":346},[],[348],{"type":76,"value":349},"config.json",{"type":76,"value":249},{"type":71,"tag":84,"props":352,"children":354},{"className":353},[],[355],{"type":76,"value":356},"src\u002F",{"type":76,"value":358},", and ",{"type":71,"tag":84,"props":360,"children":362},{"className":361},[],[363],{"type":76,"value":364},"SPL.md",{"type":76,"value":366},".",{"type":71,"tag":368,"props":369,"children":373},"pre",{"className":370,"code":372,"language":76},[371],"language-text","my-viz-project\u002F\n├── package.json\n├── build.mjs                    # esbuild orchestrator\n├── build-plugins\u002F\n│   └── css-and-size.mjs         # CSS injection + asset inlining plugin\n├── package.mjs                  # .spl packager\n├── package\u002F\n│   └── app\u002F\n│       └── app.conf             # Splunk app identity (source of truth for id\u002Fversion)\n├── visualizations\u002F\n│   ├── \u003Cviz-one>\u002F\n│   │   ├── SPL.md               # SPL reference for this viz (you create this)\n│   │   ├── config.json\n│   │   └── src\u002F\n│   │       ├── visualization.js(x)\n│   │       └── visualization.css\n│   └── \u003Cviz-two>\u002F\n│       ├── SPL.md\n│       ├── config.json\n│       └── src\u002F\n│           ├── visualization.js(x)\n│           └── visualization.css\n└── dist\u002F                        # build output (generated)\n",[374],{"type":71,"tag":84,"props":375,"children":377},{"__ignoreMap":376},"",[378],{"type":76,"value":372},{"type":71,"tag":78,"props":380,"children":381},{},[382,384,389,391,397,399,405],{"type":76,"value":383},"The build system automatically discovers all directories under ",{"type":71,"tag":84,"props":385,"children":387},{"className":386},[],[388],{"type":76,"value":341},{"type":76,"value":390}," and builds them all. Name the project folder after the collection, not a single viz (e.g. ",{"type":71,"tag":84,"props":392,"children":394},{"className":393},[],[395],{"type":76,"value":396},"splunk-custom-vizzes",{"type":76,"value":398},", not ",{"type":71,"tag":84,"props":400,"children":402},{"className":401},[],[403],{"type":76,"value":404},"gauge",{"type":76,"value":406},").",{"type":71,"tag":123,"props":408,"children":409},{},[],{"type":71,"tag":106,"props":411,"children":413},{"id":412},"workflow-overview",[414],{"type":76,"value":415},"Workflow Overview",{"type":71,"tag":417,"props":418,"children":420},"h3",{"id":419},"_1-gather-requirements",[421],{"type":76,"value":422},"1. Gather requirements",{"type":71,"tag":78,"props":424,"children":425},{},[426],{"type":76,"value":427},"Before generating any code, ask the user (or extract from context):",{"type":71,"tag":429,"props":430,"children":431},"ol",{},[432,450,490,500,510,527,537,547],{"type":71,"tag":137,"props":433,"children":434},{},[435,441,443,449],{"type":71,"tag":436,"props":437,"children":438},"strong",{},[439],{"type":76,"value":440},"Project name",{"type":76,"value":442}," — used as the Splunk app ID. Only letters, numbers, dots, and underscores. Cannot start or end with a dot or underscore. E.g. ",{"type":71,"tag":84,"props":444,"children":446},{"className":445},[],[447],{"type":76,"value":448},"my_custom_viz",{"type":76,"value":366},{"type":71,"tag":137,"props":451,"children":452},{},[453,458,460,465,467,473,475,481,483,489],{"type":71,"tag":436,"props":454,"children":455},{},[456],{"type":76,"value":457},"Viz slug",{"type":76,"value":459}," — the directory name under ",{"type":71,"tag":84,"props":461,"children":463},{"className":462},[],[464],{"type":76,"value":341},{"type":76,"value":466},". Only lowercase letters, numbers, and underscores (",{"type":71,"tag":84,"props":468,"children":470},{"className":469},[],[471],{"type":76,"value":472},"[a-z0-9_]",{"type":76,"value":474},"). No dots, slashes, or spaces. Reject any value that would place files outside ",{"type":71,"tag":84,"props":476,"children":478},{"className":477},[],[479],{"type":76,"value":480},"visualizations\u002F\u003Cviz-slug>\u002F",{"type":76,"value":482},". E.g. ",{"type":71,"tag":84,"props":484,"children":486},{"className":485},[],[487],{"type":76,"value":488},"network_graph",{"type":76,"value":366},{"type":71,"tag":137,"props":491,"children":492},{},[493,498],{"type":71,"tag":436,"props":494,"children":495},{},[496],{"type":76,"value":497},"Viz display label",{"type":76,"value":499}," — human-readable name shown in the Splunk UI, e.g. \"Network Graph\".",{"type":71,"tag":137,"props":501,"children":502},{},[503,508],{"type":71,"tag":436,"props":504,"children":505},{},[506],{"type":76,"value":507},"Description",{"type":76,"value":509}," — one-line description of what the viz does.",{"type":71,"tag":137,"props":511,"children":512},{},[513,518,520,526],{"type":71,"tag":436,"props":514,"children":515},{},[516],{"type":76,"value":517},"Author",{"type":76,"value":519}," — for ",{"type":71,"tag":84,"props":521,"children":523},{"className":522},[],[524],{"type":76,"value":525},"app.conf",{"type":76,"value":366},{"type":71,"tag":137,"props":528,"children":529},{},[530,535],{"type":71,"tag":436,"props":531,"children":532},{},[533],{"type":76,"value":534},"Expected SPL columns",{"type":76,"value":536}," — which fields the search must produce. Distinguish required from optional.",{"type":71,"tag":137,"props":538,"children":539},{},[540,545],{"type":71,"tag":436,"props":541,"children":542},{},[543],{"type":76,"value":544},"Configurable settings",{"type":76,"value":546}," — what the user should be able to tweak (colors, thresholds, toggles). For each: name, type, default.",{"type":71,"tag":137,"props":548,"children":549},{},[550,555],{"type":71,"tag":436,"props":551,"children":552},{},[553],{"type":76,"value":554},"Rendering approach",{"type":76,"value":556}," — what to draw\u002Frender (canvas shapes, chart, table, map, etc.) to inform framework choice.",{"type":71,"tag":78,"props":558,"children":559},{},[560,562,569],{"type":76,"value":561},"Apply the defaults in ",{"type":71,"tag":563,"props":564,"children":566},"a",{"href":565},"#accessibility--safe-rendering",[567],{"type":76,"value":568},"Accessibility & safe rendering",{"type":76,"value":570}," unless the user's request or context makes them clearly inapplicable.",{"type":71,"tag":78,"props":572,"children":573},{},[574],{"type":76,"value":575},"If the user's request is vague, ask before scaffolding.",{"type":71,"tag":417,"props":577,"children":579},{"id":578},"_2-determine-project-location",[580],{"type":76,"value":581},"2. Determine project location",{"type":71,"tag":78,"props":583,"children":584},{},[585],{"type":76,"value":586},"Ask the user where to create the project if not specified. This can be any empty directory — no existing dashboard-enterprise repo required.",{"type":71,"tag":78,"props":588,"children":589},{},[590,595,597,603,605,610,611,617,618,624,625,630],{"type":71,"tag":436,"props":591,"children":592},{},[593],{"type":76,"value":594},"Adding a viz to an existing project",{"type":76,"value":596},": If a project already exists with build infrastructure, skip step 3 entirely. Just create ",{"type":71,"tag":84,"props":598,"children":600},{"className":599},[],[601],{"type":76,"value":602},"visualizations\u002F\u003Cviz-name>\u002F",{"type":76,"value":604}," with ",{"type":71,"tag":84,"props":606,"children":608},{"className":607},[],[609],{"type":76,"value":349},{"type":76,"value":249},{"type":71,"tag":84,"props":612,"children":614},{"className":613},[],[615],{"type":76,"value":616},"src\u002Fvisualization.js(x)",{"type":76,"value":249},{"type":71,"tag":84,"props":619,"children":621},{"className":620},[],[622],{"type":76,"value":623},"src\u002Fvisualization.css",{"type":76,"value":358},{"type":71,"tag":84,"props":626,"children":628},{"className":627},[],[629],{"type":76,"value":364},{"type":76,"value":631},". The build discovers all viz directories automatically — no registration needed. Then go to step 5.",{"type":71,"tag":417,"props":633,"children":635},{"id":634},"_3-scaffold-the-project",[636],{"type":76,"value":637},"3. Scaffold the project",{"type":71,"tag":78,"props":639,"children":640},{},[641,643,649],{"type":76,"value":642},"The ",{"type":71,"tag":84,"props":644,"children":646},{"className":645},[],[647],{"type":76,"value":648},"@splunk\u002Fcreate",{"type":76,"value":650}," CLI currently requires interactive prompts for label, description, author, and template — only the project name can be passed as a positional arg. Full non-interactive support is planned. Ask the user to run the command and answer the remaining prompts:",{"type":71,"tag":652,"props":653,"children":654},"blockquote",{},[655,660,669,674,731],{"type":71,"tag":78,"props":656,"children":657},{},[658],{"type":76,"value":659},"\"Please run this in your terminal and follow the prompts, then let me know when done:\"",{"type":71,"tag":368,"props":661,"children":664},{"className":662,"code":663,"language":76},[371],"mkdir \u003Cproject-name> && cd \u003Cproject-name>\nnpx @splunk\u002Fcreate@latest --mode=dashboard-studio-extension \u003Capp_id>\n",[665],{"type":71,"tag":84,"props":666,"children":667},{"__ignoreMap":376},[668],{"type":76,"value":663},{"type":71,"tag":78,"props":670,"children":671},{},[672],{"type":76,"value":673},"Use these values when prompted:",{"type":71,"tag":133,"props":675,"children":676},{},[677,693,707,721],{"type":71,"tag":137,"props":678,"children":679},{},[680,685,687],{"type":71,"tag":436,"props":681,"children":682},{},[683],{"type":76,"value":684},"Display label",{"type":76,"value":686},": ",{"type":71,"tag":84,"props":688,"children":690},{"className":689},[],[691],{"type":76,"value":692},"\u003CHuman Readable Label>",{"type":71,"tag":137,"props":694,"children":695},{},[696,700,701],{"type":71,"tag":436,"props":697,"children":698},{},[699],{"type":76,"value":507},{"type":76,"value":686},{"type":71,"tag":84,"props":702,"children":704},{"className":703},[],[705],{"type":76,"value":706},"\u003Cdescription>",{"type":71,"tag":137,"props":708,"children":709},{},[710,714,715],{"type":71,"tag":436,"props":711,"children":712},{},[713],{"type":76,"value":517},{"type":76,"value":686},{"type":71,"tag":84,"props":716,"children":718},{"className":717},[],[719],{"type":76,"value":720},"\u003Cauthor>",{"type":71,"tag":137,"props":722,"children":723},{},[724,729],{"type":71,"tag":436,"props":725,"children":726},{},[727],{"type":76,"value":728},"Template",{"type":76,"value":730},": JavaScript or React (per your framework choice above)",{"type":71,"tag":78,"props":732,"children":733},{},[734,736,742],{"type":76,"value":735},"Then run ",{"type":71,"tag":84,"props":737,"children":739},{"className":738},[],[740],{"type":76,"value":741},"yarn",{"type":76,"value":743}," to install dependencies.",{"type":71,"tag":78,"props":745,"children":746},{},[747],{"type":76,"value":748},"Wait for the user to confirm the scaffold is complete before proceeding.",{"type":71,"tag":78,"props":750,"children":751},{},[752,754,760],{"type":76,"value":753},"After scaffolding, verify ",{"type":71,"tag":84,"props":755,"children":757},{"className":756},[],[758],{"type":76,"value":759},"package\u002Fapp\u002Fapp.conf",{"type":76,"value":761}," has the correct app identity. The\nscaffold generates this shape (values filled from your prompt answers):",{"type":71,"tag":368,"props":763,"children":767},{"className":764,"code":765,"language":766,"meta":376,"style":376},"language-ini shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","[package]\nid = \u003Capp_id>\n\n[id]\nversion = 0.1.0\nname = \u003Capp_id>\n\n[ui]\nis_visible = 1\nlabel = \u003CHuman Readable Label>\nshow_in_nav = 0\n\n[launcher]\nauthor = \u003Cauthor>\ndescription = \u003Cdescription>\nversion = 0.1.0\n\n[install]\nis_configured = 0\nbuild = \u003C@- buildNumber @>\ncheck_for_updates = 0\n\n[manifest]\ncategory = Custom\n","ini",[768],{"type":71,"tag":84,"props":769,"children":770},{"__ignoreMap":376},[771,782,791,800,809,818,827,835,844,853,862,871,879,888,897,906,914,922,931,940,949,958,966,975],{"type":71,"tag":772,"props":773,"children":776},"span",{"class":774,"line":775},"line",1,[777],{"type":71,"tag":772,"props":778,"children":779},{},[780],{"type":76,"value":781},"[package]\n",{"type":71,"tag":772,"props":783,"children":785},{"class":774,"line":784},2,[786],{"type":71,"tag":772,"props":787,"children":788},{},[789],{"type":76,"value":790},"id = \u003Capp_id>\n",{"type":71,"tag":772,"props":792,"children":793},{"class":774,"line":22},[794],{"type":71,"tag":772,"props":795,"children":797},{"emptyLinePlaceholder":796},true,[798],{"type":76,"value":799},"\n",{"type":71,"tag":772,"props":801,"children":803},{"class":774,"line":802},4,[804],{"type":71,"tag":772,"props":805,"children":806},{},[807],{"type":76,"value":808},"[id]\n",{"type":71,"tag":772,"props":810,"children":812},{"class":774,"line":811},5,[813],{"type":71,"tag":772,"props":814,"children":815},{},[816],{"type":76,"value":817},"version = 0.1.0\n",{"type":71,"tag":772,"props":819,"children":821},{"class":774,"line":820},6,[822],{"type":71,"tag":772,"props":823,"children":824},{},[825],{"type":76,"value":826},"name = \u003Capp_id>\n",{"type":71,"tag":772,"props":828,"children":830},{"class":774,"line":829},7,[831],{"type":71,"tag":772,"props":832,"children":833},{"emptyLinePlaceholder":796},[834],{"type":76,"value":799},{"type":71,"tag":772,"props":836,"children":838},{"class":774,"line":837},8,[839],{"type":71,"tag":772,"props":840,"children":841},{},[842],{"type":76,"value":843},"[ui]\n",{"type":71,"tag":772,"props":845,"children":847},{"class":774,"line":846},9,[848],{"type":71,"tag":772,"props":849,"children":850},{},[851],{"type":76,"value":852},"is_visible = 1\n",{"type":71,"tag":772,"props":854,"children":856},{"class":774,"line":855},10,[857],{"type":71,"tag":772,"props":858,"children":859},{},[860],{"type":76,"value":861},"label = \u003CHuman Readable Label>\n",{"type":71,"tag":772,"props":863,"children":865},{"class":774,"line":864},11,[866],{"type":71,"tag":772,"props":867,"children":868},{},[869],{"type":76,"value":870},"show_in_nav = 0\n",{"type":71,"tag":772,"props":872,"children":874},{"class":774,"line":873},12,[875],{"type":71,"tag":772,"props":876,"children":877},{"emptyLinePlaceholder":796},[878],{"type":76,"value":799},{"type":71,"tag":772,"props":880,"children":882},{"class":774,"line":881},13,[883],{"type":71,"tag":772,"props":884,"children":885},{},[886],{"type":76,"value":887},"[launcher]\n",{"type":71,"tag":772,"props":889,"children":891},{"class":774,"line":890},14,[892],{"type":71,"tag":772,"props":893,"children":894},{},[895],{"type":76,"value":896},"author = \u003Cauthor>\n",{"type":71,"tag":772,"props":898,"children":900},{"class":774,"line":899},15,[901],{"type":71,"tag":772,"props":902,"children":903},{},[904],{"type":76,"value":905},"description = \u003Cdescription>\n",{"type":71,"tag":772,"props":907,"children":909},{"class":774,"line":908},16,[910],{"type":71,"tag":772,"props":911,"children":912},{},[913],{"type":76,"value":817},{"type":71,"tag":772,"props":915,"children":917},{"class":774,"line":916},17,[918],{"type":71,"tag":772,"props":919,"children":920},{"emptyLinePlaceholder":796},[921],{"type":76,"value":799},{"type":71,"tag":772,"props":923,"children":925},{"class":774,"line":924},18,[926],{"type":71,"tag":772,"props":927,"children":928},{},[929],{"type":76,"value":930},"[install]\n",{"type":71,"tag":772,"props":932,"children":934},{"class":774,"line":933},19,[935],{"type":71,"tag":772,"props":936,"children":937},{},[938],{"type":76,"value":939},"is_configured = 0\n",{"type":71,"tag":772,"props":941,"children":943},{"class":774,"line":942},20,[944],{"type":71,"tag":772,"props":945,"children":946},{},[947],{"type":76,"value":948},"build = \u003C@- buildNumber @>\n",{"type":71,"tag":772,"props":950,"children":952},{"class":774,"line":951},21,[953],{"type":71,"tag":772,"props":954,"children":955},{},[956],{"type":76,"value":957},"check_for_updates = 0\n",{"type":71,"tag":772,"props":959,"children":961},{"class":774,"line":960},22,[962],{"type":71,"tag":772,"props":963,"children":964},{"emptyLinePlaceholder":796},[965],{"type":76,"value":799},{"type":71,"tag":772,"props":967,"children":969},{"class":774,"line":968},23,[970],{"type":71,"tag":772,"props":971,"children":972},{},[973],{"type":76,"value":974},"[manifest]\n",{"type":71,"tag":772,"props":976,"children":978},{"class":774,"line":977},24,[979],{"type":71,"tag":772,"props":980,"children":981},{},[982],{"type":76,"value":983},"category = Custom\n",{"type":71,"tag":78,"props":985,"children":986},{},[987,989,995],{"type":76,"value":988},"App ",{"type":71,"tag":84,"props":990,"children":992},{"className":991},[],[993],{"type":76,"value":994},"id",{"type":76,"value":996},": only letters, numbers, dots, underscores. Cannot start or end with a dot or underscore.",{"type":71,"tag":652,"props":998,"children":999},{},[1000],{"type":71,"tag":78,"props":1001,"children":1002},{},[1003,1016,1018,1024],{"type":71,"tag":436,"props":1004,"children":1005},{},[1006,1008,1014],{"type":76,"value":1007},"Leave ",{"type":71,"tag":84,"props":1009,"children":1011},{"className":1010},[],[1012],{"type":76,"value":1013},"build = \u003C@- buildNumber @>",{"type":76,"value":1015}," exactly as-is.",{"type":76,"value":1017}," That template tag is intentional —\nthe packager (",{"type":71,"tag":84,"props":1019,"children":1021},{"className":1020},[],[1022],{"type":76,"value":1023},"yarn package",{"type":76,"value":1025},") substitutes a real build number when it stages the app.\nDo not replace it with a literal.",{"type":71,"tag":78,"props":1027,"children":1028},{},[1029,1031,1036,1038,1044],{"type":76,"value":1030},"Then create ",{"type":71,"tag":84,"props":1032,"children":1034},{"className":1033},[],[1035],{"type":76,"value":364},{"type":76,"value":1037}," inside the viz directory (",{"type":71,"tag":84,"props":1039,"children":1041},{"className":1040},[],[1042],{"type":76,"value":1043},"visualizations\u002F\u003Cviz-name>\u002FSPL.md",{"type":76,"value":1045},"):",{"type":71,"tag":368,"props":1047,"children":1051},{"className":1048,"code":1049,"language":1050,"meta":376,"style":376},"language-markdown shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","# \u003CDisplay Label> — SPL Reference\n\n## Expected Columns\n\n| Column | Type | Required? | Description |\n|--------|------|-----------|-------------|\n| \u003Ccol>  | \u003Ctype> | Yes\u002FOptional | \u003Cwhat it is> |\n\n## Notes\n\n- Key data assumptions, units, fallback behavior, etc.\n\n## Full SPL\n\n\\`\\`\\`spl\n\u003Cfull working SPL query>\n\\`\\`\\`\n\n## Time range\n\n`rt-1m` to `rt` (or `-60m` to `now` for historical)\n","markdown",[1052],{"type":71,"tag":84,"props":1053,"children":1054},{"__ignoreMap":376},[1055,1070,1077,1090,1097,1143,1151,1194,1201,1213,1220,1233,1240,1252,1259,1267,1275,1283,1290,1302,1309],{"type":71,"tag":772,"props":1056,"children":1057},{"class":774,"line":775},[1058,1064],{"type":71,"tag":772,"props":1059,"children":1061},{"style":1060},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[1062],{"type":76,"value":1063},"# ",{"type":71,"tag":772,"props":1065,"children":1067},{"style":1066},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[1068],{"type":76,"value":1069},"\u003CDisplay Label> — SPL Reference\n",{"type":71,"tag":772,"props":1071,"children":1072},{"class":774,"line":784},[1073],{"type":71,"tag":772,"props":1074,"children":1075},{"emptyLinePlaceholder":796},[1076],{"type":76,"value":799},{"type":71,"tag":772,"props":1078,"children":1079},{"class":774,"line":22},[1080,1085],{"type":71,"tag":772,"props":1081,"children":1082},{"style":1060},[1083],{"type":76,"value":1084},"## ",{"type":71,"tag":772,"props":1086,"children":1087},{"style":1066},[1088],{"type":76,"value":1089},"Expected Columns\n",{"type":71,"tag":772,"props":1091,"children":1092},{"class":774,"line":802},[1093],{"type":71,"tag":772,"props":1094,"children":1095},{"emptyLinePlaceholder":796},[1096],{"type":76,"value":799},{"type":71,"tag":772,"props":1098,"children":1099},{"class":774,"line":811},[1100,1105,1111,1115,1120,1124,1129,1133,1138],{"type":71,"tag":772,"props":1101,"children":1102},{"style":1060},[1103],{"type":76,"value":1104},"|",{"type":71,"tag":772,"props":1106,"children":1108},{"style":1107},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[1109],{"type":76,"value":1110}," Column ",{"type":71,"tag":772,"props":1112,"children":1113},{"style":1060},[1114],{"type":76,"value":1104},{"type":71,"tag":772,"props":1116,"children":1117},{"style":1107},[1118],{"type":76,"value":1119}," Type ",{"type":71,"tag":772,"props":1121,"children":1122},{"style":1060},[1123],{"type":76,"value":1104},{"type":71,"tag":772,"props":1125,"children":1126},{"style":1107},[1127],{"type":76,"value":1128}," Required? ",{"type":71,"tag":772,"props":1130,"children":1131},{"style":1060},[1132],{"type":76,"value":1104},{"type":71,"tag":772,"props":1134,"children":1135},{"style":1107},[1136],{"type":76,"value":1137}," Description ",{"type":71,"tag":772,"props":1139,"children":1140},{"style":1060},[1141],{"type":76,"value":1142},"|\n",{"type":71,"tag":772,"props":1144,"children":1145},{"class":774,"line":820},[1146],{"type":71,"tag":772,"props":1147,"children":1148},{"style":1060},[1149],{"type":76,"value":1150},"|--------|------|-----------|-------------|\n",{"type":71,"tag":772,"props":1152,"children":1153},{"class":774,"line":829},[1154,1158,1163,1167,1172,1176,1181,1185,1190],{"type":71,"tag":772,"props":1155,"children":1156},{"style":1060},[1157],{"type":76,"value":1104},{"type":71,"tag":772,"props":1159,"children":1160},{"style":1107},[1161],{"type":76,"value":1162}," \u003Ccol>  ",{"type":71,"tag":772,"props":1164,"children":1165},{"style":1060},[1166],{"type":76,"value":1104},{"type":71,"tag":772,"props":1168,"children":1169},{"style":1107},[1170],{"type":76,"value":1171}," \u003Ctype> ",{"type":71,"tag":772,"props":1173,"children":1174},{"style":1060},[1175],{"type":76,"value":1104},{"type":71,"tag":772,"props":1177,"children":1178},{"style":1107},[1179],{"type":76,"value":1180}," Yes\u002FOptional ",{"type":71,"tag":772,"props":1182,"children":1183},{"style":1060},[1184],{"type":76,"value":1104},{"type":71,"tag":772,"props":1186,"children":1187},{"style":1107},[1188],{"type":76,"value":1189}," \u003Cwhat it is> ",{"type":71,"tag":772,"props":1191,"children":1192},{"style":1060},[1193],{"type":76,"value":1142},{"type":71,"tag":772,"props":1195,"children":1196},{"class":774,"line":837},[1197],{"type":71,"tag":772,"props":1198,"children":1199},{"emptyLinePlaceholder":796},[1200],{"type":76,"value":799},{"type":71,"tag":772,"props":1202,"children":1203},{"class":774,"line":846},[1204,1208],{"type":71,"tag":772,"props":1205,"children":1206},{"style":1060},[1207],{"type":76,"value":1084},{"type":71,"tag":772,"props":1209,"children":1210},{"style":1066},[1211],{"type":76,"value":1212},"Notes\n",{"type":71,"tag":772,"props":1214,"children":1215},{"class":774,"line":855},[1216],{"type":71,"tag":772,"props":1217,"children":1218},{"emptyLinePlaceholder":796},[1219],{"type":76,"value":799},{"type":71,"tag":772,"props":1221,"children":1222},{"class":774,"line":864},[1223,1228],{"type":71,"tag":772,"props":1224,"children":1225},{"style":1060},[1226],{"type":76,"value":1227},"-",{"type":71,"tag":772,"props":1229,"children":1230},{"style":1107},[1231],{"type":76,"value":1232}," Key data assumptions, units, fallback behavior, etc.\n",{"type":71,"tag":772,"props":1234,"children":1235},{"class":774,"line":873},[1236],{"type":71,"tag":772,"props":1237,"children":1238},{"emptyLinePlaceholder":796},[1239],{"type":76,"value":799},{"type":71,"tag":772,"props":1241,"children":1242},{"class":774,"line":881},[1243,1247],{"type":71,"tag":772,"props":1244,"children":1245},{"style":1060},[1246],{"type":76,"value":1084},{"type":71,"tag":772,"props":1248,"children":1249},{"style":1066},[1250],{"type":76,"value":1251},"Full SPL\n",{"type":71,"tag":772,"props":1253,"children":1254},{"class":774,"line":890},[1255],{"type":71,"tag":772,"props":1256,"children":1257},{"emptyLinePlaceholder":796},[1258],{"type":76,"value":799},{"type":71,"tag":772,"props":1260,"children":1261},{"class":774,"line":899},[1262],{"type":71,"tag":772,"props":1263,"children":1264},{"style":1107},[1265],{"type":76,"value":1266},"\\`\\`\\`spl\n",{"type":71,"tag":772,"props":1268,"children":1269},{"class":774,"line":908},[1270],{"type":71,"tag":772,"props":1271,"children":1272},{"style":1107},[1273],{"type":76,"value":1274},"\u003Cfull working SPL query>\n",{"type":71,"tag":772,"props":1276,"children":1277},{"class":774,"line":916},[1278],{"type":71,"tag":772,"props":1279,"children":1280},{"style":1107},[1281],{"type":76,"value":1282},"\\`\\`\\`\n",{"type":71,"tag":772,"props":1284,"children":1285},{"class":774,"line":924},[1286],{"type":71,"tag":772,"props":1287,"children":1288},{"emptyLinePlaceholder":796},[1289],{"type":76,"value":799},{"type":71,"tag":772,"props":1291,"children":1292},{"class":774,"line":933},[1293,1297],{"type":71,"tag":772,"props":1294,"children":1295},{"style":1060},[1296],{"type":76,"value":1084},{"type":71,"tag":772,"props":1298,"children":1299},{"style":1066},[1300],{"type":76,"value":1301},"Time range\n",{"type":71,"tag":772,"props":1303,"children":1304},{"class":774,"line":942},[1305],{"type":71,"tag":772,"props":1306,"children":1307},{"emptyLinePlaceholder":796},[1308],{"type":76,"value":799},{"type":71,"tag":772,"props":1310,"children":1311},{"class":774,"line":951},[1312,1317,1323,1327,1332,1336,1341,1345,1350,1354,1359,1363,1367,1371,1376,1380],{"type":71,"tag":772,"props":1313,"children":1314},{"style":1060},[1315],{"type":76,"value":1316},"`",{"type":71,"tag":772,"props":1318,"children":1320},{"style":1319},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[1321],{"type":76,"value":1322},"rt-1m",{"type":71,"tag":772,"props":1324,"children":1325},{"style":1060},[1326],{"type":76,"value":1316},{"type":71,"tag":772,"props":1328,"children":1329},{"style":1107},[1330],{"type":76,"value":1331}," to ",{"type":71,"tag":772,"props":1333,"children":1334},{"style":1060},[1335],{"type":76,"value":1316},{"type":71,"tag":772,"props":1337,"children":1338},{"style":1319},[1339],{"type":76,"value":1340},"rt",{"type":71,"tag":772,"props":1342,"children":1343},{"style":1060},[1344],{"type":76,"value":1316},{"type":71,"tag":772,"props":1346,"children":1347},{"style":1107},[1348],{"type":76,"value":1349}," (or ",{"type":71,"tag":772,"props":1351,"children":1352},{"style":1060},[1353],{"type":76,"value":1316},{"type":71,"tag":772,"props":1355,"children":1356},{"style":1319},[1357],{"type":76,"value":1358},"-60m",{"type":71,"tag":772,"props":1360,"children":1361},{"style":1060},[1362],{"type":76,"value":1316},{"type":71,"tag":772,"props":1364,"children":1365},{"style":1107},[1366],{"type":76,"value":1331},{"type":71,"tag":772,"props":1368,"children":1369},{"style":1060},[1370],{"type":76,"value":1316},{"type":71,"tag":772,"props":1372,"children":1373},{"style":1319},[1374],{"type":76,"value":1375},"now",{"type":71,"tag":772,"props":1377,"children":1378},{"style":1060},[1379],{"type":76,"value":1316},{"type":71,"tag":772,"props":1381,"children":1382},{"style":1107},[1383],{"type":76,"value":1384}," for historical)\n",{"type":71,"tag":417,"props":1386,"children":1388},{"id":1387},"_4-create-the-visualization",[1389],{"type":76,"value":1390},"4. Create the visualization",{"type":71,"tag":78,"props":1392,"children":1393},{},[1394,1403,1405,1411,1413,1419,1421,1427],{"type":71,"tag":436,"props":1395,"children":1396},{},[1397],{"type":71,"tag":84,"props":1398,"children":1400},{"className":1399},[],[1401],{"type":76,"value":1402},"visualizations\u002F\u003Cviz-name>\u002Fconfig.json",{"type":76,"value":1404}," — see ",{"type":71,"tag":84,"props":1406,"children":1408},{"className":1407},[],[1409],{"type":76,"value":1410},"references\u002Fconfig-json.md",{"type":76,"value":1412}," for full field reference including ",{"type":71,"tag":84,"props":1414,"children":1416},{"className":1415},[],[1417],{"type":76,"value":1418},"optionsSchema",{"type":76,"value":1420}," and ",{"type":71,"tag":84,"props":1422,"children":1424},{"className":1423},[],[1425],{"type":76,"value":1426},"editorConfig",{"type":76,"value":1428},":",{"type":71,"tag":368,"props":1430,"children":1434},{"className":1431,"code":1432,"language":1433,"meta":376,"style":376},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"showTitleAndDescription\": true,\n  \"includeInToolbar\": true,\n  \"includeInVizSwitcher\": true,\n  \"showDrilldown\": false,\n  \"canSetTokens\": [],\n  \"hasEventHandlers\": false,\n  \"config\": {\n    \"name\": \"\u003CHuman Readable Name>\",\n    \"description\": \"\u003Cdescription>\",\n    \"category\": \"Custom\",\n    \"icon\": null,\n    \"dataContract\": {\n      \"requiredDataSources\": [\"primary\"],\n      \"optionalDataSources\": []\n    },\n    \"size\": { \"initialWidth\": 600, \"initialHeight\": 500 },\n    \"optionsSchema\": {},\n    \"editorConfig\": []\n  }\n}\n","json",[1435],{"type":71,"tag":84,"props":1436,"children":1437},{"__ignoreMap":376},[1438,1446,1474,1498,1522,1547,1572,1596,1621,1661,1697,1734,1759,1783,1828,1853,1861,1940,1964,1987,1995],{"type":71,"tag":772,"props":1439,"children":1440},{"class":774,"line":775},[1441],{"type":71,"tag":772,"props":1442,"children":1443},{"style":1060},[1444],{"type":76,"value":1445},"{\n",{"type":71,"tag":772,"props":1447,"children":1448},{"class":774,"line":784},[1449,1454,1460,1465,1469],{"type":71,"tag":772,"props":1450,"children":1451},{"style":1060},[1452],{"type":76,"value":1453},"  \"",{"type":71,"tag":772,"props":1455,"children":1457},{"style":1456},"--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA",[1458],{"type":76,"value":1459},"showTitleAndDescription",{"type":71,"tag":772,"props":1461,"children":1462},{"style":1060},[1463],{"type":76,"value":1464},"\"",{"type":71,"tag":772,"props":1466,"children":1467},{"style":1060},[1468],{"type":76,"value":1428},{"type":71,"tag":772,"props":1470,"children":1471},{"style":1060},[1472],{"type":76,"value":1473}," true,\n",{"type":71,"tag":772,"props":1475,"children":1476},{"class":774,"line":22},[1477,1481,1486,1490,1494],{"type":71,"tag":772,"props":1478,"children":1479},{"style":1060},[1480],{"type":76,"value":1453},{"type":71,"tag":772,"props":1482,"children":1483},{"style":1456},[1484],{"type":76,"value":1485},"includeInToolbar",{"type":71,"tag":772,"props":1487,"children":1488},{"style":1060},[1489],{"type":76,"value":1464},{"type":71,"tag":772,"props":1491,"children":1492},{"style":1060},[1493],{"type":76,"value":1428},{"type":71,"tag":772,"props":1495,"children":1496},{"style":1060},[1497],{"type":76,"value":1473},{"type":71,"tag":772,"props":1499,"children":1500},{"class":774,"line":802},[1501,1505,1510,1514,1518],{"type":71,"tag":772,"props":1502,"children":1503},{"style":1060},[1504],{"type":76,"value":1453},{"type":71,"tag":772,"props":1506,"children":1507},{"style":1456},[1508],{"type":76,"value":1509},"includeInVizSwitcher",{"type":71,"tag":772,"props":1511,"children":1512},{"style":1060},[1513],{"type":76,"value":1464},{"type":71,"tag":772,"props":1515,"children":1516},{"style":1060},[1517],{"type":76,"value":1428},{"type":71,"tag":772,"props":1519,"children":1520},{"style":1060},[1521],{"type":76,"value":1473},{"type":71,"tag":772,"props":1523,"children":1524},{"class":774,"line":811},[1525,1529,1534,1538,1542],{"type":71,"tag":772,"props":1526,"children":1527},{"style":1060},[1528],{"type":76,"value":1453},{"type":71,"tag":772,"props":1530,"children":1531},{"style":1456},[1532],{"type":76,"value":1533},"showDrilldown",{"type":71,"tag":772,"props":1535,"children":1536},{"style":1060},[1537],{"type":76,"value":1464},{"type":71,"tag":772,"props":1539,"children":1540},{"style":1060},[1541],{"type":76,"value":1428},{"type":71,"tag":772,"props":1543,"children":1544},{"style":1060},[1545],{"type":76,"value":1546}," false,\n",{"type":71,"tag":772,"props":1548,"children":1549},{"class":774,"line":820},[1550,1554,1559,1563,1567],{"type":71,"tag":772,"props":1551,"children":1552},{"style":1060},[1553],{"type":76,"value":1453},{"type":71,"tag":772,"props":1555,"children":1556},{"style":1456},[1557],{"type":76,"value":1558},"canSetTokens",{"type":71,"tag":772,"props":1560,"children":1561},{"style":1060},[1562],{"type":76,"value":1464},{"type":71,"tag":772,"props":1564,"children":1565},{"style":1060},[1566],{"type":76,"value":1428},{"type":71,"tag":772,"props":1568,"children":1569},{"style":1060},[1570],{"type":76,"value":1571}," [],\n",{"type":71,"tag":772,"props":1573,"children":1574},{"class":774,"line":829},[1575,1579,1584,1588,1592],{"type":71,"tag":772,"props":1576,"children":1577},{"style":1060},[1578],{"type":76,"value":1453},{"type":71,"tag":772,"props":1580,"children":1581},{"style":1456},[1582],{"type":76,"value":1583},"hasEventHandlers",{"type":71,"tag":772,"props":1585,"children":1586},{"style":1060},[1587],{"type":76,"value":1464},{"type":71,"tag":772,"props":1589,"children":1590},{"style":1060},[1591],{"type":76,"value":1428},{"type":71,"tag":772,"props":1593,"children":1594},{"style":1060},[1595],{"type":76,"value":1546},{"type":71,"tag":772,"props":1597,"children":1598},{"class":774,"line":837},[1599,1603,1608,1612,1616],{"type":71,"tag":772,"props":1600,"children":1601},{"style":1060},[1602],{"type":76,"value":1453},{"type":71,"tag":772,"props":1604,"children":1605},{"style":1456},[1606],{"type":76,"value":1607},"config",{"type":71,"tag":772,"props":1609,"children":1610},{"style":1060},[1611],{"type":76,"value":1464},{"type":71,"tag":772,"props":1613,"children":1614},{"style":1060},[1615],{"type":76,"value":1428},{"type":71,"tag":772,"props":1617,"children":1618},{"style":1060},[1619],{"type":76,"value":1620}," {\n",{"type":71,"tag":772,"props":1622,"children":1623},{"class":774,"line":846},[1624,1629,1634,1638,1642,1647,1652,1656],{"type":71,"tag":772,"props":1625,"children":1626},{"style":1060},[1627],{"type":76,"value":1628},"    \"",{"type":71,"tag":772,"props":1630,"children":1631},{"style":1066},[1632],{"type":76,"value":1633},"name",{"type":71,"tag":772,"props":1635,"children":1636},{"style":1060},[1637],{"type":76,"value":1464},{"type":71,"tag":772,"props":1639,"children":1640},{"style":1060},[1641],{"type":76,"value":1428},{"type":71,"tag":772,"props":1643,"children":1644},{"style":1060},[1645],{"type":76,"value":1646}," \"",{"type":71,"tag":772,"props":1648,"children":1649},{"style":1319},[1650],{"type":76,"value":1651},"\u003CHuman Readable Name>",{"type":71,"tag":772,"props":1653,"children":1654},{"style":1060},[1655],{"type":76,"value":1464},{"type":71,"tag":772,"props":1657,"children":1658},{"style":1060},[1659],{"type":76,"value":1660},",\n",{"type":71,"tag":772,"props":1662,"children":1663},{"class":774,"line":855},[1664,1668,1673,1677,1681,1685,1689,1693],{"type":71,"tag":772,"props":1665,"children":1666},{"style":1060},[1667],{"type":76,"value":1628},{"type":71,"tag":772,"props":1669,"children":1670},{"style":1066},[1671],{"type":76,"value":1672},"description",{"type":71,"tag":772,"props":1674,"children":1675},{"style":1060},[1676],{"type":76,"value":1464},{"type":71,"tag":772,"props":1678,"children":1679},{"style":1060},[1680],{"type":76,"value":1428},{"type":71,"tag":772,"props":1682,"children":1683},{"style":1060},[1684],{"type":76,"value":1646},{"type":71,"tag":772,"props":1686,"children":1687},{"style":1319},[1688],{"type":76,"value":706},{"type":71,"tag":772,"props":1690,"children":1691},{"style":1060},[1692],{"type":76,"value":1464},{"type":71,"tag":772,"props":1694,"children":1695},{"style":1060},[1696],{"type":76,"value":1660},{"type":71,"tag":772,"props":1698,"children":1699},{"class":774,"line":864},[1700,1704,1709,1713,1717,1721,1726,1730],{"type":71,"tag":772,"props":1701,"children":1702},{"style":1060},[1703],{"type":76,"value":1628},{"type":71,"tag":772,"props":1705,"children":1706},{"style":1066},[1707],{"type":76,"value":1708},"category",{"type":71,"tag":772,"props":1710,"children":1711},{"style":1060},[1712],{"type":76,"value":1464},{"type":71,"tag":772,"props":1714,"children":1715},{"style":1060},[1716],{"type":76,"value":1428},{"type":71,"tag":772,"props":1718,"children":1719},{"style":1060},[1720],{"type":76,"value":1646},{"type":71,"tag":772,"props":1722,"children":1723},{"style":1319},[1724],{"type":76,"value":1725},"Custom",{"type":71,"tag":772,"props":1727,"children":1728},{"style":1060},[1729],{"type":76,"value":1464},{"type":71,"tag":772,"props":1731,"children":1732},{"style":1060},[1733],{"type":76,"value":1660},{"type":71,"tag":772,"props":1735,"children":1736},{"class":774,"line":873},[1737,1741,1746,1750,1754],{"type":71,"tag":772,"props":1738,"children":1739},{"style":1060},[1740],{"type":76,"value":1628},{"type":71,"tag":772,"props":1742,"children":1743},{"style":1066},[1744],{"type":76,"value":1745},"icon",{"type":71,"tag":772,"props":1747,"children":1748},{"style":1060},[1749],{"type":76,"value":1464},{"type":71,"tag":772,"props":1751,"children":1752},{"style":1060},[1753],{"type":76,"value":1428},{"type":71,"tag":772,"props":1755,"children":1756},{"style":1060},[1757],{"type":76,"value":1758}," null,\n",{"type":71,"tag":772,"props":1760,"children":1761},{"class":774,"line":881},[1762,1766,1771,1775,1779],{"type":71,"tag":772,"props":1763,"children":1764},{"style":1060},[1765],{"type":76,"value":1628},{"type":71,"tag":772,"props":1767,"children":1768},{"style":1066},[1769],{"type":76,"value":1770},"dataContract",{"type":71,"tag":772,"props":1772,"children":1773},{"style":1060},[1774],{"type":76,"value":1464},{"type":71,"tag":772,"props":1776,"children":1777},{"style":1060},[1778],{"type":76,"value":1428},{"type":71,"tag":772,"props":1780,"children":1781},{"style":1060},[1782],{"type":76,"value":1620},{"type":71,"tag":772,"props":1784,"children":1785},{"class":774,"line":890},[1786,1791,1797,1801,1805,1810,1814,1819,1823],{"type":71,"tag":772,"props":1787,"children":1788},{"style":1060},[1789],{"type":76,"value":1790},"      \"",{"type":71,"tag":772,"props":1792,"children":1794},{"style":1793},"--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C",[1795],{"type":76,"value":1796},"requiredDataSources",{"type":71,"tag":772,"props":1798,"children":1799},{"style":1060},[1800],{"type":76,"value":1464},{"type":71,"tag":772,"props":1802,"children":1803},{"style":1060},[1804],{"type":76,"value":1428},{"type":71,"tag":772,"props":1806,"children":1807},{"style":1060},[1808],{"type":76,"value":1809}," [",{"type":71,"tag":772,"props":1811,"children":1812},{"style":1060},[1813],{"type":76,"value":1464},{"type":71,"tag":772,"props":1815,"children":1816},{"style":1319},[1817],{"type":76,"value":1818},"primary",{"type":71,"tag":772,"props":1820,"children":1821},{"style":1060},[1822],{"type":76,"value":1464},{"type":71,"tag":772,"props":1824,"children":1825},{"style":1060},[1826],{"type":76,"value":1827},"],\n",{"type":71,"tag":772,"props":1829,"children":1830},{"class":774,"line":899},[1831,1835,1840,1844,1848],{"type":71,"tag":772,"props":1832,"children":1833},{"style":1060},[1834],{"type":76,"value":1790},{"type":71,"tag":772,"props":1836,"children":1837},{"style":1793},[1838],{"type":76,"value":1839},"optionalDataSources",{"type":71,"tag":772,"props":1841,"children":1842},{"style":1060},[1843],{"type":76,"value":1464},{"type":71,"tag":772,"props":1845,"children":1846},{"style":1060},[1847],{"type":76,"value":1428},{"type":71,"tag":772,"props":1849,"children":1850},{"style":1060},[1851],{"type":76,"value":1852}," []\n",{"type":71,"tag":772,"props":1854,"children":1855},{"class":774,"line":908},[1856],{"type":71,"tag":772,"props":1857,"children":1858},{"style":1060},[1859],{"type":76,"value":1860},"    },\n",{"type":71,"tag":772,"props":1862,"children":1863},{"class":774,"line":916},[1864,1868,1873,1877,1881,1886,1890,1895,1899,1903,1908,1913,1917,1922,1926,1930,1935],{"type":71,"tag":772,"props":1865,"children":1866},{"style":1060},[1867],{"type":76,"value":1628},{"type":71,"tag":772,"props":1869,"children":1870},{"style":1066},[1871],{"type":76,"value":1872},"size",{"type":71,"tag":772,"props":1874,"children":1875},{"style":1060},[1876],{"type":76,"value":1464},{"type":71,"tag":772,"props":1878,"children":1879},{"style":1060},[1880],{"type":76,"value":1428},{"type":71,"tag":772,"props":1882,"children":1883},{"style":1060},[1884],{"type":76,"value":1885}," {",{"type":71,"tag":772,"props":1887,"children":1888},{"style":1060},[1889],{"type":76,"value":1646},{"type":71,"tag":772,"props":1891,"children":1892},{"style":1793},[1893],{"type":76,"value":1894},"initialWidth",{"type":71,"tag":772,"props":1896,"children":1897},{"style":1060},[1898],{"type":76,"value":1464},{"type":71,"tag":772,"props":1900,"children":1901},{"style":1060},[1902],{"type":76,"value":1428},{"type":71,"tag":772,"props":1904,"children":1905},{"style":1793},[1906],{"type":76,"value":1907}," 600",{"type":71,"tag":772,"props":1909,"children":1910},{"style":1060},[1911],{"type":76,"value":1912},",",{"type":71,"tag":772,"props":1914,"children":1915},{"style":1060},[1916],{"type":76,"value":1646},{"type":71,"tag":772,"props":1918,"children":1919},{"style":1793},[1920],{"type":76,"value":1921},"initialHeight",{"type":71,"tag":772,"props":1923,"children":1924},{"style":1060},[1925],{"type":76,"value":1464},{"type":71,"tag":772,"props":1927,"children":1928},{"style":1060},[1929],{"type":76,"value":1428},{"type":71,"tag":772,"props":1931,"children":1932},{"style":1793},[1933],{"type":76,"value":1934}," 500",{"type":71,"tag":772,"props":1936,"children":1937},{"style":1060},[1938],{"type":76,"value":1939}," },\n",{"type":71,"tag":772,"props":1941,"children":1942},{"class":774,"line":924},[1943,1947,1951,1955,1959],{"type":71,"tag":772,"props":1944,"children":1945},{"style":1060},[1946],{"type":76,"value":1628},{"type":71,"tag":772,"props":1948,"children":1949},{"style":1066},[1950],{"type":76,"value":1418},{"type":71,"tag":772,"props":1952,"children":1953},{"style":1060},[1954],{"type":76,"value":1464},{"type":71,"tag":772,"props":1956,"children":1957},{"style":1060},[1958],{"type":76,"value":1428},{"type":71,"tag":772,"props":1960,"children":1961},{"style":1060},[1962],{"type":76,"value":1963}," {},\n",{"type":71,"tag":772,"props":1965,"children":1966},{"class":774,"line":933},[1967,1971,1975,1979,1983],{"type":71,"tag":772,"props":1968,"children":1969},{"style":1060},[1970],{"type":76,"value":1628},{"type":71,"tag":772,"props":1972,"children":1973},{"style":1066},[1974],{"type":76,"value":1426},{"type":71,"tag":772,"props":1976,"children":1977},{"style":1060},[1978],{"type":76,"value":1464},{"type":71,"tag":772,"props":1980,"children":1981},{"style":1060},[1982],{"type":76,"value":1428},{"type":71,"tag":772,"props":1984,"children":1985},{"style":1060},[1986],{"type":76,"value":1852},{"type":71,"tag":772,"props":1988,"children":1989},{"class":774,"line":942},[1990],{"type":71,"tag":772,"props":1991,"children":1992},{"style":1060},[1993],{"type":76,"value":1994},"  }\n",{"type":71,"tag":772,"props":1996,"children":1997},{"class":774,"line":951},[1998],{"type":71,"tag":772,"props":1999,"children":2000},{"style":1060},[2001],{"type":76,"value":2002},"}\n",{"type":71,"tag":123,"props":2004,"children":2005},{},[],{"type":71,"tag":78,"props":2007,"children":2008},{},[2009,2019],{"type":71,"tag":436,"props":2010,"children":2011},{},[2012,2014],{"type":76,"value":2013},"JavaScript — ",{"type":71,"tag":84,"props":2015,"children":2017},{"className":2016},[],[2018],{"type":76,"value":281},{"type":76,"value":1428},{"type":71,"tag":78,"props":2021,"children":2022},{},[2023,2025,2031],{"type":76,"value":2024},"Data always arrives in columnar format: ",{"type":71,"tag":84,"props":2026,"children":2028},{"className":2027},[],[2029],{"type":76,"value":2030},"{ fields: [{name}, ...], columns: [[col0val0, col0val1, ...], ...] }",{"type":76,"value":2032},". All values are strings — parse numerics explicitly. Listener methods return a cleanup function.",{"type":71,"tag":368,"props":2034,"children":2038},{"className":2035,"code":2036,"language":2037,"meta":376,"style":376},"language-js shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import { VisualizationAPI } from '@splunk\u002Fdashboard-studio-extension';\nimport '.\u002Fvisualization.css';\n\nconst container = document.createElement('div');\ncontainer.className = 'viz-container';\ndocument.body.appendChild(container);\n\nconst state = { data: null, loading: false, options: {}, width: 0, height: 0, theme: 'light' };\n\nfunction render() {\n    if (state.loading) { container.innerHTML = '\u003Cdiv class=\"loading\">Loading...\u003C\u002Fdiv>'; return; }\n    if (!state.data)   { container.innerHTML = '\u003Cdiv class=\"empty\">No data\u003C\u002Fdiv>'; return; }\n\n    const { fields, columns } = state.data;\n    if (!columns?.length || !columns[0].length) {\n        container.innerHTML = '\u003Cdiv class=\"empty\">No data\u003C\u002Fdiv>';\n        return;\n    }\n\n    \u002F\u002F Always provide fallbacks — options may be unset even if optionsSchema declares defaults\n    const myOption = state.options.myOption ?? 'default';\n    const isDark = state.theme === 'dark';\n\n    \u002F\u002F implement visualization here\n}\n\nVisualizationAPI.addDataSourcesListener(\n    ({ dataSources, loading }) => {\n        state.loading = loading;\n        state.data = dataSources?.primary?.data ?? null;\n        render();\n    },\n    { invokeImmediately: true }\n);\n\nVisualizationAPI.addOptionsListener(({ options }) => {\n    state.options = options;\n    render();\n});\n\nVisualizationAPI.addDimensionsListener(({ width, height }) => {\n    state.width = width;\n    state.height = height;\n    render();\n}, { invokeImmediately: true });\n\nVisualizationAPI.addThemeListener(({ theme }) => {\n    state.theme = theme;\n    render();\n}, { invokeImmediately: true });\n","js",[2039],{"type":71,"tag":84,"props":2040,"children":2041},{"__ignoreMap":376},[2042,2089,2113,2120,2179,2217,2252,2259,2389,2396,2418,2506,2589,2596,2647,2722,2758,2770,2778,2785,2794,2854,2905,2912,2920,2928,2936,2959,2996,3025,3074,3091,3099,3126,3138,3146,3188,3217,3234,3251,3259,3308,3337,3366,3382,3419,3427,3468,3496,3512],{"type":71,"tag":772,"props":2043,"children":2044},{"class":774,"line":775},[2045,2051,2055,2060,2065,2070,2075,2079,2084],{"type":71,"tag":772,"props":2046,"children":2048},{"style":2047},"--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic",[2049],{"type":76,"value":2050},"import",{"type":71,"tag":772,"props":2052,"children":2053},{"style":1060},[2054],{"type":76,"value":1885},{"type":71,"tag":772,"props":2056,"children":2057},{"style":1107},[2058],{"type":76,"value":2059}," VisualizationAPI",{"type":71,"tag":772,"props":2061,"children":2062},{"style":1060},[2063],{"type":76,"value":2064}," }",{"type":71,"tag":772,"props":2066,"children":2067},{"style":2047},[2068],{"type":76,"value":2069}," from",{"type":71,"tag":772,"props":2071,"children":2072},{"style":1060},[2073],{"type":76,"value":2074}," '",{"type":71,"tag":772,"props":2076,"children":2077},{"style":1319},[2078],{"type":76,"value":89},{"type":71,"tag":772,"props":2080,"children":2081},{"style":1060},[2082],{"type":76,"value":2083},"'",{"type":71,"tag":772,"props":2085,"children":2086},{"style":1060},[2087],{"type":76,"value":2088},";\n",{"type":71,"tag":772,"props":2090,"children":2091},{"class":774,"line":784},[2092,2096,2100,2105,2109],{"type":71,"tag":772,"props":2093,"children":2094},{"style":2047},[2095],{"type":76,"value":2050},{"type":71,"tag":772,"props":2097,"children":2098},{"style":1060},[2099],{"type":76,"value":2074},{"type":71,"tag":772,"props":2101,"children":2102},{"style":1319},[2103],{"type":76,"value":2104},".\u002Fvisualization.css",{"type":71,"tag":772,"props":2106,"children":2107},{"style":1060},[2108],{"type":76,"value":2083},{"type":71,"tag":772,"props":2110,"children":2111},{"style":1060},[2112],{"type":76,"value":2088},{"type":71,"tag":772,"props":2114,"children":2115},{"class":774,"line":22},[2116],{"type":71,"tag":772,"props":2117,"children":2118},{"emptyLinePlaceholder":796},[2119],{"type":76,"value":799},{"type":71,"tag":772,"props":2121,"children":2122},{"class":774,"line":802},[2123,2128,2133,2138,2143,2147,2153,2158,2162,2167,2171,2175],{"type":71,"tag":772,"props":2124,"children":2125},{"style":1456},[2126],{"type":76,"value":2127},"const",{"type":71,"tag":772,"props":2129,"children":2130},{"style":1107},[2131],{"type":76,"value":2132}," container ",{"type":71,"tag":772,"props":2134,"children":2135},{"style":1060},[2136],{"type":76,"value":2137},"=",{"type":71,"tag":772,"props":2139,"children":2140},{"style":1107},[2141],{"type":76,"value":2142}," document",{"type":71,"tag":772,"props":2144,"children":2145},{"style":1060},[2146],{"type":76,"value":366},{"type":71,"tag":772,"props":2148,"children":2150},{"style":2149},"--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF",[2151],{"type":76,"value":2152},"createElement",{"type":71,"tag":772,"props":2154,"children":2155},{"style":1107},[2156],{"type":76,"value":2157},"(",{"type":71,"tag":772,"props":2159,"children":2160},{"style":1060},[2161],{"type":76,"value":2083},{"type":71,"tag":772,"props":2163,"children":2164},{"style":1319},[2165],{"type":76,"value":2166},"div",{"type":71,"tag":772,"props":2168,"children":2169},{"style":1060},[2170],{"type":76,"value":2083},{"type":71,"tag":772,"props":2172,"children":2173},{"style":1107},[2174],{"type":76,"value":188},{"type":71,"tag":772,"props":2176,"children":2177},{"style":1060},[2178],{"type":76,"value":2088},{"type":71,"tag":772,"props":2180,"children":2181},{"class":774,"line":811},[2182,2187,2191,2196,2200,2204,2209,2213],{"type":71,"tag":772,"props":2183,"children":2184},{"style":1107},[2185],{"type":76,"value":2186},"container",{"type":71,"tag":772,"props":2188,"children":2189},{"style":1060},[2190],{"type":76,"value":366},{"type":71,"tag":772,"props":2192,"children":2193},{"style":1107},[2194],{"type":76,"value":2195},"className ",{"type":71,"tag":772,"props":2197,"children":2198},{"style":1060},[2199],{"type":76,"value":2137},{"type":71,"tag":772,"props":2201,"children":2202},{"style":1060},[2203],{"type":76,"value":2074},{"type":71,"tag":772,"props":2205,"children":2206},{"style":1319},[2207],{"type":76,"value":2208},"viz-container",{"type":71,"tag":772,"props":2210,"children":2211},{"style":1060},[2212],{"type":76,"value":2083},{"type":71,"tag":772,"props":2214,"children":2215},{"style":1060},[2216],{"type":76,"value":2088},{"type":71,"tag":772,"props":2218,"children":2219},{"class":774,"line":820},[2220,2225,2229,2234,2238,2243,2248],{"type":71,"tag":772,"props":2221,"children":2222},{"style":1107},[2223],{"type":76,"value":2224},"document",{"type":71,"tag":772,"props":2226,"children":2227},{"style":1060},[2228],{"type":76,"value":366},{"type":71,"tag":772,"props":2230,"children":2231},{"style":1107},[2232],{"type":76,"value":2233},"body",{"type":71,"tag":772,"props":2235,"children":2236},{"style":1060},[2237],{"type":76,"value":366},{"type":71,"tag":772,"props":2239,"children":2240},{"style":2149},[2241],{"type":76,"value":2242},"appendChild",{"type":71,"tag":772,"props":2244,"children":2245},{"style":1107},[2246],{"type":76,"value":2247},"(container)",{"type":71,"tag":772,"props":2249,"children":2250},{"style":1060},[2251],{"type":76,"value":2088},{"type":71,"tag":772,"props":2253,"children":2254},{"class":774,"line":829},[2255],{"type":71,"tag":772,"props":2256,"children":2257},{"emptyLinePlaceholder":796},[2258],{"type":76,"value":799},{"type":71,"tag":772,"props":2260,"children":2261},{"class":774,"line":837},[2262,2266,2271,2275,2279,2285,2289,2294,2299,2303,2309,2313,2318,2322,2327,2332,2336,2341,2345,2350,2354,2358,2362,2367,2371,2375,2380,2384],{"type":71,"tag":772,"props":2263,"children":2264},{"style":1456},[2265],{"type":76,"value":2127},{"type":71,"tag":772,"props":2267,"children":2268},{"style":1107},[2269],{"type":76,"value":2270}," state ",{"type":71,"tag":772,"props":2272,"children":2273},{"style":1060},[2274],{"type":76,"value":2137},{"type":71,"tag":772,"props":2276,"children":2277},{"style":1060},[2278],{"type":76,"value":1885},{"type":71,"tag":772,"props":2280,"children":2282},{"style":2281},"--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178",[2283],{"type":76,"value":2284}," data",{"type":71,"tag":772,"props":2286,"children":2287},{"style":1060},[2288],{"type":76,"value":1428},{"type":71,"tag":772,"props":2290,"children":2291},{"style":1060},[2292],{"type":76,"value":2293}," null,",{"type":71,"tag":772,"props":2295,"children":2296},{"style":2281},[2297],{"type":76,"value":2298}," loading",{"type":71,"tag":772,"props":2300,"children":2301},{"style":1060},[2302],{"type":76,"value":1428},{"type":71,"tag":772,"props":2304,"children":2306},{"style":2305},"--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC",[2307],{"type":76,"value":2308}," false",{"type":71,"tag":772,"props":2310,"children":2311},{"style":1060},[2312],{"type":76,"value":1912},{"type":71,"tag":772,"props":2314,"children":2315},{"style":2281},[2316],{"type":76,"value":2317}," options",{"type":71,"tag":772,"props":2319,"children":2320},{"style":1060},[2321],{"type":76,"value":1428},{"type":71,"tag":772,"props":2323,"children":2324},{"style":1060},[2325],{"type":76,"value":2326}," {},",{"type":71,"tag":772,"props":2328,"children":2329},{"style":2281},[2330],{"type":76,"value":2331}," width",{"type":71,"tag":772,"props":2333,"children":2334},{"style":1060},[2335],{"type":76,"value":1428},{"type":71,"tag":772,"props":2337,"children":2338},{"style":1793},[2339],{"type":76,"value":2340}," 0",{"type":71,"tag":772,"props":2342,"children":2343},{"style":1060},[2344],{"type":76,"value":1912},{"type":71,"tag":772,"props":2346,"children":2347},{"style":2281},[2348],{"type":76,"value":2349}," height",{"type":71,"tag":772,"props":2351,"children":2352},{"style":1060},[2353],{"type":76,"value":1428},{"type":71,"tag":772,"props":2355,"children":2356},{"style":1793},[2357],{"type":76,"value":2340},{"type":71,"tag":772,"props":2359,"children":2360},{"style":1060},[2361],{"type":76,"value":1912},{"type":71,"tag":772,"props":2363,"children":2364},{"style":2281},[2365],{"type":76,"value":2366}," theme",{"type":71,"tag":772,"props":2368,"children":2369},{"style":1060},[2370],{"type":76,"value":1428},{"type":71,"tag":772,"props":2372,"children":2373},{"style":1060},[2374],{"type":76,"value":2074},{"type":71,"tag":772,"props":2376,"children":2377},{"style":1319},[2378],{"type":76,"value":2379},"light",{"type":71,"tag":772,"props":2381,"children":2382},{"style":1060},[2383],{"type":76,"value":2083},{"type":71,"tag":772,"props":2385,"children":2386},{"style":1060},[2387],{"type":76,"value":2388}," };\n",{"type":71,"tag":772,"props":2390,"children":2391},{"class":774,"line":846},[2392],{"type":71,"tag":772,"props":2393,"children":2394},{"emptyLinePlaceholder":796},[2395],{"type":76,"value":799},{"type":71,"tag":772,"props":2397,"children":2398},{"class":774,"line":855},[2399,2404,2409,2414],{"type":71,"tag":772,"props":2400,"children":2401},{"style":1456},[2402],{"type":76,"value":2403},"function",{"type":71,"tag":772,"props":2405,"children":2406},{"style":2149},[2407],{"type":76,"value":2408}," render",{"type":71,"tag":772,"props":2410,"children":2411},{"style":1060},[2412],{"type":76,"value":2413},"()",{"type":71,"tag":772,"props":2415,"children":2416},{"style":1060},[2417],{"type":76,"value":1620},{"type":71,"tag":772,"props":2419,"children":2420},{"class":774,"line":864},[2421,2426,2431,2436,2440,2445,2450,2455,2460,2464,2469,2474,2478,2483,2487,2492,2497,2501],{"type":71,"tag":772,"props":2422,"children":2423},{"style":2047},[2424],{"type":76,"value":2425},"    if",{"type":71,"tag":772,"props":2427,"children":2428},{"style":2281},[2429],{"type":76,"value":2430}," (",{"type":71,"tag":772,"props":2432,"children":2433},{"style":1107},[2434],{"type":76,"value":2435},"state",{"type":71,"tag":772,"props":2437,"children":2438},{"style":1060},[2439],{"type":76,"value":366},{"type":71,"tag":772,"props":2441,"children":2442},{"style":1107},[2443],{"type":76,"value":2444},"loading",{"type":71,"tag":772,"props":2446,"children":2447},{"style":2281},[2448],{"type":76,"value":2449},") ",{"type":71,"tag":772,"props":2451,"children":2452},{"style":1060},[2453],{"type":76,"value":2454},"{",{"type":71,"tag":772,"props":2456,"children":2457},{"style":1107},[2458],{"type":76,"value":2459}," container",{"type":71,"tag":772,"props":2461,"children":2462},{"style":1060},[2463],{"type":76,"value":366},{"type":71,"tag":772,"props":2465,"children":2466},{"style":1107},[2467],{"type":76,"value":2468},"innerHTML",{"type":71,"tag":772,"props":2470,"children":2471},{"style":1060},[2472],{"type":76,"value":2473}," =",{"type":71,"tag":772,"props":2475,"children":2476},{"style":1060},[2477],{"type":76,"value":2074},{"type":71,"tag":772,"props":2479,"children":2480},{"style":1319},[2481],{"type":76,"value":2482},"\u003Cdiv class=\"loading\">Loading...\u003C\u002Fdiv>",{"type":71,"tag":772,"props":2484,"children":2485},{"style":1060},[2486],{"type":76,"value":2083},{"type":71,"tag":772,"props":2488,"children":2489},{"style":1060},[2490],{"type":76,"value":2491},";",{"type":71,"tag":772,"props":2493,"children":2494},{"style":2047},[2495],{"type":76,"value":2496}," return",{"type":71,"tag":772,"props":2498,"children":2499},{"style":1060},[2500],{"type":76,"value":2491},{"type":71,"tag":772,"props":2502,"children":2503},{"style":1060},[2504],{"type":76,"value":2505}," }\n",{"type":71,"tag":772,"props":2507,"children":2508},{"class":774,"line":873},[2509,2513,2517,2522,2526,2530,2535,2540,2544,2548,2552,2556,2560,2564,2569,2573,2577,2581,2585],{"type":71,"tag":772,"props":2510,"children":2511},{"style":2047},[2512],{"type":76,"value":2425},{"type":71,"tag":772,"props":2514,"children":2515},{"style":2281},[2516],{"type":76,"value":2430},{"type":71,"tag":772,"props":2518,"children":2519},{"style":1060},[2520],{"type":76,"value":2521},"!",{"type":71,"tag":772,"props":2523,"children":2524},{"style":1107},[2525],{"type":76,"value":2435},{"type":71,"tag":772,"props":2527,"children":2528},{"style":1060},[2529],{"type":76,"value":366},{"type":71,"tag":772,"props":2531,"children":2532},{"style":1107},[2533],{"type":76,"value":2534},"data",{"type":71,"tag":772,"props":2536,"children":2537},{"style":2281},[2538],{"type":76,"value":2539},")   ",{"type":71,"tag":772,"props":2541,"children":2542},{"style":1060},[2543],{"type":76,"value":2454},{"type":71,"tag":772,"props":2545,"children":2546},{"style":1107},[2547],{"type":76,"value":2459},{"type":71,"tag":772,"props":2549,"children":2550},{"style":1060},[2551],{"type":76,"value":366},{"type":71,"tag":772,"props":2553,"children":2554},{"style":1107},[2555],{"type":76,"value":2468},{"type":71,"tag":772,"props":2557,"children":2558},{"style":1060},[2559],{"type":76,"value":2473},{"type":71,"tag":772,"props":2561,"children":2562},{"style":1060},[2563],{"type":76,"value":2074},{"type":71,"tag":772,"props":2565,"children":2566},{"style":1319},[2567],{"type":76,"value":2568},"\u003Cdiv class=\"empty\">No data\u003C\u002Fdiv>",{"type":71,"tag":772,"props":2570,"children":2571},{"style":1060},[2572],{"type":76,"value":2083},{"type":71,"tag":772,"props":2574,"children":2575},{"style":1060},[2576],{"type":76,"value":2491},{"type":71,"tag":772,"props":2578,"children":2579},{"style":2047},[2580],{"type":76,"value":2496},{"type":71,"tag":772,"props":2582,"children":2583},{"style":1060},[2584],{"type":76,"value":2491},{"type":71,"tag":772,"props":2586,"children":2587},{"style":1060},[2588],{"type":76,"value":2505},{"type":71,"tag":772,"props":2590,"children":2591},{"class":774,"line":881},[2592],{"type":71,"tag":772,"props":2593,"children":2594},{"emptyLinePlaceholder":796},[2595],{"type":76,"value":799},{"type":71,"tag":772,"props":2597,"children":2598},{"class":774,"line":890},[2599,2604,2608,2613,2617,2622,2626,2630,2635,2639,2643],{"type":71,"tag":772,"props":2600,"children":2601},{"style":1456},[2602],{"type":76,"value":2603},"    const",{"type":71,"tag":772,"props":2605,"children":2606},{"style":1060},[2607],{"type":76,"value":1885},{"type":71,"tag":772,"props":2609,"children":2610},{"style":1107},[2611],{"type":76,"value":2612}," fields",{"type":71,"tag":772,"props":2614,"children":2615},{"style":1060},[2616],{"type":76,"value":1912},{"type":71,"tag":772,"props":2618,"children":2619},{"style":1107},[2620],{"type":76,"value":2621}," columns",{"type":71,"tag":772,"props":2623,"children":2624},{"style":1060},[2625],{"type":76,"value":2064},{"type":71,"tag":772,"props":2627,"children":2628},{"style":1060},[2629],{"type":76,"value":2473},{"type":71,"tag":772,"props":2631,"children":2632},{"style":1107},[2633],{"type":76,"value":2634}," state",{"type":71,"tag":772,"props":2636,"children":2637},{"style":1060},[2638],{"type":76,"value":366},{"type":71,"tag":772,"props":2640,"children":2641},{"style":1107},[2642],{"type":76,"value":2534},{"type":71,"tag":772,"props":2644,"children":2645},{"style":1060},[2646],{"type":76,"value":2088},{"type":71,"tag":772,"props":2648,"children":2649},{"class":774,"line":899},[2650,2654,2658,2662,2667,2672,2677,2682,2687,2691,2696,2701,2706,2710,2714,2718],{"type":71,"tag":772,"props":2651,"children":2652},{"style":2047},[2653],{"type":76,"value":2425},{"type":71,"tag":772,"props":2655,"children":2656},{"style":2281},[2657],{"type":76,"value":2430},{"type":71,"tag":772,"props":2659,"children":2660},{"style":1060},[2661],{"type":76,"value":2521},{"type":71,"tag":772,"props":2663,"children":2664},{"style":1107},[2665],{"type":76,"value":2666},"columns",{"type":71,"tag":772,"props":2668,"children":2669},{"style":1060},[2670],{"type":76,"value":2671},"?.",{"type":71,"tag":772,"props":2673,"children":2674},{"style":1107},[2675],{"type":76,"value":2676},"length",{"type":71,"tag":772,"props":2678,"children":2679},{"style":1060},[2680],{"type":76,"value":2681}," ||",{"type":71,"tag":772,"props":2683,"children":2684},{"style":1060},[2685],{"type":76,"value":2686}," !",{"type":71,"tag":772,"props":2688,"children":2689},{"style":1107},[2690],{"type":76,"value":2666},{"type":71,"tag":772,"props":2692,"children":2693},{"style":2281},[2694],{"type":76,"value":2695},"[",{"type":71,"tag":772,"props":2697,"children":2698},{"style":1793},[2699],{"type":76,"value":2700},"0",{"type":71,"tag":772,"props":2702,"children":2703},{"style":2281},[2704],{"type":76,"value":2705},"]",{"type":71,"tag":772,"props":2707,"children":2708},{"style":1060},[2709],{"type":76,"value":366},{"type":71,"tag":772,"props":2711,"children":2712},{"style":1107},[2713],{"type":76,"value":2676},{"type":71,"tag":772,"props":2715,"children":2716},{"style":2281},[2717],{"type":76,"value":2449},{"type":71,"tag":772,"props":2719,"children":2720},{"style":1060},[2721],{"type":76,"value":1445},{"type":71,"tag":772,"props":2723,"children":2724},{"class":774,"line":908},[2725,2730,2734,2738,2742,2746,2750,2754],{"type":71,"tag":772,"props":2726,"children":2727},{"style":1107},[2728],{"type":76,"value":2729},"        container",{"type":71,"tag":772,"props":2731,"children":2732},{"style":1060},[2733],{"type":76,"value":366},{"type":71,"tag":772,"props":2735,"children":2736},{"style":1107},[2737],{"type":76,"value":2468},{"type":71,"tag":772,"props":2739,"children":2740},{"style":1060},[2741],{"type":76,"value":2473},{"type":71,"tag":772,"props":2743,"children":2744},{"style":1060},[2745],{"type":76,"value":2074},{"type":71,"tag":772,"props":2747,"children":2748},{"style":1319},[2749],{"type":76,"value":2568},{"type":71,"tag":772,"props":2751,"children":2752},{"style":1060},[2753],{"type":76,"value":2083},{"type":71,"tag":772,"props":2755,"children":2756},{"style":1060},[2757],{"type":76,"value":2088},{"type":71,"tag":772,"props":2759,"children":2760},{"class":774,"line":916},[2761,2766],{"type":71,"tag":772,"props":2762,"children":2763},{"style":2047},[2764],{"type":76,"value":2765},"        return",{"type":71,"tag":772,"props":2767,"children":2768},{"style":1060},[2769],{"type":76,"value":2088},{"type":71,"tag":772,"props":2771,"children":2772},{"class":774,"line":924},[2773],{"type":71,"tag":772,"props":2774,"children":2775},{"style":1060},[2776],{"type":76,"value":2777},"    }\n",{"type":71,"tag":772,"props":2779,"children":2780},{"class":774,"line":933},[2781],{"type":71,"tag":772,"props":2782,"children":2783},{"emptyLinePlaceholder":796},[2784],{"type":76,"value":799},{"type":71,"tag":772,"props":2786,"children":2787},{"class":774,"line":942},[2788],{"type":71,"tag":772,"props":2789,"children":2791},{"style":2790},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic",[2792],{"type":76,"value":2793},"    \u002F\u002F Always provide fallbacks — options may be unset even if optionsSchema declares defaults\n",{"type":71,"tag":772,"props":2795,"children":2796},{"class":774,"line":951},[2797,2801,2806,2810,2814,2818,2823,2827,2832,2837,2841,2846,2850],{"type":71,"tag":772,"props":2798,"children":2799},{"style":1456},[2800],{"type":76,"value":2603},{"type":71,"tag":772,"props":2802,"children":2803},{"style":1107},[2804],{"type":76,"value":2805}," myOption",{"type":71,"tag":772,"props":2807,"children":2808},{"style":1060},[2809],{"type":76,"value":2473},{"type":71,"tag":772,"props":2811,"children":2812},{"style":1107},[2813],{"type":76,"value":2634},{"type":71,"tag":772,"props":2815,"children":2816},{"style":1060},[2817],{"type":76,"value":366},{"type":71,"tag":772,"props":2819,"children":2820},{"style":1107},[2821],{"type":76,"value":2822},"options",{"type":71,"tag":772,"props":2824,"children":2825},{"style":1060},[2826],{"type":76,"value":366},{"type":71,"tag":772,"props":2828,"children":2829},{"style":1107},[2830],{"type":76,"value":2831},"myOption",{"type":71,"tag":772,"props":2833,"children":2834},{"style":1060},[2835],{"type":76,"value":2836}," ??",{"type":71,"tag":772,"props":2838,"children":2839},{"style":1060},[2840],{"type":76,"value":2074},{"type":71,"tag":772,"props":2842,"children":2843},{"style":1319},[2844],{"type":76,"value":2845},"default",{"type":71,"tag":772,"props":2847,"children":2848},{"style":1060},[2849],{"type":76,"value":2083},{"type":71,"tag":772,"props":2851,"children":2852},{"style":1060},[2853],{"type":76,"value":2088},{"type":71,"tag":772,"props":2855,"children":2856},{"class":774,"line":960},[2857,2861,2866,2870,2874,2878,2883,2888,2892,2897,2901],{"type":71,"tag":772,"props":2858,"children":2859},{"style":1456},[2860],{"type":76,"value":2603},{"type":71,"tag":772,"props":2862,"children":2863},{"style":1107},[2864],{"type":76,"value":2865}," isDark",{"type":71,"tag":772,"props":2867,"children":2868},{"style":1060},[2869],{"type":76,"value":2473},{"type":71,"tag":772,"props":2871,"children":2872},{"style":1107},[2873],{"type":76,"value":2634},{"type":71,"tag":772,"props":2875,"children":2876},{"style":1060},[2877],{"type":76,"value":366},{"type":71,"tag":772,"props":2879,"children":2880},{"style":1107},[2881],{"type":76,"value":2882},"theme",{"type":71,"tag":772,"props":2884,"children":2885},{"style":1060},[2886],{"type":76,"value":2887}," ===",{"type":71,"tag":772,"props":2889,"children":2890},{"style":1060},[2891],{"type":76,"value":2074},{"type":71,"tag":772,"props":2893,"children":2894},{"style":1319},[2895],{"type":76,"value":2896},"dark",{"type":71,"tag":772,"props":2898,"children":2899},{"style":1060},[2900],{"type":76,"value":2083},{"type":71,"tag":772,"props":2902,"children":2903},{"style":1060},[2904],{"type":76,"value":2088},{"type":71,"tag":772,"props":2906,"children":2907},{"class":774,"line":968},[2908],{"type":71,"tag":772,"props":2909,"children":2910},{"emptyLinePlaceholder":796},[2911],{"type":76,"value":799},{"type":71,"tag":772,"props":2913,"children":2914},{"class":774,"line":977},[2915],{"type":71,"tag":772,"props":2916,"children":2917},{"style":2790},[2918],{"type":76,"value":2919},"    \u002F\u002F implement visualization here\n",{"type":71,"tag":772,"props":2921,"children":2923},{"class":774,"line":2922},25,[2924],{"type":71,"tag":772,"props":2925,"children":2926},{"style":1060},[2927],{"type":76,"value":2002},{"type":71,"tag":772,"props":2929,"children":2931},{"class":774,"line":2930},26,[2932],{"type":71,"tag":772,"props":2933,"children":2934},{"emptyLinePlaceholder":796},[2935],{"type":76,"value":799},{"type":71,"tag":772,"props":2937,"children":2939},{"class":774,"line":2938},27,[2940,2945,2949,2954],{"type":71,"tag":772,"props":2941,"children":2942},{"style":1107},[2943],{"type":76,"value":2944},"VisualizationAPI",{"type":71,"tag":772,"props":2946,"children":2947},{"style":1060},[2948],{"type":76,"value":366},{"type":71,"tag":772,"props":2950,"children":2951},{"style":2149},[2952],{"type":76,"value":2953},"addDataSourcesListener",{"type":71,"tag":772,"props":2955,"children":2956},{"style":1107},[2957],{"type":76,"value":2958},"(\n",{"type":71,"tag":772,"props":2960,"children":2962},{"class":774,"line":2961},28,[2963,2968,2974,2978,2982,2987,2992],{"type":71,"tag":772,"props":2964,"children":2965},{"style":1060},[2966],{"type":76,"value":2967},"    ({",{"type":71,"tag":772,"props":2969,"children":2971},{"style":2970},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic",[2972],{"type":76,"value":2973}," dataSources",{"type":71,"tag":772,"props":2975,"children":2976},{"style":1060},[2977],{"type":76,"value":1912},{"type":71,"tag":772,"props":2979,"children":2980},{"style":2970},[2981],{"type":76,"value":2298},{"type":71,"tag":772,"props":2983,"children":2984},{"style":1060},[2985],{"type":76,"value":2986}," })",{"type":71,"tag":772,"props":2988,"children":2989},{"style":1456},[2990],{"type":76,"value":2991}," =>",{"type":71,"tag":772,"props":2993,"children":2994},{"style":1060},[2995],{"type":76,"value":1620},{"type":71,"tag":772,"props":2997,"children":2999},{"class":774,"line":2998},29,[3000,3005,3009,3013,3017,3021],{"type":71,"tag":772,"props":3001,"children":3002},{"style":1107},[3003],{"type":76,"value":3004},"        state",{"type":71,"tag":772,"props":3006,"children":3007},{"style":1060},[3008],{"type":76,"value":366},{"type":71,"tag":772,"props":3010,"children":3011},{"style":1107},[3012],{"type":76,"value":2444},{"type":71,"tag":772,"props":3014,"children":3015},{"style":1060},[3016],{"type":76,"value":2473},{"type":71,"tag":772,"props":3018,"children":3019},{"style":1107},[3020],{"type":76,"value":2298},{"type":71,"tag":772,"props":3022,"children":3023},{"style":1060},[3024],{"type":76,"value":2088},{"type":71,"tag":772,"props":3026,"children":3028},{"class":774,"line":3027},30,[3029,3033,3037,3041,3045,3049,3053,3057,3061,3065,3069],{"type":71,"tag":772,"props":3030,"children":3031},{"style":1107},[3032],{"type":76,"value":3004},{"type":71,"tag":772,"props":3034,"children":3035},{"style":1060},[3036],{"type":76,"value":366},{"type":71,"tag":772,"props":3038,"children":3039},{"style":1107},[3040],{"type":76,"value":2534},{"type":71,"tag":772,"props":3042,"children":3043},{"style":1060},[3044],{"type":76,"value":2473},{"type":71,"tag":772,"props":3046,"children":3047},{"style":1107},[3048],{"type":76,"value":2973},{"type":71,"tag":772,"props":3050,"children":3051},{"style":1060},[3052],{"type":76,"value":2671},{"type":71,"tag":772,"props":3054,"children":3055},{"style":1107},[3056],{"type":76,"value":1818},{"type":71,"tag":772,"props":3058,"children":3059},{"style":1060},[3060],{"type":76,"value":2671},{"type":71,"tag":772,"props":3062,"children":3063},{"style":1107},[3064],{"type":76,"value":2534},{"type":71,"tag":772,"props":3066,"children":3067},{"style":1060},[3068],{"type":76,"value":2836},{"type":71,"tag":772,"props":3070,"children":3071},{"style":1060},[3072],{"type":76,"value":3073}," null;\n",{"type":71,"tag":772,"props":3075,"children":3077},{"class":774,"line":3076},31,[3078,3083,3087],{"type":71,"tag":772,"props":3079,"children":3080},{"style":2149},[3081],{"type":76,"value":3082},"        render",{"type":71,"tag":772,"props":3084,"children":3085},{"style":2281},[3086],{"type":76,"value":2413},{"type":71,"tag":772,"props":3088,"children":3089},{"style":1060},[3090],{"type":76,"value":2088},{"type":71,"tag":772,"props":3092,"children":3094},{"class":774,"line":3093},32,[3095],{"type":71,"tag":772,"props":3096,"children":3097},{"style":1060},[3098],{"type":76,"value":1860},{"type":71,"tag":772,"props":3100,"children":3102},{"class":774,"line":3101},33,[3103,3108,3113,3117,3122],{"type":71,"tag":772,"props":3104,"children":3105},{"style":1060},[3106],{"type":76,"value":3107},"    {",{"type":71,"tag":772,"props":3109,"children":3110},{"style":2281},[3111],{"type":76,"value":3112}," invokeImmediately",{"type":71,"tag":772,"props":3114,"children":3115},{"style":1060},[3116],{"type":76,"value":1428},{"type":71,"tag":772,"props":3118,"children":3119},{"style":2305},[3120],{"type":76,"value":3121}," true",{"type":71,"tag":772,"props":3123,"children":3124},{"style":1060},[3125],{"type":76,"value":2505},{"type":71,"tag":772,"props":3127,"children":3129},{"class":774,"line":3128},34,[3130,3134],{"type":71,"tag":772,"props":3131,"children":3132},{"style":1107},[3133],{"type":76,"value":188},{"type":71,"tag":772,"props":3135,"children":3136},{"style":1060},[3137],{"type":76,"value":2088},{"type":71,"tag":772,"props":3139,"children":3141},{"class":774,"line":3140},35,[3142],{"type":71,"tag":772,"props":3143,"children":3144},{"emptyLinePlaceholder":796},[3145],{"type":76,"value":799},{"type":71,"tag":772,"props":3147,"children":3149},{"class":774,"line":3148},36,[3150,3154,3158,3163,3167,3172,3176,3180,3184],{"type":71,"tag":772,"props":3151,"children":3152},{"style":1107},[3153],{"type":76,"value":2944},{"type":71,"tag":772,"props":3155,"children":3156},{"style":1060},[3157],{"type":76,"value":366},{"type":71,"tag":772,"props":3159,"children":3160},{"style":2149},[3161],{"type":76,"value":3162},"addOptionsListener",{"type":71,"tag":772,"props":3164,"children":3165},{"style":1107},[3166],{"type":76,"value":2157},{"type":71,"tag":772,"props":3168,"children":3169},{"style":1060},[3170],{"type":76,"value":3171},"({",{"type":71,"tag":772,"props":3173,"children":3174},{"style":2970},[3175],{"type":76,"value":2317},{"type":71,"tag":772,"props":3177,"children":3178},{"style":1060},[3179],{"type":76,"value":2986},{"type":71,"tag":772,"props":3181,"children":3182},{"style":1456},[3183],{"type":76,"value":2991},{"type":71,"tag":772,"props":3185,"children":3186},{"style":1060},[3187],{"type":76,"value":1620},{"type":71,"tag":772,"props":3189,"children":3191},{"class":774,"line":3190},37,[3192,3197,3201,3205,3209,3213],{"type":71,"tag":772,"props":3193,"children":3194},{"style":1107},[3195],{"type":76,"value":3196},"    state",{"type":71,"tag":772,"props":3198,"children":3199},{"style":1060},[3200],{"type":76,"value":366},{"type":71,"tag":772,"props":3202,"children":3203},{"style":1107},[3204],{"type":76,"value":2822},{"type":71,"tag":772,"props":3206,"children":3207},{"style":1060},[3208],{"type":76,"value":2473},{"type":71,"tag":772,"props":3210,"children":3211},{"style":1107},[3212],{"type":76,"value":2317},{"type":71,"tag":772,"props":3214,"children":3215},{"style":1060},[3216],{"type":76,"value":2088},{"type":71,"tag":772,"props":3218,"children":3220},{"class":774,"line":3219},38,[3221,3226,3230],{"type":71,"tag":772,"props":3222,"children":3223},{"style":2149},[3224],{"type":76,"value":3225},"    render",{"type":71,"tag":772,"props":3227,"children":3228},{"style":2281},[3229],{"type":76,"value":2413},{"type":71,"tag":772,"props":3231,"children":3232},{"style":1060},[3233],{"type":76,"value":2088},{"type":71,"tag":772,"props":3235,"children":3237},{"class":774,"line":3236},39,[3238,3243,3247],{"type":71,"tag":772,"props":3239,"children":3240},{"style":1060},[3241],{"type":76,"value":3242},"}",{"type":71,"tag":772,"props":3244,"children":3245},{"style":1107},[3246],{"type":76,"value":188},{"type":71,"tag":772,"props":3248,"children":3249},{"style":1060},[3250],{"type":76,"value":2088},{"type":71,"tag":772,"props":3252,"children":3254},{"class":774,"line":3253},40,[3255],{"type":71,"tag":772,"props":3256,"children":3257},{"emptyLinePlaceholder":796},[3258],{"type":76,"value":799},{"type":71,"tag":772,"props":3260,"children":3262},{"class":774,"line":3261},41,[3263,3267,3271,3276,3280,3284,3288,3292,3296,3300,3304],{"type":71,"tag":772,"props":3264,"children":3265},{"style":1107},[3266],{"type":76,"value":2944},{"type":71,"tag":772,"props":3268,"children":3269},{"style":1060},[3270],{"type":76,"value":366},{"type":71,"tag":772,"props":3272,"children":3273},{"style":2149},[3274],{"type":76,"value":3275},"addDimensionsListener",{"type":71,"tag":772,"props":3277,"children":3278},{"style":1107},[3279],{"type":76,"value":2157},{"type":71,"tag":772,"props":3281,"children":3282},{"style":1060},[3283],{"type":76,"value":3171},{"type":71,"tag":772,"props":3285,"children":3286},{"style":2970},[3287],{"type":76,"value":2331},{"type":71,"tag":772,"props":3289,"children":3290},{"style":1060},[3291],{"type":76,"value":1912},{"type":71,"tag":772,"props":3293,"children":3294},{"style":2970},[3295],{"type":76,"value":2349},{"type":71,"tag":772,"props":3297,"children":3298},{"style":1060},[3299],{"type":76,"value":2986},{"type":71,"tag":772,"props":3301,"children":3302},{"style":1456},[3303],{"type":76,"value":2991},{"type":71,"tag":772,"props":3305,"children":3306},{"style":1060},[3307],{"type":76,"value":1620},{"type":71,"tag":772,"props":3309,"children":3311},{"class":774,"line":3310},42,[3312,3316,3320,3325,3329,3333],{"type":71,"tag":772,"props":3313,"children":3314},{"style":1107},[3315],{"type":76,"value":3196},{"type":71,"tag":772,"props":3317,"children":3318},{"style":1060},[3319],{"type":76,"value":366},{"type":71,"tag":772,"props":3321,"children":3322},{"style":1107},[3323],{"type":76,"value":3324},"width",{"type":71,"tag":772,"props":3326,"children":3327},{"style":1060},[3328],{"type":76,"value":2473},{"type":71,"tag":772,"props":3330,"children":3331},{"style":1107},[3332],{"type":76,"value":2331},{"type":71,"tag":772,"props":3334,"children":3335},{"style":1060},[3336],{"type":76,"value":2088},{"type":71,"tag":772,"props":3338,"children":3340},{"class":774,"line":3339},43,[3341,3345,3349,3354,3358,3362],{"type":71,"tag":772,"props":3342,"children":3343},{"style":1107},[3344],{"type":76,"value":3196},{"type":71,"tag":772,"props":3346,"children":3347},{"style":1060},[3348],{"type":76,"value":366},{"type":71,"tag":772,"props":3350,"children":3351},{"style":1107},[3352],{"type":76,"value":3353},"height",{"type":71,"tag":772,"props":3355,"children":3356},{"style":1060},[3357],{"type":76,"value":2473},{"type":71,"tag":772,"props":3359,"children":3360},{"style":1107},[3361],{"type":76,"value":2349},{"type":71,"tag":772,"props":3363,"children":3364},{"style":1060},[3365],{"type":76,"value":2088},{"type":71,"tag":772,"props":3367,"children":3369},{"class":774,"line":3368},44,[3370,3374,3378],{"type":71,"tag":772,"props":3371,"children":3372},{"style":2149},[3373],{"type":76,"value":3225},{"type":71,"tag":772,"props":3375,"children":3376},{"style":2281},[3377],{"type":76,"value":2413},{"type":71,"tag":772,"props":3379,"children":3380},{"style":1060},[3381],{"type":76,"value":2088},{"type":71,"tag":772,"props":3383,"children":3385},{"class":774,"line":3384},45,[3386,3391,3395,3399,3403,3407,3411,3415],{"type":71,"tag":772,"props":3387,"children":3388},{"style":1060},[3389],{"type":76,"value":3390},"},",{"type":71,"tag":772,"props":3392,"children":3393},{"style":1060},[3394],{"type":76,"value":1885},{"type":71,"tag":772,"props":3396,"children":3397},{"style":2281},[3398],{"type":76,"value":3112},{"type":71,"tag":772,"props":3400,"children":3401},{"style":1060},[3402],{"type":76,"value":1428},{"type":71,"tag":772,"props":3404,"children":3405},{"style":2305},[3406],{"type":76,"value":3121},{"type":71,"tag":772,"props":3408,"children":3409},{"style":1060},[3410],{"type":76,"value":2064},{"type":71,"tag":772,"props":3412,"children":3413},{"style":1107},[3414],{"type":76,"value":188},{"type":71,"tag":772,"props":3416,"children":3417},{"style":1060},[3418],{"type":76,"value":2088},{"type":71,"tag":772,"props":3420,"children":3422},{"class":774,"line":3421},46,[3423],{"type":71,"tag":772,"props":3424,"children":3425},{"emptyLinePlaceholder":796},[3426],{"type":76,"value":799},{"type":71,"tag":772,"props":3428,"children":3430},{"class":774,"line":3429},47,[3431,3435,3439,3444,3448,3452,3456,3460,3464],{"type":71,"tag":772,"props":3432,"children":3433},{"style":1107},[3434],{"type":76,"value":2944},{"type":71,"tag":772,"props":3436,"children":3437},{"style":1060},[3438],{"type":76,"value":366},{"type":71,"tag":772,"props":3440,"children":3441},{"style":2149},[3442],{"type":76,"value":3443},"addThemeListener",{"type":71,"tag":772,"props":3445,"children":3446},{"style":1107},[3447],{"type":76,"value":2157},{"type":71,"tag":772,"props":3449,"children":3450},{"style":1060},[3451],{"type":76,"value":3171},{"type":71,"tag":772,"props":3453,"children":3454},{"style":2970},[3455],{"type":76,"value":2366},{"type":71,"tag":772,"props":3457,"children":3458},{"style":1060},[3459],{"type":76,"value":2986},{"type":71,"tag":772,"props":3461,"children":3462},{"style":1456},[3463],{"type":76,"value":2991},{"type":71,"tag":772,"props":3465,"children":3466},{"style":1060},[3467],{"type":76,"value":1620},{"type":71,"tag":772,"props":3469,"children":3471},{"class":774,"line":3470},48,[3472,3476,3480,3484,3488,3492],{"type":71,"tag":772,"props":3473,"children":3474},{"style":1107},[3475],{"type":76,"value":3196},{"type":71,"tag":772,"props":3477,"children":3478},{"style":1060},[3479],{"type":76,"value":366},{"type":71,"tag":772,"props":3481,"children":3482},{"style":1107},[3483],{"type":76,"value":2882},{"type":71,"tag":772,"props":3485,"children":3486},{"style":1060},[3487],{"type":76,"value":2473},{"type":71,"tag":772,"props":3489,"children":3490},{"style":1107},[3491],{"type":76,"value":2366},{"type":71,"tag":772,"props":3493,"children":3494},{"style":1060},[3495],{"type":76,"value":2088},{"type":71,"tag":772,"props":3497,"children":3499},{"class":774,"line":3498},49,[3500,3504,3508],{"type":71,"tag":772,"props":3501,"children":3502},{"style":2149},[3503],{"type":76,"value":3225},{"type":71,"tag":772,"props":3505,"children":3506},{"style":2281},[3507],{"type":76,"value":2413},{"type":71,"tag":772,"props":3509,"children":3510},{"style":1060},[3511],{"type":76,"value":2088},{"type":71,"tag":772,"props":3513,"children":3515},{"class":774,"line":3514},50,[3516,3520,3524,3528,3532,3536,3540,3544],{"type":71,"tag":772,"props":3517,"children":3518},{"style":1060},[3519],{"type":76,"value":3390},{"type":71,"tag":772,"props":3521,"children":3522},{"style":1060},[3523],{"type":76,"value":1885},{"type":71,"tag":772,"props":3525,"children":3526},{"style":2281},[3527],{"type":76,"value":3112},{"type":71,"tag":772,"props":3529,"children":3530},{"style":1060},[3531],{"type":76,"value":1428},{"type":71,"tag":772,"props":3533,"children":3534},{"style":2305},[3535],{"type":76,"value":3121},{"type":71,"tag":772,"props":3537,"children":3538},{"style":1060},[3539],{"type":76,"value":2064},{"type":71,"tag":772,"props":3541,"children":3542},{"style":1107},[3543],{"type":76,"value":188},{"type":71,"tag":772,"props":3545,"children":3546},{"style":1060},[3547],{"type":76,"value":2088},{"type":71,"tag":123,"props":3549,"children":3550},{},[],{"type":71,"tag":78,"props":3552,"children":3553},{},[3554,3564],{"type":71,"tag":436,"props":3555,"children":3556},{},[3557,3559],{"type":76,"value":3558},"React — ",{"type":71,"tag":84,"props":3560,"children":3562},{"className":3561},[],[3563],{"type":76,"value":290},{"type":76,"value":1428},{"type":71,"tag":78,"props":3566,"children":3567},{},[3568],{"type":76,"value":3569},"Call the hooks directly from your component.",{"type":71,"tag":368,"props":3571,"children":3575},{"className":3572,"code":3573,"language":3574,"meta":376,"style":376},"language-jsx shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import {\n    useDataSources,\n    useDimensions,\n    useOptions,\n    useTheme,\n} from '@splunk\u002Fdashboard-studio-extension\u002Freact';\nimport { createRoot } from 'react-dom\u002Fclient';\nimport '.\u002Fvisualization.css';\n\nfunction Viz() {\n    const { dataSources, loading } = useDataSources();\n    const { width, height } = useDimensions();\n    const { options } = useOptions();\n    const { theme } = useTheme();\n\n    \u002F\u002F Always provide fallbacks — options may be unset even if optionsSchema declares defaults\n    const myOption = options?.myOption ?? 'default';\n    const isDark = theme === 'dark';\n\n    if (loading) return \u003Cdiv className=\"loading\">Loading...\u003C\u002Fdiv>;\n\n    const data = dataSources?.primary?.data;\n    if (!data?.columns?.length || !data.columns[0].length)\n        return \u003Cdiv className=\"empty\">No data\u003C\u002Fdiv>;\n\n    const { fields, columns } = data;\n\n    \u002F\u002F implement visualization here\n    return \u003Cdiv style={{ width, height }} \u002F>;\n}\n\ncreateRoot(document.getElementById('root')).render(\u003CViz \u002F>);\n","jsx",[3576],{"type":71,"tag":84,"props":3577,"children":3578},{"__ignoreMap":376},[3579,3590,3602,3614,3626,3638,3665,3706,3729,3736,3756,3800,3844,3880,3916,3923,3930,3977,4016,4023,4101,4108,4147,4227,4284,4291,4330,4337,4344,4388,4395,4402],{"type":71,"tag":772,"props":3580,"children":3581},{"class":774,"line":775},[3582,3586],{"type":71,"tag":772,"props":3583,"children":3584},{"style":2047},[3585],{"type":76,"value":2050},{"type":71,"tag":772,"props":3587,"children":3588},{"style":1060},[3589],{"type":76,"value":1620},{"type":71,"tag":772,"props":3591,"children":3592},{"class":774,"line":784},[3593,3598],{"type":71,"tag":772,"props":3594,"children":3595},{"style":1107},[3596],{"type":76,"value":3597},"    useDataSources",{"type":71,"tag":772,"props":3599,"children":3600},{"style":1060},[3601],{"type":76,"value":1660},{"type":71,"tag":772,"props":3603,"children":3604},{"class":774,"line":22},[3605,3610],{"type":71,"tag":772,"props":3606,"children":3607},{"style":1107},[3608],{"type":76,"value":3609},"    useDimensions",{"type":71,"tag":772,"props":3611,"children":3612},{"style":1060},[3613],{"type":76,"value":1660},{"type":71,"tag":772,"props":3615,"children":3616},{"class":774,"line":802},[3617,3622],{"type":71,"tag":772,"props":3618,"children":3619},{"style":1107},[3620],{"type":76,"value":3621},"    useOptions",{"type":71,"tag":772,"props":3623,"children":3624},{"style":1060},[3625],{"type":76,"value":1660},{"type":71,"tag":772,"props":3627,"children":3628},{"class":774,"line":811},[3629,3634],{"type":71,"tag":772,"props":3630,"children":3631},{"style":1107},[3632],{"type":76,"value":3633},"    useTheme",{"type":71,"tag":772,"props":3635,"children":3636},{"style":1060},[3637],{"type":76,"value":1660},{"type":71,"tag":772,"props":3639,"children":3640},{"class":774,"line":820},[3641,3645,3649,3653,3657,3661],{"type":71,"tag":772,"props":3642,"children":3643},{"style":1060},[3644],{"type":76,"value":3242},{"type":71,"tag":772,"props":3646,"children":3647},{"style":2047},[3648],{"type":76,"value":2069},{"type":71,"tag":772,"props":3650,"children":3651},{"style":1060},[3652],{"type":76,"value":2074},{"type":71,"tag":772,"props":3654,"children":3655},{"style":1319},[3656],{"type":76,"value":199},{"type":71,"tag":772,"props":3658,"children":3659},{"style":1060},[3660],{"type":76,"value":2083},{"type":71,"tag":772,"props":3662,"children":3663},{"style":1060},[3664],{"type":76,"value":2088},{"type":71,"tag":772,"props":3666,"children":3667},{"class":774,"line":829},[3668,3672,3676,3681,3685,3689,3693,3698,3702],{"type":71,"tag":772,"props":3669,"children":3670},{"style":2047},[3671],{"type":76,"value":2050},{"type":71,"tag":772,"props":3673,"children":3674},{"style":1060},[3675],{"type":76,"value":1885},{"type":71,"tag":772,"props":3677,"children":3678},{"style":1107},[3679],{"type":76,"value":3680}," createRoot",{"type":71,"tag":772,"props":3682,"children":3683},{"style":1060},[3684],{"type":76,"value":2064},{"type":71,"tag":772,"props":3686,"children":3687},{"style":2047},[3688],{"type":76,"value":2069},{"type":71,"tag":772,"props":3690,"children":3691},{"style":1060},[3692],{"type":76,"value":2074},{"type":71,"tag":772,"props":3694,"children":3695},{"style":1319},[3696],{"type":76,"value":3697},"react-dom\u002Fclient",{"type":71,"tag":772,"props":3699,"children":3700},{"style":1060},[3701],{"type":76,"value":2083},{"type":71,"tag":772,"props":3703,"children":3704},{"style":1060},[3705],{"type":76,"value":2088},{"type":71,"tag":772,"props":3707,"children":3708},{"class":774,"line":837},[3709,3713,3717,3721,3725],{"type":71,"tag":772,"props":3710,"children":3711},{"style":2047},[3712],{"type":76,"value":2050},{"type":71,"tag":772,"props":3714,"children":3715},{"style":1060},[3716],{"type":76,"value":2074},{"type":71,"tag":772,"props":3718,"children":3719},{"style":1319},[3720],{"type":76,"value":2104},{"type":71,"tag":772,"props":3722,"children":3723},{"style":1060},[3724],{"type":76,"value":2083},{"type":71,"tag":772,"props":3726,"children":3727},{"style":1060},[3728],{"type":76,"value":2088},{"type":71,"tag":772,"props":3730,"children":3731},{"class":774,"line":846},[3732],{"type":71,"tag":772,"props":3733,"children":3734},{"emptyLinePlaceholder":796},[3735],{"type":76,"value":799},{"type":71,"tag":772,"props":3737,"children":3738},{"class":774,"line":855},[3739,3743,3748,3752],{"type":71,"tag":772,"props":3740,"children":3741},{"style":1456},[3742],{"type":76,"value":2403},{"type":71,"tag":772,"props":3744,"children":3745},{"style":2149},[3746],{"type":76,"value":3747}," Viz",{"type":71,"tag":772,"props":3749,"children":3750},{"style":1060},[3751],{"type":76,"value":2413},{"type":71,"tag":772,"props":3753,"children":3754},{"style":1060},[3755],{"type":76,"value":1620},{"type":71,"tag":772,"props":3757,"children":3758},{"class":774,"line":864},[3759,3763,3767,3771,3775,3779,3783,3787,3792,3796],{"type":71,"tag":772,"props":3760,"children":3761},{"style":1456},[3762],{"type":76,"value":2603},{"type":71,"tag":772,"props":3764,"children":3765},{"style":1060},[3766],{"type":76,"value":1885},{"type":71,"tag":772,"props":3768,"children":3769},{"style":1107},[3770],{"type":76,"value":2973},{"type":71,"tag":772,"props":3772,"children":3773},{"style":1060},[3774],{"type":76,"value":1912},{"type":71,"tag":772,"props":3776,"children":3777},{"style":1107},[3778],{"type":76,"value":2298},{"type":71,"tag":772,"props":3780,"children":3781},{"style":1060},[3782],{"type":76,"value":2064},{"type":71,"tag":772,"props":3784,"children":3785},{"style":1060},[3786],{"type":76,"value":2473},{"type":71,"tag":772,"props":3788,"children":3789},{"style":2149},[3790],{"type":76,"value":3791}," useDataSources",{"type":71,"tag":772,"props":3793,"children":3794},{"style":2281},[3795],{"type":76,"value":2413},{"type":71,"tag":772,"props":3797,"children":3798},{"style":1060},[3799],{"type":76,"value":2088},{"type":71,"tag":772,"props":3801,"children":3802},{"class":774,"line":873},[3803,3807,3811,3815,3819,3823,3827,3831,3836,3840],{"type":71,"tag":772,"props":3804,"children":3805},{"style":1456},[3806],{"type":76,"value":2603},{"type":71,"tag":772,"props":3808,"children":3809},{"style":1060},[3810],{"type":76,"value":1885},{"type":71,"tag":772,"props":3812,"children":3813},{"style":1107},[3814],{"type":76,"value":2331},{"type":71,"tag":772,"props":3816,"children":3817},{"style":1060},[3818],{"type":76,"value":1912},{"type":71,"tag":772,"props":3820,"children":3821},{"style":1107},[3822],{"type":76,"value":2349},{"type":71,"tag":772,"props":3824,"children":3825},{"style":1060},[3826],{"type":76,"value":2064},{"type":71,"tag":772,"props":3828,"children":3829},{"style":1060},[3830],{"type":76,"value":2473},{"type":71,"tag":772,"props":3832,"children":3833},{"style":2149},[3834],{"type":76,"value":3835}," useDimensions",{"type":71,"tag":772,"props":3837,"children":3838},{"style":2281},[3839],{"type":76,"value":2413},{"type":71,"tag":772,"props":3841,"children":3842},{"style":1060},[3843],{"type":76,"value":2088},{"type":71,"tag":772,"props":3845,"children":3846},{"class":774,"line":881},[3847,3851,3855,3859,3863,3867,3872,3876],{"type":71,"tag":772,"props":3848,"children":3849},{"style":1456},[3850],{"type":76,"value":2603},{"type":71,"tag":772,"props":3852,"children":3853},{"style":1060},[3854],{"type":76,"value":1885},{"type":71,"tag":772,"props":3856,"children":3857},{"style":1107},[3858],{"type":76,"value":2317},{"type":71,"tag":772,"props":3860,"children":3861},{"style":1060},[3862],{"type":76,"value":2064},{"type":71,"tag":772,"props":3864,"children":3865},{"style":1060},[3866],{"type":76,"value":2473},{"type":71,"tag":772,"props":3868,"children":3869},{"style":2149},[3870],{"type":76,"value":3871}," useOptions",{"type":71,"tag":772,"props":3873,"children":3874},{"style":2281},[3875],{"type":76,"value":2413},{"type":71,"tag":772,"props":3877,"children":3878},{"style":1060},[3879],{"type":76,"value":2088},{"type":71,"tag":772,"props":3881,"children":3882},{"class":774,"line":890},[3883,3887,3891,3895,3899,3903,3908,3912],{"type":71,"tag":772,"props":3884,"children":3885},{"style":1456},[3886],{"type":76,"value":2603},{"type":71,"tag":772,"props":3888,"children":3889},{"style":1060},[3890],{"type":76,"value":1885},{"type":71,"tag":772,"props":3892,"children":3893},{"style":1107},[3894],{"type":76,"value":2366},{"type":71,"tag":772,"props":3896,"children":3897},{"style":1060},[3898],{"type":76,"value":2064},{"type":71,"tag":772,"props":3900,"children":3901},{"style":1060},[3902],{"type":76,"value":2473},{"type":71,"tag":772,"props":3904,"children":3905},{"style":2149},[3906],{"type":76,"value":3907}," useTheme",{"type":71,"tag":772,"props":3909,"children":3910},{"style":2281},[3911],{"type":76,"value":2413},{"type":71,"tag":772,"props":3913,"children":3914},{"style":1060},[3915],{"type":76,"value":2088},{"type":71,"tag":772,"props":3917,"children":3918},{"class":774,"line":899},[3919],{"type":71,"tag":772,"props":3920,"children":3921},{"emptyLinePlaceholder":796},[3922],{"type":76,"value":799},{"type":71,"tag":772,"props":3924,"children":3925},{"class":774,"line":908},[3926],{"type":71,"tag":772,"props":3927,"children":3928},{"style":2790},[3929],{"type":76,"value":2793},{"type":71,"tag":772,"props":3931,"children":3932},{"class":774,"line":916},[3933,3937,3941,3945,3949,3953,3957,3961,3965,3969,3973],{"type":71,"tag":772,"props":3934,"children":3935},{"style":1456},[3936],{"type":76,"value":2603},{"type":71,"tag":772,"props":3938,"children":3939},{"style":1107},[3940],{"type":76,"value":2805},{"type":71,"tag":772,"props":3942,"children":3943},{"style":1060},[3944],{"type":76,"value":2473},{"type":71,"tag":772,"props":3946,"children":3947},{"style":1107},[3948],{"type":76,"value":2317},{"type":71,"tag":772,"props":3950,"children":3951},{"style":1060},[3952],{"type":76,"value":2671},{"type":71,"tag":772,"props":3954,"children":3955},{"style":1107},[3956],{"type":76,"value":2831},{"type":71,"tag":772,"props":3958,"children":3959},{"style":1060},[3960],{"type":76,"value":2836},{"type":71,"tag":772,"props":3962,"children":3963},{"style":1060},[3964],{"type":76,"value":2074},{"type":71,"tag":772,"props":3966,"children":3967},{"style":1319},[3968],{"type":76,"value":2845},{"type":71,"tag":772,"props":3970,"children":3971},{"style":1060},[3972],{"type":76,"value":2083},{"type":71,"tag":772,"props":3974,"children":3975},{"style":1060},[3976],{"type":76,"value":2088},{"type":71,"tag":772,"props":3978,"children":3979},{"class":774,"line":924},[3980,3984,3988,3992,3996,4000,4004,4008,4012],{"type":71,"tag":772,"props":3981,"children":3982},{"style":1456},[3983],{"type":76,"value":2603},{"type":71,"tag":772,"props":3985,"children":3986},{"style":1107},[3987],{"type":76,"value":2865},{"type":71,"tag":772,"props":3989,"children":3990},{"style":1060},[3991],{"type":76,"value":2473},{"type":71,"tag":772,"props":3993,"children":3994},{"style":1107},[3995],{"type":76,"value":2366},{"type":71,"tag":772,"props":3997,"children":3998},{"style":1060},[3999],{"type":76,"value":2887},{"type":71,"tag":772,"props":4001,"children":4002},{"style":1060},[4003],{"type":76,"value":2074},{"type":71,"tag":772,"props":4005,"children":4006},{"style":1319},[4007],{"type":76,"value":2896},{"type":71,"tag":772,"props":4009,"children":4010},{"style":1060},[4011],{"type":76,"value":2083},{"type":71,"tag":772,"props":4013,"children":4014},{"style":1060},[4015],{"type":76,"value":2088},{"type":71,"tag":772,"props":4017,"children":4018},{"class":774,"line":933},[4019],{"type":71,"tag":772,"props":4020,"children":4021},{"emptyLinePlaceholder":796},[4022],{"type":76,"value":799},{"type":71,"tag":772,"props":4024,"children":4025},{"class":774,"line":942},[4026,4030,4034,4038,4042,4047,4052,4056,4061,4065,4069,4073,4077,4082,4087,4092,4096],{"type":71,"tag":772,"props":4027,"children":4028},{"style":2047},[4029],{"type":76,"value":2425},{"type":71,"tag":772,"props":4031,"children":4032},{"style":2281},[4033],{"type":76,"value":2430},{"type":71,"tag":772,"props":4035,"children":4036},{"style":1107},[4037],{"type":76,"value":2444},{"type":71,"tag":772,"props":4039,"children":4040},{"style":2281},[4041],{"type":76,"value":2449},{"type":71,"tag":772,"props":4043,"children":4044},{"style":2047},[4045],{"type":76,"value":4046},"return",{"type":71,"tag":772,"props":4048,"children":4049},{"style":1060},[4050],{"type":76,"value":4051}," \u003C",{"type":71,"tag":772,"props":4053,"children":4054},{"style":2281},[4055],{"type":76,"value":2166},{"type":71,"tag":772,"props":4057,"children":4058},{"style":1456},[4059],{"type":76,"value":4060}," className",{"type":71,"tag":772,"props":4062,"children":4063},{"style":1060},[4064],{"type":76,"value":2137},{"type":71,"tag":772,"props":4066,"children":4067},{"style":1060},[4068],{"type":76,"value":1464},{"type":71,"tag":772,"props":4070,"children":4071},{"style":1319},[4072],{"type":76,"value":2444},{"type":71,"tag":772,"props":4074,"children":4075},{"style":1060},[4076],{"type":76,"value":1464},{"type":71,"tag":772,"props":4078,"children":4079},{"style":1060},[4080],{"type":76,"value":4081},">",{"type":71,"tag":772,"props":4083,"children":4084},{"style":1107},[4085],{"type":76,"value":4086},"Loading...",{"type":71,"tag":772,"props":4088,"children":4089},{"style":1060},[4090],{"type":76,"value":4091},"\u003C\u002F",{"type":71,"tag":772,"props":4093,"children":4094},{"style":2281},[4095],{"type":76,"value":2166},{"type":71,"tag":772,"props":4097,"children":4098},{"style":1060},[4099],{"type":76,"value":4100},">;\n",{"type":71,"tag":772,"props":4102,"children":4103},{"class":774,"line":951},[4104],{"type":71,"tag":772,"props":4105,"children":4106},{"emptyLinePlaceholder":796},[4107],{"type":76,"value":799},{"type":71,"tag":772,"props":4109,"children":4110},{"class":774,"line":960},[4111,4115,4119,4123,4127,4131,4135,4139,4143],{"type":71,"tag":772,"props":4112,"children":4113},{"style":1456},[4114],{"type":76,"value":2603},{"type":71,"tag":772,"props":4116,"children":4117},{"style":1107},[4118],{"type":76,"value":2284},{"type":71,"tag":772,"props":4120,"children":4121},{"style":1060},[4122],{"type":76,"value":2473},{"type":71,"tag":772,"props":4124,"children":4125},{"style":1107},[4126],{"type":76,"value":2973},{"type":71,"tag":772,"props":4128,"children":4129},{"style":1060},[4130],{"type":76,"value":2671},{"type":71,"tag":772,"props":4132,"children":4133},{"style":1107},[4134],{"type":76,"value":1818},{"type":71,"tag":772,"props":4136,"children":4137},{"style":1060},[4138],{"type":76,"value":2671},{"type":71,"tag":772,"props":4140,"children":4141},{"style":1107},[4142],{"type":76,"value":2534},{"type":71,"tag":772,"props":4144,"children":4145},{"style":1060},[4146],{"type":76,"value":2088},{"type":71,"tag":772,"props":4148,"children":4149},{"class":774,"line":968},[4150,4154,4158,4162,4166,4170,4174,4178,4182,4186,4190,4194,4198,4202,4206,4210,4214,4218,4222],{"type":71,"tag":772,"props":4151,"children":4152},{"style":2047},[4153],{"type":76,"value":2425},{"type":71,"tag":772,"props":4155,"children":4156},{"style":2281},[4157],{"type":76,"value":2430},{"type":71,"tag":772,"props":4159,"children":4160},{"style":1060},[4161],{"type":76,"value":2521},{"type":71,"tag":772,"props":4163,"children":4164},{"style":1107},[4165],{"type":76,"value":2534},{"type":71,"tag":772,"props":4167,"children":4168},{"style":1060},[4169],{"type":76,"value":2671},{"type":71,"tag":772,"props":4171,"children":4172},{"style":1107},[4173],{"type":76,"value":2666},{"type":71,"tag":772,"props":4175,"children":4176},{"style":1060},[4177],{"type":76,"value":2671},{"type":71,"tag":772,"props":4179,"children":4180},{"style":1107},[4181],{"type":76,"value":2676},{"type":71,"tag":772,"props":4183,"children":4184},{"style":1060},[4185],{"type":76,"value":2681},{"type":71,"tag":772,"props":4187,"children":4188},{"style":1060},[4189],{"type":76,"value":2686},{"type":71,"tag":772,"props":4191,"children":4192},{"style":1107},[4193],{"type":76,"value":2534},{"type":71,"tag":772,"props":4195,"children":4196},{"style":1060},[4197],{"type":76,"value":366},{"type":71,"tag":772,"props":4199,"children":4200},{"style":1107},[4201],{"type":76,"value":2666},{"type":71,"tag":772,"props":4203,"children":4204},{"style":2281},[4205],{"type":76,"value":2695},{"type":71,"tag":772,"props":4207,"children":4208},{"style":1793},[4209],{"type":76,"value":2700},{"type":71,"tag":772,"props":4211,"children":4212},{"style":2281},[4213],{"type":76,"value":2705},{"type":71,"tag":772,"props":4215,"children":4216},{"style":1060},[4217],{"type":76,"value":366},{"type":71,"tag":772,"props":4219,"children":4220},{"style":1107},[4221],{"type":76,"value":2676},{"type":71,"tag":772,"props":4223,"children":4224},{"style":2281},[4225],{"type":76,"value":4226},")\n",{"type":71,"tag":772,"props":4228,"children":4229},{"class":774,"line":977},[4230,4234,4238,4242,4246,4250,4254,4259,4263,4267,4272,4276,4280],{"type":71,"tag":772,"props":4231,"children":4232},{"style":2047},[4233],{"type":76,"value":2765},{"type":71,"tag":772,"props":4235,"children":4236},{"style":1060},[4237],{"type":76,"value":4051},{"type":71,"tag":772,"props":4239,"children":4240},{"style":2281},[4241],{"type":76,"value":2166},{"type":71,"tag":772,"props":4243,"children":4244},{"style":1456},[4245],{"type":76,"value":4060},{"type":71,"tag":772,"props":4247,"children":4248},{"style":1060},[4249],{"type":76,"value":2137},{"type":71,"tag":772,"props":4251,"children":4252},{"style":1060},[4253],{"type":76,"value":1464},{"type":71,"tag":772,"props":4255,"children":4256},{"style":1319},[4257],{"type":76,"value":4258},"empty",{"type":71,"tag":772,"props":4260,"children":4261},{"style":1060},[4262],{"type":76,"value":1464},{"type":71,"tag":772,"props":4264,"children":4265},{"style":1060},[4266],{"type":76,"value":4081},{"type":71,"tag":772,"props":4268,"children":4269},{"style":1107},[4270],{"type":76,"value":4271},"No data",{"type":71,"tag":772,"props":4273,"children":4274},{"style":1060},[4275],{"type":76,"value":4091},{"type":71,"tag":772,"props":4277,"children":4278},{"style":2281},[4279],{"type":76,"value":2166},{"type":71,"tag":772,"props":4281,"children":4282},{"style":1060},[4283],{"type":76,"value":4100},{"type":71,"tag":772,"props":4285,"children":4286},{"class":774,"line":2922},[4287],{"type":71,"tag":772,"props":4288,"children":4289},{"emptyLinePlaceholder":796},[4290],{"type":76,"value":799},{"type":71,"tag":772,"props":4292,"children":4293},{"class":774,"line":2930},[4294,4298,4302,4306,4310,4314,4318,4322,4326],{"type":71,"tag":772,"props":4295,"children":4296},{"style":1456},[4297],{"type":76,"value":2603},{"type":71,"tag":772,"props":4299,"children":4300},{"style":1060},[4301],{"type":76,"value":1885},{"type":71,"tag":772,"props":4303,"children":4304},{"style":1107},[4305],{"type":76,"value":2612},{"type":71,"tag":772,"props":4307,"children":4308},{"style":1060},[4309],{"type":76,"value":1912},{"type":71,"tag":772,"props":4311,"children":4312},{"style":1107},[4313],{"type":76,"value":2621},{"type":71,"tag":772,"props":4315,"children":4316},{"style":1060},[4317],{"type":76,"value":2064},{"type":71,"tag":772,"props":4319,"children":4320},{"style":1060},[4321],{"type":76,"value":2473},{"type":71,"tag":772,"props":4323,"children":4324},{"style":1107},[4325],{"type":76,"value":2284},{"type":71,"tag":772,"props":4327,"children":4328},{"style":1060},[4329],{"type":76,"value":2088},{"type":71,"tag":772,"props":4331,"children":4332},{"class":774,"line":2938},[4333],{"type":71,"tag":772,"props":4334,"children":4335},{"emptyLinePlaceholder":796},[4336],{"type":76,"value":799},{"type":71,"tag":772,"props":4338,"children":4339},{"class":774,"line":2961},[4340],{"type":71,"tag":772,"props":4341,"children":4342},{"style":2790},[4343],{"type":76,"value":2919},{"type":71,"tag":772,"props":4345,"children":4346},{"class":774,"line":2998},[4347,4352,4356,4360,4365,4370,4374,4378,4383],{"type":71,"tag":772,"props":4348,"children":4349},{"style":2047},[4350],{"type":76,"value":4351},"    return",{"type":71,"tag":772,"props":4353,"children":4354},{"style":1060},[4355],{"type":76,"value":4051},{"type":71,"tag":772,"props":4357,"children":4358},{"style":2281},[4359],{"type":76,"value":2166},{"type":71,"tag":772,"props":4361,"children":4362},{"style":1456},[4363],{"type":76,"value":4364}," style",{"type":71,"tag":772,"props":4366,"children":4367},{"style":1060},[4368],{"type":76,"value":4369},"={{",{"type":71,"tag":772,"props":4371,"children":4372},{"style":1107},[4373],{"type":76,"value":2331},{"type":71,"tag":772,"props":4375,"children":4376},{"style":1060},[4377],{"type":76,"value":1912},{"type":71,"tag":772,"props":4379,"children":4380},{"style":1107},[4381],{"type":76,"value":4382}," height ",{"type":71,"tag":772,"props":4384,"children":4385},{"style":1060},[4386],{"type":76,"value":4387},"}} \u002F>;\n",{"type":71,"tag":772,"props":4389,"children":4390},{"class":774,"line":3027},[4391],{"type":71,"tag":772,"props":4392,"children":4393},{"style":1060},[4394],{"type":76,"value":2002},{"type":71,"tag":772,"props":4396,"children":4397},{"class":774,"line":3076},[4398],{"type":71,"tag":772,"props":4399,"children":4400},{"emptyLinePlaceholder":796},[4401],{"type":76,"value":799},{"type":71,"tag":772,"props":4403,"children":4404},{"class":774,"line":3093},[4405,4410,4415,4419,4424,4428,4432,4436,4440,4445,4449,4454,4458,4463,4468,4473,4477],{"type":71,"tag":772,"props":4406,"children":4407},{"style":2149},[4408],{"type":76,"value":4409},"createRoot",{"type":71,"tag":772,"props":4411,"children":4412},{"style":1107},[4413],{"type":76,"value":4414},"(document",{"type":71,"tag":772,"props":4416,"children":4417},{"style":1060},[4418],{"type":76,"value":366},{"type":71,"tag":772,"props":4420,"children":4421},{"style":2149},[4422],{"type":76,"value":4423},"getElementById",{"type":71,"tag":772,"props":4425,"children":4426},{"style":1107},[4427],{"type":76,"value":2157},{"type":71,"tag":772,"props":4429,"children":4430},{"style":1060},[4431],{"type":76,"value":2083},{"type":71,"tag":772,"props":4433,"children":4434},{"style":1319},[4435],{"type":76,"value":68},{"type":71,"tag":772,"props":4437,"children":4438},{"style":1060},[4439],{"type":76,"value":2083},{"type":71,"tag":772,"props":4441,"children":4442},{"style":1107},[4443],{"type":76,"value":4444},"))",{"type":71,"tag":772,"props":4446,"children":4447},{"style":1060},[4448],{"type":76,"value":366},{"type":71,"tag":772,"props":4450,"children":4451},{"style":2149},[4452],{"type":76,"value":4453},"render",{"type":71,"tag":772,"props":4455,"children":4456},{"style":1107},[4457],{"type":76,"value":2157},{"type":71,"tag":772,"props":4459,"children":4460},{"style":1060},[4461],{"type":76,"value":4462},"\u003C",{"type":71,"tag":772,"props":4464,"children":4465},{"style":1066},[4466],{"type":76,"value":4467},"Viz",{"type":71,"tag":772,"props":4469,"children":4470},{"style":1060},[4471],{"type":76,"value":4472}," \u002F>",{"type":71,"tag":772,"props":4474,"children":4475},{"style":1107},[4476],{"type":76,"value":188},{"type":71,"tag":772,"props":4478,"children":4479},{"style":1060},[4480],{"type":76,"value":2088},{"type":71,"tag":123,"props":4482,"children":4483},{},[],{"type":71,"tag":417,"props":4485,"children":4487},{"id":4486},"_5-develop",[4488],{"type":76,"value":4489},"5. Develop",{"type":71,"tag":368,"props":4491,"children":4495},{"className":4492,"code":4493,"language":4494,"meta":376,"style":376},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","# Watch mode — rebuilds on file changes\nyarn dev\n","bash",[4496],{"type":71,"tag":84,"props":4497,"children":4498},{"__ignoreMap":376},[4499,4507],{"type":71,"tag":772,"props":4500,"children":4501},{"class":774,"line":775},[4502],{"type":71,"tag":772,"props":4503,"children":4504},{"style":2790},[4505],{"type":76,"value":4506},"# Watch mode — rebuilds on file changes\n",{"type":71,"tag":772,"props":4508,"children":4509},{"class":774,"line":784},[4510,4514],{"type":71,"tag":772,"props":4511,"children":4512},{"style":1066},[4513],{"type":76,"value":741},{"type":71,"tag":772,"props":4515,"children":4516},{"style":1319},[4517],{"type":76,"value":4518}," dev\n",{"type":71,"tag":78,"props":4520,"children":4521},{},[4522,4524,4530],{"type":76,"value":4523},"Verify ",{"type":71,"tag":84,"props":4525,"children":4527},{"className":4526},[],[4528],{"type":76,"value":4529},"dist\u002F\u003Cviz-name>\u002Fvisualization.js",{"type":76,"value":4531}," is created. Hard-refresh the browser to see changes.",{"type":71,"tag":417,"props":4533,"children":4535},{"id":4534},"_6-build-for-production",[4536],{"type":76,"value":4537},"6. Build for production",{"type":71,"tag":368,"props":4539,"children":4541},{"className":4492,"code":4540,"language":4494,"meta":376,"style":376},"yarn build:prod\n",[4542],{"type":71,"tag":84,"props":4543,"children":4544},{"__ignoreMap":376},[4545],{"type":71,"tag":772,"props":4546,"children":4547},{"class":774,"line":775},[4548,4552],{"type":71,"tag":772,"props":4549,"children":4550},{"style":1066},[4551],{"type":76,"value":741},{"type":71,"tag":772,"props":4553,"children":4554},{"style":1319},[4555],{"type":76,"value":4556}," build:prod\n",{"type":71,"tag":417,"props":4558,"children":4560},{"id":4559},"_7-package",[4561],{"type":76,"value":4562},"7. Package",{"type":71,"tag":368,"props":4564,"children":4566},{"className":4492,"code":4565,"language":4494,"meta":376,"style":376},"yarn package\n",[4567],{"type":71,"tag":84,"props":4568,"children":4569},{"__ignoreMap":376},[4570],{"type":71,"tag":772,"props":4571,"children":4572},{"class":774,"line":775},[4573,4577],{"type":71,"tag":772,"props":4574,"children":4575},{"style":1066},[4576],{"type":76,"value":741},{"type":71,"tag":772,"props":4578,"children":4579},{"style":1319},[4580],{"type":76,"value":4581}," package\n",{"type":71,"tag":78,"props":4583,"children":4584},{},[4585,4587],{"type":76,"value":4586},"Output: ",{"type":71,"tag":84,"props":4588,"children":4590},{"className":4589},[],[4591],{"type":76,"value":4592},"dist\u002F\u003Capp-id>-\u003Cversion>-\u003Chash>.spl",{"type":71,"tag":78,"props":4594,"children":4595},{},[4596,4598,4604,4606,4612,4614,4620,4622,4628],{"type":76,"value":4597},"The packager auto-generates ",{"type":71,"tag":84,"props":4599,"children":4601},{"className":4600},[],[4602],{"type":76,"value":4603},"default\u002Fvisualizations.conf",{"type":76,"value":4605}," (with ",{"type":71,"tag":84,"props":4607,"children":4609},{"className":4608},[],[4610],{"type":76,"value":4611},"framework_type = studio_visualization",{"type":76,"value":4613},") and ",{"type":71,"tag":84,"props":4615,"children":4617},{"className":4616},[],[4618],{"type":76,"value":4619},"metadata\u002Fdefault.meta",{"type":76,"value":4621}," from the vizzes it finds in ",{"type":71,"tag":84,"props":4623,"children":4625},{"className":4624},[],[4626],{"type":76,"value":4627},"dist\u002F",{"type":76,"value":366},{"type":71,"tag":417,"props":4630,"children":4632},{"id":4631},"_8-install-into-splunk",[4633],{"type":76,"value":4634},"8. Install into Splunk",{"type":71,"tag":78,"props":4636,"children":4637},{},[4638,4643,4645,4650],{"type":71,"tag":436,"props":4639,"children":4640},{},[4641],{"type":76,"value":4642},"Splunk Enterprise (10.4+)",{"type":76,"value":4644},": Apps > Manage Apps > Install app from file → select the ",{"type":71,"tag":84,"props":4646,"children":4648},{"className":4647},[],[4649],{"type":76,"value":102},{"type":76,"value":4651},". No restart needed — the app loads immediately.",{"type":71,"tag":78,"props":4653,"children":4654},{},[4655,4660],{"type":71,"tag":436,"props":4656,"children":4657},{},[4658],{"type":76,"value":4659},"Splunk Cloud Platform",{"type":76,"value":4661},": Private app installation requires the ACS CLI and AppInspect vetting. Do not direct Cloud users to the Splunk Web install UI — it will not work for private apps. Direct the user to the Splunk ACS documentation for the private app submission process.",{"type":71,"tag":78,"props":4663,"children":4664},{},[4665,4670,4672,4677],{"type":71,"tag":436,"props":4666,"children":4667},{},[4668],{"type":76,"value":4669},"Local Docker",{"type":76,"value":4671},": Copy the ",{"type":71,"tag":84,"props":4673,"children":4675},{"className":4674},[],[4676],{"type":76,"value":102},{"type":76,"value":4678}," into the container and install via the Splunk CLI:",{"type":71,"tag":368,"props":4680,"children":4683},{"className":4681,"code":4682,"language":76},[371],"docker cp dist\u002F\u003Capp-id>-\u003Cversion>-\u003Chash>.spl \u003Ccontainer>:\u002Ftmp\u002Fapp.spl\ndocker exec \u003Ccontainer> \u002Fopt\u002Fsplunk\u002Fbin\u002Fsplunk install app \u002Ftmp\u002Fapp.spl -update 1\n",[4684],{"type":71,"tag":84,"props":4685,"children":4686},{"__ignoreMap":376},[4687],{"type":76,"value":4682},{"type":71,"tag":417,"props":4689,"children":4691},{"id":4690},"_9-tell-the-user",[4692],{"type":76,"value":4693},"9. Tell the user",{"type":71,"tag":133,"props":4695,"children":4696},{},[4697,4702,4713],{"type":71,"tag":137,"props":4698,"children":4699},{},[4700],{"type":76,"value":4701},"The Splunk app ID",{"type":71,"tag":137,"props":4703,"children":4704},{},[4705,4707],{"type":76,"value":4706},"The viz type string for dashboard JSON: ",{"type":71,"tag":84,"props":4708,"children":4710},{"className":4709},[],[4711],{"type":76,"value":4712},"\u003Capp-id>.\u003Cviz-name>",{"type":71,"tag":137,"props":4714,"children":4715},{},[4716],{"type":76,"value":4717},"A sample SPL query to wire up data",{"type":71,"tag":78,"props":4719,"children":4720},{},[4721],{"type":76,"value":4722},"Before reporting the viz as complete, verify (unless the request made them inapplicable):",{"type":71,"tag":133,"props":4724,"children":4725},{},[4726,4731,4736,4741],{"type":71,"tag":137,"props":4727,"children":4728},{},[4729],{"type":76,"value":4730},"Untrusted search values are escaped before being written to the DOM",{"type":71,"tag":137,"props":4732,"children":4733},{},[4734],{"type":76,"value":4735},"Interactive elements are keyboard-reachable and have accessible labels",{"type":71,"tag":137,"props":4737,"children":4738},{},[4739],{"type":76,"value":4740},"Text and icon colors meet WCAG AA contrast against their backgrounds in both light and dark theme",{"type":71,"tag":137,"props":4742,"children":4743},{},[4744,4746],{"type":76,"value":4745},"Animations respect ",{"type":71,"tag":84,"props":4747,"children":4749},{"className":4748},[],[4750],{"type":76,"value":4751},"prefers-reduced-motion",{"type":71,"tag":123,"props":4753,"children":4754},{},[],{"type":71,"tag":106,"props":4756,"children":4758},{"id":4757},"examples",[4759],{"type":76,"value":4760},"Examples",{"type":71,"tag":78,"props":4762,"children":4763},{},[4764],{"type":71,"tag":436,"props":4765,"children":4766},{},[4767],{"type":76,"value":4768},"New canvas viz from scratch:",{"type":71,"tag":652,"props":4770,"children":4771},{},[4772],{"type":71,"tag":78,"props":4773,"children":4774},{},[4775],{"type":76,"value":4776},"\"Build me a network graph visualization that shows connections between hosts.\"",{"type":71,"tag":78,"props":4778,"children":4779},{},[4780,4782,4787,4789,4794],{"type":76,"value":4781},"Skill gathers requirements, asks the user to scaffold, creates ",{"type":71,"tag":84,"props":4783,"children":4785},{"className":4784},[],[4786],{"type":76,"value":281},{"type":76,"value":4788}," with canvas rendering, wires up data\u002Fdimensions\u002Ftheme listeners, and packages the ",{"type":71,"tag":84,"props":4790,"children":4792},{"className":4791},[],[4793],{"type":76,"value":102},{"type":76,"value":366},{"type":71,"tag":78,"props":4796,"children":4797},{},[4798],{"type":71,"tag":436,"props":4799,"children":4800},{},[4801],{"type":76,"value":4802},"Adding a viz to an existing project:",{"type":71,"tag":652,"props":4804,"children":4805},{},[4806],{"type":71,"tag":78,"props":4807,"children":4808},{},[4809],{"type":76,"value":4810},"\"Add a gauge viz to my existing custom viz project.\"",{"type":71,"tag":78,"props":4812,"children":4813},{},[4814,4816,4822,4823,4828,4829,4835,4836,4841],{"type":76,"value":4815},"Skill skips scaffolding, creates ",{"type":71,"tag":84,"props":4817,"children":4819},{"className":4818},[],[4820],{"type":76,"value":4821},"visualizations\u002Fgauge\u002F",{"type":76,"value":604},{"type":71,"tag":84,"props":4824,"children":4826},{"className":4825},[],[4827],{"type":76,"value":349},{"type":76,"value":249},{"type":71,"tag":84,"props":4830,"children":4832},{"className":4831},[],[4833],{"type":76,"value":4834},"src\u002Fvisualization.js",{"type":76,"value":358},{"type":71,"tag":84,"props":4837,"children":4839},{"className":4838},[],[4840],{"type":76,"value":364},{"type":76,"value":4842},", and instructs the user to rebuild.",{"type":71,"tag":78,"props":4844,"children":4845},{},[4846],{"type":71,"tag":436,"props":4847,"children":4848},{},[4849],{"type":76,"value":4850},"Migrating a legacy viz:",{"type":71,"tag":652,"props":4852,"children":4853},{},[4854],{"type":71,"tag":78,"props":4855,"children":4856},{},[4857],{"type":76,"value":4858},"\"Migrate my RequireJS custom viz to the new framework.\"",{"type":71,"tag":78,"props":4860,"children":4861},{},[4862,4864,4870,4872,4878,4880,4886,4887,4892],{"type":76,"value":4863},"Skill reads the existing viz, maps ",{"type":71,"tag":84,"props":4865,"children":4867},{"className":4866},[],[4868],{"type":76,"value":4869},"updateView",{"type":76,"value":4871}," → ",{"type":71,"tag":84,"props":4873,"children":4875},{"className":4874},[],[4876],{"type":76,"value":4877},"render()",{"type":76,"value":4879},", replaces ",{"type":71,"tag":84,"props":4881,"children":4883},{"className":4882},[],[4884],{"type":76,"value":4885},"SplunkVisualizationBase",{"type":76,"value":604},{"type":71,"tag":84,"props":4888,"children":4890},{"className":4889},[],[4891],{"type":76,"value":2944},{"type":76,"value":4893}," listeners, removes RequireJS wrapper, and re-scaffolds the project.",{"type":71,"tag":123,"props":4895,"children":4896},{},[],{"type":71,"tag":106,"props":4898,"children":4900},{"id":4899},"updating-the-viz-fast-iteration",[4901],{"type":76,"value":4902},"Updating the viz (fast iteration)",{"type":71,"tag":78,"props":4904,"children":4905},{},[4906],{"type":76,"value":4907},"For changes to visualization code only, copy the built JS directly — no reinstall needed:",{"type":71,"tag":368,"props":4909,"children":4911},{"className":4492,"code":4910,"language":4494,"meta":376,"style":376},"yarn dev  # or yarn build:prod\n\ncp dist\u002F\u003Cviz-name>\u002Fvisualization.js \\\n   $SPLUNK_HOME\u002Fetc\u002Fapps\u002F\u003Capp-id>\u002Fappserver\u002Fstatic\u002Fvisualizations\u002F\u003Cviz-name>\u002Fvisualization.js\n",[4912],{"type":71,"tag":84,"props":4913,"children":4914},{"__ignoreMap":376},[4915,4932,4939,4980],{"type":71,"tag":772,"props":4916,"children":4917},{"class":774,"line":775},[4918,4922,4927],{"type":71,"tag":772,"props":4919,"children":4920},{"style":1066},[4921],{"type":76,"value":741},{"type":71,"tag":772,"props":4923,"children":4924},{"style":1319},[4925],{"type":76,"value":4926}," dev",{"type":71,"tag":772,"props":4928,"children":4929},{"style":2790},[4930],{"type":76,"value":4931},"  # or yarn build:prod\n",{"type":71,"tag":772,"props":4933,"children":4934},{"class":774,"line":784},[4935],{"type":71,"tag":772,"props":4936,"children":4937},{"emptyLinePlaceholder":796},[4938],{"type":76,"value":799},{"type":71,"tag":772,"props":4940,"children":4941},{"class":774,"line":22},[4942,4947,4952,4956,4961,4966,4970,4975],{"type":71,"tag":772,"props":4943,"children":4944},{"style":1066},[4945],{"type":76,"value":4946},"cp",{"type":71,"tag":772,"props":4948,"children":4949},{"style":1319},[4950],{"type":76,"value":4951}," dist\u002F",{"type":71,"tag":772,"props":4953,"children":4954},{"style":1060},[4955],{"type":76,"value":4462},{"type":71,"tag":772,"props":4957,"children":4958},{"style":1319},[4959],{"type":76,"value":4960},"viz-nam",{"type":71,"tag":772,"props":4962,"children":4963},{"style":1107},[4964],{"type":76,"value":4965},"e",{"type":71,"tag":772,"props":4967,"children":4968},{"style":1060},[4969],{"type":76,"value":4081},{"type":71,"tag":772,"props":4971,"children":4972},{"style":1319},[4973],{"type":76,"value":4974},"\u002Fvisualization.js",{"type":71,"tag":772,"props":4976,"children":4977},{"style":1107},[4978],{"type":76,"value":4979}," \\\n",{"type":71,"tag":772,"props":4981,"children":4982},{"class":774,"line":802},[4983,4988,4993,4997,5002,5007,5011,5016,5020,5024,5028,5032],{"type":71,"tag":772,"props":4984,"children":4985},{"style":1107},[4986],{"type":76,"value":4987},"   $SPLUNK_HOME",{"type":71,"tag":772,"props":4989,"children":4990},{"style":1319},[4991],{"type":76,"value":4992},"\u002Fetc\u002Fapps\u002F",{"type":71,"tag":772,"props":4994,"children":4995},{"style":1060},[4996],{"type":76,"value":4462},{"type":71,"tag":772,"props":4998,"children":4999},{"style":1319},[5000],{"type":76,"value":5001},"app-i",{"type":71,"tag":772,"props":5003,"children":5004},{"style":1107},[5005],{"type":76,"value":5006},"d",{"type":71,"tag":772,"props":5008,"children":5009},{"style":1060},[5010],{"type":76,"value":4081},{"type":71,"tag":772,"props":5012,"children":5013},{"style":1319},[5014],{"type":76,"value":5015},"\u002Fappserver\u002Fstatic\u002Fvisualizations\u002F",{"type":71,"tag":772,"props":5017,"children":5018},{"style":1060},[5019],{"type":76,"value":4462},{"type":71,"tag":772,"props":5021,"children":5022},{"style":1319},[5023],{"type":76,"value":4960},{"type":71,"tag":772,"props":5025,"children":5026},{"style":1107},[5027],{"type":76,"value":4965},{"type":71,"tag":772,"props":5029,"children":5030},{"style":1060},[5031],{"type":76,"value":4081},{"type":71,"tag":772,"props":5033,"children":5034},{"style":1319},[5035],{"type":76,"value":5036},"\u002Fvisualization.js\n",{"type":71,"tag":78,"props":5038,"children":5039},{},[5040],{"type":76,"value":5041},"Hard-refresh the browser. No Splunk restart needed.",{"type":71,"tag":78,"props":5043,"children":5044},{},[5045,5047,5052,5053,5058],{"type":76,"value":5046},"For changes to ",{"type":71,"tag":84,"props":5048,"children":5050},{"className":5049},[],[5051],{"type":76,"value":525},{"type":76,"value":249},{"type":71,"tag":84,"props":5054,"children":5056},{"className":5055},[],[5057],{"type":76,"value":349},{"type":76,"value":5059},", or adding a new viz, do a full reinstall (step 7–8).",{"type":71,"tag":652,"props":5061,"children":5062},{},[5063],{"type":71,"tag":78,"props":5064,"children":5065},{},[5066,5076,5078,5084,5086,5091],{"type":71,"tag":436,"props":5067,"children":5068},{},[5069,5071],{"type":76,"value":5070},"Restart required for ",{"type":71,"tag":84,"props":5072,"children":5074},{"className":5073},[],[5075],{"type":76,"value":1533},{"type":76,"value":5077},": After enabling ",{"type":71,"tag":84,"props":5079,"children":5081},{"className":5080},[],[5082],{"type":76,"value":5083},"showDrilldown: true",{"type":76,"value":5085}," in an already-installed app, Splunk must be restarted — the REST layer caches ",{"type":71,"tag":84,"props":5087,"children":5089},{"className":5088},[],[5090],{"type":76,"value":349},{"type":76,"value":5092}," at startup, and reinstalling alone won't update the Interactions panel.",{"type":71,"tag":123,"props":5094,"children":5095},{},[],{"type":71,"tag":106,"props":5097,"children":5099},{"id":5098},"theme-support",[5100],{"type":76,"value":5101},"Theme support",{"type":71,"tag":78,"props":5103,"children":5104},{},[5105],{"type":76,"value":5106},"Vizzes should respond to Splunk's light\u002Fdark theme. The iframe is sandboxed — CSS custom properties from the host page are not inherited. Use hardcoded enterprise theme values.",{"type":71,"tag":78,"props":5108,"children":5109},{},[5110],{"type":71,"tag":436,"props":5111,"children":5112},{},[5113],{"type":76,"value":5114},"JavaScript:",{"type":71,"tag":368,"props":5116,"children":5118},{"className":2035,"code":5117,"language":2037,"meta":376,"style":376},"const THEME_COLORS = {\n    light: { background: '#ffffff', text: '#1a1a1a', accent: '#4e9cf5' },\n    dark:  { background: '#1a1c21', text: '#c3cbd4', accent: '#4e9cf5' },\n};\n\nVisualizationAPI.addThemeListener(({ theme }) => {\n    state.theme = theme;\n    render();\n}, { invokeImmediately: true });\n\nfunction render() {\n    const colors = THEME_COLORS[state.theme] ?? THEME_COLORS.light;\n    container.style.background = colors.background;\n    \u002F\u002F use colors.text, colors.accent in drawing logic\n}\n",[5119],{"type":71,"tag":84,"props":5120,"children":5121},{"__ignoreMap":376},[5122,5142,5236,5327,5335,5342,5381,5408,5423,5458,5465,5484,5547,5593,5601],{"type":71,"tag":772,"props":5123,"children":5124},{"class":774,"line":775},[5125,5129,5134,5138],{"type":71,"tag":772,"props":5126,"children":5127},{"style":1456},[5128],{"type":76,"value":2127},{"type":71,"tag":772,"props":5130,"children":5131},{"style":1107},[5132],{"type":76,"value":5133}," THEME_COLORS ",{"type":71,"tag":772,"props":5135,"children":5136},{"style":1060},[5137],{"type":76,"value":2137},{"type":71,"tag":772,"props":5139,"children":5140},{"style":1060},[5141],{"type":76,"value":1620},{"type":71,"tag":772,"props":5143,"children":5144},{"class":774,"line":784},[5145,5150,5154,5158,5163,5167,5171,5176,5180,5184,5189,5193,5197,5202,5206,5210,5215,5219,5223,5228,5232],{"type":71,"tag":772,"props":5146,"children":5147},{"style":2281},[5148],{"type":76,"value":5149},"    light",{"type":71,"tag":772,"props":5151,"children":5152},{"style":1060},[5153],{"type":76,"value":1428},{"type":71,"tag":772,"props":5155,"children":5156},{"style":1060},[5157],{"type":76,"value":1885},{"type":71,"tag":772,"props":5159,"children":5160},{"style":2281},[5161],{"type":76,"value":5162}," background",{"type":71,"tag":772,"props":5164,"children":5165},{"style":1060},[5166],{"type":76,"value":1428},{"type":71,"tag":772,"props":5168,"children":5169},{"style":1060},[5170],{"type":76,"value":2074},{"type":71,"tag":772,"props":5172,"children":5173},{"style":1319},[5174],{"type":76,"value":5175},"#ffffff",{"type":71,"tag":772,"props":5177,"children":5178},{"style":1060},[5179],{"type":76,"value":2083},{"type":71,"tag":772,"props":5181,"children":5182},{"style":1060},[5183],{"type":76,"value":1912},{"type":71,"tag":772,"props":5185,"children":5186},{"style":2281},[5187],{"type":76,"value":5188}," text",{"type":71,"tag":772,"props":5190,"children":5191},{"style":1060},[5192],{"type":76,"value":1428},{"type":71,"tag":772,"props":5194,"children":5195},{"style":1060},[5196],{"type":76,"value":2074},{"type":71,"tag":772,"props":5198,"children":5199},{"style":1319},[5200],{"type":76,"value":5201},"#1a1a1a",{"type":71,"tag":772,"props":5203,"children":5204},{"style":1060},[5205],{"type":76,"value":2083},{"type":71,"tag":772,"props":5207,"children":5208},{"style":1060},[5209],{"type":76,"value":1912},{"type":71,"tag":772,"props":5211,"children":5212},{"style":2281},[5213],{"type":76,"value":5214}," accent",{"type":71,"tag":772,"props":5216,"children":5217},{"style":1060},[5218],{"type":76,"value":1428},{"type":71,"tag":772,"props":5220,"children":5221},{"style":1060},[5222],{"type":76,"value":2074},{"type":71,"tag":772,"props":5224,"children":5225},{"style":1319},[5226],{"type":76,"value":5227},"#4e9cf5",{"type":71,"tag":772,"props":5229,"children":5230},{"style":1060},[5231],{"type":76,"value":2083},{"type":71,"tag":772,"props":5233,"children":5234},{"style":1060},[5235],{"type":76,"value":1939},{"type":71,"tag":772,"props":5237,"children":5238},{"class":774,"line":22},[5239,5244,5248,5253,5257,5261,5265,5270,5274,5278,5282,5286,5290,5295,5299,5303,5307,5311,5315,5319,5323],{"type":71,"tag":772,"props":5240,"children":5241},{"style":2281},[5242],{"type":76,"value":5243},"    dark",{"type":71,"tag":772,"props":5245,"children":5246},{"style":1060},[5247],{"type":76,"value":1428},{"type":71,"tag":772,"props":5249,"children":5250},{"style":1060},[5251],{"type":76,"value":5252},"  {",{"type":71,"tag":772,"props":5254,"children":5255},{"style":2281},[5256],{"type":76,"value":5162},{"type":71,"tag":772,"props":5258,"children":5259},{"style":1060},[5260],{"type":76,"value":1428},{"type":71,"tag":772,"props":5262,"children":5263},{"style":1060},[5264],{"type":76,"value":2074},{"type":71,"tag":772,"props":5266,"children":5267},{"style":1319},[5268],{"type":76,"value":5269},"#1a1c21",{"type":71,"tag":772,"props":5271,"children":5272},{"style":1060},[5273],{"type":76,"value":2083},{"type":71,"tag":772,"props":5275,"children":5276},{"style":1060},[5277],{"type":76,"value":1912},{"type":71,"tag":772,"props":5279,"children":5280},{"style":2281},[5281],{"type":76,"value":5188},{"type":71,"tag":772,"props":5283,"children":5284},{"style":1060},[5285],{"type":76,"value":1428},{"type":71,"tag":772,"props":5287,"children":5288},{"style":1060},[5289],{"type":76,"value":2074},{"type":71,"tag":772,"props":5291,"children":5292},{"style":1319},[5293],{"type":76,"value":5294},"#c3cbd4",{"type":71,"tag":772,"props":5296,"children":5297},{"style":1060},[5298],{"type":76,"value":2083},{"type":71,"tag":772,"props":5300,"children":5301},{"style":1060},[5302],{"type":76,"value":1912},{"type":71,"tag":772,"props":5304,"children":5305},{"style":2281},[5306],{"type":76,"value":5214},{"type":71,"tag":772,"props":5308,"children":5309},{"style":1060},[5310],{"type":76,"value":1428},{"type":71,"tag":772,"props":5312,"children":5313},{"style":1060},[5314],{"type":76,"value":2074},{"type":71,"tag":772,"props":5316,"children":5317},{"style":1319},[5318],{"type":76,"value":5227},{"type":71,"tag":772,"props":5320,"children":5321},{"style":1060},[5322],{"type":76,"value":2083},{"type":71,"tag":772,"props":5324,"children":5325},{"style":1060},[5326],{"type":76,"value":1939},{"type":71,"tag":772,"props":5328,"children":5329},{"class":774,"line":802},[5330],{"type":71,"tag":772,"props":5331,"children":5332},{"style":1060},[5333],{"type":76,"value":5334},"};\n",{"type":71,"tag":772,"props":5336,"children":5337},{"class":774,"line":811},[5338],{"type":71,"tag":772,"props":5339,"children":5340},{"emptyLinePlaceholder":796},[5341],{"type":76,"value":799},{"type":71,"tag":772,"props":5343,"children":5344},{"class":774,"line":820},[5345,5349,5353,5357,5361,5365,5369,5373,5377],{"type":71,"tag":772,"props":5346,"children":5347},{"style":1107},[5348],{"type":76,"value":2944},{"type":71,"tag":772,"props":5350,"children":5351},{"style":1060},[5352],{"type":76,"value":366},{"type":71,"tag":772,"props":5354,"children":5355},{"style":2149},[5356],{"type":76,"value":3443},{"type":71,"tag":772,"props":5358,"children":5359},{"style":1107},[5360],{"type":76,"value":2157},{"type":71,"tag":772,"props":5362,"children":5363},{"style":1060},[5364],{"type":76,"value":3171},{"type":71,"tag":772,"props":5366,"children":5367},{"style":2970},[5368],{"type":76,"value":2366},{"type":71,"tag":772,"props":5370,"children":5371},{"style":1060},[5372],{"type":76,"value":2986},{"type":71,"tag":772,"props":5374,"children":5375},{"style":1456},[5376],{"type":76,"value":2991},{"type":71,"tag":772,"props":5378,"children":5379},{"style":1060},[5380],{"type":76,"value":1620},{"type":71,"tag":772,"props":5382,"children":5383},{"class":774,"line":829},[5384,5388,5392,5396,5400,5404],{"type":71,"tag":772,"props":5385,"children":5386},{"style":1107},[5387],{"type":76,"value":3196},{"type":71,"tag":772,"props":5389,"children":5390},{"style":1060},[5391],{"type":76,"value":366},{"type":71,"tag":772,"props":5393,"children":5394},{"style":1107},[5395],{"type":76,"value":2882},{"type":71,"tag":772,"props":5397,"children":5398},{"style":1060},[5399],{"type":76,"value":2473},{"type":71,"tag":772,"props":5401,"children":5402},{"style":1107},[5403],{"type":76,"value":2366},{"type":71,"tag":772,"props":5405,"children":5406},{"style":1060},[5407],{"type":76,"value":2088},{"type":71,"tag":772,"props":5409,"children":5410},{"class":774,"line":837},[5411,5415,5419],{"type":71,"tag":772,"props":5412,"children":5413},{"style":2149},[5414],{"type":76,"value":3225},{"type":71,"tag":772,"props":5416,"children":5417},{"style":2281},[5418],{"type":76,"value":2413},{"type":71,"tag":772,"props":5420,"children":5421},{"style":1060},[5422],{"type":76,"value":2088},{"type":71,"tag":772,"props":5424,"children":5425},{"class":774,"line":846},[5426,5430,5434,5438,5442,5446,5450,5454],{"type":71,"tag":772,"props":5427,"children":5428},{"style":1060},[5429],{"type":76,"value":3390},{"type":71,"tag":772,"props":5431,"children":5432},{"style":1060},[5433],{"type":76,"value":1885},{"type":71,"tag":772,"props":5435,"children":5436},{"style":2281},[5437],{"type":76,"value":3112},{"type":71,"tag":772,"props":5439,"children":5440},{"style":1060},[5441],{"type":76,"value":1428},{"type":71,"tag":772,"props":5443,"children":5444},{"style":2305},[5445],{"type":76,"value":3121},{"type":71,"tag":772,"props":5447,"children":5448},{"style":1060},[5449],{"type":76,"value":2064},{"type":71,"tag":772,"props":5451,"children":5452},{"style":1107},[5453],{"type":76,"value":188},{"type":71,"tag":772,"props":5455,"children":5456},{"style":1060},[5457],{"type":76,"value":2088},{"type":71,"tag":772,"props":5459,"children":5460},{"class":774,"line":855},[5461],{"type":71,"tag":772,"props":5462,"children":5463},{"emptyLinePlaceholder":796},[5464],{"type":76,"value":799},{"type":71,"tag":772,"props":5466,"children":5467},{"class":774,"line":864},[5468,5472,5476,5480],{"type":71,"tag":772,"props":5469,"children":5470},{"style":1456},[5471],{"type":76,"value":2403},{"type":71,"tag":772,"props":5473,"children":5474},{"style":2149},[5475],{"type":76,"value":2408},{"type":71,"tag":772,"props":5477,"children":5478},{"style":1060},[5479],{"type":76,"value":2413},{"type":71,"tag":772,"props":5481,"children":5482},{"style":1060},[5483],{"type":76,"value":1620},{"type":71,"tag":772,"props":5485,"children":5486},{"class":774,"line":873},[5487,5491,5496,5500,5505,5509,5513,5517,5521,5526,5531,5535,5539,5543],{"type":71,"tag":772,"props":5488,"children":5489},{"style":1456},[5490],{"type":76,"value":2603},{"type":71,"tag":772,"props":5492,"children":5493},{"style":1107},[5494],{"type":76,"value":5495}," colors",{"type":71,"tag":772,"props":5497,"children":5498},{"style":1060},[5499],{"type":76,"value":2473},{"type":71,"tag":772,"props":5501,"children":5502},{"style":1107},[5503],{"type":76,"value":5504}," THEME_COLORS",{"type":71,"tag":772,"props":5506,"children":5507},{"style":2281},[5508],{"type":76,"value":2695},{"type":71,"tag":772,"props":5510,"children":5511},{"style":1107},[5512],{"type":76,"value":2435},{"type":71,"tag":772,"props":5514,"children":5515},{"style":1060},[5516],{"type":76,"value":366},{"type":71,"tag":772,"props":5518,"children":5519},{"style":1107},[5520],{"type":76,"value":2882},{"type":71,"tag":772,"props":5522,"children":5523},{"style":2281},[5524],{"type":76,"value":5525},"] ",{"type":71,"tag":772,"props":5527,"children":5528},{"style":1060},[5529],{"type":76,"value":5530},"??",{"type":71,"tag":772,"props":5532,"children":5533},{"style":1107},[5534],{"type":76,"value":5504},{"type":71,"tag":772,"props":5536,"children":5537},{"style":1060},[5538],{"type":76,"value":366},{"type":71,"tag":772,"props":5540,"children":5541},{"style":1107},[5542],{"type":76,"value":2379},{"type":71,"tag":772,"props":5544,"children":5545},{"style":1060},[5546],{"type":76,"value":2088},{"type":71,"tag":772,"props":5548,"children":5549},{"class":774,"line":881},[5550,5555,5559,5564,5568,5573,5577,5581,5585,5589],{"type":71,"tag":772,"props":5551,"children":5552},{"style":1107},[5553],{"type":76,"value":5554},"    container",{"type":71,"tag":772,"props":5556,"children":5557},{"style":1060},[5558],{"type":76,"value":366},{"type":71,"tag":772,"props":5560,"children":5561},{"style":1107},[5562],{"type":76,"value":5563},"style",{"type":71,"tag":772,"props":5565,"children":5566},{"style":1060},[5567],{"type":76,"value":366},{"type":71,"tag":772,"props":5569,"children":5570},{"style":1107},[5571],{"type":76,"value":5572},"background",{"type":71,"tag":772,"props":5574,"children":5575},{"style":1060},[5576],{"type":76,"value":2473},{"type":71,"tag":772,"props":5578,"children":5579},{"style":1107},[5580],{"type":76,"value":5495},{"type":71,"tag":772,"props":5582,"children":5583},{"style":1060},[5584],{"type":76,"value":366},{"type":71,"tag":772,"props":5586,"children":5587},{"style":1107},[5588],{"type":76,"value":5572},{"type":71,"tag":772,"props":5590,"children":5591},{"style":1060},[5592],{"type":76,"value":2088},{"type":71,"tag":772,"props":5594,"children":5595},{"class":774,"line":890},[5596],{"type":71,"tag":772,"props":5597,"children":5598},{"style":2790},[5599],{"type":76,"value":5600},"    \u002F\u002F use colors.text, colors.accent in drawing logic\n",{"type":71,"tag":772,"props":5602,"children":5603},{"class":774,"line":899},[5604],{"type":71,"tag":772,"props":5605,"children":5606},{"style":1060},[5607],{"type":76,"value":2002},{"type":71,"tag":78,"props":5609,"children":5610},{},[5611],{"type":71,"tag":436,"props":5612,"children":5613},{},[5614],{"type":76,"value":5615},"React:",{"type":71,"tag":368,"props":5617,"children":5619},{"className":3572,"code":5618,"language":3574,"meta":376,"style":376},"const THEME_COLORS = {\n    light: { background: '#ffffff', text: '#1a1a1a', accent: '#4e9cf5' },\n    dark:  { background: '#1a1c21', text: '#c3cbd4', accent: '#4e9cf5' },\n};\n\nfunction Viz() {\n    const { theme } = useTheme();\n    const colors = THEME_COLORS[theme] ?? THEME_COLORS.light;\n    return \u003Cdiv style={{ background: colors.background, color: colors.text }}>...\u003C\u002Fdiv>;\n}\n",[5620],{"type":71,"tag":84,"props":5621,"children":5622},{"__ignoreMap":376},[5623,5642,5729,5816,5823,5830,5849,5884,5935,6026],{"type":71,"tag":772,"props":5624,"children":5625},{"class":774,"line":775},[5626,5630,5634,5638],{"type":71,"tag":772,"props":5627,"children":5628},{"style":1456},[5629],{"type":76,"value":2127},{"type":71,"tag":772,"props":5631,"children":5632},{"style":1107},[5633],{"type":76,"value":5133},{"type":71,"tag":772,"props":5635,"children":5636},{"style":1060},[5637],{"type":76,"value":2137},{"type":71,"tag":772,"props":5639,"children":5640},{"style":1060},[5641],{"type":76,"value":1620},{"type":71,"tag":772,"props":5643,"children":5644},{"class":774,"line":784},[5645,5649,5653,5657,5661,5665,5669,5673,5677,5681,5685,5689,5693,5697,5701,5705,5709,5713,5717,5721,5725],{"type":71,"tag":772,"props":5646,"children":5647},{"style":2281},[5648],{"type":76,"value":5149},{"type":71,"tag":772,"props":5650,"children":5651},{"style":1060},[5652],{"type":76,"value":1428},{"type":71,"tag":772,"props":5654,"children":5655},{"style":1060},[5656],{"type":76,"value":1885},{"type":71,"tag":772,"props":5658,"children":5659},{"style":2281},[5660],{"type":76,"value":5162},{"type":71,"tag":772,"props":5662,"children":5663},{"style":1060},[5664],{"type":76,"value":1428},{"type":71,"tag":772,"props":5666,"children":5667},{"style":1060},[5668],{"type":76,"value":2074},{"type":71,"tag":772,"props":5670,"children":5671},{"style":1319},[5672],{"type":76,"value":5175},{"type":71,"tag":772,"props":5674,"children":5675},{"style":1060},[5676],{"type":76,"value":2083},{"type":71,"tag":772,"props":5678,"children":5679},{"style":1060},[5680],{"type":76,"value":1912},{"type":71,"tag":772,"props":5682,"children":5683},{"style":2281},[5684],{"type":76,"value":5188},{"type":71,"tag":772,"props":5686,"children":5687},{"style":1060},[5688],{"type":76,"value":1428},{"type":71,"tag":772,"props":5690,"children":5691},{"style":1060},[5692],{"type":76,"value":2074},{"type":71,"tag":772,"props":5694,"children":5695},{"style":1319},[5696],{"type":76,"value":5201},{"type":71,"tag":772,"props":5698,"children":5699},{"style":1060},[5700],{"type":76,"value":2083},{"type":71,"tag":772,"props":5702,"children":5703},{"style":1060},[5704],{"type":76,"value":1912},{"type":71,"tag":772,"props":5706,"children":5707},{"style":2281},[5708],{"type":76,"value":5214},{"type":71,"tag":772,"props":5710,"children":5711},{"style":1060},[5712],{"type":76,"value":1428},{"type":71,"tag":772,"props":5714,"children":5715},{"style":1060},[5716],{"type":76,"value":2074},{"type":71,"tag":772,"props":5718,"children":5719},{"style":1319},[5720],{"type":76,"value":5227},{"type":71,"tag":772,"props":5722,"children":5723},{"style":1060},[5724],{"type":76,"value":2083},{"type":71,"tag":772,"props":5726,"children":5727},{"style":1060},[5728],{"type":76,"value":1939},{"type":71,"tag":772,"props":5730,"children":5731},{"class":774,"line":22},[5732,5736,5740,5744,5748,5752,5756,5760,5764,5768,5772,5776,5780,5784,5788,5792,5796,5800,5804,5808,5812],{"type":71,"tag":772,"props":5733,"children":5734},{"style":2281},[5735],{"type":76,"value":5243},{"type":71,"tag":772,"props":5737,"children":5738},{"style":1060},[5739],{"type":76,"value":1428},{"type":71,"tag":772,"props":5741,"children":5742},{"style":1060},[5743],{"type":76,"value":5252},{"type":71,"tag":772,"props":5745,"children":5746},{"style":2281},[5747],{"type":76,"value":5162},{"type":71,"tag":772,"props":5749,"children":5750},{"style":1060},[5751],{"type":76,"value":1428},{"type":71,"tag":772,"props":5753,"children":5754},{"style":1060},[5755],{"type":76,"value":2074},{"type":71,"tag":772,"props":5757,"children":5758},{"style":1319},[5759],{"type":76,"value":5269},{"type":71,"tag":772,"props":5761,"children":5762},{"style":1060},[5763],{"type":76,"value":2083},{"type":71,"tag":772,"props":5765,"children":5766},{"style":1060},[5767],{"type":76,"value":1912},{"type":71,"tag":772,"props":5769,"children":5770},{"style":2281},[5771],{"type":76,"value":5188},{"type":71,"tag":772,"props":5773,"children":5774},{"style":1060},[5775],{"type":76,"value":1428},{"type":71,"tag":772,"props":5777,"children":5778},{"style":1060},[5779],{"type":76,"value":2074},{"type":71,"tag":772,"props":5781,"children":5782},{"style":1319},[5783],{"type":76,"value":5294},{"type":71,"tag":772,"props":5785,"children":5786},{"style":1060},[5787],{"type":76,"value":2083},{"type":71,"tag":772,"props":5789,"children":5790},{"style":1060},[5791],{"type":76,"value":1912},{"type":71,"tag":772,"props":5793,"children":5794},{"style":2281},[5795],{"type":76,"value":5214},{"type":71,"tag":772,"props":5797,"children":5798},{"style":1060},[5799],{"type":76,"value":1428},{"type":71,"tag":772,"props":5801,"children":5802},{"style":1060},[5803],{"type":76,"value":2074},{"type":71,"tag":772,"props":5805,"children":5806},{"style":1319},[5807],{"type":76,"value":5227},{"type":71,"tag":772,"props":5809,"children":5810},{"style":1060},[5811],{"type":76,"value":2083},{"type":71,"tag":772,"props":5813,"children":5814},{"style":1060},[5815],{"type":76,"value":1939},{"type":71,"tag":772,"props":5817,"children":5818},{"class":774,"line":802},[5819],{"type":71,"tag":772,"props":5820,"children":5821},{"style":1060},[5822],{"type":76,"value":5334},{"type":71,"tag":772,"props":5824,"children":5825},{"class":774,"line":811},[5826],{"type":71,"tag":772,"props":5827,"children":5828},{"emptyLinePlaceholder":796},[5829],{"type":76,"value":799},{"type":71,"tag":772,"props":5831,"children":5832},{"class":774,"line":820},[5833,5837,5841,5845],{"type":71,"tag":772,"props":5834,"children":5835},{"style":1456},[5836],{"type":76,"value":2403},{"type":71,"tag":772,"props":5838,"children":5839},{"style":2149},[5840],{"type":76,"value":3747},{"type":71,"tag":772,"props":5842,"children":5843},{"style":1060},[5844],{"type":76,"value":2413},{"type":71,"tag":772,"props":5846,"children":5847},{"style":1060},[5848],{"type":76,"value":1620},{"type":71,"tag":772,"props":5850,"children":5851},{"class":774,"line":829},[5852,5856,5860,5864,5868,5872,5876,5880],{"type":71,"tag":772,"props":5853,"children":5854},{"style":1456},[5855],{"type":76,"value":2603},{"type":71,"tag":772,"props":5857,"children":5858},{"style":1060},[5859],{"type":76,"value":1885},{"type":71,"tag":772,"props":5861,"children":5862},{"style":1107},[5863],{"type":76,"value":2366},{"type":71,"tag":772,"props":5865,"children":5866},{"style":1060},[5867],{"type":76,"value":2064},{"type":71,"tag":772,"props":5869,"children":5870},{"style":1060},[5871],{"type":76,"value":2473},{"type":71,"tag":772,"props":5873,"children":5874},{"style":2149},[5875],{"type":76,"value":3907},{"type":71,"tag":772,"props":5877,"children":5878},{"style":2281},[5879],{"type":76,"value":2413},{"type":71,"tag":772,"props":5881,"children":5882},{"style":1060},[5883],{"type":76,"value":2088},{"type":71,"tag":772,"props":5885,"children":5886},{"class":774,"line":837},[5887,5891,5895,5899,5903,5907,5911,5915,5919,5923,5927,5931],{"type":71,"tag":772,"props":5888,"children":5889},{"style":1456},[5890],{"type":76,"value":2603},{"type":71,"tag":772,"props":5892,"children":5893},{"style":1107},[5894],{"type":76,"value":5495},{"type":71,"tag":772,"props":5896,"children":5897},{"style":1060},[5898],{"type":76,"value":2473},{"type":71,"tag":772,"props":5900,"children":5901},{"style":1107},[5902],{"type":76,"value":5504},{"type":71,"tag":772,"props":5904,"children":5905},{"style":2281},[5906],{"type":76,"value":2695},{"type":71,"tag":772,"props":5908,"children":5909},{"style":1107},[5910],{"type":76,"value":2882},{"type":71,"tag":772,"props":5912,"children":5913},{"style":2281},[5914],{"type":76,"value":5525},{"type":71,"tag":772,"props":5916,"children":5917},{"style":1060},[5918],{"type":76,"value":5530},{"type":71,"tag":772,"props":5920,"children":5921},{"style":1107},[5922],{"type":76,"value":5504},{"type":71,"tag":772,"props":5924,"children":5925},{"style":1060},[5926],{"type":76,"value":366},{"type":71,"tag":772,"props":5928,"children":5929},{"style":1107},[5930],{"type":76,"value":2379},{"type":71,"tag":772,"props":5932,"children":5933},{"style":1060},[5934],{"type":76,"value":2088},{"type":71,"tag":772,"props":5936,"children":5937},{"class":774,"line":846},[5938,5942,5946,5950,5954,5958,5962,5966,5970,5974,5978,5982,5987,5991,5995,5999,6004,6009,6014,6018,6022],{"type":71,"tag":772,"props":5939,"children":5940},{"style":2047},[5941],{"type":76,"value":4351},{"type":71,"tag":772,"props":5943,"children":5944},{"style":1060},[5945],{"type":76,"value":4051},{"type":71,"tag":772,"props":5947,"children":5948},{"style":2281},[5949],{"type":76,"value":2166},{"type":71,"tag":772,"props":5951,"children":5952},{"style":1456},[5953],{"type":76,"value":4364},{"type":71,"tag":772,"props":5955,"children":5956},{"style":1060},[5957],{"type":76,"value":4369},{"type":71,"tag":772,"props":5959,"children":5960},{"style":2281},[5961],{"type":76,"value":5162},{"type":71,"tag":772,"props":5963,"children":5964},{"style":1060},[5965],{"type":76,"value":1428},{"type":71,"tag":772,"props":5967,"children":5968},{"style":1107},[5969],{"type":76,"value":5495},{"type":71,"tag":772,"props":5971,"children":5972},{"style":1060},[5973],{"type":76,"value":366},{"type":71,"tag":772,"props":5975,"children":5976},{"style":1107},[5977],{"type":76,"value":5572},{"type":71,"tag":772,"props":5979,"children":5980},{"style":1060},[5981],{"type":76,"value":1912},{"type":71,"tag":772,"props":5983,"children":5984},{"style":2281},[5985],{"type":76,"value":5986}," color",{"type":71,"tag":772,"props":5988,"children":5989},{"style":1060},[5990],{"type":76,"value":1428},{"type":71,"tag":772,"props":5992,"children":5993},{"style":1107},[5994],{"type":76,"value":5495},{"type":71,"tag":772,"props":5996,"children":5997},{"style":1060},[5998],{"type":76,"value":366},{"type":71,"tag":772,"props":6000,"children":6001},{"style":1107},[6002],{"type":76,"value":6003},"text ",{"type":71,"tag":772,"props":6005,"children":6006},{"style":1060},[6007],{"type":76,"value":6008},"}}>",{"type":71,"tag":772,"props":6010,"children":6011},{"style":1107},[6012],{"type":76,"value":6013},"...",{"type":71,"tag":772,"props":6015,"children":6016},{"style":1060},[6017],{"type":76,"value":4091},{"type":71,"tag":772,"props":6019,"children":6020},{"style":2281},[6021],{"type":76,"value":2166},{"type":71,"tag":772,"props":6023,"children":6024},{"style":1060},[6025],{"type":76,"value":4100},{"type":71,"tag":772,"props":6027,"children":6028},{"class":774,"line":855},[6029],{"type":71,"tag":772,"props":6030,"children":6031},{"style":1060},[6032],{"type":76,"value":2002},{"type":71,"tag":123,"props":6034,"children":6035},{},[],{"type":71,"tag":106,"props":6037,"children":6039},{"id":6038},"accessibility-safe-rendering",[6040],{"type":76,"value":568},{"type":71,"tag":78,"props":6042,"children":6043},{},[6044],{"type":76,"value":6045},"These are defaults — apply them unless the user's request or context makes them clearly inapplicable.",{"type":71,"tag":78,"props":6047,"children":6048},{},[6049,6054,6056,6061,6063,6069,6071,6077,6079,6085,6086,6091],{"type":71,"tag":436,"props":6050,"children":6051},{},[6052],{"type":76,"value":6053},"Escape untrusted search values before writing to the DOM.",{"type":76,"value":6055}," Never use ",{"type":71,"tag":84,"props":6057,"children":6059},{"className":6058},[],[6060],{"type":76,"value":2468},{"type":76,"value":6062}," or ",{"type":71,"tag":84,"props":6064,"children":6066},{"className":6065},[],[6067],{"type":76,"value":6068},"insertAdjacentHTML",{"type":76,"value":6070}," with raw field values from ",{"type":71,"tag":84,"props":6072,"children":6074},{"className":6073},[],[6075],{"type":76,"value":6076},"dataSources",{"type":76,"value":6078},". Use ",{"type":71,"tag":84,"props":6080,"children":6082},{"className":6081},[],[6083],{"type":76,"value":6084},"textContent",{"type":76,"value":249},{"type":71,"tag":84,"props":6087,"children":6089},{"className":6088},[],[6090],{"type":76,"value":2152},{"type":76,"value":6092},", or a sanitizing helper instead.",{"type":71,"tag":368,"props":6094,"children":6096},{"className":2035,"code":6095,"language":2037,"meta":376,"style":376},"\u002F\u002F safe\nconst el = document.createElement('div');\nel.textContent = row.label;\n\n\u002F\u002F unsafe — do not do this\ncontainer.innerHTML = `\u003Cdiv>${row.label}\u003C\u002Fdiv>`;\n",[6097],{"type":71,"tag":84,"props":6098,"children":6099},{"__ignoreMap":376},[6100,6108,6160,6199,6206,6214],{"type":71,"tag":772,"props":6101,"children":6102},{"class":774,"line":775},[6103],{"type":71,"tag":772,"props":6104,"children":6105},{"style":2790},[6106],{"type":76,"value":6107},"\u002F\u002F safe\n",{"type":71,"tag":772,"props":6109,"children":6110},{"class":774,"line":784},[6111,6115,6120,6124,6128,6132,6136,6140,6144,6148,6152,6156],{"type":71,"tag":772,"props":6112,"children":6113},{"style":1456},[6114],{"type":76,"value":2127},{"type":71,"tag":772,"props":6116,"children":6117},{"style":1107},[6118],{"type":76,"value":6119}," el ",{"type":71,"tag":772,"props":6121,"children":6122},{"style":1060},[6123],{"type":76,"value":2137},{"type":71,"tag":772,"props":6125,"children":6126},{"style":1107},[6127],{"type":76,"value":2142},{"type":71,"tag":772,"props":6129,"children":6130},{"style":1060},[6131],{"type":76,"value":366},{"type":71,"tag":772,"props":6133,"children":6134},{"style":2149},[6135],{"type":76,"value":2152},{"type":71,"tag":772,"props":6137,"children":6138},{"style":1107},[6139],{"type":76,"value":2157},{"type":71,"tag":772,"props":6141,"children":6142},{"style":1060},[6143],{"type":76,"value":2083},{"type":71,"tag":772,"props":6145,"children":6146},{"style":1319},[6147],{"type":76,"value":2166},{"type":71,"tag":772,"props":6149,"children":6150},{"style":1060},[6151],{"type":76,"value":2083},{"type":71,"tag":772,"props":6153,"children":6154},{"style":1107},[6155],{"type":76,"value":188},{"type":71,"tag":772,"props":6157,"children":6158},{"style":1060},[6159],{"type":76,"value":2088},{"type":71,"tag":772,"props":6161,"children":6162},{"class":774,"line":22},[6163,6168,6172,6177,6181,6186,6190,6195],{"type":71,"tag":772,"props":6164,"children":6165},{"style":1107},[6166],{"type":76,"value":6167},"el",{"type":71,"tag":772,"props":6169,"children":6170},{"style":1060},[6171],{"type":76,"value":366},{"type":71,"tag":772,"props":6173,"children":6174},{"style":1107},[6175],{"type":76,"value":6176},"textContent ",{"type":71,"tag":772,"props":6178,"children":6179},{"style":1060},[6180],{"type":76,"value":2137},{"type":71,"tag":772,"props":6182,"children":6183},{"style":1107},[6184],{"type":76,"value":6185}," row",{"type":71,"tag":772,"props":6187,"children":6188},{"style":1060},[6189],{"type":76,"value":366},{"type":71,"tag":772,"props":6191,"children":6192},{"style":1107},[6193],{"type":76,"value":6194},"label",{"type":71,"tag":772,"props":6196,"children":6197},{"style":1060},[6198],{"type":76,"value":2088},{"type":71,"tag":772,"props":6200,"children":6201},{"class":774,"line":802},[6202],{"type":71,"tag":772,"props":6203,"children":6204},{"emptyLinePlaceholder":796},[6205],{"type":76,"value":799},{"type":71,"tag":772,"props":6207,"children":6208},{"class":774,"line":811},[6209],{"type":71,"tag":772,"props":6210,"children":6211},{"style":2790},[6212],{"type":76,"value":6213},"\u002F\u002F unsafe — do not do this\n",{"type":71,"tag":772,"props":6215,"children":6216},{"class":774,"line":820},[6217,6221,6225,6230,6234,6239,6244,6249,6254,6258,6262,6266,6271,6275],{"type":71,"tag":772,"props":6218,"children":6219},{"style":1107},[6220],{"type":76,"value":2186},{"type":71,"tag":772,"props":6222,"children":6223},{"style":1060},[6224],{"type":76,"value":366},{"type":71,"tag":772,"props":6226,"children":6227},{"style":1107},[6228],{"type":76,"value":6229},"innerHTML ",{"type":71,"tag":772,"props":6231,"children":6232},{"style":1060},[6233],{"type":76,"value":2137},{"type":71,"tag":772,"props":6235,"children":6236},{"style":1060},[6237],{"type":76,"value":6238}," `",{"type":71,"tag":772,"props":6240,"children":6241},{"style":1319},[6242],{"type":76,"value":6243},"\u003Cdiv>",{"type":71,"tag":772,"props":6245,"children":6246},{"style":1060},[6247],{"type":76,"value":6248},"${",{"type":71,"tag":772,"props":6250,"children":6251},{"style":1107},[6252],{"type":76,"value":6253},"row",{"type":71,"tag":772,"props":6255,"children":6256},{"style":1060},[6257],{"type":76,"value":366},{"type":71,"tag":772,"props":6259,"children":6260},{"style":1107},[6261],{"type":76,"value":6194},{"type":71,"tag":772,"props":6263,"children":6264},{"style":1060},[6265],{"type":76,"value":3242},{"type":71,"tag":772,"props":6267,"children":6268},{"style":1319},[6269],{"type":76,"value":6270},"\u003C\u002Fdiv>",{"type":71,"tag":772,"props":6272,"children":6273},{"style":1060},[6274],{"type":76,"value":1316},{"type":71,"tag":772,"props":6276,"children":6277},{"style":1060},[6278],{"type":76,"value":2088},{"type":71,"tag":78,"props":6280,"children":6281},{},[6282,6287,6289,6295,6297,6303],{"type":71,"tag":436,"props":6283,"children":6284},{},[6285],{"type":76,"value":6286},"Make interactive elements keyboard-reachable.",{"type":76,"value":6288}," If clicking or hovering triggers behavior, ensure the element has ",{"type":71,"tag":84,"props":6290,"children":6292},{"className":6291},[],[6293],{"type":76,"value":6294},"tabIndex=\"0\"",{"type":76,"value":6296}," and handles ",{"type":71,"tag":84,"props":6298,"children":6300},{"className":6299},[],[6301],{"type":76,"value":6302},"keydown",{"type":76,"value":6304}," for Enter\u002FSpace.",{"type":71,"tag":368,"props":6306,"children":6308},{"className":2035,"code":6307,"language":2037,"meta":376,"style":376},"el.setAttribute('tabindex', '0');\nel.setAttribute('role', 'button');\nel.addEventListener('keydown', (e) => {\n    if (e.key === 'Enter' || e.key === ' ') handleClick();\n});\n",[6309],{"type":71,"tag":84,"props":6310,"children":6311},{"__ignoreMap":376},[6312,6369,6426,6482,6569],{"type":71,"tag":772,"props":6313,"children":6314},{"class":774,"line":775},[6315,6319,6323,6328,6332,6336,6341,6345,6349,6353,6357,6361,6365],{"type":71,"tag":772,"props":6316,"children":6317},{"style":1107},[6318],{"type":76,"value":6167},{"type":71,"tag":772,"props":6320,"children":6321},{"style":1060},[6322],{"type":76,"value":366},{"type":71,"tag":772,"props":6324,"children":6325},{"style":2149},[6326],{"type":76,"value":6327},"setAttribute",{"type":71,"tag":772,"props":6329,"children":6330},{"style":1107},[6331],{"type":76,"value":2157},{"type":71,"tag":772,"props":6333,"children":6334},{"style":1060},[6335],{"type":76,"value":2083},{"type":71,"tag":772,"props":6337,"children":6338},{"style":1319},[6339],{"type":76,"value":6340},"tabindex",{"type":71,"tag":772,"props":6342,"children":6343},{"style":1060},[6344],{"type":76,"value":2083},{"type":71,"tag":772,"props":6346,"children":6347},{"style":1060},[6348],{"type":76,"value":1912},{"type":71,"tag":772,"props":6350,"children":6351},{"style":1060},[6352],{"type":76,"value":2074},{"type":71,"tag":772,"props":6354,"children":6355},{"style":1319},[6356],{"type":76,"value":2700},{"type":71,"tag":772,"props":6358,"children":6359},{"style":1060},[6360],{"type":76,"value":2083},{"type":71,"tag":772,"props":6362,"children":6363},{"style":1107},[6364],{"type":76,"value":188},{"type":71,"tag":772,"props":6366,"children":6367},{"style":1060},[6368],{"type":76,"value":2088},{"type":71,"tag":772,"props":6370,"children":6371},{"class":774,"line":784},[6372,6376,6380,6384,6388,6392,6397,6401,6405,6409,6414,6418,6422],{"type":71,"tag":772,"props":6373,"children":6374},{"style":1107},[6375],{"type":76,"value":6167},{"type":71,"tag":772,"props":6377,"children":6378},{"style":1060},[6379],{"type":76,"value":366},{"type":71,"tag":772,"props":6381,"children":6382},{"style":2149},[6383],{"type":76,"value":6327},{"type":71,"tag":772,"props":6385,"children":6386},{"style":1107},[6387],{"type":76,"value":2157},{"type":71,"tag":772,"props":6389,"children":6390},{"style":1060},[6391],{"type":76,"value":2083},{"type":71,"tag":772,"props":6393,"children":6394},{"style":1319},[6395],{"type":76,"value":6396},"role",{"type":71,"tag":772,"props":6398,"children":6399},{"style":1060},[6400],{"type":76,"value":2083},{"type":71,"tag":772,"props":6402,"children":6403},{"style":1060},[6404],{"type":76,"value":1912},{"type":71,"tag":772,"props":6406,"children":6407},{"style":1060},[6408],{"type":76,"value":2074},{"type":71,"tag":772,"props":6410,"children":6411},{"style":1319},[6412],{"type":76,"value":6413},"button",{"type":71,"tag":772,"props":6415,"children":6416},{"style":1060},[6417],{"type":76,"value":2083},{"type":71,"tag":772,"props":6419,"children":6420},{"style":1107},[6421],{"type":76,"value":188},{"type":71,"tag":772,"props":6423,"children":6424},{"style":1060},[6425],{"type":76,"value":2088},{"type":71,"tag":772,"props":6427,"children":6428},{"class":774,"line":22},[6429,6433,6437,6442,6446,6450,6454,6458,6462,6466,6470,6474,6478],{"type":71,"tag":772,"props":6430,"children":6431},{"style":1107},[6432],{"type":76,"value":6167},{"type":71,"tag":772,"props":6434,"children":6435},{"style":1060},[6436],{"type":76,"value":366},{"type":71,"tag":772,"props":6438,"children":6439},{"style":2149},[6440],{"type":76,"value":6441},"addEventListener",{"type":71,"tag":772,"props":6443,"children":6444},{"style":1107},[6445],{"type":76,"value":2157},{"type":71,"tag":772,"props":6447,"children":6448},{"style":1060},[6449],{"type":76,"value":2083},{"type":71,"tag":772,"props":6451,"children":6452},{"style":1319},[6453],{"type":76,"value":6302},{"type":71,"tag":772,"props":6455,"children":6456},{"style":1060},[6457],{"type":76,"value":2083},{"type":71,"tag":772,"props":6459,"children":6460},{"style":1060},[6461],{"type":76,"value":1912},{"type":71,"tag":772,"props":6463,"children":6464},{"style":1060},[6465],{"type":76,"value":2430},{"type":71,"tag":772,"props":6467,"children":6468},{"style":2970},[6469],{"type":76,"value":4965},{"type":71,"tag":772,"props":6471,"children":6472},{"style":1060},[6473],{"type":76,"value":188},{"type":71,"tag":772,"props":6475,"children":6476},{"style":1456},[6477],{"type":76,"value":2991},{"type":71,"tag":772,"props":6479,"children":6480},{"style":1060},[6481],{"type":76,"value":1620},{"type":71,"tag":772,"props":6483,"children":6484},{"class":774,"line":802},[6485,6489,6493,6497,6501,6506,6510,6514,6519,6523,6527,6532,6536,6540,6544,6548,6552,6556,6561,6565],{"type":71,"tag":772,"props":6486,"children":6487},{"style":2047},[6488],{"type":76,"value":2425},{"type":71,"tag":772,"props":6490,"children":6491},{"style":2281},[6492],{"type":76,"value":2430},{"type":71,"tag":772,"props":6494,"children":6495},{"style":1107},[6496],{"type":76,"value":4965},{"type":71,"tag":772,"props":6498,"children":6499},{"style":1060},[6500],{"type":76,"value":366},{"type":71,"tag":772,"props":6502,"children":6503},{"style":1107},[6504],{"type":76,"value":6505},"key",{"type":71,"tag":772,"props":6507,"children":6508},{"style":1060},[6509],{"type":76,"value":2887},{"type":71,"tag":772,"props":6511,"children":6512},{"style":1060},[6513],{"type":76,"value":2074},{"type":71,"tag":772,"props":6515,"children":6516},{"style":1319},[6517],{"type":76,"value":6518},"Enter",{"type":71,"tag":772,"props":6520,"children":6521},{"style":1060},[6522],{"type":76,"value":2083},{"type":71,"tag":772,"props":6524,"children":6525},{"style":1060},[6526],{"type":76,"value":2681},{"type":71,"tag":772,"props":6528,"children":6529},{"style":1107},[6530],{"type":76,"value":6531}," e",{"type":71,"tag":772,"props":6533,"children":6534},{"style":1060},[6535],{"type":76,"value":366},{"type":71,"tag":772,"props":6537,"children":6538},{"style":1107},[6539],{"type":76,"value":6505},{"type":71,"tag":772,"props":6541,"children":6542},{"style":1060},[6543],{"type":76,"value":2887},{"type":71,"tag":772,"props":6545,"children":6546},{"style":1060},[6547],{"type":76,"value":2074},{"type":71,"tag":772,"props":6549,"children":6550},{"style":1060},[6551],{"type":76,"value":2074},{"type":71,"tag":772,"props":6553,"children":6554},{"style":2281},[6555],{"type":76,"value":2449},{"type":71,"tag":772,"props":6557,"children":6558},{"style":2149},[6559],{"type":76,"value":6560},"handleClick",{"type":71,"tag":772,"props":6562,"children":6563},{"style":2281},[6564],{"type":76,"value":2413},{"type":71,"tag":772,"props":6566,"children":6567},{"style":1060},[6568],{"type":76,"value":2088},{"type":71,"tag":772,"props":6570,"children":6571},{"class":774,"line":811},[6572,6576,6580],{"type":71,"tag":772,"props":6573,"children":6574},{"style":1060},[6575],{"type":76,"value":3242},{"type":71,"tag":772,"props":6577,"children":6578},{"style":1107},[6579],{"type":76,"value":188},{"type":71,"tag":772,"props":6581,"children":6582},{"style":1060},[6583],{"type":76,"value":2088},{"type":71,"tag":78,"props":6585,"children":6586},{},[6587,6592],{"type":71,"tag":436,"props":6588,"children":6589},{},[6590],{"type":76,"value":6591},"Provide text alternatives.",{"type":76,"value":6593}," Canvas elements and icon-only controls need an accessible label.",{"type":71,"tag":368,"props":6595,"children":6597},{"className":2035,"code":6596,"language":2037,"meta":376,"style":376},"canvas.setAttribute('role', 'img');\ncanvas.setAttribute('aria-label', 'Network graph showing host connections');\n",[6598],{"type":71,"tag":84,"props":6599,"children":6600},{"__ignoreMap":376},[6601,6658],{"type":71,"tag":772,"props":6602,"children":6603},{"class":774,"line":775},[6604,6609,6613,6617,6621,6625,6629,6633,6637,6641,6646,6650,6654],{"type":71,"tag":772,"props":6605,"children":6606},{"style":1107},[6607],{"type":76,"value":6608},"canvas",{"type":71,"tag":772,"props":6610,"children":6611},{"style":1060},[6612],{"type":76,"value":366},{"type":71,"tag":772,"props":6614,"children":6615},{"style":2149},[6616],{"type":76,"value":6327},{"type":71,"tag":772,"props":6618,"children":6619},{"style":1107},[6620],{"type":76,"value":2157},{"type":71,"tag":772,"props":6622,"children":6623},{"style":1060},[6624],{"type":76,"value":2083},{"type":71,"tag":772,"props":6626,"children":6627},{"style":1319},[6628],{"type":76,"value":6396},{"type":71,"tag":772,"props":6630,"children":6631},{"style":1060},[6632],{"type":76,"value":2083},{"type":71,"tag":772,"props":6634,"children":6635},{"style":1060},[6636],{"type":76,"value":1912},{"type":71,"tag":772,"props":6638,"children":6639},{"style":1060},[6640],{"type":76,"value":2074},{"type":71,"tag":772,"props":6642,"children":6643},{"style":1319},[6644],{"type":76,"value":6645},"img",{"type":71,"tag":772,"props":6647,"children":6648},{"style":1060},[6649],{"type":76,"value":2083},{"type":71,"tag":772,"props":6651,"children":6652},{"style":1107},[6653],{"type":76,"value":188},{"type":71,"tag":772,"props":6655,"children":6656},{"style":1060},[6657],{"type":76,"value":2088},{"type":71,"tag":772,"props":6659,"children":6660},{"class":774,"line":784},[6661,6665,6669,6673,6677,6681,6686,6690,6694,6698,6703,6707,6711],{"type":71,"tag":772,"props":6662,"children":6663},{"style":1107},[6664],{"type":76,"value":6608},{"type":71,"tag":772,"props":6666,"children":6667},{"style":1060},[6668],{"type":76,"value":366},{"type":71,"tag":772,"props":6670,"children":6671},{"style":2149},[6672],{"type":76,"value":6327},{"type":71,"tag":772,"props":6674,"children":6675},{"style":1107},[6676],{"type":76,"value":2157},{"type":71,"tag":772,"props":6678,"children":6679},{"style":1060},[6680],{"type":76,"value":2083},{"type":71,"tag":772,"props":6682,"children":6683},{"style":1319},[6684],{"type":76,"value":6685},"aria-label",{"type":71,"tag":772,"props":6687,"children":6688},{"style":1060},[6689],{"type":76,"value":2083},{"type":71,"tag":772,"props":6691,"children":6692},{"style":1060},[6693],{"type":76,"value":1912},{"type":71,"tag":772,"props":6695,"children":6696},{"style":1060},[6697],{"type":76,"value":2074},{"type":71,"tag":772,"props":6699,"children":6700},{"style":1319},[6701],{"type":76,"value":6702},"Network graph showing host connections",{"type":71,"tag":772,"props":6704,"children":6705},{"style":1060},[6706],{"type":76,"value":2083},{"type":71,"tag":772,"props":6708,"children":6709},{"style":1107},[6710],{"type":76,"value":188},{"type":71,"tag":772,"props":6712,"children":6713},{"style":1060},[6714],{"type":76,"value":2088},{"type":71,"tag":78,"props":6716,"children":6717},{},[6718,6723,6725,6731,6733,6738],{"type":71,"tag":436,"props":6719,"children":6720},{},[6721],{"type":76,"value":6722},"Meet WCAG AA contrast.",{"type":76,"value":6724}," Foreground text and icons must have at least 4.5:1 contrast against their background (3:1 for large text). The hardcoded ",{"type":71,"tag":84,"props":6726,"children":6728},{"className":6727},[],[6729],{"type":76,"value":6730},"THEME_COLORS",{"type":76,"value":6732}," values in ",{"type":71,"tag":563,"props":6734,"children":6736},{"href":6735},"#theme-support",[6737],{"type":76,"value":5101},{"type":76,"value":6739}," already satisfy this for default text — use them as the baseline and verify any custom accent or status colors.",{"type":71,"tag":78,"props":6741,"children":6742},{},[6743,6754],{"type":71,"tag":436,"props":6744,"children":6745},{},[6746,6748,6753],{"type":76,"value":6747},"Respect ",{"type":71,"tag":84,"props":6749,"children":6751},{"className":6750},[],[6752],{"type":76,"value":4751},{"type":76,"value":366},{"type":76,"value":6755}," If the viz uses animation, check the media query and skip or minimise motion when it is set.",{"type":71,"tag":368,"props":6757,"children":6759},{"className":2035,"code":6758,"language":2037,"meta":376,"style":376},"const reduceMotion = window.matchMedia('(prefers-reduced-motion: reduce)').matches;\nif (!reduceMotion) requestAnimationFrame(animate);\n",[6760],{"type":71,"tag":84,"props":6761,"children":6762},{"__ignoreMap":376},[6763,6827],{"type":71,"tag":772,"props":6764,"children":6765},{"class":774,"line":775},[6766,6770,6775,6779,6784,6788,6793,6797,6801,6806,6810,6814,6818,6823],{"type":71,"tag":772,"props":6767,"children":6768},{"style":1456},[6769],{"type":76,"value":2127},{"type":71,"tag":772,"props":6771,"children":6772},{"style":1107},[6773],{"type":76,"value":6774}," reduceMotion ",{"type":71,"tag":772,"props":6776,"children":6777},{"style":1060},[6778],{"type":76,"value":2137},{"type":71,"tag":772,"props":6780,"children":6781},{"style":1107},[6782],{"type":76,"value":6783}," window",{"type":71,"tag":772,"props":6785,"children":6786},{"style":1060},[6787],{"type":76,"value":366},{"type":71,"tag":772,"props":6789,"children":6790},{"style":2149},[6791],{"type":76,"value":6792},"matchMedia",{"type":71,"tag":772,"props":6794,"children":6795},{"style":1107},[6796],{"type":76,"value":2157},{"type":71,"tag":772,"props":6798,"children":6799},{"style":1060},[6800],{"type":76,"value":2083},{"type":71,"tag":772,"props":6802,"children":6803},{"style":1319},[6804],{"type":76,"value":6805},"(prefers-reduced-motion: reduce)",{"type":71,"tag":772,"props":6807,"children":6808},{"style":1060},[6809],{"type":76,"value":2083},{"type":71,"tag":772,"props":6811,"children":6812},{"style":1107},[6813],{"type":76,"value":188},{"type":71,"tag":772,"props":6815,"children":6816},{"style":1060},[6817],{"type":76,"value":366},{"type":71,"tag":772,"props":6819,"children":6820},{"style":1107},[6821],{"type":76,"value":6822},"matches",{"type":71,"tag":772,"props":6824,"children":6825},{"style":1060},[6826],{"type":76,"value":2088},{"type":71,"tag":772,"props":6828,"children":6829},{"class":774,"line":784},[6830,6835,6839,6843,6848,6853,6858],{"type":71,"tag":772,"props":6831,"children":6832},{"style":2047},[6833],{"type":76,"value":6834},"if",{"type":71,"tag":772,"props":6836,"children":6837},{"style":1107},[6838],{"type":76,"value":2430},{"type":71,"tag":772,"props":6840,"children":6841},{"style":1060},[6842],{"type":76,"value":2521},{"type":71,"tag":772,"props":6844,"children":6845},{"style":1107},[6846],{"type":76,"value":6847},"reduceMotion) ",{"type":71,"tag":772,"props":6849,"children":6850},{"style":2149},[6851],{"type":76,"value":6852},"requestAnimationFrame",{"type":71,"tag":772,"props":6854,"children":6855},{"style":1107},[6856],{"type":76,"value":6857},"(animate)",{"type":71,"tag":772,"props":6859,"children":6860},{"style":1060},[6861],{"type":76,"value":2088},{"type":71,"tag":123,"props":6863,"children":6864},{},[],{"type":71,"tag":106,"props":6866,"children":6867},{"id":6608},[6868],{"type":76,"value":6869},"Canvas",{"type":71,"tag":78,"props":6871,"children":6872},{},[6873,6875,6881],{"type":76,"value":6874},"See ",{"type":71,"tag":84,"props":6876,"children":6878},{"className":6877},[],[6879],{"type":76,"value":6880},"references\u002Fcanvas.md",{"type":76,"value":6882}," for sizing, interactivity, and drilldown patterns.",{"type":71,"tag":123,"props":6884,"children":6885},{},[],{"type":71,"tag":106,"props":6887,"children":6889},{"id":6888},"how-the-scaffolded-build-picks-entry-files",[6890],{"type":76,"value":6891},"How the scaffolded build picks entry files",{"type":71,"tag":78,"props":6893,"children":6894},{},[6895,6897,6903,6905,6910,6912,6918,6920,6926,6928,6933,6935,6940],{"type":76,"value":6896},"The scaffolded ",{"type":71,"tag":84,"props":6898,"children":6900},{"className":6899},[],[6901],{"type":76,"value":6902},"build.mjs",{"type":76,"value":6904}," does ",{"type":71,"tag":436,"props":6906,"children":6907},{},[6908],{"type":76,"value":6909},"not",{"type":76,"value":6911}," auto-detect each viz's extension. Every\n",{"type":71,"tag":84,"props":6913,"children":6915},{"className":6914},[],[6916],{"type":76,"value":6917},"package.json",{"type":76,"value":6919}," script passes a single global ",{"type":71,"tag":84,"props":6921,"children":6923},{"className":6922},[],[6924],{"type":76,"value":6925},"--entry=\u003Cfilename>",{"type":76,"value":6927},", and the build applies\nthat one filename to ",{"type":71,"tag":436,"props":6929,"children":6930},{},[6931],{"type":76,"value":6932},"every",{"type":76,"value":6934}," directory under ",{"type":71,"tag":84,"props":6936,"children":6938},{"className":6937},[],[6939],{"type":76,"value":341},{"type":76,"value":1428},{"type":71,"tag":368,"props":6942,"children":6944},{"className":2035,"code":6943,"language":2037,"meta":376,"style":376},"const entryArg = process.argv.find((a) => a.startsWith('--entry='));\nconst entryFileName = entryArg ? entryArg.split('=')[1] : 'visualization.js';\n\u002F\u002F for each viz: build visualizations\u002F\u003Cviz>\u002Fsrc\u002F\u003CentryFileName>\n\u002F\u002F if that file is missing: \"Warning: \u003Cviz>\u002Fsrc\u002F\u003CentryFileName> not found, skipping\"\n",[6945],{"type":71,"tag":84,"props":6946,"children":6947},{"__ignoreMap":376},[6948,7046,7135,7143],{"type":71,"tag":772,"props":6949,"children":6950},{"class":774,"line":775},[6951,6955,6960,6964,6969,6973,6978,6982,6987,6991,6995,6999,7003,7007,7012,7016,7021,7025,7029,7034,7038,7042],{"type":71,"tag":772,"props":6952,"children":6953},{"style":1456},[6954],{"type":76,"value":2127},{"type":71,"tag":772,"props":6956,"children":6957},{"style":1107},[6958],{"type":76,"value":6959}," entryArg ",{"type":71,"tag":772,"props":6961,"children":6962},{"style":1060},[6963],{"type":76,"value":2137},{"type":71,"tag":772,"props":6965,"children":6966},{"style":1107},[6967],{"type":76,"value":6968}," process",{"type":71,"tag":772,"props":6970,"children":6971},{"style":1060},[6972],{"type":76,"value":366},{"type":71,"tag":772,"props":6974,"children":6975},{"style":1107},[6976],{"type":76,"value":6977},"argv",{"type":71,"tag":772,"props":6979,"children":6980},{"style":1060},[6981],{"type":76,"value":366},{"type":71,"tag":772,"props":6983,"children":6984},{"style":2149},[6985],{"type":76,"value":6986},"find",{"type":71,"tag":772,"props":6988,"children":6989},{"style":1107},[6990],{"type":76,"value":2157},{"type":71,"tag":772,"props":6992,"children":6993},{"style":1060},[6994],{"type":76,"value":2157},{"type":71,"tag":772,"props":6996,"children":6997},{"style":2970},[6998],{"type":76,"value":563},{"type":71,"tag":772,"props":7000,"children":7001},{"style":1060},[7002],{"type":76,"value":188},{"type":71,"tag":772,"props":7004,"children":7005},{"style":1456},[7006],{"type":76,"value":2991},{"type":71,"tag":772,"props":7008,"children":7009},{"style":1107},[7010],{"type":76,"value":7011}," a",{"type":71,"tag":772,"props":7013,"children":7014},{"style":1060},[7015],{"type":76,"value":366},{"type":71,"tag":772,"props":7017,"children":7018},{"style":2149},[7019],{"type":76,"value":7020},"startsWith",{"type":71,"tag":772,"props":7022,"children":7023},{"style":1107},[7024],{"type":76,"value":2157},{"type":71,"tag":772,"props":7026,"children":7027},{"style":1060},[7028],{"type":76,"value":2083},{"type":71,"tag":772,"props":7030,"children":7031},{"style":1319},[7032],{"type":76,"value":7033},"--entry=",{"type":71,"tag":772,"props":7035,"children":7036},{"style":1060},[7037],{"type":76,"value":2083},{"type":71,"tag":772,"props":7039,"children":7040},{"style":1107},[7041],{"type":76,"value":4444},{"type":71,"tag":772,"props":7043,"children":7044},{"style":1060},[7045],{"type":76,"value":2088},{"type":71,"tag":772,"props":7047,"children":7048},{"class":774,"line":784},[7049,7053,7058,7062,7066,7071,7076,7080,7085,7089,7093,7097,7101,7106,7111,7115,7119,7123,7127,7131],{"type":71,"tag":772,"props":7050,"children":7051},{"style":1456},[7052],{"type":76,"value":2127},{"type":71,"tag":772,"props":7054,"children":7055},{"style":1107},[7056],{"type":76,"value":7057}," entryFileName ",{"type":71,"tag":772,"props":7059,"children":7060},{"style":1060},[7061],{"type":76,"value":2137},{"type":71,"tag":772,"props":7063,"children":7064},{"style":1107},[7065],{"type":76,"value":6959},{"type":71,"tag":772,"props":7067,"children":7068},{"style":1060},[7069],{"type":76,"value":7070},"?",{"type":71,"tag":772,"props":7072,"children":7073},{"style":1107},[7074],{"type":76,"value":7075}," entryArg",{"type":71,"tag":772,"props":7077,"children":7078},{"style":1060},[7079],{"type":76,"value":366},{"type":71,"tag":772,"props":7081,"children":7082},{"style":2149},[7083],{"type":76,"value":7084},"split",{"type":71,"tag":772,"props":7086,"children":7087},{"style":1107},[7088],{"type":76,"value":2157},{"type":71,"tag":772,"props":7090,"children":7091},{"style":1060},[7092],{"type":76,"value":2083},{"type":71,"tag":772,"props":7094,"children":7095},{"style":1319},[7096],{"type":76,"value":2137},{"type":71,"tag":772,"props":7098,"children":7099},{"style":1060},[7100],{"type":76,"value":2083},{"type":71,"tag":772,"props":7102,"children":7103},{"style":1107},[7104],{"type":76,"value":7105},")[",{"type":71,"tag":772,"props":7107,"children":7108},{"style":1793},[7109],{"type":76,"value":7110},"1",{"type":71,"tag":772,"props":7112,"children":7113},{"style":1107},[7114],{"type":76,"value":5525},{"type":71,"tag":772,"props":7116,"children":7117},{"style":1060},[7118],{"type":76,"value":1428},{"type":71,"tag":772,"props":7120,"children":7121},{"style":1060},[7122],{"type":76,"value":2074},{"type":71,"tag":772,"props":7124,"children":7125},{"style":1319},[7126],{"type":76,"value":281},{"type":71,"tag":772,"props":7128,"children":7129},{"style":1060},[7130],{"type":76,"value":2083},{"type":71,"tag":772,"props":7132,"children":7133},{"style":1060},[7134],{"type":76,"value":2088},{"type":71,"tag":772,"props":7136,"children":7137},{"class":774,"line":22},[7138],{"type":71,"tag":772,"props":7139,"children":7140},{"style":2790},[7141],{"type":76,"value":7142},"\u002F\u002F for each viz: build visualizations\u002F\u003Cviz>\u002Fsrc\u002F\u003CentryFileName>\n",{"type":71,"tag":772,"props":7144,"children":7145},{"class":774,"line":802},[7146],{"type":71,"tag":772,"props":7147,"children":7148},{"style":2790},[7149],{"type":76,"value":7150},"\u002F\u002F if that file is missing: \"Warning: \u003Cviz>\u002Fsrc\u002F\u003CentryFileName> not found, skipping\"\n",{"type":71,"tag":78,"props":7152,"children":7153},{},[7154,7160,7162,7168,7170,7176],{"type":71,"tag":84,"props":7155,"children":7157},{"className":7156},[],[7158],{"type":76,"value":7159},"jsx: 'automatic'",{"type":76,"value":7161}," is enabled only when ",{"type":71,"tag":84,"props":7163,"children":7165},{"className":7164},[],[7166],{"type":76,"value":7167},"entryFileName",{"type":76,"value":7169}," ends in ",{"type":71,"tag":84,"props":7171,"children":7173},{"className":7172},[],[7174],{"type":76,"value":7175},".jsx",{"type":76,"value":366},{"type":71,"tag":78,"props":7178,"children":7179},{},[7180],{"type":76,"value":7181},"Consequences you must design around:",{"type":71,"tag":133,"props":7183,"children":7184},{},[7185,7223],{"type":71,"tag":137,"props":7186,"children":7187},{},[7188,7193,7195,7201,7203,7208,7210,7216,7217,7222],{"type":71,"tag":436,"props":7189,"children":7190},{},[7191],{"type":76,"value":7192},"All vizzes in one scaffolded project share one extension.",{"type":76,"value":7194}," A JavaScript-scaffolded\nproject (",{"type":71,"tag":84,"props":7196,"children":7198},{"className":7197},[],[7199],{"type":76,"value":7200},"--entry=visualization.js",{"type":76,"value":7202},") builds only ",{"type":71,"tag":84,"props":7204,"children":7206},{"className":7205},[],[7207],{"type":76,"value":281},{"type":76,"value":7209}," files; a\nReact-scaffolded project (",{"type":71,"tag":84,"props":7211,"children":7213},{"className":7212},[],[7214],{"type":76,"value":7215},"--entry=visualization.jsx",{"type":76,"value":7202},{"type":71,"tag":84,"props":7218,"children":7220},{"className":7219},[],[7221],{"type":76,"value":290},{"type":76,"value":366},{"type":71,"tag":137,"props":7224,"children":7225},{},[7226,7231,7233,7238,7240,7245,7247,7253],{"type":71,"tag":436,"props":7227,"children":7228},{},[7229],{"type":76,"value":7230},"Mismatched files are silently skipped",{"type":76,"value":7232}," — the build warns and exits 0, so a viz can\nvanish from ",{"type":71,"tag":84,"props":7234,"children":7236},{"className":7235},[],[7237],{"type":76,"value":4627},{"type":76,"value":7239}," without an obvious error. If a viz doesn't appear in ",{"type":71,"tag":84,"props":7241,"children":7243},{"className":7242},[],[7244],{"type":76,"value":4627},{"type":76,"value":7246},", check\nthat its entry file matches the project's ",{"type":71,"tag":84,"props":7248,"children":7250},{"className":7249},[],[7251],{"type":76,"value":7252},"--entry",{"type":76,"value":7254}," extension.",{"type":71,"tag":417,"props":7256,"children":7258},{"id":7257},"adding-a-react-viz",[7259],{"type":76,"value":7260},"Adding a React viz",{"type":71,"tag":133,"props":7262,"children":7263},{},[7264,7282,7342],{"type":71,"tag":137,"props":7265,"children":7266},{},[7267,7272,7274,7280],{"type":71,"tag":436,"props":7268,"children":7269},{},[7270],{"type":76,"value":7271},"React-scaffolded project:",{"type":76,"value":7273}," just add ",{"type":71,"tag":84,"props":7275,"children":7277},{"className":7276},[],[7278],{"type":76,"value":7279},"visualizations\u002F\u003Cviz>\u002Fsrc\u002Fvisualization.jsx",{"type":76,"value":7281}," —\nit builds automatically.",{"type":71,"tag":137,"props":7283,"children":7284},{},[7285,7290,7292,7297,7299,7305,7307,7312,7314,7319,7321,7326,7328,7333,7335,7340],{"type":71,"tag":436,"props":7286,"children":7287},{},[7288],{"type":76,"value":7289},"JavaScript-scaffolded project, no JS vizzes worth keeping:",{"type":76,"value":7291}," the simplest path is to\nflip the whole project to ",{"type":71,"tag":84,"props":7293,"children":7295},{"className":7294},[],[7296],{"type":76,"value":7175},{"type":76,"value":7298},". Add React (",{"type":71,"tag":84,"props":7300,"children":7302},{"className":7301},[],[7303],{"type":76,"value":7304},"yarn add react react-dom",{"type":76,"value":7306},"), rename the\nexisting entry to ",{"type":71,"tag":84,"props":7308,"children":7310},{"className":7309},[],[7311],{"type":76,"value":290},{"type":76,"value":7313},", and change every ",{"type":71,"tag":84,"props":7315,"children":7317},{"className":7316},[],[7318],{"type":76,"value":7200},{"type":76,"value":7320}," to\n",{"type":71,"tag":84,"props":7322,"children":7324},{"className":7323},[],[7325],{"type":76,"value":7215},{"type":76,"value":7327}," in ",{"type":71,"tag":84,"props":7329,"children":7331},{"className":7330},[],[7332],{"type":76,"value":6917},{"type":76,"value":7334},". ",{"type":71,"tag":84,"props":7336,"children":7338},{"className":7337},[],[7339],{"type":76,"value":7159},{"type":76,"value":7341}," turns on by itself.",{"type":71,"tag":137,"props":7343,"children":7344},{},[7345,7364,7366,7371,7373,7378,7380,7385,7387,7392,7394,7399,7400,7705,7709,7711,7716,7718,7723,7725,7730],{"type":71,"tag":436,"props":7346,"children":7347},{},[7348,7350,7356,7357,7362],{"type":76,"value":7349},"You truly need both ",{"type":71,"tag":84,"props":7351,"children":7353},{"className":7352},[],[7354],{"type":76,"value":7355},".js",{"type":76,"value":1420},{"type":71,"tag":84,"props":7358,"children":7360},{"className":7359},[],[7361],{"type":76,"value":7175},{"type":76,"value":7363}," vizzes in one project:",{"type":76,"value":7365}," the scaffolded\nsingle-",{"type":71,"tag":84,"props":7367,"children":7369},{"className":7368},[],[7370],{"type":76,"value":7252},{"type":76,"value":7372}," build can't do this. Replace the entry lookup in ",{"type":71,"tag":84,"props":7374,"children":7376},{"className":7375},[],[7377],{"type":76,"value":6902},{"type":76,"value":7379}," with\nper-viz resolution (prefer ",{"type":71,"tag":84,"props":7381,"children":7383},{"className":7382},[],[7384],{"type":76,"value":7175},{"type":76,"value":7386},", fall back to ",{"type":71,"tag":84,"props":7388,"children":7390},{"className":7389},[],[7391],{"type":76,"value":7355},{"type":76,"value":7393},") and always set\n",{"type":71,"tag":84,"props":7395,"children":7397},{"className":7396},[],[7398],{"type":76,"value":7159},{"type":76,"value":1428},{"type":71,"tag":368,"props":7401,"children":7403},{"className":2035,"code":7402,"language":2037,"meta":376,"style":376},"const buildOptions = { jsx: 'automatic', \u002F* ... *\u002F };\n\nfunction resolveEntry(vizName) {\n    for (const name of ['visualization.jsx', 'visualization.js']) {\n        const p = join(visualizationsDir, vizName, 'src', name);\n        if (existsSync(p)) return p;\n    }\n    return null;\n}\n",[7404],{"type":71,"tag":84,"props":7405,"children":7406},{"__ignoreMap":376},[7407,7462,7469,7498,7565,7638,7680,7687,7698],{"type":71,"tag":772,"props":7408,"children":7409},{"class":774,"line":775},[7410,7414,7419,7423,7427,7432,7436,7440,7445,7449,7453,7458],{"type":71,"tag":772,"props":7411,"children":7412},{"style":1456},[7413],{"type":76,"value":2127},{"type":71,"tag":772,"props":7415,"children":7416},{"style":1107},[7417],{"type":76,"value":7418}," buildOptions ",{"type":71,"tag":772,"props":7420,"children":7421},{"style":1060},[7422],{"type":76,"value":2137},{"type":71,"tag":772,"props":7424,"children":7425},{"style":1060},[7426],{"type":76,"value":1885},{"type":71,"tag":772,"props":7428,"children":7429},{"style":2281},[7430],{"type":76,"value":7431}," jsx",{"type":71,"tag":772,"props":7433,"children":7434},{"style":1060},[7435],{"type":76,"value":1428},{"type":71,"tag":772,"props":7437,"children":7438},{"style":1060},[7439],{"type":76,"value":2074},{"type":71,"tag":772,"props":7441,"children":7442},{"style":1319},[7443],{"type":76,"value":7444},"automatic",{"type":71,"tag":772,"props":7446,"children":7447},{"style":1060},[7448],{"type":76,"value":2083},{"type":71,"tag":772,"props":7450,"children":7451},{"style":1060},[7452],{"type":76,"value":1912},{"type":71,"tag":772,"props":7454,"children":7455},{"style":2790},[7456],{"type":76,"value":7457}," \u002F* ... *\u002F",{"type":71,"tag":772,"props":7459,"children":7460},{"style":1060},[7461],{"type":76,"value":2388},{"type":71,"tag":772,"props":7463,"children":7464},{"class":774,"line":784},[7465],{"type":71,"tag":772,"props":7466,"children":7467},{"emptyLinePlaceholder":796},[7468],{"type":76,"value":799},{"type":71,"tag":772,"props":7470,"children":7471},{"class":774,"line":22},[7472,7476,7481,7485,7490,7494],{"type":71,"tag":772,"props":7473,"children":7474},{"style":1456},[7475],{"type":76,"value":2403},{"type":71,"tag":772,"props":7477,"children":7478},{"style":2149},[7479],{"type":76,"value":7480}," resolveEntry",{"type":71,"tag":772,"props":7482,"children":7483},{"style":1060},[7484],{"type":76,"value":2157},{"type":71,"tag":772,"props":7486,"children":7487},{"style":2970},[7488],{"type":76,"value":7489},"vizName",{"type":71,"tag":772,"props":7491,"children":7492},{"style":1060},[7493],{"type":76,"value":188},{"type":71,"tag":772,"props":7495,"children":7496},{"style":1060},[7497],{"type":76,"value":1620},{"type":71,"tag":772,"props":7499,"children":7500},{"class":774,"line":802},[7501,7506,7510,7514,7519,7524,7528,7532,7536,7540,7544,7548,7552,7556,7561],{"type":71,"tag":772,"props":7502,"children":7503},{"style":2047},[7504],{"type":76,"value":7505},"    for",{"type":71,"tag":772,"props":7507,"children":7508},{"style":2281},[7509],{"type":76,"value":2430},{"type":71,"tag":772,"props":7511,"children":7512},{"style":1456},[7513],{"type":76,"value":2127},{"type":71,"tag":772,"props":7515,"children":7516},{"style":1107},[7517],{"type":76,"value":7518}," name",{"type":71,"tag":772,"props":7520,"children":7521},{"style":1060},[7522],{"type":76,"value":7523}," of",{"type":71,"tag":772,"props":7525,"children":7526},{"style":2281},[7527],{"type":76,"value":1809},{"type":71,"tag":772,"props":7529,"children":7530},{"style":1060},[7531],{"type":76,"value":2083},{"type":71,"tag":772,"props":7533,"children":7534},{"style":1319},[7535],{"type":76,"value":290},{"type":71,"tag":772,"props":7537,"children":7538},{"style":1060},[7539],{"type":76,"value":2083},{"type":71,"tag":772,"props":7541,"children":7542},{"style":1060},[7543],{"type":76,"value":1912},{"type":71,"tag":772,"props":7545,"children":7546},{"style":1060},[7547],{"type":76,"value":2074},{"type":71,"tag":772,"props":7549,"children":7550},{"style":1319},[7551],{"type":76,"value":281},{"type":71,"tag":772,"props":7553,"children":7554},{"style":1060},[7555],{"type":76,"value":2083},{"type":71,"tag":772,"props":7557,"children":7558},{"style":2281},[7559],{"type":76,"value":7560},"]) ",{"type":71,"tag":772,"props":7562,"children":7563},{"style":1060},[7564],{"type":76,"value":1445},{"type":71,"tag":772,"props":7566,"children":7567},{"class":774,"line":811},[7568,7573,7578,7582,7587,7591,7596,7600,7605,7609,7613,7618,7622,7626,7630,7634],{"type":71,"tag":772,"props":7569,"children":7570},{"style":1456},[7571],{"type":76,"value":7572},"        const",{"type":71,"tag":772,"props":7574,"children":7575},{"style":1107},[7576],{"type":76,"value":7577}," p",{"type":71,"tag":772,"props":7579,"children":7580},{"style":1060},[7581],{"type":76,"value":2473},{"type":71,"tag":772,"props":7583,"children":7584},{"style":2149},[7585],{"type":76,"value":7586}," join",{"type":71,"tag":772,"props":7588,"children":7589},{"style":2281},[7590],{"type":76,"value":2157},{"type":71,"tag":772,"props":7592,"children":7593},{"style":1107},[7594],{"type":76,"value":7595},"visualizationsDir",{"type":71,"tag":772,"props":7597,"children":7598},{"style":1060},[7599],{"type":76,"value":1912},{"type":71,"tag":772,"props":7601,"children":7602},{"style":1107},[7603],{"type":76,"value":7604}," vizName",{"type":71,"tag":772,"props":7606,"children":7607},{"style":1060},[7608],{"type":76,"value":1912},{"type":71,"tag":772,"props":7610,"children":7611},{"style":1060},[7612],{"type":76,"value":2074},{"type":71,"tag":772,"props":7614,"children":7615},{"style":1319},[7616],{"type":76,"value":7617},"src",{"type":71,"tag":772,"props":7619,"children":7620},{"style":1060},[7621],{"type":76,"value":2083},{"type":71,"tag":772,"props":7623,"children":7624},{"style":1060},[7625],{"type":76,"value":1912},{"type":71,"tag":772,"props":7627,"children":7628},{"style":1107},[7629],{"type":76,"value":7518},{"type":71,"tag":772,"props":7631,"children":7632},{"style":2281},[7633],{"type":76,"value":188},{"type":71,"tag":772,"props":7635,"children":7636},{"style":1060},[7637],{"type":76,"value":2088},{"type":71,"tag":772,"props":7639,"children":7640},{"class":774,"line":820},[7641,7646,7650,7655,7659,7663,7668,7672,7676],{"type":71,"tag":772,"props":7642,"children":7643},{"style":2047},[7644],{"type":76,"value":7645},"        if",{"type":71,"tag":772,"props":7647,"children":7648},{"style":2281},[7649],{"type":76,"value":2430},{"type":71,"tag":772,"props":7651,"children":7652},{"style":2149},[7653],{"type":76,"value":7654},"existsSync",{"type":71,"tag":772,"props":7656,"children":7657},{"style":2281},[7658],{"type":76,"value":2157},{"type":71,"tag":772,"props":7660,"children":7661},{"style":1107},[7662],{"type":76,"value":78},{"type":71,"tag":772,"props":7664,"children":7665},{"style":2281},[7666],{"type":76,"value":7667},")) ",{"type":71,"tag":772,"props":7669,"children":7670},{"style":2047},[7671],{"type":76,"value":4046},{"type":71,"tag":772,"props":7673,"children":7674},{"style":1107},[7675],{"type":76,"value":7577},{"type":71,"tag":772,"props":7677,"children":7678},{"style":1060},[7679],{"type":76,"value":2088},{"type":71,"tag":772,"props":7681,"children":7682},{"class":774,"line":829},[7683],{"type":71,"tag":772,"props":7684,"children":7685},{"style":1060},[7686],{"type":76,"value":2777},{"type":71,"tag":772,"props":7688,"children":7689},{"class":774,"line":837},[7690,7694],{"type":71,"tag":772,"props":7691,"children":7692},{"style":2047},[7693],{"type":76,"value":4351},{"type":71,"tag":772,"props":7695,"children":7696},{"style":1060},[7697],{"type":76,"value":3073},{"type":71,"tag":772,"props":7699,"children":7700},{"class":774,"line":846},[7701],{"type":71,"tag":772,"props":7702,"children":7703},{"style":1060},[7704],{"type":76,"value":2002},{"type":71,"tag":7706,"props":7707,"children":7708},"br",{},[],{"type":76,"value":7710},"Then drop the ",{"type":71,"tag":84,"props":7712,"children":7714},{"className":7713},[],[7715],{"type":76,"value":7252},{"type":76,"value":7717}," flag from the ",{"type":71,"tag":84,"props":7719,"children":7721},{"className":7720},[],[7722],{"type":76,"value":6917},{"type":76,"value":7724}," scripts. (This is a local\nmodification, not what ",{"type":71,"tag":84,"props":7726,"children":7728},{"className":7727},[],[7729],{"type":76,"value":648},{"type":76,"value":7731}," produces.)",{"type":71,"tag":652,"props":7733,"children":7734},{},[7735],{"type":71,"tag":78,"props":7736,"children":7737},{},[7738,7751,7753,7758,7760,7766,7767,7773,7774,7780,7782,7786,7788,7794,7796,7801,7803,7808],{"type":71,"tag":436,"props":7739,"children":7740},{},[7741,7743,7749],{"type":76,"value":7742},"Avoid ",{"type":71,"tag":84,"props":7744,"children":7746},{"className":7745},[],[7747],{"type":76,"value":7748},"@splunk\u002Freact-ui",{"type":76,"value":7750}," in the entry file.",{"type":76,"value":7752}," The scaffolded React template's default\nviz imports ",{"type":71,"tag":84,"props":7754,"children":7756},{"className":7755},[],[7757],{"type":76,"value":7748},{"type":76,"value":7759}," components (",{"type":71,"tag":84,"props":7761,"children":7763},{"className":7762},[],[7764],{"type":76,"value":7765},"Table",{"type":76,"value":249},{"type":71,"tag":84,"props":7768,"children":7770},{"className":7769},[],[7771],{"type":76,"value":7772},"Paragraph",{"type":76,"value":249},{"type":71,"tag":84,"props":7775,"children":7777},{"className":7776},[],[7778],{"type":76,"value":7779},"WaitSpinner",{"type":76,"value":7781},"), but\nthose are pre-bundled CommonJS and their default exports do ",{"type":71,"tag":436,"props":7783,"children":7784},{},[7785],{"type":76,"value":6909},{"type":76,"value":7787}," survive the\nscaffold's esbuild ESM pipeline — the built viz throws ",{"type":71,"tag":84,"props":7789,"children":7791},{"className":7790},[],[7792],{"type":76,"value":7793},"Minified React error #130",{"type":76,"value":7795},"\n(got an object instead of a component) on load. Build your UI with plain elements (or\nyour own components). If you must use ",{"type":71,"tag":84,"props":7797,"children":7799},{"className":7798},[],[7800],{"type":76,"value":7748},{"type":76,"value":7802},", expect to add esbuild interop\nconfiguration to ",{"type":71,"tag":84,"props":7804,"children":7806},{"className":7805},[],[7807],{"type":76,"value":6902},{"type":76,"value":7809}," first.",{"type":71,"tag":123,"props":7811,"children":7812},{},[],{"type":71,"tag":106,"props":7814,"children":7816},{"id":7815},"migrating-a-legacy-custom-viz",[7817],{"type":76,"value":7818},"Migrating a legacy custom viz",{"type":71,"tag":78,"props":7820,"children":7821},{},[7822,7823,7829,7831,7836],{"type":76,"value":6874},{"type":71,"tag":84,"props":7824,"children":7826},{"className":7825},[],[7827],{"type":76,"value":7828},"references\u002Fmigration.md",{"type":76,"value":7830}," for a full mapping from ",{"type":71,"tag":84,"props":7832,"children":7834},{"className":7833},[],[7835],{"type":76,"value":4885},{"type":76,"value":7837}," to the new framework and step-by-step migration instructions.",{"type":71,"tag":123,"props":7839,"children":7840},{},[],{"type":71,"tag":106,"props":7842,"children":7844},{"id":7843},"troubleshooting",[7845],{"type":76,"value":7846},"Troubleshooting",{"type":71,"tag":78,"props":7848,"children":7849},{},[7850,7851,7857],{"type":76,"value":6874},{"type":71,"tag":84,"props":7852,"children":7854},{"className":7853},[],[7855],{"type":76,"value":7856},"references\u002Ftroubleshooting.md",{"type":76,"value":366},{"type":71,"tag":123,"props":7859,"children":7860},{},[],{"type":71,"tag":106,"props":7862,"children":7864},{"id":7863},"key-constraints",[7865],{"type":76,"value":7866},"Key Constraints",{"type":71,"tag":133,"props":7868,"children":7869},{},[7870,7894,7904,7923,7936,7941,7953,7964,7976],{"type":71,"tag":137,"props":7871,"children":7872},{},[7873,7878,7880,7885,7887,7892],{"type":71,"tag":84,"props":7874,"children":7876},{"className":7875},[],[7877],{"type":76,"value":525},{"type":76,"value":7879}," uses literal values ",{"type":71,"tag":436,"props":7881,"children":7882},{},[7883],{"type":76,"value":7884},"except",{"type":76,"value":7886}," ",{"type":71,"tag":84,"props":7888,"children":7890},{"className":7889},[],[7891],{"type":76,"value":1013},{"type":76,"value":7893}," — that template tag is intentional and the packager fills it in. Don't replace it with a literal.",{"type":71,"tag":137,"props":7895,"children":7896},{},[7897,7898,7903],{"type":76,"value":988},{"type":71,"tag":84,"props":7899,"children":7901},{"className":7900},[],[7902],{"type":76,"value":994},{"type":76,"value":996},{"type":71,"tag":137,"props":7905,"children":7906},{},[7907,7909,7914,7916,7921],{"type":76,"value":7908},"Viz slug: only ",{"type":71,"tag":84,"props":7910,"children":7912},{"className":7911},[],[7913],{"type":76,"value":472},{"type":76,"value":7915},". Reject values containing dots, slashes, or spaces. Confirm the resolved path is ",{"type":71,"tag":84,"props":7917,"children":7919},{"className":7918},[],[7920],{"type":76,"value":480},{"type":76,"value":7922}," with no traversal.",{"type":71,"tag":137,"props":7924,"children":7925},{},[7926,7928,7934],{"type":76,"value":7927},"CSS is injected into the iframe via the build plugin — no separate ",{"type":71,"tag":84,"props":7929,"children":7931},{"className":7930},[],[7932],{"type":76,"value":7933},"\u003Clink>",{"type":76,"value":7935}," tag needed",{"type":71,"tag":137,"props":7937,"children":7938},{},[7939],{"type":76,"value":7940},"Images, SVGs, and fonts are inlined as data URLs by the build — import them directly",{"type":71,"tag":137,"props":7942,"children":7943},{},[7944,7946,7951],{"type":76,"value":7945},"Do not load fonts or other assets from external URLs at runtime. Vendor them locally and import from ",{"type":71,"tag":84,"props":7947,"children":7949},{"className":7948},[],[7950],{"type":76,"value":356},{"type":76,"value":7952}," so the build inlines them as data URLs.",{"type":71,"tag":137,"props":7954,"children":7955},{},[7956,7962],{"type":71,"tag":84,"props":7957,"children":7959},{"className":7958},[],[7960],{"type":76,"value":7961},"setOptions",{"type":76,"value":7963}," is silently ignored in view mode — only works during edit mode",{"type":71,"tag":137,"props":7965,"children":7966},{},[7967,7969,7974],{"type":76,"value":7968},"Always provide option fallback values — ",{"type":71,"tag":84,"props":7970,"children":7972},{"className":7971},[],[7973],{"type":76,"value":1418},{"type":76,"value":7975}," defaults are not guaranteed at runtime",{"type":71,"tag":137,"props":7977,"children":7978},{},[7979,7981,7987],{"type":76,"value":7980},"The viz runs in a sandboxed iframe — ",{"type":71,"tag":84,"props":7982,"children":7984},{"className":7983},[],[7985],{"type":76,"value":7986},"window.parent",{"type":76,"value":7988}," is not accessible and CSS custom properties from the host page are not inherited",{"type":71,"tag":123,"props":7990,"children":7991},{},[],{"type":71,"tag":106,"props":7993,"children":7995},{"id":7994},"references",[7996],{"type":76,"value":7997},"References",{"type":71,"tag":133,"props":7999,"children":8000},{},[8001,8012,8042,8053,8063,8080],{"type":71,"tag":137,"props":8002,"children":8003},{},[8004,8010],{"type":71,"tag":84,"props":8005,"children":8007},{"className":8006},[],[8008],{"type":76,"value":8009},"references\u002Fapi-reference.md",{"type":76,"value":8011}," — full API listing for JavaScript and React",{"type":71,"tag":137,"props":8013,"children":8014},{},[8015,8020,8022,8027,8029,8034,8035,8040],{"type":71,"tag":84,"props":8016,"children":8018},{"className":8017},[],[8019],{"type":76,"value":1410},{"type":76,"value":8021}," — ",{"type":71,"tag":84,"props":8023,"children":8025},{"className":8024},[],[8026],{"type":76,"value":349},{"type":76,"value":8028}," field reference, ",{"type":71,"tag":84,"props":8030,"children":8032},{"className":8031},[],[8033],{"type":76,"value":1418},{"type":76,"value":249},{"type":71,"tag":84,"props":8036,"children":8038},{"className":8037},[],[8039],{"type":76,"value":1426},{"type":76,"value":8041}," editor types",{"type":71,"tag":137,"props":8043,"children":8044},{},[8045,8051],{"type":71,"tag":84,"props":8046,"children":8048},{"className":8047},[],[8049],{"type":76,"value":8050},"references\u002Fdrilldown-and-tokens.md",{"type":76,"value":8052}," — drilldown patterns and token read\u002Fwrite",{"type":71,"tag":137,"props":8054,"children":8055},{},[8056,8061],{"type":71,"tag":84,"props":8057,"children":8059},{"className":8058},[],[8060],{"type":76,"value":6880},{"type":76,"value":8062}," — canvas sizing, interactivity, and drilldown patterns",{"type":71,"tag":137,"props":8064,"children":8065},{},[8066,8071,8073,8078],{"type":71,"tag":84,"props":8067,"children":8069},{"className":8068},[],[8070],{"type":76,"value":7828},{"type":76,"value":8072}," — migrating from legacy ",{"type":71,"tag":84,"props":8074,"children":8076},{"className":8075},[],[8077],{"type":76,"value":4885},{"type":76,"value":8079}," vizzes",{"type":71,"tag":137,"props":8081,"children":8082},{},[8083,8088],{"type":71,"tag":84,"props":8084,"children":8086},{"className":8085},[],[8087],{"type":76,"value":7856},{"type":76,"value":8089}," — common errors and fixes",{"type":71,"tag":5563,"props":8091,"children":8092},{},[8093],{"type":76,"value":8094},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"items":8096,"total":22},[8097,8103,8119],{"slug":4,"name":4,"fn":5,"description":6,"org":8098,"tags":8099,"stars":22,"repoUrl":23,"updatedAt":24},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[8100,8101,8102],{"name":13,"slug":14,"type":15},{"name":20,"slug":21,"type":15},{"name":17,"slug":18,"type":15},{"slug":8104,"name":8104,"fn":8105,"description":8106,"org":8107,"tags":8108,"stars":22,"repoUrl":23,"updatedAt":8118},"splunk-dashboard-converter","convert Splunk Simple XML to Dashboard Studio","Convert classic Splunk Simple XML dashboards (version 1) into Dashboard Studio (version 2). Takes classic Simple XML as input, preserves every SPL query verbatim, and returns the Studio JSON definition to the caller. Use when the user asks to convert, migrate, upgrade, modernize, port, or make a v2 \u002F Dashboard Studio version of an existing classic Splunk dashboard, form, or Simple XML view.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[8109,8112,8115],{"name":8110,"slug":8111,"type":15},"Dashboards","dashboards",{"name":8113,"slug":8114,"type":15},"Migration","migration",{"name":8116,"slug":8117,"type":15},"XML","xml","2026-08-02T06:09:08.054477",{"slug":8120,"name":8120,"fn":8121,"description":8122,"org":8123,"tags":8124,"stars":22,"repoUrl":23,"updatedAt":8137},"splunk-search","run and inspect Splunk SPL searches","Run bounded Splunk SPL searches through the splsearch CLI, save large result sets as local SQLite tables, and inspect those saved tables with focused summaries, text search, ordered events, or bounded SQL.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[8125,8128,8131,8134],{"name":8126,"slug":8127,"type":15},"CLI","cli",{"name":8129,"slug":8130,"type":15},"Data Analysis","data-analysis",{"name":8132,"slug":8133,"type":15},"Search","search",{"name":8135,"slug":8136,"type":15},"SQLite","sqlite","2026-08-02T06:09:07.689795",{"items":8139,"total":22},[8140,8146,8152],{"slug":4,"name":4,"fn":5,"description":6,"org":8141,"tags":8142,"stars":22,"repoUrl":23,"updatedAt":24},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[8143,8144,8145],{"name":13,"slug":14,"type":15},{"name":20,"slug":21,"type":15},{"name":17,"slug":18,"type":15},{"slug":8104,"name":8104,"fn":8105,"description":8106,"org":8147,"tags":8148,"stars":22,"repoUrl":23,"updatedAt":8118},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[8149,8150,8151],{"name":8110,"slug":8111,"type":15},{"name":8113,"slug":8114,"type":15},{"name":8116,"slug":8117,"type":15},{"slug":8120,"name":8120,"fn":8121,"description":8122,"org":8153,"tags":8154,"stars":22,"repoUrl":23,"updatedAt":8137},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[8155,8156,8157,8158],{"name":8126,"slug":8127,"type":15},{"name":8129,"slug":8130,"type":15},{"name":8132,"slug":8133,"type":15},{"name":8135,"slug":8136,"type":15}]