reader = async (ele, numWords = 999999) => {
let reading = true;
let readerix = 0;
let readerMillis = 2000;
let readerSpans = [];
let spans = Array.from(ele.children);
for (let i = 0; i < numWords; i++) {
if (mutable skipEpigraph) break;
await Promises.delay(readerMillis).then(() => {
let iOfLast = mod(readerix - numberOfVisibleWords, spans.length);
let lastCl = spans[iOfLast].classList;
if (lastCl.contains("visible")) {
lastCl.remove("visible");
readerSpans.shift();
}
let cl = spans[readerix].classList;
cl.add("visible");
readerSpans.push(spans[readerix].innerHTML);
readerMillis = timeToRead(spans[readerix].innerText);
readerix = ++readerix % spans.length;
return;
});
}
if (mutable skipEpigraph) {
mutable skipEpigraph = false;
return;
}
for (let i = numWords - numberOfVisibleWords; i < numWords; i++) {
await Promises.delay(readerMillis).then(() => {
spans[i].classList.remove("visible");
});
}
}