console/frontend/src/console.js

30 lines
882 B
JavaScript

import { Terminal } from 'xterm';
import { AttachAddon } from 'xterm-addon-attach';
import { FitAddon } from 'xterm-addon-fit';
window.customElements.define('console-component', class extends HTMLElement {
constructor(host, server, token) {
super();
this.shadow = this.attachShadow({mode: 'open'});
this.render();
this.term = new Terminal();
const fitAddon = new FitAddon();
this.term.loadAddon(fitAddon);
fitAddon.fit();
term.open(document.getElementById('terminal'));
this.connect();
}
connect() {
this.socket = new WebSocket(`wss://${host}/server/${server}/logs?token=${token}`);
const attachAddon = new AttachAddon(socket);
term.loadAddon(attachAddon);
}
render() {
this.shadow.innerHTML = `
<div id="terminal"></div>
`;
}
});