diff --git a/frontend/src/ts/test/test-ui.ts b/frontend/src/ts/test/test-ui.ts index 71e3ca0fa80c..a8b5e2b456e9 100644 --- a/frontend/src/ts/test/test-ui.ts +++ b/frontend/src/ts/test/test-ui.ts @@ -81,8 +81,9 @@ const resultWordsHistoryEl = qsr(".pageTest #resultWordsHistory"); export let activeWordTop = 0; export let activeWordHeight = 0; -export let lineTransition = false; -export let currentTestLine = 0; +let wordTopBeforeLineJump = 0; +let lineTransition = false; +let currentTestLine = 0; export let resultCalculating = false; export function setResultCalculating(val: boolean): void { @@ -902,7 +903,14 @@ export async function updateWordLetters({ if (!Config.showAllLines) { const wordTopAfterUpdate = wordAtIndex.getOffsetTop(); if (wordTopAfterUpdate > activeWordTop) { - await lineJump(activeWordTop, true); + let jump = false; + if (!lineTransition) { + wordTopBeforeLineJump = wordTopAfterUpdate; + jump = true; + } else if (wordTopAfterUpdate > wordTopBeforeLineJump) { + jump = true; + } + if (jump) await lineJump(activeWordTop); } } } @@ -1163,19 +1171,13 @@ function removeTestElements(lastElementIndexToRemove: number): void { let currentLinesJumping = 0; -export async function lineJump( - currentTop: number, - force = false, -): Promise { +async function lineJump(currentTop: number, force = false): Promise { //last word of the line if (currentTestLine > 0 || force) { const hideBound = currentTop; const activeWordEl = getActiveWordElement(); - if (!activeWordEl) { - // resolve(); - return; - } + if (!activeWordEl) return; // index of the active word in all #words.children // (which contains .word/.newline/.beforeNewline/.afterNewline elements)