diff --git a/public/js/script.js b/public/js/script.js
index 3271aa319..f8e27873b 100644
--- a/public/js/script.js
+++ b/public/js/script.js
@@ -300,7 +300,11 @@ function initWords() {
}
if (config.mode == "time" || config.mode == "words") {
- let wordsBound = config.mode == "time" ? 60 : config.words;
+ // let wordsBound = config.mode == "time" ? 60 : config.words;
+ let wordsBound = 60;
+ if (config.mode === "words" && config.words < wordsBound) {
+ wordsBound = config.words;
+ }
for (let i = 0; i < wordsBound; i++) {
randomWord = language[Math.floor(Math.random() * language.length)];
previousWord = wordsList[i - 1];
@@ -462,6 +466,11 @@ function punctuateWord(previousWord, currentWord, index, maxindex) {
}
function addWord() {
+ if (
+ wordsList.length - inputHistory.length > 60 ||
+ (config.mode === "words" && wordsList.length >= config.words)
+ )
+ return;
let language = words[config.language];
let randomWord = language[Math.floor(Math.random() * language.length)];
previousWord = wordsList[wordsList.length - 1];
@@ -488,35 +497,35 @@ function addWord() {
function showWords() {
$("#words").empty();
- if (
- config.mode == "words" ||
- config.mode == "custom" ||
- config.mode == "quote"
- ) {
- $("#words").css("height", "auto");
- for (let i = 0; i < wordsList.length; i++) {
- let w = "
";
- for (let c = 0; c < wordsList[i].length; c++) {
- w += "" + wordsList[i].charAt(c) + "";
- }
- w += "
";
- $("#words").append(w);
+ // if (
+ // config.mode == "words" ||
+ // config.mode == "custom" ||
+ // config.mode == "quote"
+ // ) {
+ // $("#words").css("height", "auto");
+ // for (let i = 0; i < wordsList.length; i++) {
+ // let w = "";
+ // for (let c = 0; c < wordsList[i].length; c++) {
+ // w += "" + wordsList[i].charAt(c) + "";
+ // }
+ // w += "
";
+ // $("#words").append(w);
+ // }
+ // } else if (config.mode == "time") {
+ for (let i = 0; i < wordsList.length; i++) {
+ let w = "";
+ for (let c = 0; c < wordsList[i].length; c++) {
+ w += "
" + wordsList[i].charAt(c) + "";
}
- } else if (config.mode == "time") {
- for (let i = 0; i < wordsList.length; i++) {
- let w = "
";
- for (let c = 0; c < wordsList[i].length; c++) {
- w += "" + wordsList[i].charAt(c) + "";
- }
- w += "
";
- $("#words").append(w);
- }
- $("#words").removeClass("hidden");
- const wordHeight = $($(".word")[0]).outerHeight(true);
- $("#words")
- .css("height", wordHeight * 3 + "px")
- .css("overflow", "hidden");
+ w += "
";
+ $("#words").append(w);
}
+ $("#words").removeClass("hidden");
+ const wordHeight = $($(".word")[0]).outerHeight(true);
+ $("#words")
+ .css("height", wordHeight * 3 + "px")
+ .css("overflow", "hidden");
+ // }
updateActiveElement();
updateCaretPosition();
}
@@ -840,17 +849,17 @@ function updateCaretPosition() {
duration
);
- let browserHeight = window.innerHeight;
- let middlePos = browserHeight / 2 - $("#caret").outerHeight() / 2;
- let contentHeight = document.body.scrollHeight;
+ // let browserHeight = window.innerHeight;
+ // let middlePos = browserHeight / 2 - $("#caret").outerHeight() / 2;
+ // let contentHeight = document.body.scrollHeight;
- if (newTop >= middlePos && contentHeight > browserHeight) {
- window.scrollTo({
- left: 0,
- top: newTop - middlePos,
- behavior: "smooth",
- });
- }
+ // if (newTop >= middlePos && contentHeight > browserHeight) {
+ // window.scrollTo({
+ // left: 0,
+ // top: newTop - middlePos,
+ // behavior: "smooth",
+ // });
+ // }
} catch (e) {}
}
@@ -2546,41 +2555,41 @@ $(document).keydown((event) => {
if (currentInput == "") return;
event.preventDefault();
let currentWord = wordsList[currentWordIndex];
- if (config.mode == "time") {
- // let currentTop = Math.floor($($("#words .word")[currentWordIndex]).position().top);
- // let nextTop = Math.floor($($("#words .word")[currentWordIndex + 1]).position().top);
- let currentTop = Math.floor(
- document.querySelectorAll("#words .word")[currentWordIndex].offsetTop
- );
- let nextTop = Math.floor(
- document.querySelectorAll("#words .word")[currentWordIndex + 1]
- .offsetTop
- );
- if (nextTop > currentTop || activeWordJumped) {
- //last word of the line
- if (currentTestLine > 0) {
- let hideBound = currentTop;
- if (activeWordJumped) {
- hideBound = activeWordTopBeforeJump;
- }
- activeWordJumped = false;
-
- let toHide = [];
- let wordElements = $("#words .word");
- for (let i = 0; i < currentWordIndex + 1; i++) {
- if ($(wordElements[i]).hasClass("hidden")) continue;
- // let forWordTop = Math.floor($(wordElements[i]).position().top);
- let forWordTop = Math.floor(wordElements[i].offsetTop);
- if (forWordTop < hideBound) {
- // $($("#words .word")[i]).addClass("hidden");
- toHide.push($($("#words .word")[i]));
- }
- }
- toHide.forEach((el) => el.addClass("hidden"));
+ // if (config.mode == "time") {
+ // let currentTop = Math.floor($($("#words .word")[currentWordIndex]).position().top);
+ // let nextTop = Math.floor($($("#words .word")[currentWordIndex + 1]).position().top);
+ let currentTop = Math.floor(
+ document.querySelectorAll("#words .word")[currentWordIndex].offsetTop
+ );
+ let nextTop = Math.floor(
+ document.querySelectorAll("#words .word")[currentWordIndex + 1]
+ .offsetTop
+ );
+ if (nextTop > currentTop || activeWordJumped) {
+ //last word of the line
+ if (currentTestLine > 0) {
+ let hideBound = currentTop;
+ if (activeWordJumped) {
+ hideBound = activeWordTopBeforeJump;
}
- currentTestLine++;
+ activeWordJumped = false;
+
+ let toHide = [];
+ let wordElements = $("#words .word");
+ for (let i = 0; i < currentWordIndex + 1; i++) {
+ if ($(wordElements[i]).hasClass("hidden")) continue;
+ // let forWordTop = Math.floor($(wordElements[i]).position().top);
+ let forWordTop = Math.floor(wordElements[i].offsetTop);
+ if (forWordTop < hideBound) {
+ // $($("#words .word")[i]).addClass("hidden");
+ toHide.push($($("#words .word")[i]));
+ }
+ }
+ toHide.forEach((el) => el.addClass("hidden"));
}
+ currentTestLine++;
}
+ // }
if (config.blindMode) $("#words .word.active letter").addClass("correct");
document
.querySelector("#words .word.active")
@@ -2624,7 +2633,7 @@ $(document).keydown((event) => {
) {
updateTimer();
}
- if (config.mode == "time") {
+ if (config.mode == "time" || config.mode == "words") {
addWord();
}
}