Replace the primary lint pipeline with oxlint and oxlint-tsgolint for type-aware TypeScript rules, preserving existing rule behavior from eslint.config.mjs via @oxlint/migrate and targeted jsPlugins (@stylistic/eslint-plugin, eslint-plugin-jsdoc as jsdoc-js, oxlint-plugin-eslint for no-restricted-syntax and object-curly-spacing). Keep a hybrid ESLint pass (eslint.config.naming.mjs) only for @typescript-eslint/naming-convention until tsgolint implements it (oxc-project/tsgolint#186). Legacy eslint.config.mjs and eslint.config.typings.mjs remain for reference but are no longer used by npm scripts. Add .oxlintrc.json for src/addons/demo/test and .oxlintrc.typings.json for typings/ (syntax-only, no --type-aware). Update lint, lint-fix, lint-api, and lint-changes to run oxlint first, then naming ESLint. Platform binaries install via oxlint-tsgolint optionalDependencies on Linux, macOS, and Windows. Fixes https://github.com/xtermjs/xterm.js/issues/5690 Co-authored-by: Cursor <cursoragent@cursor.com>
52 lines
1.6 KiB
TypeScript
52 lines
1.6 KiB
TypeScript
/**
|
|
* Copyright (c) 2018 The xterm.js authors. All rights reserved.
|
|
* @license MIT
|
|
*/
|
|
|
|
import { BaseWindow } from './baseWindow';
|
|
import type { IControlWindow } from '../controlBar';
|
|
|
|
export class WebglWindow extends BaseWindow implements IControlWindow {
|
|
public readonly id = 'addon-webgl';
|
|
public readonly label = 'webgl';
|
|
|
|
private _textureAtlasContainer!: HTMLElement;
|
|
|
|
public build(container: HTMLElement): void {
|
|
const zoomCheckbox = document.createElement('input');
|
|
zoomCheckbox.type = 'checkbox';
|
|
zoomCheckbox.id = 'texture-atlas-zoom';
|
|
container.appendChild(zoomCheckbox);
|
|
|
|
const zoomLabel = document.createElement('label');
|
|
zoomLabel.htmlFor = 'texture-atlas-zoom';
|
|
zoomLabel.textContent = 'Zoom texture atlas';
|
|
container.appendChild(zoomLabel);
|
|
|
|
this._textureAtlasContainer = document.createElement('div');
|
|
this._textureAtlasContainer.id = 'texture-atlas';
|
|
container.appendChild(this._textureAtlasContainer);
|
|
}
|
|
|
|
public setTextureAtlas(canvas: HTMLCanvasElement): void {
|
|
this._styleAtlasPage(canvas);
|
|
this._textureAtlasContainer.replaceChildren(canvas);
|
|
}
|
|
|
|
public appendTextureAtlas(canvas: HTMLCanvasElement): void {
|
|
this._styleAtlasPage(canvas);
|
|
this._textureAtlasContainer.appendChild(canvas);
|
|
}
|
|
|
|
public removeTextureAtlas(canvas: HTMLCanvasElement): void {
|
|
canvas.remove();
|
|
}
|
|
|
|
private _styleAtlasPage(canvas: HTMLCanvasElement): void {
|
|
// oxlint-disable-next-line eslint-js/no-restricted-syntax
|
|
const dpr = window.devicePixelRatio;
|
|
canvas.style.width = `${canvas.width / dpr}px`;
|
|
canvas.style.height = `${canvas.height / dpr}px`;
|
|
}
|
|
}
|