Add fit addon

This commit is contained in:
Condorra 2022-12-23 20:17:36 +11:00
parent 0e97d58f6e
commit 6e6df46341
4 changed files with 23 additions and 1 deletions

View File

@ -21,7 +21,7 @@
<body style="background: black; height: 100%">
<div style="background: black; color: white; display: flex; flex-direction: column; margin: 0px; height: 100%; width: 100%">
<h1 style="text-align: center">Play Blastmud</h1>
<div id="console" style="flex: 1">&nbsp;</div>
<div id="console" style="min-height: 40pt; flex: 1">&nbsp;</div>
</div>
<div id="over18" style="position: absolute; top: 0; left: 0; background: rgba(80,80,80,0.8); width: 100%; height: 100%">
<div style="display: block; padding: 10px; background: white; width: 80%; margin-left: auto; margin-right: auto; margin-top: 10%; border-radius: 10px;">

15
package-lock.json generated
View File

@ -6,6 +6,7 @@
"": {
"dependencies": {
"xterm": "^5.1.0",
"xterm-addon-fit": "^0.7.0",
"xterm-readline": "^1.1.0"
},
"devDependencies": {
@ -8682,6 +8683,14 @@
"resolved": "https://registry.npmjs.org/xterm/-/xterm-5.1.0.tgz",
"integrity": "sha512-LovENH4WDzpwynj+OTkLyZgJPeDom9Gra4DMlGAgz6pZhIDCQ+YuO7yfwanY+gVbn/mmZIStNOnVRU/ikQuAEQ=="
},
"node_modules/xterm-addon-fit": {
"version": "0.7.0",
"resolved": "https://registry.npmjs.org/xterm-addon-fit/-/xterm-addon-fit-0.7.0.tgz",
"integrity": "sha512-tQgHGoHqRTgeROPnvmtEJywLKoC/V9eNs4bLLz7iyJr1aW/QFzRwfd3MGiJ6odJd9xEfxcW36/xRU47JkD5NKQ==",
"peerDependencies": {
"xterm": "^5.0.0"
}
},
"node_modules/xterm-readline": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/xterm-readline/-/xterm-readline-1.1.0.tgz",
@ -15438,6 +15447,12 @@
"resolved": "https://registry.npmjs.org/xterm/-/xterm-5.1.0.tgz",
"integrity": "sha512-LovENH4WDzpwynj+OTkLyZgJPeDom9Gra4DMlGAgz6pZhIDCQ+YuO7yfwanY+gVbn/mmZIStNOnVRU/ikQuAEQ=="
},
"xterm-addon-fit": {
"version": "0.7.0",
"resolved": "https://registry.npmjs.org/xterm-addon-fit/-/xterm-addon-fit-0.7.0.tgz",
"integrity": "sha512-tQgHGoHqRTgeROPnvmtEJywLKoC/V9eNs4bLLz7iyJr1aW/QFzRwfd3MGiJ6odJd9xEfxcW36/xRU47JkD5NKQ==",
"requires": {}
},
"xterm-readline": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/xterm-readline/-/xterm-readline-1.1.0.tgz",

View File

@ -1,6 +1,7 @@
{
"dependencies": {
"xterm": "^5.1.0",
"xterm-addon-fit": "^0.7.0",
"xterm-readline": "^1.1.0"
},
"devDependencies": {

View File

@ -1,13 +1,17 @@
import {Terminal} from 'xterm';
import { Readline } from "xterm-readline";
import { FitAddon } from 'xterm-addon-fit';
let isScreened = false, sendLessExplicit = false;
const term = new Terminal();
const rl = new Readline();
term.options.scrollback = 1000;
const fit = new FitAddon();
term.loadAddon(fit);
term.loadAddon(rl);
term.open(document.getElementById('console'));
fit.fit();
let lineHandler = (l: string) => { console.log("Default handler", l); };
@ -25,6 +29,7 @@ function connectTerm() {
const wsurl = document.location.href.replace(/^https:\/\/(.*)\/game(.html)?(\?.*)?(\#.*)?/, 'wss:\/\/$1/wsgame');
let webSocket = new WebSocket(wsurl);
webSocket.addEventListener('open', (event) => {
fit.fit();
lineHandler = (l: string) => { console.log("Send handler", l); webSocket.send(l); }
term.writeln("\x1b[0mConnected");
});
@ -36,6 +41,7 @@ function connectTerm() {
term.writeln("\x1b[0mNetwork error with connection.");
});
webSocket.addEventListener('message', (msg) => {
fit.fit();
term.write(msg.data);
})
}