mirror of
https://github.com/paradoxxxzero/butterfly.git
synced 2026-05-26 07:08:08 +00:00
remove unneeded virtual_input
We have already introduced a virtual textarea for every platform. This one seems redundant. However, some features may still not work perfectly on a mobile browser
This commit is contained in:
@@ -1,5 +1,5 @@
|
|||||||
(function() {
|
(function() {
|
||||||
var Popup, Selection, _set_theme_href, _theme, alt, cancel, clean_ansi, copy, ctrl, escape, first, histSize, linkify, maybePack, nextLeaf, packSize, popup, previousLeaf, selection, setAlarm, tags, tid, virtualInput, walk,
|
var Popup, Selection, _set_theme_href, _theme, cancel, clean_ansi, copy, escape, histSize, linkify, maybePack, nextLeaf, packSize, popup, previousLeaf, selection, setAlarm, tags, tid, walk,
|
||||||
indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; };
|
indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; };
|
||||||
|
|
||||||
clean_ansi = function(data) {
|
clean_ansi = function(data) {
|
||||||
@@ -121,14 +121,14 @@
|
|||||||
});
|
});
|
||||||
|
|
||||||
addEventListener('copy', copy = function(e) {
|
addEventListener('copy', copy = function(e) {
|
||||||
var data, end, j, len1, line, ref, sel;
|
var data, end, j, len, line, ref, sel;
|
||||||
document.getElementsByTagName('body')[0].contentEditable = false;
|
document.getElementsByTagName('body')[0].contentEditable = false;
|
||||||
butterfly.bell("copied");
|
butterfly.bell("copied");
|
||||||
e.clipboardData.clearData();
|
e.clipboardData.clearData();
|
||||||
sel = getSelection().toString().replace(/\u00A0/g, ' ').replace(/\u2007/g, ' ');
|
sel = getSelection().toString().replace(/\u00A0/g, ' ').replace(/\u2007/g, ' ');
|
||||||
data = '';
|
data = '';
|
||||||
ref = sel.split('\n');
|
ref = sel.split('\n');
|
||||||
for (j = 0, len1 = ref.length; j < len1; j++) {
|
for (j = 0, len = ref.length; j < len; j++) {
|
||||||
line = ref[j];
|
line = ref[j];
|
||||||
if (line.slice(-1) === '\u23CE') {
|
if (line.slice(-1) === '\u23CE') {
|
||||||
end = '';
|
end = '';
|
||||||
@@ -185,10 +185,10 @@
|
|||||||
});
|
});
|
||||||
|
|
||||||
walk = function(node, callback) {
|
walk = function(node, callback) {
|
||||||
var child, j, len1, ref, results;
|
var child, j, len, ref, results;
|
||||||
ref = node.childNodes;
|
ref = node.childNodes;
|
||||||
results = [];
|
results = [];
|
||||||
for (j = 0, len1 = ref.length; j < len1; j++) {
|
for (j = 0, len = ref.length; j < len; j++) {
|
||||||
child = ref[j];
|
child = ref[j];
|
||||||
callback.call(child);
|
callback.call(child);
|
||||||
results.push(walk(child, callback));
|
results.push(walk(child, callback));
|
||||||
@@ -661,7 +661,7 @@
|
|||||||
}
|
}
|
||||||
oReq = new XMLHttpRequest();
|
oReq = new XMLHttpRequest();
|
||||||
oReq.addEventListener('load', function() {
|
oReq.addEventListener('load', function() {
|
||||||
var j, len1, out, ref, response, session;
|
var j, len, out, ref, response, session;
|
||||||
response = JSON.parse(this.responseText);
|
response = JSON.parse(this.responseText);
|
||||||
out = '<div>';
|
out = '<div>';
|
||||||
out += '<h2>Session list</h2>';
|
out += '<h2>Session list</h2>';
|
||||||
@@ -670,7 +670,7 @@
|
|||||||
} else {
|
} else {
|
||||||
out += '<ul>';
|
out += '<ul>';
|
||||||
ref = response.sessions;
|
ref = response.sessions;
|
||||||
for (j = 0, len1 = ref.length; j < len1; j++) {
|
for (j = 0, len = ref.length; j < len; j++) {
|
||||||
session = ref[j];
|
session = ref[j];
|
||||||
out += "<li><a href=\"/session/" + session + "\">" + session + "</a></li>";
|
out += "<li><a href=\"/session/" + session + "\">" + session + "</a></li>";
|
||||||
}
|
}
|
||||||
@@ -725,7 +725,7 @@
|
|||||||
}
|
}
|
||||||
oReq = new XMLHttpRequest();
|
oReq = new XMLHttpRequest();
|
||||||
oReq.addEventListener('load', function() {
|
oReq.addEventListener('load', function() {
|
||||||
var builtin_themes, inner, j, k, len1, len2, option, response, theme, theme_list, themes, url;
|
var builtin_themes, inner, j, k, len, len1, option, response, theme, theme_list, themes, url;
|
||||||
response = JSON.parse(this.responseText);
|
response = JSON.parse(this.responseText);
|
||||||
builtin_themes = response.builtin_themes;
|
builtin_themes = response.builtin_themes;
|
||||||
themes = response.themes;
|
themes = response.themes;
|
||||||
@@ -742,7 +742,7 @@
|
|||||||
option("/static/main.css", 'default');
|
option("/static/main.css", 'default');
|
||||||
if (themes.length) {
|
if (themes.length) {
|
||||||
inner += '<optgroup label="Local themes">';
|
inner += '<optgroup label="Local themes">';
|
||||||
for (j = 0, len1 = themes.length; j < len1; j++) {
|
for (j = 0, len = themes.length; j < len; j++) {
|
||||||
theme = themes[j];
|
theme = themes[j];
|
||||||
url = "/theme/" + theme + "/style.css";
|
url = "/theme/" + theme + "/style.css";
|
||||||
option(url, theme);
|
option(url, theme);
|
||||||
@@ -750,7 +750,7 @@
|
|||||||
inner += '</optgroup>';
|
inner += '</optgroup>';
|
||||||
}
|
}
|
||||||
inner += '<optgroup label="Built-in themes">';
|
inner += '<optgroup label="Built-in themes">';
|
||||||
for (k = 0, len2 = builtin_themes.length; k < len2; k++) {
|
for (k = 0, len1 = builtin_themes.length; k < len1; k++) {
|
||||||
theme = builtin_themes[k];
|
theme = builtin_themes[k];
|
||||||
url = "/theme/" + theme + "/style.css";
|
url = "/theme/" + theme + "/style.css";
|
||||||
option(url, theme.slice('built-in-'.length));
|
option(url, theme.slice('built-in-'.length));
|
||||||
@@ -768,74 +768,6 @@
|
|||||||
return cancel(e);
|
return cancel(e);
|
||||||
});
|
});
|
||||||
|
|
||||||
if (/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)) {
|
|
||||||
ctrl = false;
|
|
||||||
alt = false;
|
|
||||||
first = true;
|
|
||||||
virtualInput = document.createElement('input');
|
|
||||||
virtualInput.type = 'password';
|
|
||||||
virtualInput.style.position = 'fixed';
|
|
||||||
virtualInput.style.top = 0;
|
|
||||||
virtualInput.style.left = 0;
|
|
||||||
virtualInput.style.border = 'none';
|
|
||||||
virtualInput.style.outline = 'none';
|
|
||||||
virtualInput.style.opacity = 0;
|
|
||||||
virtualInput.value = '0';
|
|
||||||
document.body.appendChild(virtualInput);
|
|
||||||
virtualInput.addEventListener('blur', function() {
|
|
||||||
return setTimeout(((function(_this) {
|
|
||||||
return function() {
|
|
||||||
return _this.focus();
|
|
||||||
};
|
|
||||||
})(this)), 10);
|
|
||||||
});
|
|
||||||
addEventListener('click', function() {
|
|
||||||
return virtualInput.focus();
|
|
||||||
});
|
|
||||||
addEventListener('touchstart', function(e) {
|
|
||||||
if (e.touches.length === 2) {
|
|
||||||
return ctrl = true;
|
|
||||||
} else if (e.touches.length === 3) {
|
|
||||||
ctrl = false;
|
|
||||||
return alt = true;
|
|
||||||
} else if (e.touches.length === 4) {
|
|
||||||
ctrl = true;
|
|
||||||
return alt = true;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
virtualInput.addEventListener('keydown', function(e) {
|
|
||||||
butterfly.keyDown(e);
|
|
||||||
return true;
|
|
||||||
});
|
|
||||||
virtualInput.addEventListener('input', function(e) {
|
|
||||||
var len;
|
|
||||||
len = this.value.length;
|
|
||||||
if (len === 0) {
|
|
||||||
e.keyCode = 8;
|
|
||||||
butterfly.keyDown(e);
|
|
||||||
this.value = '0';
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
e.keyCode = this.value.charAt(1).charCodeAt(0);
|
|
||||||
if ((ctrl || alt) && !first) {
|
|
||||||
e.keyCode = this.value.charAt(1).charCodeAt(0);
|
|
||||||
e.ctrlKey = ctrl;
|
|
||||||
e.altKey = alt;
|
|
||||||
if (e.keyCode >= 97 && e.keyCode <= 122) {
|
|
||||||
e.keyCode -= 32;
|
|
||||||
}
|
|
||||||
butterfly.keyDown(e);
|
|
||||||
this.value = '0';
|
|
||||||
ctrl = alt = false;
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
butterfly.keyPress(e);
|
|
||||||
first = false;
|
|
||||||
this.value = '0';
|
|
||||||
return true;
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
}).call(this);
|
}).call(this);
|
||||||
|
|
||||||
//# sourceMappingURL=ext.js.map
|
//# sourceMappingURL=ext.js.map
|
||||||
|
|||||||
2
butterfly/static/ext.min.js
vendored
2
butterfly/static/ext.min.js
vendored
File diff suppressed because one or more lines are too long
@@ -209,6 +209,12 @@
|
|||||||
return _this.inputHelper.focus();
|
return _this.inputHelper.focus();
|
||||||
};
|
};
|
||||||
})(this));
|
})(this));
|
||||||
|
} else {
|
||||||
|
addEventListener('click', (function(_this) {
|
||||||
|
return function() {
|
||||||
|
return _this.inputHelper.focus();
|
||||||
|
};
|
||||||
|
})(this));
|
||||||
}
|
}
|
||||||
addEventListener('focus', this.focus.bind(this));
|
addEventListener('focus', this.focus.bind(this));
|
||||||
addEventListener('blur', this.blur.bind(this));
|
addEventListener('blur', this.blur.bind(this));
|
||||||
|
|||||||
4
butterfly/static/main.min.js
vendored
4
butterfly/static/main.min.js
vendored
File diff suppressed because one or more lines are too long
@@ -1,80 +0,0 @@
|
|||||||
# *-* coding: utf-8 *-*
|
|
||||||
# This file is part of butterfly
|
|
||||||
#
|
|
||||||
# butterfly Copyright(C) 2015-2017 Florian Mounier
|
|
||||||
# This program is free software: you can redistribute it and/or modify
|
|
||||||
# it under the terms of the GNU General Public License as published by
|
|
||||||
# the Free Software Foundation, either version 3 of the License, or
|
|
||||||
# (at your option) any later version.
|
|
||||||
#
|
|
||||||
# This program is distributed in the hope that it will be useful,
|
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
# GNU General Public License for more details.
|
|
||||||
#
|
|
||||||
# You should have received a copy of the GNU General Public License
|
|
||||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
|
|
||||||
|
|
||||||
if /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i
|
|
||||||
.test navigator.userAgent
|
|
||||||
ctrl = false
|
|
||||||
alt = false
|
|
||||||
first = true
|
|
||||||
virtualInput = document.createElement 'input'
|
|
||||||
virtualInput.type = 'password'
|
|
||||||
virtualInput.style.position = 'fixed'
|
|
||||||
virtualInput.style.top = 0
|
|
||||||
virtualInput.style.left = 0
|
|
||||||
virtualInput.style.border = 'none'
|
|
||||||
virtualInput.style.outline = 'none'
|
|
||||||
virtualInput.style.opacity = 0
|
|
||||||
virtualInput.value = '0'
|
|
||||||
document.body.appendChild virtualInput
|
|
||||||
|
|
||||||
virtualInput.addEventListener 'blur', ->
|
|
||||||
setTimeout((=> @focus()), 10)
|
|
||||||
|
|
||||||
addEventListener 'click', ->
|
|
||||||
virtualInput.focus()
|
|
||||||
|
|
||||||
addEventListener 'touchstart', (e) ->
|
|
||||||
if e.touches.length == 2
|
|
||||||
ctrl = true
|
|
||||||
else if e.touches.length == 3
|
|
||||||
ctrl = false
|
|
||||||
alt = true
|
|
||||||
else if e.touches.length == 4
|
|
||||||
ctrl = true
|
|
||||||
alt = true
|
|
||||||
|
|
||||||
virtualInput.addEventListener 'keydown', (e) ->
|
|
||||||
butterfly.keyDown(e)
|
|
||||||
return true
|
|
||||||
|
|
||||||
virtualInput.addEventListener 'input', (e) ->
|
|
||||||
len = @value.length
|
|
||||||
|
|
||||||
if len == 0
|
|
||||||
e.keyCode = 8
|
|
||||||
butterfly.keyDown e
|
|
||||||
@value = '0'
|
|
||||||
return true
|
|
||||||
|
|
||||||
e.keyCode = @value.charAt(1).charCodeAt(0)
|
|
||||||
|
|
||||||
if (ctrl or alt) and not first
|
|
||||||
e.keyCode = @value.charAt(1).charCodeAt(0)
|
|
||||||
e.ctrlKey = ctrl
|
|
||||||
e.altKey = alt
|
|
||||||
if e.keyCode >= 97 && e.keyCode <= 122
|
|
||||||
e.keyCode -= 32
|
|
||||||
butterfly.keyDown e
|
|
||||||
@value = '0'
|
|
||||||
ctrl = alt = false
|
|
||||||
return true
|
|
||||||
|
|
||||||
butterfly.keyPress e
|
|
||||||
first = false
|
|
||||||
@value = '0'
|
|
||||||
true
|
|
||||||
@@ -125,6 +125,8 @@ class Terminal
|
|||||||
# Don't do this on mobile, it will mess up the IME
|
# Don't do this on mobile, it will mess up the IME
|
||||||
unless isMobile()
|
unless isMobile()
|
||||||
addEventListener 'keyup', => @inputHelper.focus()
|
addEventListener 'keyup', => @inputHelper.focus()
|
||||||
|
else
|
||||||
|
addEventListener 'click', => @inputHelper.focus()
|
||||||
addEventListener 'focus', @focus.bind(@)
|
addEventListener 'focus', @focus.bind(@)
|
||||||
addEventListener 'blur', @blur.bind(@)
|
addEventListener 'blur', @blur.bind(@)
|
||||||
addEventListener 'resize', => @resize()
|
addEventListener 'resize', => @resize()
|
||||||
|
|||||||
Reference in New Issue
Block a user