termites 1.0.19 → 1.0.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/server.js +21 -9
package/package.json
CHANGED
package/server.js
CHANGED
|
@@ -717,10 +717,10 @@ class TermitesServer {
|
|
|
717
717
|
<button data-mod="ctrl" class="mod-btn">Ctrl</button>
|
|
718
718
|
<button data-mod="alt" class="mod-btn">Alt</button>
|
|
719
719
|
<div class="sep"></div>
|
|
720
|
-
<button data-key="ArrowUp">↑</button>
|
|
721
|
-
<button data-key="ArrowDown">↓</button>
|
|
722
720
|
<button data-key="ArrowLeft">←</button>
|
|
723
721
|
<button data-key="ArrowRight">→</button>
|
|
722
|
+
<button data-key="ArrowUp">↑</button>
|
|
723
|
+
<button data-key="ArrowDown">↓</button>
|
|
724
724
|
<div class="sep"></div>
|
|
725
725
|
<button data-seq="/">/</button>
|
|
726
726
|
<button data-seq="\\x03">^C</button>
|
|
@@ -1037,17 +1037,23 @@ class TermitesServer {
|
|
|
1037
1037
|
btn.addEventListener('click', handler);
|
|
1038
1038
|
});
|
|
1039
1039
|
|
|
1040
|
-
// Copy button - copy selection
|
|
1041
|
-
document.getElementById('copy-btn')
|
|
1040
|
+
// Copy button - copy selection
|
|
1041
|
+
const copyBtn = document.getElementById('copy-btn');
|
|
1042
|
+
const handleCopy = async (e) => {
|
|
1043
|
+
e.preventDefault();
|
|
1042
1044
|
const selection = term.getSelection();
|
|
1043
1045
|
if (selection) {
|
|
1044
1046
|
await navigator.clipboard.writeText(selection);
|
|
1045
1047
|
term.clearSelection();
|
|
1046
1048
|
}
|
|
1047
|
-
}
|
|
1049
|
+
};
|
|
1050
|
+
copyBtn.addEventListener('touchstart', handleCopy, { passive: false });
|
|
1051
|
+
copyBtn.addEventListener('click', handleCopy);
|
|
1048
1052
|
|
|
1049
1053
|
// Paste button
|
|
1050
|
-
document.getElementById('paste-btn')
|
|
1054
|
+
const pasteBtn = document.getElementById('paste-btn');
|
|
1055
|
+
const handlePaste = async (e) => {
|
|
1056
|
+
e.preventDefault();
|
|
1051
1057
|
try {
|
|
1052
1058
|
const text = await navigator.clipboard.readText();
|
|
1053
1059
|
if (text && ws?.readyState === WebSocket.OPEN && selectedClientId) {
|
|
@@ -1057,14 +1063,18 @@ class TermitesServer {
|
|
|
1057
1063
|
console.error('Paste failed:', e);
|
|
1058
1064
|
}
|
|
1059
1065
|
term.focus();
|
|
1060
|
-
}
|
|
1066
|
+
};
|
|
1067
|
+
pasteBtn.addEventListener('touchstart', handlePaste, { passive: false });
|
|
1068
|
+
pasteBtn.addEventListener('click', handlePaste);
|
|
1061
1069
|
|
|
1062
1070
|
// Select mode button - enables touch selection
|
|
1063
1071
|
let selectMode = false;
|
|
1064
1072
|
const selectBtn = document.getElementById('select-btn');
|
|
1065
1073
|
const termContainer = document.getElementById('terminal-container');
|
|
1066
1074
|
|
|
1067
|
-
|
|
1075
|
+
const toggleSelectMode = (e) => {
|
|
1076
|
+
e.preventDefault();
|
|
1077
|
+
e.stopPropagation();
|
|
1068
1078
|
selectMode = !selectMode;
|
|
1069
1079
|
selectBtn.classList.toggle('active', selectMode);
|
|
1070
1080
|
termContainer.style.touchAction = selectMode ? 'none' : '';
|
|
@@ -1076,7 +1086,9 @@ class TermitesServer {
|
|
|
1076
1086
|
termContainer.classList.remove('select-mode');
|
|
1077
1087
|
term.clearSelection();
|
|
1078
1088
|
}
|
|
1079
|
-
}
|
|
1089
|
+
};
|
|
1090
|
+
selectBtn.addEventListener('touchstart', toggleSelectMode, { passive: false });
|
|
1091
|
+
selectBtn.addEventListener('click', toggleSelectMode);
|
|
1080
1092
|
|
|
1081
1093
|
// Handle touch selection
|
|
1082
1094
|
let touchStartPos = null;
|