@21epub/epub-thirdparty
Version:
epub-thirdparty
184 lines (183 loc) • 5.84 kB
JavaScript
/*---------------------------------------------------------------------------------------------
* 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++) {
let e = events[i];
switch (e.type) {
case 0 /* ViewCompositionStart */:
if (this.onCompositionStart(e)) {
shouldRender = true;
}
break;
case 1 /* ViewCompositionEnd */:
if (this.onCompositionEnd(e)) {
shouldRender = true;
}
break;
case 2 /* ViewConfigurationChanged */:
if (this.onConfigurationChanged(e)) {
shouldRender = true;
}
break;
case 3 /* ViewCursorStateChanged */:
if (this.onCursorStateChanged(e)) {
shouldRender = true;
}
break;
case 4 /* ViewDecorationsChanged */:
if (this.onDecorationsChanged(e)) {
shouldRender = true;
}
break;
case 5 /* ViewFlushed */:
if (this.onFlushed(e)) {
shouldRender = true;
}
break;
case 6 /* ViewFocusChanged */:
if (this.onFocusChanged(e)) {
shouldRender = true;
}
break;
case 7 /* ViewLanguageConfigurationChanged */:
if (this.onLanguageConfigurationChanged(e)) {
shouldRender = true;
}
break;
case 8 /* ViewLineMappingChanged */:
if (this.onLineMappingChanged(e)) {
shouldRender = true;
}
break;
case 9 /* ViewLinesChanged */:
if (this.onLinesChanged(e)) {
shouldRender = true;
}
break;
case 10 /* ViewLinesDeleted */:
if (this.onLinesDeleted(e)) {
shouldRender = true;
}
break;
case 11 /* ViewLinesInserted */:
if (this.onLinesInserted(e)) {
shouldRender = true;
}
break;
case 12 /* ViewRevealRangeRequest */:
if (this.onRevealRangeRequest(e)) {
shouldRender = true;
}
break;
case 13 /* ViewScrollChanged */:
if (this.onScrollChanged(e)) {
shouldRender = true;
}
break;
case 15 /* ViewTokensChanged */:
if (this.onTokensChanged(e)) {
shouldRender = true;
}
break;
case 14 /* ViewThemeChanged */:
if (this.onThemeChanged(e)) {
shouldRender = true;
}
break;
case 16 /* ViewTokensColorsChanged */:
if (this.onTokensColorsChanged(e)) {
shouldRender = true;
}
break;
case 17 /* ViewZonesChanged */:
if (this.onZonesChanged(e)) {
shouldRender = true;
}
break;
default:
console.info('View received unknown event: ');
console.info(e);
}
}
if (shouldRender) {
this._shouldRender = true;
}
}
}