UNPKG

monaco-editor-core

Version:

A browser based code editor

184 lines (183 loc) 6.29 kB
/*--------------------------------------------------------------------------------------------- * Copyright (c) Microsoft Corporation. All rights reserved. * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ import { Disposable } from '../../base/common/lifecycle.js'; export class ViewEventHandler extends Disposable { constructor() { super(); this._shouldRender = true; } shouldRender() { return this._shouldRender; } forceShouldRender() { this._shouldRender = true; } setShouldRender() { this._shouldRender = true; } onDidRender() { this._shouldRender = false; } // --- begin event handlers onCompositionStart(e) { return false; } onCompositionEnd(e) { return false; } onConfigurationChanged(e) { return false; } onCursorStateChanged(e) { return false; } onDecorationsChanged(e) { return false; } onFlushed(e) { return false; } onFocusChanged(e) { return false; } onLanguageConfigurationChanged(e) { return false; } onLineMappingChanged(e) { return false; } onLinesChanged(e) { return false; } onLinesDeleted(e) { return false; } onLinesInserted(e) { return false; } onRevealRangeRequest(e) { return false; } onScrollChanged(e) { return false; } onThemeChanged(e) { return false; } onTokensChanged(e) { return false; } onTokensColorsChanged(e) { return false; } onZonesChanged(e) { return false; } // --- end event handlers handleEvents(events) { let shouldRender = false; for (let i = 0, len = events.length; i < len; i++) { const e = events[i]; switch (e.type) { case 0 /* viewEvents.ViewEventType.ViewCompositionStart */: if (this.onCompositionStart(e)) { shouldRender = true; } break; case 1 /* viewEvents.ViewEventType.ViewCompositionEnd */: if (this.onCompositionEnd(e)) { shouldRender = true; } break; case 2 /* viewEvents.ViewEventType.ViewConfigurationChanged */: if (this.onConfigurationChanged(e)) { shouldRender = true; } break; case 3 /* viewEvents.ViewEventType.ViewCursorStateChanged */: if (this.onCursorStateChanged(e)) { shouldRender = true; } break; case 4 /* viewEvents.ViewEventType.ViewDecorationsChanged */: if (this.onDecorationsChanged(e)) { shouldRender = true; } break; case 5 /* viewEvents.ViewEventType.ViewFlushed */: if (this.onFlushed(e)) { shouldRender = true; } break; case 6 /* viewEvents.ViewEventType.ViewFocusChanged */: if (this.onFocusChanged(e)) { shouldRender = true; } break; case 7 /* viewEvents.ViewEventType.ViewLanguageConfigurationChanged */: if (this.onLanguageConfigurationChanged(e)) { shouldRender = true; } break; case 8 /* viewEvents.ViewEventType.ViewLineMappingChanged */: if (this.onLineMappingChanged(e)) { shouldRender = true; } break; case 9 /* viewEvents.ViewEventType.ViewLinesChanged */: if (this.onLinesChanged(e)) { shouldRender = true; } break; case 10 /* viewEvents.ViewEventType.ViewLinesDeleted */: if (this.onLinesDeleted(e)) { shouldRender = true; } break; case 11 /* viewEvents.ViewEventType.ViewLinesInserted */: if (this.onLinesInserted(e)) { shouldRender = true; } break; case 12 /* viewEvents.ViewEventType.ViewRevealRangeRequest */: if (this.onRevealRangeRequest(e)) { shouldRender = true; } break; case 13 /* viewEvents.ViewEventType.ViewScrollChanged */: if (this.onScrollChanged(e)) { shouldRender = true; } break; case 15 /* viewEvents.ViewEventType.ViewTokensChanged */: if (this.onTokensChanged(e)) { shouldRender = true; } break; case 14 /* viewEvents.ViewEventType.ViewThemeChanged */: if (this.onThemeChanged(e)) { shouldRender = true; } break; case 16 /* viewEvents.ViewEventType.ViewTokensColorsChanged */: if (this.onTokensColorsChanged(e)) { shouldRender = true; } break; case 17 /* viewEvents.ViewEventType.ViewZonesChanged */: if (this.onZonesChanged(e)) { shouldRender = true; } break; default: console.info('View received unknown event: '); console.info(e); } } if (shouldRender) { this._shouldRender = true; } } }