mirror of
https://github.com/paradoxxxzero/butterfly.git
synced 2026-05-26 15:13:36 +00:00
69 lines
1.8 KiB
JavaScript
69 lines
1.8 KiB
JavaScript
// Generated by CoffeeScript 1.6.3
|
|
var $, cols, resize, rows, term, ws, ws_url;
|
|
|
|
term = ws = null;
|
|
|
|
cols = rows = null;
|
|
|
|
$ = document.querySelectorAll.bind(document);
|
|
|
|
ws_url = 'ws://' + document.location.host + '/ws' + location.pathname;
|
|
|
|
ws = new WebSocket(ws_url);
|
|
|
|
ws.onopen = function() {
|
|
console.log("WebSocket open", arguments);
|
|
term = new Terminal({
|
|
visualBell: 100,
|
|
screenKeys: true,
|
|
scrollback: -1
|
|
});
|
|
term.on("data", function(data) {
|
|
return ws.send('SH|' + data);
|
|
});
|
|
term.on("title", function(title) {
|
|
return document.title = title;
|
|
});
|
|
term.open($('main')[0]);
|
|
$('.terminal')[0].style = '';
|
|
return resize();
|
|
};
|
|
|
|
ws.onclose = function() {
|
|
if (term) {
|
|
term.destroy();
|
|
}
|
|
console.log("WebSocket closed", arguments);
|
|
return open('', '_self').close();
|
|
};
|
|
|
|
ws.onerror = function() {
|
|
return console.log("WebSocket error", arguments);
|
|
};
|
|
|
|
ws.onmessage = function(event) {
|
|
return term.write(event.data);
|
|
};
|
|
|
|
addEventListener('resize', resize = function() {
|
|
var eh, ew, fake_term, fake_term_div, fake_term_line, main, main_bb;
|
|
main = $('main')[0];
|
|
fake_term = document.createElement('div');
|
|
fake_term.className = 'terminal test';
|
|
fake_term_div = document.createElement('div');
|
|
fake_term_line = document.createElement('span');
|
|
fake_term_line.textContent = '0123456789';
|
|
fake_term_div.appendChild(fake_term_line);
|
|
fake_term.appendChild(fake_term_div);
|
|
main.appendChild(fake_term);
|
|
ew = fake_term_line.getBoundingClientRect().width;
|
|
eh = fake_term_div.getBoundingClientRect().height;
|
|
main.removeChild(fake_term);
|
|
main_bb = main.getBoundingClientRect();
|
|
cols = Math.floor(10 * main_bb.width / ew) - 1;
|
|
rows = Math.floor(main_bb.height / eh);
|
|
console.log("Computed " + cols + " cols and " + rows + " rows from ", main_bb, ew, eh);
|
|
term.resize(cols, rows);
|
|
return ws.send("RS|" + cols + "," + rows);
|
|
});
|