From ad1d5865ab4a600ee61e1f9f35d456cae9e97065 Mon Sep 17 00:00:00 2001 From: Oleh Omelchenko Date: Sun, 19 Jan 2025 01:43:21 +0200 Subject: [PATCH] refactor: pass snippetManager to PanelResizer and update visualization on resize --- src/PanelResizer.js | 10 +++++++++- src/SnippetManager.js | 4 +++- src/main.js | 2 +- 3 files changed, 13 insertions(+), 3 deletions(-) diff --git a/src/PanelResizer.js b/src/PanelResizer.js index 750177c..bc14bdc 100644 --- a/src/PanelResizer.js +++ b/src/PanelResizer.js @@ -1,5 +1,6 @@ export class PanelResizer { - constructor() { + constructor(snippetManager) { + this.snippetManager = snippetManager; this.handleDragStart = this.handleDragStart.bind(this); this.handleDrag = this.handleDrag.bind(this); this.handleDragEnd = this.handleDragEnd.bind(this); @@ -104,6 +105,13 @@ export class PanelResizer { if (window.editor) { window.editor.layout(); } + + // Update visualization after resize is complete + if (this.snippetManager && typeof this.snippetManager.updateVisualization === 'function') { + // Get the current editor value and update visualization + const editorValue = this.snippetManager.editor.getValue(); + this.snippetManager.updateVisualization(editorValue); + } } normalizePanelWidths() { diff --git a/src/SnippetManager.js b/src/SnippetManager.js index 7ada9df..70808cc 100644 --- a/src/SnippetManager.js +++ b/src/SnippetManager.js @@ -123,7 +123,7 @@ export class SnippetManager { } catch (e) { console.error('Invalid JSON:', e); } - }, 300); + }, 1000); }); // Load first snippet if available @@ -135,6 +135,8 @@ export class SnippetManager { async updateVisualization(spec) { try { const parsedSpec = typeof spec === 'string' ? JSON.parse(spec) : spec; + parsedSpec.width = parsedSpec.width? parsedSpec.width : 'container'; + parsedSpec.height = parsedSpec.height? parsedSpec.height : 'container'; await vegaEmbed('#vis', parsedSpec, { actions: true, // This adds the export/view source buttons theme: 'light' diff --git a/src/main.js b/src/main.js index a48bcce..f3eeb22 100644 --- a/src/main.js +++ b/src/main.js @@ -17,7 +17,7 @@ require(['vs/editor/editor.main'], async function () { formatOnType: true }); - const resizer = new PanelResizer(); + const resizer = new PanelResizer(snippetManager); window.editor = editor; snippetManager.setEditor(editor);