Benchmark for animation

This commit is contained in:
Thomas Smith 2023-01-25 15:24:48 -05:00
parent be8551db65
commit be511ee8cd

View file

@ -26,8 +26,8 @@
<div class="traffic-light"></div> <div class="traffic-light"></div>
</div> </div>
<div class="p-5"> <div class="p-5">
<p id="output"></p> <p id="terminal-output"></p>
<p id="input"><span id="typing"></span></p> <p id="terminal-input"></p>
</div> </div>
</div> </div>
</div> </div>
@ -68,6 +68,19 @@
border-bottom: 1px solid gray; border-bottom: 1px solid gray;
} }
#terminal-output {
white-space: pre;
}
#terminal-input {
position: relative;
}
#terminal-input:before {
content: ">";
color: green;
position: absolute;
left: 0;
}
</style> </style>
<!-- Teal Impact Section --> <!-- Teal Impact Section -->
@ -467,10 +480,7 @@
<script> <script>
var output = document.getElementById("output"); const commands = [
var typing = document.getElementById("typing");
var commands = [
"$ node --eval 'console.log(\"Hello World!\")'", "$ node --eval 'console.log(\"Hello World!\")'",
"command not found: node", "command not found: node",
"$ sh <(curl tea.xyz) --yes", "$ sh <(curl tea.xyz) --yes",
@ -480,25 +490,29 @@
"Hello World!" "Hello World!"
]; ];
var index = 0; let commandIndex = 0;
let command = commands[commandIndex];
let commandOutput = "";
function type() { function typeCommand() {
var command = commands[index]; if (commandIndex === commands.length) {
var chars = command.split(""); return;
var loop = setInterval(function() {
typing.innerHTML += chars.shift();
if (!chars.length) {
clearInterval(loop);
output.innerHTML += command + "<br>";
index++;
if (index < commands.length) {
setTimeout(type, 1000);
} }
if (command.length === 0) {
commandIndex++;
command = commands[commandIndex];
commandOutput += '\n';
document.querySelector("#terminal-output").innerHTML = commandOutput;
setTimeout(typeCommand, 1000);
return;
} }
}, 50); commandOutput += command[0];
command = command.slice(1);
document.querySelector("#terminal-output").innerHTML = commandOutput;
setTimeout(typeCommand, 50);
} }
type(); typeCommand();
</script> </script>
</div> </div>