@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
JavaScript
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 };