@@ -22,24 +22,24 @@ export async function showPanel(
2222 language = LANGUAGES . SOURCE_1 ;
2323 }
2424
25- // Get a reference to the active editor (before the focus is switched to our newly created webview)
26- // firstEditor = vscode.window.activeTextEditor!;
27-
28- messageHandler . panel = vscode . window . createWebviewPanel (
29- "source-academy-panel" ,
30- "Source Academy" ,
31- vscode . ViewColumn . Beside ,
32- {
33- enableScripts : true , // Enable scripts in the webview
34- retainContextWhenHidden : true ,
35- } ,
36- ) ;
25+ // Don't recreate the panel it already exists. There will only be one panel at anytime.
26+ if ( ! messageHandler . panel ) {
27+ messageHandler . panel = vscode . window . createWebviewPanel (
28+ "source-academy-panel" ,
29+ "Source Academy" ,
30+ vscode . ViewColumn . Beside ,
31+ {
32+ enableScripts : true , // Enable scripts in w the webview
33+ retainContextWhenHidden : true ,
34+ } ,
35+ ) ;
3736
38- messageHandler . panel . webview . onDidReceiveMessage (
39- ( message : MessageType ) => messageHandler . handleMessage ( context , message ) ,
40- undefined ,
41- context . subscriptions ,
42- ) ;
37+ messageHandler . panel . webview . onDidReceiveMessage (
38+ ( message : MessageType ) => messageHandler . handleMessage ( context , message ) ,
39+ undefined ,
40+ context . subscriptions ,
41+ ) ;
42+ }
4343
4444 const iframeUrl = new URL ( route ?? "/playground" , config . frontendBaseUrl )
4545 . href ;
0 commit comments