// 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 { 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 { return ` LeetCode Results
${result.trim()}
`; } } export const leetCodeResultProvider: LeetCodeResultProvider = new LeetCodeResultProvider();