remove AccessibleBuffer (#4427)

* remove AccessibleBuffer

* rm more

* Update src/browser/Terminal.ts

* rm css
This commit is contained in:
Megan Rogge
2023-03-02 14:51:32 -06:00
committed by GitHub
parent 9154831afa
commit 4037b943b9
7 changed files with 0 additions and 158 deletions
-23
View File
@@ -151,29 +151,6 @@
color: transparent;
}
.xterm .xterm-accessible-buffer div {
white-space: pre-wrap;
}
.xterm .xterm-accessible-buffer {
position: absolute;
left: 0;
top: 0;
bottom: 0;
right: 0;
padding: .5em;
background: #000;
color: #fff;
opacity: 0;
overflow: scroll;
overflow-x: hidden;
}
.xterm .xterm-accessible-buffer:focus-within {
opacity: 1;
z-index: 20;
}
.xterm .live-region {
position: absolute;
left: -9999px;
-101
View File
@@ -1,101 +0,0 @@
/**
* Copyright (c) 2017 The xterm.js authors. All rights reserved.
* @license MIT
*/
import * as Strings from 'browser/LocalizableStrings';
import { IBufferElementProvider, ITerminal, ReadonlyColorSet } from 'browser/Types';
import { addDisposableDomListener } from 'browser/Lifecycle';
import { Disposable, toDisposable } from 'common/Lifecycle';
import { IRenderService, IThemeService } from 'browser/services/Services';
import { IOptionsService } from 'common/services/Services';
import { ITerminalOptions } from 'xterm';
import { IDisposable } from 'common/Types';
export class AccessibleBuffer extends Disposable {
private _element: HTMLElement;
private _isAccessibleBufferActive: boolean = false;
public get isAccessibleBufferActive(): boolean { return this._isAccessibleBufferActive; }
private _provider: IBufferElementProvider | undefined;
constructor(
private readonly _terminal: ITerminal,
@IOptionsService optionsService: IOptionsService,
@IRenderService private readonly _renderService: IRenderService,
@IThemeService themeService: IThemeService
) {
super();
if (!this._terminal.element) {
throw new Error('Cannot enable accessible buffer before Terminal.open');
}
this._element = document.createElement('div');
this._element.setAttribute('role', 'document');
this._element.ariaRoleDescription = Strings.accessibleBuffer;
this._element.tabIndex = 0;
this._element.classList.add('xterm-accessible-buffer');
this._terminal.element.insertAdjacentElement('afterbegin', this._element);
this.register(addDisposableDomListener(this._element, 'keydown', (ev: KeyboardEvent) => {
if (ev.key === 'Tab') {
this._isAccessibleBufferActive = false;
}
}
));
this.register(addDisposableDomListener(this._element, 'focus', () => this._refreshAccessibleBuffer()));
this.register(addDisposableDomListener(this._element, 'focusout', (e) => {
if (!this._element.contains(e.srcElement)) {
this._isAccessibleBufferActive = false;
}
}));
this._handleColorChange(themeService.colors);
this.register(themeService.onChangeColors(e => this._handleColorChange(e)));
this._handleFontOptionChange(optionsService.options);
this.register(optionsService.onMultipleOptionChange(['fontSize', 'fontFamily', 'letterSpacing', 'lineHeight'], () => this._handleFontOptionChange(optionsService.options)));
this.register(toDisposable(() => this._element.remove()));
}
public registerBufferElementProvider(bufferProvider: IBufferElementProvider): IDisposable {
if (this._provider) {
throw new Error('Buffer element provider already registered');
}
this._provider = bufferProvider;
return {
dispose: () => {
this._provider = undefined;
}
};
}
private _refreshAccessibleBuffer(): void {
if (!this._terminal.viewport) {
return;
}
this._isAccessibleBufferActive = true;
this._element.scrollTop = this._element.scrollHeight;
const bufferElements = this._provider?.provideBufferElements();
if (!bufferElements) {
const { bufferElements } = this._terminal.viewport.getBufferElements(0);
for (const element of bufferElements) {
if (element.textContent) {
element.textContent = element.textContent.replace(new RegExp(' ', 'g'), '\xA0');
}
}
this._element.replaceChildren(...bufferElements);
} else {
this._element.replaceChildren(bufferElements);
}
}
private _handleColorChange(colorSet: ReadonlyColorSet): void {
this._element.style.backgroundColor = colorSet.background.css;
this._element.style.color = colorSet.foreground.css;
}
private _handleFontOptionChange(options: Required<ITerminalOptions>): void {
this._element.style.fontFamily = options.fontFamily;
this._element.style.fontSize = `${options.fontSize}px`;
this._element.style.lineHeight = `${options.lineHeight * (this._renderService.dimensions.css.cell.height)}px`;
this._element.style.letterSpacing = `${options.letterSpacing}px`;
}
}
-3
View File
@@ -10,6 +10,3 @@ export let promptLabel = 'Terminal input';
// eslint-disable-next-line prefer-const
export let tooMuchOutput = 'Too much output to announce, navigate to rows manually to read';
// eslint-disable-next-line prefer-const
export let accessibleBuffer = 'Accessibility buffer';
-14
View File
@@ -33,7 +33,6 @@ import * as Browser from 'common/Platform';
import { addDisposableDomListener } from 'browser/Lifecycle';
import * as Strings from 'browser/LocalizableStrings';
import { AccessibilityManager } from './AccessibilityManager';
import { AccessibleBuffer } from './AccessibleBuffer';
import { ITheme, IMarker, IDisposable, ILinkProvider, IDecorationOptions, IDecoration } from 'xterm';
import { DomRenderer } from 'browser/renderer/dom/DomRenderer';
import { KeyboardResultType, CoreMouseEventType, CoreMouseButton, CoreMouseAction, ITerminalOptions, ScrollSource, IColorEvent, ColorIndex, ColorRequestType } from 'common/Types';
@@ -72,7 +71,6 @@ export class Terminal extends CoreTerminal implements ITerminal {
private _viewportElement: HTMLElement | undefined;
private _helperContainer: HTMLElement | undefined;
private _compositionView: HTMLElement | undefined;
private _accessibleBuffer: AccessibleBuffer | undefined;
private _overviewRulerRenderer: OverviewRulerRenderer | undefined;
@@ -193,13 +191,6 @@ export class Terminal extends CoreTerminal implements ITerminal {
}));
}
public registerBufferElementProvider(bufferProvider: IBufferElementProvider): IDisposable {
if (!this._accessibleBuffer) {
throw new Error ('Cannot register buffer element provider when terminal has not been opened yet');
}
return this._accessibleBuffer.registerBufferElementProvider(bufferProvider);
}
/**
* Handle color event from inputhandler for OSC 4|104 | 10|110 | 11|111 | 12|112.
* An event from OSC 4|104 may contain multiple set or report requests, and multiple
@@ -585,8 +576,6 @@ export class Terminal extends CoreTerminal implements ITerminal {
// Listen for mouse events and translate
// them into terminal mouse protocols.
this.bindMouse();
this._accessibleBuffer = this._instantiationService.createInstance(AccessibleBuffer, this);
}
private _createRenderer(): IRenderer {
@@ -778,9 +767,6 @@ export class Terminal extends CoreTerminal implements ITerminal {
*/
this.register(addDisposableDomListener(el, 'mousedown', (ev: MouseEvent) => {
ev.preventDefault();
if (this._accessibleBuffer?.isAccessibleBufferActive) {
return;
}
this.focus();
// Don't send the mouse button to the pty if mouse events are disabled or
-1
View File
@@ -80,7 +80,6 @@ export interface IPublicTerminal extends IDisposable {
refresh(start: number, end: number): void;
clearTextureAtlas(): void;
reset(): void;
registerBufferElementProvider(bufferProvider: IBufferElementProvider): IDisposable;
}
export type CustomKeyEventHandler = (event: KeyboardEvent) => boolean;
-3
View File
@@ -236,9 +236,6 @@ export class Terminal implements ITerminalApi {
public loadAddon(addon: ITerminalAddon): void {
return this._addonManager.loadAddon(this, addon);
}
public registerBufferElementProvider(bufferProvider: IBufferElementProvider): IDisposable {
return this._core.registerBufferElementProvider(bufferProvider);
}
public static get strings(): ILocalizableStrings {
return Strings;
}
-13
View File
@@ -498,11 +498,6 @@ declare module 'xterm' {
* being printed to the terminal when `screenReaderMode` is enabled.
*/
tooMuchOutput: string;
/**
* The aria label for the accessibility buffer
*/
accessibleBuffer: string;
}
/**
@@ -1108,14 +1103,6 @@ declare module 'xterm' {
* @param addon The addon to load.
*/
loadAddon(addon: ITerminalAddon): void;
/*
* Registers a buffer element provider which will provide a custom element to
* use in the terminal's accessible buffer. Using this an xterm.js embedder
* has full control over how the buffer is represented in the DOM.
* @param bufferElementProvider The buffer element provider.
*/
registerBufferElementProvider(bufferProvider: IBufferElementProvider): IDisposable;
}
/**