diff --git a/src/browser/CoreBrowserTerminal.ts b/src/browser/CoreBrowserTerminal.ts index a75bd5165..72f38c9d0 100644 --- a/src/browser/CoreBrowserTerminal.ts +++ b/src/browser/CoreBrowserTerminal.ts @@ -37,7 +37,7 @@ import { CharacterJoinerService } from 'browser/services/CharacterJoinerService' import { CoreBrowserService } from 'browser/services/CoreBrowserService'; import { LinkProviderService } from 'browser/services/LinkProviderService'; import { MouseCoordsService } from 'browser/services/MouseCoordsService'; -import { MouseService } from 'browser/services/MouseService'; +import { MouseEventCssClasses, MouseService } from 'browser/services/MouseService'; import { RenderService } from 'browser/services/RenderService'; import { SelectionService } from 'browser/services/SelectionService'; import { ICharSizeService, ICharacterJoinerService, ICoreBrowserService, IKeyboardService, ILinkProviderService, IMouseCoordsService, IMouseService, IRenderService, ISelectionService, IThemeService } from 'browser/services/Services'; @@ -620,10 +620,10 @@ export class CoreBrowserTerminal extends CoreTerminal implements ITerminal { // apply mouse event classes set by escape codes before terminal was attached if (this.mouseStateService.areMouseEventsActive && !this.options.mouseEventsRequireAlt) { this._selectionService.disable(); - this.element.classList.add('enable-mouse-events'); + this.element.classList.add(MouseEventCssClasses.ENABLE_MOUSE_EVENTS); } else { this._selectionService.enable(); - this.element.classList.remove('enable-mouse-events'); + this.element.classList.remove(MouseEventCssClasses.ENABLE_MOUSE_EVENTS); } if (this.options.screenReaderMode) { diff --git a/src/browser/services/MouseService.test.ts b/src/browser/services/MouseService.test.ts index df3983572..d7aa7308f 100644 --- a/src/browser/services/MouseService.test.ts +++ b/src/browser/services/MouseService.test.ts @@ -3,7 +3,7 @@ * @license MIT */ import { assert } from 'chai'; -import { AltMouseCursorController, MouseService } from 'browser/services/MouseService'; +import { AltMouseCursorController, MouseEventCssClasses, MouseService } from 'browser/services/MouseService'; import { MouseStateService } from 'common/services/MouseStateService'; import { CoreMouseAction, CoreMouseButton } from 'common/Types'; import { IBufferService, ICoreService, ILogService, IOptionsService } from 'common/services/Services'; @@ -279,15 +279,15 @@ describe('MouseService mouseEventsRequireAlt', () => { }, disposable => disposable, () => {}); mouseStateService.activeProtocol = 'ANY'; - assert.isTrue(element.classList.contains('enable-mouse-events')); + assert.isTrue(element.classList.contains(MouseEventCssClasses.ENABLE_MOUSE_EVENTS)); assert.equal(selectionService.disableCount, 1); optionsService.options.mouseEventsRequireAlt = true; - assert.isFalse(element.classList.contains('enable-mouse-events')); + assert.isFalse(element.classList.contains(MouseEventCssClasses.ENABLE_MOUSE_EVENTS)); assert.equal(selectionService.enableCount, 2); optionsService.options.mouseEventsRequireAlt = false; - assert.isTrue(element.classList.contains('enable-mouse-events')); + assert.isTrue(element.classList.contains(MouseEventCssClasses.ENABLE_MOUSE_EVENTS)); assert.equal(selectionService.disableCount, 2); }); @@ -344,10 +344,10 @@ describe('MouseService mouseEventsRequireAlt', () => { getModifierState: (key: string) => key === 'Alt' && altHeld } as KeyboardEvent); - assert.isFalse(element.classList.contains('enable-mouse-events')); + assert.isFalse(element.classList.contains(MouseEventCssClasses.ENABLE_MOUSE_EVENTS)); sync(true); - assert.isTrue(element.classList.contains('enable-mouse-events')); + assert.isTrue(element.classList.contains(MouseEventCssClasses.ENABLE_MOUSE_EVENTS)); sync(false); - assert.isFalse(element.classList.contains('enable-mouse-events')); + assert.isFalse(element.classList.contains(MouseEventCssClasses.ENABLE_MOUSE_EVENTS)); }); }); diff --git a/src/browser/services/MouseService.ts b/src/browser/services/MouseService.ts index 64fe75ffe..164b6de9d 100644 --- a/src/browser/services/MouseService.ts +++ b/src/browser/services/MouseService.ts @@ -13,6 +13,10 @@ import { Gesture, EventType as GestureEventType, IGestureEvent } from 'browser/s type RequestedMouseEvents = Record<'mouseup' | 'wheel' | 'mousedrag' | 'mousemove', EventListener | null>; +export const enum MouseEventCssClasses { + ENABLE_MOUSE_EVENTS = 'enable-mouse-events' +} + interface IMouseBindContext { readonly target: IMouseServiceTarget; readonly focus: () => void; @@ -384,11 +388,11 @@ export class MouseService implements IMouseService { this._altMouseCursor?.resetClass(); this._selectionService.enable(); } else { - element.classList.add('enable-mouse-events'); + element.classList.add(MouseEventCssClasses.ENABLE_MOUSE_EVENTS); this._selectionService.disable(); } } else { - element.classList.remove('enable-mouse-events'); + element.classList.remove(MouseEventCssClasses.ENABLE_MOUSE_EVENTS); this._selectionService.enable(); } } @@ -577,7 +581,7 @@ export class MouseService implements IMouseService { } /** - * Toggles `enable-mouse-events` on the terminal element while alt is held when + * Toggles MouseEventCssClasses.ENABLE_MOUSE_EVENTS on the terminal element while alt is held when * `mouseEventsRequireAlt` is active. DOM listeners are only registered while active. */ export class AltMouseCursorController implements IDisposable { @@ -630,9 +634,9 @@ export class AltMouseCursorController implements IDisposable { private _updateClass(altHeld: boolean): void { if (altHeld) { - this._element.classList.add('enable-mouse-events'); + this._element.classList.add(MouseEventCssClasses.ENABLE_MOUSE_EVENTS); } else { - this._element.classList.remove('enable-mouse-events'); + this._element.classList.remove(MouseEventCssClasses.ENABLE_MOUSE_EVENTS); } } }