UNPKG

@codingame/monaco-vscode-extensions-service-override

Version:

VSCode public API plugged on the monaco editor - extensions service-override

46 lines (42 loc) 2.25 kB
import { __decorate, __param } from '@codingame/monaco-vscode-api/external/tslib/tslib.es6'; import { VSBuffer } from '@codingame/monaco-vscode-api/vscode/vs/base/common/buffer'; import { Disposable } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle'; import { URI } from '@codingame/monaco-vscode-api/vscode/vs/base/common/uri'; import { IChatOutputRendererService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/browser/chatOutputItemRenderer.service'; import { ExtHostContext } from '@codingame/monaco-vscode-api/vscode/vs/workbench/api/common/extHost.protocol'; let MainThreadChatOutputRenderer = class MainThreadChatOutputRenderer extends Disposable { constructor(extHostContext, _mainThreadWebview, _rendererService) { super(); this._mainThreadWebview = _mainThreadWebview; this._rendererService = _rendererService; this._webviewHandlePool = 0; this.registeredRenderers = ( new Map()); this._proxy = ( extHostContext.getProxy(ExtHostContext.ExtHostChatOutputRenderer)); } dispose() { super.dispose(); this.registeredRenderers.forEach(disposable => disposable.dispose()); this.registeredRenderers.clear(); } $registerChatOutputRenderer(viewType, extensionId, extensionLocation) { this._rendererService.registerRenderer(viewType, { renderOutputPart: async (mime, data, webview, token) => { const webviewHandle = `chat-output-${++this._webviewHandlePool}`; this._mainThreadWebview.addWebview(webviewHandle, webview, { serializeBuffersForPostMessage: true }); return this._proxy.$renderChatOutput(viewType, mime, VSBuffer.wrap(data), webviewHandle, token); } }, { extension: { id: extensionId, location: URI.revive(extensionLocation) } }); } $unregisterChatOutputRenderer(viewType) { this.registeredRenderers.get(viewType)?.dispose(); } }; MainThreadChatOutputRenderer = ( __decorate([( __param(2, IChatOutputRendererService))], MainThreadChatOutputRenderer)); export { MainThreadChatOutputRenderer };