@@ -22,24 +22,24 @@ export async function showPanel(
22
22
language = LANGUAGES . SOURCE_1 ;
23
23
}
24
24
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
+ ) ;
37
36
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
+ }
43
43
44
44
const iframeUrl = new URL ( route ?? "/playground" , config . frontendBaseUrl )
45
45
. href ;
0 commit comments