changed from php to express.js
This commit is contained in:
75
public/js/terminal.js
Normal file
75
public/js/terminal.js
Normal file
@@ -0,0 +1,75 @@
|
||||
const username = "guest";
|
||||
const hostname = `192.168.${Math.floor(Math.random()*100)}.${Math.floor(Math.random()*255)}`;
|
||||
|
||||
document.addEventListener("DOMContentLoaded", function () {
|
||||
|
||||
document.querySelectorAll(".pathText").forEach((element)=> {
|
||||
element.innerHTML = `${username}@${hostname}`;
|
||||
});
|
||||
|
||||
const terminalInput = document.getElementById("terminalInput");
|
||||
|
||||
terminalInput.addEventListener("input", function (e) {
|
||||
resizeInput();
|
||||
});
|
||||
resizeInput()
|
||||
|
||||
terminalInput.addEventListener('blur', function(e) {
|
||||
e.preventDefault();
|
||||
terminalInput.focus();
|
||||
}, false);
|
||||
terminalInput.focus();
|
||||
|
||||
|
||||
terminalInput.addEventListener("keydown", function (e) {
|
||||
if (e.key === "Enter"){
|
||||
sendCommand(e);
|
||||
}
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
function sendCommand(e){
|
||||
const command = e.target.value;
|
||||
console.log("COMMAND SENT: "+command);
|
||||
e.target.value = "";
|
||||
resizeInput();
|
||||
}
|
||||
|
||||
|
||||
function resizeInput() {
|
||||
const inputText = terminalInput.value;
|
||||
const inputWidth = measureTextWidth(inputText);
|
||||
const maxWidth = 300; // Set your desired maximum width
|
||||
|
||||
if (inputWidth <= maxWidth) {
|
||||
terminalInput.style.width = inputWidth + "px";
|
||||
} else {
|
||||
terminalInput.style.width = maxWidth + "px";
|
||||
terminalInput.value = inputText.slice(0, -1); // Remove the last character
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
function measureTextWidth(text) {
|
||||
const nonBreakingSpace = '\u00A0';
|
||||
const sanitizedText = text.replace(/ /g, nonBreakingSpace);
|
||||
|
||||
const fakeElement = document.createElement("div");
|
||||
fakeElement.style.visibility = "hidden";
|
||||
fakeElement.style.position = "absolute";
|
||||
fakeElement.style.top = "0";
|
||||
fakeElement.style.left = "0";
|
||||
fakeElement.style.width = "auto";
|
||||
fakeElement.style.fontFamily = "Source Code Pro";
|
||||
fakeElement.style.fontSize = "16px";
|
||||
fakeElement.style.whiteSpace = "nowrap";
|
||||
fakeElement.innerHTML = sanitizedText;
|
||||
|
||||
document.body.appendChild(fakeElement);
|
||||
const width = fakeElement.offsetWidth;
|
||||
document.body.removeChild(fakeElement);
|
||||
|
||||
return width;
|
||||
}
|
||||
Reference in New Issue
Block a user