forked from LeetCode-OpenSource/vscode-leetcode
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathleetCodeResultProvider.ts
52 lines (42 loc) · 1.58 KB
/
leetCodeResultProvider.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
// Copyright (c) jdneo. All rights reserved.
// Licensed under the MIT license.
import { Disposable, ExtensionContext, ViewColumn, WebviewPanel, window } from "vscode";
class LeetCodeResultProvider implements Disposable {
private context: ExtensionContext;
private panel: WebviewPanel | undefined;
public initialize(context: ExtensionContext): void {
this.context = context;
}
public async show(result: string): Promise<void> {
if (!this.panel) {
this.panel = window.createWebviewPanel("leetCode", "LeetCode Results", ViewColumn.Two, {
retainContextWhenHidden: true,
enableFindWidget: true,
});
this.panel.onDidDispose(() => {
this.panel = undefined;
}, null, this.context.subscriptions);
}
this.panel.webview.html = await this.provideHtmlContent(result);
this.panel.reveal(ViewColumn.Two);
}
public dispose(): void {
if (this.panel) {
this.panel.dispose();
}
}
private async provideHtmlContent(result: string): Promise<string> {
return `<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>LeetCode Results</title>
</head>
<body>
<pre>${result.trim()}</pre>
</body>
</html>`;
}
}
export const leetCodeResultProvider: LeetCodeResultProvider = new LeetCodeResultProvider();