Remove hterm

This commit is contained in:
Søren L. Hansen
2022-03-28 15:48:20 -07:00
parent 26fc4127a9
commit 163fd0537c
12 changed files with 34 additions and 308 deletions

12
js/package-lock.json generated
View File

@@ -9,7 +9,6 @@
"version": "2.0.0",
"dependencies": {
"css-loader": "^5.2.6",
"libapps": "github:yudai/libapps#release-hterm-1.70",
"style-loader": "^2.0.0",
"xterm": "^4.12.0",
"xterm-addon-fit": "^0.5.0",
@@ -869,12 +868,6 @@
"node": ">=0.10.0"
}
},
"node_modules/libapps": {
"version": "1.70.0",
"resolved": "git+ssh://git@github.com/yudai/libapps.git#424e3e95e5346ef0c0c281aaf2ef73463a55b39e",
"integrity": "sha512-BpAlnvEvCmcXAPGBdUfrjo1al9V4vIktyKLBxOdYdY/XEAb6rx3Lz/XeZJrns5Tn3IFF0DfBQ9jEF4YZgDMsOg==",
"license": "BSD-3-Clause"
},
"node_modules/license-loader": {
"version": "0.5.0",
"resolved": "https://registry.npmjs.org/license-loader/-/license-loader-0.5.0.tgz",
@@ -2491,11 +2484,6 @@
"integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
"dev": true
},
"libapps": {
"version": "git+ssh://git@github.com/yudai/libapps.git#424e3e95e5346ef0c0c281aaf2ef73463a55b39e",
"integrity": "sha512-BpAlnvEvCmcXAPGBdUfrjo1al9V4vIktyKLBxOdYdY/XEAb6rx3Lz/XeZJrns5Tn3IFF0DfBQ9jEF4YZgDMsOg==",
"from": "libapps@github:yudai/libapps#release-hterm-1.70"
},
"license-loader": {
"version": "0.5.0",
"resolved": "https://registry.npmjs.org/license-loader/-/license-loader-0.5.0.tgz",

View File

@@ -11,7 +11,6 @@
},
"dependencies": {
"css-loader": "^5.2.6",
"libapps": "github:yudai/libapps#release-hterm-1.70",
"style-loader": "^2.0.0",
"xterm": "^4.12.0",
"xterm-addon-fit": "^0.5.0",

View File

@@ -1,94 +0,0 @@
import * as bare from "libapps";
export class Hterm {
elem: HTMLElement;
term: bare.hterm.Terminal;
io: bare.hterm.IO;
columns: number;
rows: number;
// to "show" the current message when removeMessage() is called
message: string;
constructor(elem: HTMLElement) {
this.elem = elem;
bare.hterm.defaultStorage = new bare.lib.Storage.Memory();
this.term = new bare.hterm.Terminal();
this.term.getPrefs().set("send-encoding", "raw");
this.term.decorate(this.elem);
this.io = this.term.io.push();
this.term.installKeyboard();
};
info(): { columns: number, rows: number } {
return { columns: this.columns, rows: this.rows };
};
output(data: string) {
if (this.term.io != null) {
this.term.io.writeUTF8(data);
}
};
showMessage(message: string, timeout: number) {
this.message = message;
if (timeout > 0) {
this.term.io.showOverlay(message, timeout);
} else {
this.term.io.showOverlay(message, null);
}
};
removeMessage(): void {
// there is no hideOverlay(), so show the same message with 0 sec
this.term.io.showOverlay(this.message, 0);
}
setWindowTitle(title: string) {
this.term.setWindowTitle(title);
};
setPreferences(value: object) {
Object.keys(value).forEach((key) => {
if (key != "EnableWebGL") {
this.term.getPrefs().set(key, value[key]);
}
});
};
onInput(callback: (input: string) => void) {
this.io.onVTKeystroke = (data) => {
callback(data);
};
this.io.sendString = (data) => {
callback(data);
};
};
onResize(callback: (colmuns: number, rows: number) => void) {
this.io.onTerminalResize = (columns: number, rows: number) => {
this.columns = columns;
this.rows = rows;
callback(columns, rows);
};
};
deactivate(): void {
this.io.onVTKeystroke = function () { };
this.io.sendString = function () { };
this.io.onTerminalResize = function () { };
this.term.uninstallKeyboard();
}
reset(): void {
this.removeMessage();
this.term.installKeyboard();
}
close(): void {
this.term.uninstallKeyboard();
}
}

View File

@@ -1,4 +1,3 @@
import { Hterm } from "./hterm";
import { Xterm } from "./xterm";
import { Terminal, WebTTY, protocols } from "./webtty";
import { ConnectionFactory } from "./websocket";
@@ -11,11 +10,8 @@ const elem = document.getElementById("terminal")
if (elem !== null) {
var term: Terminal;
if (gotty_term == "hterm") {
term = new Hterm(elem);
} else {
term = new Xterm(elem);
}
term = new Xterm(elem);
const httpsEnabled = window.location.protocol == "https:";
const url = (httpsEnabled ? 'wss://' : 'ws://') + window.location.host + window.location.pathname + 'ws';
const args = window.location.search;

View File

@@ -2,13 +2,11 @@ import { Terminal, IDisposable } from "xterm";
import { FitAddon } from 'xterm-addon-fit';
import { WebLinksAddon } from 'xterm-addon-web-links';
import { WebglAddon } from 'xterm-addon-webgl';
import { lib } from "libapps"
export class Xterm {
elem: HTMLElement;
term: Terminal;
resizeListener: () => void;
decoder: lib.UTF8Decoder;
message: HTMLElement;
messageTimeout: number;
@@ -38,8 +36,6 @@ export class Xterm {
this.term.focus();
this.resizeListener();
window.addEventListener("resize", () => { this.resizeListener(); });
this.decoder = new lib.UTF8Decoder()
};
info(): { columns: number, rows: number } {
@@ -47,7 +43,7 @@ export class Xterm {
};
output(data: string) {
this.term.write(this.decoder.decode(data));
this.term.write(Uint8Array.from(data, c => c.charCodeAt(0)));
};
showMessage(message: string, timeout: number) {

View File

@@ -1,51 +0,0 @@
export declare namespace hterm {
export class Terminal {
io: IO;
onTerminalReady: () => void;
constructor();
getPrefs(): Prefs;
decorate(HTMLElement);
installKeyboard(): void;
uninstallKeyboard(): void;
setWindowTitle(title: string): void;
reset(): void;
softReset(): void;
}
export class IO {
writeUTF8: ((data: string) => void);
writeUTF16: ((data: string) => void);
onVTKeystroke: ((data: string) => void) | null;
sendString: ((data: string) => void) | null;
onTerminalResize: ((columns: number, rows: number) => void) | null;
push(): IO;
writeUTF(data: string);
showOverlay(message: string, timeout: number | null);
}
export class Prefs {
set(key: string, value: string): void;
}
export var defaultStorage: lib.Storage;
}
export declare namespace lib {
export interface Storage {
}
export interface Memory {
new (): Storage;
Memory(): Storage
}
export var Storage: {
Memory: Memory
}
export class UTF8Decoder {
decode(str: string)
}
}