Compare commits

..
5 Commits
Author SHA1 Message Date
paris 6e6b5dad8c fit() uses offset height and width now 2014-04-10 18:36:37 +00:00
paris 0b603952c3 Removed debugging stuff
Bumped bower version to 0.9
2014-04-10 16:04:59 +00:00
paris 9bd2a1c202 Implemented the attach addon 2014-04-10 15:54:39 +00:00
paris c7f4658e97 Add fullscreen mode plug in 2014-04-10 15:20:41 +00:00
paris 96848a6425 Improved textarea handling 2014-04-10 15:08:19 +00:00
7 changed files with 106 additions and 8 deletions
+23
View File
@@ -0,0 +1,23 @@
/*
* Implements the attach method, that
* attaches the terminal to a WebSocket stream.
*
* The bidirectional argument indicates, whether the terminal should
* send data to the socket as well and is true, by default.
*/
Terminal.prototype.attach = function (socket, bidirectional) {
var term = this;
bidirectional = (typeof bidirectional == 'undefined') ? true : bidirectional;
this.socket = socket;
socket.addEventListener('message', function (ev) {
term.write(ev.data);
});
if (bidirectional) {
this.on('data', function (data) {
socket.send(data);
});
}
}
+38
View File
@@ -0,0 +1,38 @@
<!doctype html>
<html>
<head>
<link rel="stylesheet" href="../../src/xterm.css" />
<link rel="stylesheet" href="../../demo/style.css" />
<script src="../../src/xterm.js"></script>
<script src="attach.js"></script>
</head>
<body>
<form id="socket-form">
<input id="socket-url"
type="text"
placeholder="Enter socket url (e.g. ws://mysock)"
autofocus />
<button>
Attach
</button>
</form>
<div id="terminal-container"></div>
<script>
var term = new Terminal(),
container = document.getElementById('terminal-container'),
socketUrl = document.getElementById('socket-url'),
socketForm = document.getElementById('socket-form');
socketForm.addEventListener('submit', function (ev) {
ev.preventDefault();
var url = socketUrl.value,
sock = new WebSocket(url);
sock.addEventListener('open', function () {
term.attach(sock);
});
});
term.open(container);
</script>
</body>
</html>
+10
View File
@@ -0,0 +1,10 @@
.xterm.fullscreen {
position: fixed;
top: 0;
bottom: 0;
left: 0;
right: 0;
width: auto;
height: auto;
z-index: 255;
}
+25
View File
@@ -0,0 +1,25 @@
/*
* Fullscreen addon for xterm.js
*
* Implements the toggleFullscreen function.
*
* If the `fullscreen` argument has been supplied, then
* if it is true, the fullscreen mode gets turned on,
* if it is false or null, the fullscreen mode gets turned off.
*
* If the `fullscreen` argument has not been supplied, the
* fullscreen mode is being toggled.
*/
Terminal.prototype.toggleFullscreen = function (fullscreen) {
var fn;
if (typeof fullscreen == 'undefined') {
fn = (this.element.classList.contains('fullscreen')) ? 'remove' : 'add';
} else if (!fullscreen) {
fn = 'remove';
} else {
fn = 'add';
}
this.element.classList[fn]('fullscreen');
}
+1 -1
View File
@@ -1,5 +1,5 @@
{
"name": "xterm.js",
"version": "0.7",
"version": "0.9.1",
"ignore": ["demo", "docs", "test", ".gitignore"]
}
+2
View File
@@ -3,8 +3,10 @@
<head>
<title>xterm.js demo</title>
<link rel="stylesheet" href="../src/xterm.css" />
<link rel="stylesheet" href="../addon/fullscreen/fullscreen.css" />
<link rel="stylesheet" href="style.css" />
<script src="../src/xterm.js"></script>
<script src="../addon/fullscreen/fullscreen.js"></script>
<script src="main.js" defer></script>
</head>
<body>
+7 -7
View File
@@ -542,6 +542,10 @@ Terminal.prototype.open = function(parent) {
this.element.appendChild(this.helperContainer);
this.textarea = document.createElement('textarea');
this.textarea.classList.add('xterm-helper-textarea');
this.textarea.setAttribute('autocorrect', 'off');
this.textarea.setAttribute('autocapitalize', 'off');
this.textarea.setAttribute('spellcheck', 'false');
this.textarea.tabIndex = 0;
this.helperContainer.appendChild(this.textarea);
for (; i < this.rows; i++) {
@@ -564,9 +568,7 @@ Terminal.prototype.open = function(parent) {
on(this.element, 'mouseup', function() {
var selection = document.getSelection();
if (selection.type == 'Range') {
console.log(selection);
} else {
if (selection.type != 'Range') {
self.focus();
}
});
@@ -2357,7 +2359,6 @@ Terminal.prototype.keyDown = function(ev) {
this.emit('keydown', ev);
this.emit('key', key, ev);
console.log('keydown');
this.showCursor();
this.handler(key);
@@ -2399,7 +2400,6 @@ Terminal.prototype.keyPress = function(ev) {
this.emit('keypress', key, ev);
this.emit('key', key, ev);
console.log('keypress');
this.showCursor();
this.handler(key);
@@ -2537,7 +2537,7 @@ Terminal.prototype.resize = function(x, y) {
Terminal.prototype.fit = function () {
var container = this.element.parentElement,
subjectRow = this.rowContainer.firstElementChild,
rows = parseInt(container.scrollHeight / subjectRow.offsetHeight),
rows = parseInt(container.offsetHeight / subjectRow.offsetHeight),
characterWidth,
cols;
@@ -2545,7 +2545,7 @@ Terminal.prototype.fit = function () {
characterWidth = parseInt(subjectRow.offsetWidth / this.cols);
subjectRow.style.display = '';
cols = parseInt(container.scrollWidth / characterWidth);
cols = parseInt(container.offsetWidth / characterWidth);
this.resize(cols, rows);
}