@@ -8,8 +8,9 @@ import { LeetCodeNode } from "../explorer/LeetCodeNode";
8
8
import { leetCodeChannel } from "../leetCodeChannel" ;
9
9
import { leetCodeExecutor } from "../leetCodeExecutor" ;
10
10
import { leetCodeManager } from "../leetCodeManager" ;
11
- import { IProblem , IQuickItemEx , languages , ProblemState } from "../shared" ;
11
+ import { Command , IProblem , IQuickItemEx , IWebViewMessage , languages , ProblemState } from "../shared" ;
12
12
import { DialogOptions , DialogType , promptForOpenOutputChannel , promptForSignIn } from "../utils/uiUtils" ;
13
+ import { renderHTML } from "../utils/webviewUtils" ;
13
14
import { selectWorkspaceFolder } from "../utils/workspaceUtils" ;
14
15
import * as wsl from "../utils/wslUtils" ;
15
16
import * as list from "./list" ;
@@ -135,3 +136,21 @@ async function resolveRelativePath(value: string, node: IProblem, selectedLangua
135
136
throw new Error ( errorMsg ) ;
136
137
}
137
138
}
139
+
140
+ export async function previewProblem ( node : IProblem ) : Promise < void > {
141
+ const panelType : string = "previewProblem" ;
142
+ const panelTitle : string = node . name ;
143
+ const panel : vscode . WebviewPanel = vscode . window . createWebviewPanel ( panelType , panelTitle , vscode . ViewColumn . Active , {
144
+ enableScripts : true ,
145
+ enableCommandUris : true ,
146
+ } ) ;
147
+ panel . webview . onDidReceiveMessage ( async ( message : IWebViewMessage ) => {
148
+ switch ( message . command ) {
149
+ case Command . ShowProblem :
150
+ await showProblemInternal ( node ) ;
151
+ panel . dispose ( ) ;
152
+ return ;
153
+ }
154
+ } ) ;
155
+ panel . webview . html = await renderHTML ( node ) ;
156
+ }
0 commit comments