UNPKG

monaco-editor

Version:
122 lines (121 loc) 5.83 kB
/*--------------------------------------------------------------------------------------------- * Copyright (c) Microsoft Corporation. All rights reserved. * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ var __extends = (this && this.__extends) || (function () { var extendStatics = function (d, b) { extendStatics = Object.setPrototypeOf || ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; return extendStatics(d, b); } return function (d, b) { extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; })(); import './overlayWidgets.css'; import { createFastDomNode } from '../../../../base/browser/fastDomNode.js'; import { PartFingerprints, ViewPart } from '../../view/viewPart.js'; var ViewOverlayWidgets = /** @class */ (function (_super) { __extends(ViewOverlayWidgets, _super); function ViewOverlayWidgets(context) { var _this = _super.call(this, context) || this; _this._widgets = {}; _this._verticalScrollbarWidth = _this._context.configuration.editor.layoutInfo.verticalScrollbarWidth; _this._minimapWidth = _this._context.configuration.editor.layoutInfo.minimapWidth; _this._horizontalScrollbarHeight = _this._context.configuration.editor.layoutInfo.horizontalScrollbarHeight; _this._editorHeight = _this._context.configuration.editor.layoutInfo.height; _this._editorWidth = _this._context.configuration.editor.layoutInfo.width; _this._domNode = createFastDomNode(document.createElement('div')); PartFingerprints.write(_this._domNode, 4 /* OverlayWidgets */); _this._domNode.setClassName('overlayWidgets'); return _this; } ViewOverlayWidgets.prototype.dispose = function () { _super.prototype.dispose.call(this); this._widgets = {}; }; ViewOverlayWidgets.prototype.getDomNode = function () { return this._domNode; }; // ---- begin view event handlers ViewOverlayWidgets.prototype.onConfigurationChanged = function (e) { if (e.layoutInfo) { this._verticalScrollbarWidth = this._context.configuration.editor.layoutInfo.verticalScrollbarWidth; this._minimapWidth = this._context.configuration.editor.layoutInfo.minimapWidth; this._horizontalScrollbarHeight = this._context.configuration.editor.layoutInfo.horizontalScrollbarHeight; this._editorHeight = this._context.configuration.editor.layoutInfo.height; this._editorWidth = this._context.configuration.editor.layoutInfo.width; return true; } return false; }; // ---- end view event handlers ViewOverlayWidgets.prototype.addWidget = function (widget) { var domNode = createFastDomNode(widget.getDomNode()); this._widgets[widget.getId()] = { widget: widget, preference: null, domNode: domNode }; // This is sync because a widget wants to be in the dom domNode.setPosition('absolute'); domNode.setAttribute('widgetId', widget.getId()); this._domNode.appendChild(domNode); this.setShouldRender(); }; ViewOverlayWidgets.prototype.setWidgetPosition = function (widget, preference) { var widgetData = this._widgets[widget.getId()]; if (widgetData.preference === preference) { return false; } widgetData.preference = preference; this.setShouldRender(); return true; }; ViewOverlayWidgets.prototype.removeWidget = function (widget) { var widgetId = widget.getId(); if (this._widgets.hasOwnProperty(widgetId)) { var widgetData = this._widgets[widgetId]; var domNode = widgetData.domNode.domNode; delete this._widgets[widgetId]; domNode.parentNode.removeChild(domNode); this.setShouldRender(); } }; ViewOverlayWidgets.prototype._renderWidget = function (widgetData) { var domNode = widgetData.domNode; if (widgetData.preference === null) { domNode.unsetTop(); return; } if (widgetData.preference === 0 /* TOP_RIGHT_CORNER */) { domNode.setTop(0); domNode.setRight((2 * this._verticalScrollbarWidth) + this._minimapWidth); } else if (widgetData.preference === 1 /* BOTTOM_RIGHT_CORNER */) { var widgetHeight = domNode.domNode.clientHeight; domNode.setTop((this._editorHeight - widgetHeight - 2 * this._horizontalScrollbarHeight)); domNode.setRight((2 * this._verticalScrollbarWidth) + this._minimapWidth); } else if (widgetData.preference === 2 /* TOP_CENTER */) { domNode.setTop(0); domNode.domNode.style.right = '50%'; } }; ViewOverlayWidgets.prototype.prepareRender = function (ctx) { // Nothing to read }; ViewOverlayWidgets.prototype.render = function (ctx) { this._domNode.setWidth(this._editorWidth); var keys = Object.keys(this._widgets); for (var i = 0, len = keys.length; i < len; i++) { var widgetId = keys[i]; this._renderWidget(this._widgets[widgetId]); } }; return ViewOverlayWidgets; }(ViewPart)); export { ViewOverlayWidgets };