UNPKG

@21epub/epub-thirdparty

Version:
80 lines (79 loc) 3.02 kB
/*--------------------------------------------------------------------------------------------- * Copyright (c) Microsoft Corporation. All rights reserved. * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ import { Emitter } from '../../../base/common/event.js'; import { Disposable } from '../../../base/common/lifecycle.js'; export class AbstractCodeEditorService extends Disposable { constructor() { super(); this._onCodeEditorAdd = this._register(new Emitter()); this.onCodeEditorAdd = this._onCodeEditorAdd.event; this._onCodeEditorRemove = this._register(new Emitter()); this.onCodeEditorRemove = this._onCodeEditorRemove.event; this._onDiffEditorAdd = this._register(new Emitter()); this._onDiffEditorRemove = this._register(new Emitter()); this._onDecorationTypeRegistered = this._register(new Emitter()); this._modelProperties = new Map(); this._codeEditors = Object.create(null); this._diffEditors = Object.create(null); } addCodeEditor(editor) { this._codeEditors[editor.getId()] = editor; this._onCodeEditorAdd.fire(editor); } removeCodeEditor(editor) { if (delete this._codeEditors[editor.getId()]) { this._onCodeEditorRemove.fire(editor); } } listCodeEditors() { return Object.keys(this._codeEditors).map(id => this._codeEditors[id]); } addDiffEditor(editor) { this._diffEditors[editor.getId()] = editor; this._onDiffEditorAdd.fire(editor); } removeDiffEditor(editor) { if (delete this._diffEditors[editor.getId()]) { this._onDiffEditorRemove.fire(editor); } } listDiffEditors() { return Object.keys(this._diffEditors).map(id => this._diffEditors[id]); } getFocusedCodeEditor() { let editorWithWidgetFocus = null; const editors = this.listCodeEditors(); for (const editor of editors) { if (editor.hasTextFocus()) { // bingo! return editor; } if (editor.hasWidgetFocus()) { editorWithWidgetFocus = editor; } } return editorWithWidgetFocus; } setModelProperty(resource, key, value) { const key1 = resource.toString(); let dest; if (this._modelProperties.has(key1)) { dest = this._modelProperties.get(key1); } else { dest = new Map(); this._modelProperties.set(key1, dest); } dest.set(key, value); } getModelProperty(resource, key) { const key1 = resource.toString(); if (this._modelProperties.has(key1)) { const innerMap = this._modelProperties.get(key1); return innerMap.get(key); } return undefined; } }