UNPKG

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