UNPKG

monaco-editor-core

Version:

A browser based code editor

73 lines (72 loc) 3.8 kB
/*--------------------------------------------------------------------------------------------- * Copyright (c) Microsoft Corporation. All rights reserved. * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; var __param = (this && this.__param) || function (paramIndex, decorator) { return function (target, key) { decorator(target, key, paramIndex); } }; import * as dom from '../../../../base/browser/dom.js'; import { ActionBar } from '../../../../base/browser/ui/actionbar/actionbar.js'; import { DisposableStore } from '../../../../base/common/lifecycle.js'; import { TextOnlyMenuEntryActionViewItem } from '../../../../platform/actions/browser/menuEntryActionViewItem.js'; import { IMenuService, MenuItemAction } from '../../../../platform/actions/common/actions.js'; import { IContextKeyService } from '../../../../platform/contextkey/common/contextkey.js'; import { IInstantiationService } from '../../../../platform/instantiation/common/instantiation.js'; let SuggestWidgetStatus = class SuggestWidgetStatus { constructor(container, _menuId, instantiationService, _menuService, _contextKeyService) { this._menuId = _menuId; this._menuService = _menuService; this._contextKeyService = _contextKeyService; this._menuDisposables = new DisposableStore(); this.element = dom.append(container, dom.$('.suggest-status-bar')); const actionViewItemProvider = (action => { return action instanceof MenuItemAction ? instantiationService.createInstance(TextOnlyMenuEntryActionViewItem, action, { useComma: true }) : undefined; }); this._leftActions = new ActionBar(this.element, { actionViewItemProvider }); this._rightActions = new ActionBar(this.element, { actionViewItemProvider }); this._leftActions.domNode.classList.add('left'); this._rightActions.domNode.classList.add('right'); } dispose() { this._menuDisposables.dispose(); this._leftActions.dispose(); this._rightActions.dispose(); this.element.remove(); } show() { const menu = this._menuService.createMenu(this._menuId, this._contextKeyService); const renderMenu = () => { const left = []; const right = []; for (const [group, actions] of menu.getActions()) { if (group === 'left') { left.push(...actions); } else { right.push(...actions); } } this._leftActions.clear(); this._leftActions.push(left); this._rightActions.clear(); this._rightActions.push(right); }; this._menuDisposables.add(menu.onDidChange(() => renderMenu())); this._menuDisposables.add(menu); } hide() { this._menuDisposables.clear(); } }; SuggestWidgetStatus = __decorate([ __param(2, IInstantiationService), __param(3, IMenuService), __param(4, IContextKeyService) ], SuggestWidgetStatus); export { SuggestWidgetStatus };