From 039358e0490413b10668e96b6be06d7c96d88bea Mon Sep 17 00:00:00 2001 From: _00_ <131402327+rgaricano@users.noreply.github.com> Date: Sat, 4 Oct 2025 06:41:07 +0200 Subject: [PATCH] FEAT: Add Vega-Lite Char Visualizer Renderer ### FEAT: Add Vega Char Visualizer Renderer Add suport for Vega-Lite Specifications. Vega-Lite is a "compiled" version of Vega Char Visualizer. For be rendered with Vega it have to be compiled. This PR add the check and compile if necessary, is a complement of recent Vega Renderer Feature added. --- package.json | 1 + src/lib/utils/index.ts | 9 ++++++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index 57aa011167..8e84dbddfa 100644 --- a/package.json +++ b/package.json @@ -138,6 +138,7 @@ "undici": "^7.3.0", "uuid": "^9.0.1", "vega": "^6.2.0", + "vega-lite": "^6.4.1", "vite-plugin-static-copy": "^2.2.0", "y-prosemirror": "^1.3.7", "yaml": "^2.7.1", diff --git a/src/lib/utils/index.ts b/src/lib/utils/index.ts index 51ec9e75cb..fb239e87b3 100644 --- a/src/lib/utils/index.ts +++ b/src/lib/utils/index.ts @@ -1601,7 +1601,14 @@ export const renderVegaVisualization = async (spec: string) => { try { const vega = await import('vega'); const parsedSpec = JSON.parse(spec); - const view = new vega.View(vega.parse(parsedSpec), { renderer: 'none' }); + let vegaSpec; + if (parsedSpec.$schema && parsedSpec.$schema.includes('vega-lite')) { + const vegaLite = await import('vega-lite'); + vegaSpec = vegaLite.compile(parsedSpec).spec; + } else { + vegaSpec = parsedSpec; + } + const view = new vega.View(vega.parse(vegaSpec), {renderer: 'none'}); const svg = await view.toSVG(); return svg; } catch (error) {