@codingame/monaco-vscode-extensions-service-override
Version:
VSCode public API plugged on the monaco editor - extensions service-override
55 lines (52 loc) • 2.75 kB
JavaScript
import { __decorate, __param } from 'vscode/external/tslib/tslib.es6.js';
import { ExtHostContext, MainContext } from 'vscode/vscode/vs/workbench/api/common/extHost.protocol';
import { extHostNamedCustomer } from '../../services/extensions/common/extHostCustomers.js';
import { DisposableStore, toDisposable } from 'vscode/vscode/vs/base/common/lifecycle';
import { StatusBarUpdateKind, IExtensionStatusBarItemService } from 'vscode/vscode/vs/workbench/api/browser/statusBarService';
import { StatusbarAlignment } from 'vscode/vscode/vs/workbench/services/statusbar/browser/statusbar';
let MainThreadStatusBar = class MainThreadStatusBar {
constructor(extHostContext, statusbarService) {
this.statusbarService = statusbarService;
this._store = ( new DisposableStore());
const proxy = ( extHostContext.getProxy(ExtHostContext.ExtHostStatusBar));
const entries = [];
for (const [entryId, item] of statusbarService.getEntries()) {
entries.push(asDto(entryId, item));
}
proxy.$acceptStaticEntries(entries);
this._store.add(statusbarService.onDidChange(e => {
if (e.added) {
proxy.$acceptStaticEntries([asDto(e.added[0], e.added[1])]);
}
}));
function asDto(entryId, item) {
return {
entryId,
name: item.entry.name,
text: item.entry.text,
tooltip: item.entry.tooltip,
command: typeof item.entry.command === 'string' ? item.entry.command : typeof item.entry.command === 'object' ? item.entry.command.id : undefined,
priority: item.priority,
alignLeft: item.alignment === StatusbarAlignment.LEFT,
accessibilityInformation: item.entry.ariaLabel ? { label: item.entry.ariaLabel, role: item.entry.role } : undefined
};
}
}
dispose() {
this._store.dispose();
}
$setEntry(entryId, id, extensionId, name, text, tooltip, command, color, backgroundColor, alignLeft, priority, accessibilityInformation) {
const kind = this.statusbarService.setOrUpdateEntry(entryId, id, extensionId, name, text, tooltip, command, color, backgroundColor, alignLeft, priority, accessibilityInformation);
if (kind === StatusBarUpdateKind.DidDefine) {
this._store.add(toDisposable(() => this.statusbarService.unsetEntry(entryId)));
}
}
$disposeEntry(entryId) {
this.statusbarService.unsetEntry(entryId);
}
};
MainThreadStatusBar = __decorate([
extHostNamedCustomer(MainContext.MainThreadStatusBar),
( __param(1, IExtensionStatusBarItemService))
], MainThreadStatusBar);
export { MainThreadStatusBar };