@@ -8,8 +8,9 @@ import { LeetCodeNode } from "../explorer/LeetCodeNode";
88import { leetCodeChannel } from "../leetCodeChannel" ;
99import { leetCodeExecutor } from "../leetCodeExecutor" ;
1010import { leetCodeManager } from "../leetCodeManager" ;
11- import { IProblem , IQuickItemEx , languages , ProblemState } from "../shared" ;
11+ import { Command , IProblem , IQuickItemEx , IWebViewMessage , languages , ProblemState } from "../shared" ;
1212import { DialogOptions , DialogType , promptForOpenOutputChannel , promptForSignIn } from "../utils/uiUtils" ;
13+ import { renderHTML } from "../utils/webviewUtils" ;
1314import { selectWorkspaceFolder } from "../utils/workspaceUtils" ;
1415import * as wsl from "../utils/wslUtils" ;
1516import * as list from "./list" ;
@@ -135,3 +136,21 @@ async function resolveRelativePath(value: string, node: IProblem, selectedLangua
135136 throw new Error ( errorMsg ) ;
136137 }
137138}
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