-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.js
95 lines (85 loc) · 2.84 KB
/
main.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
window.onload = () => {
var readNowBtn = document.getElementById('readNowBtn');
var displayingWord = document.getElementById('displayingWord');
var readerContainer = document.getElementById('readerContainer');
var textToReadTextarea = document.getElementById('textToReadTextarea');
var secondPerWord = document.getElementById('secondPerWord');
var secondPerWordValue = document.getElementById('secondPerWordValue');
var interval = null;
secondPerWordValue.innerText = secondPerWord.value + "ms/word";
secondPerWord.addEventListener("mousemove", ()=>{
secondPerWordValue.innerText = secondPerWord.value + "ms/word";
});
readNowBtn.addEventListener('click', () => {
textToRead = textToReadTextarea.value.replaceAll("\n", " ").split(' ');
lastReadIndex = 0;
if (interval) {
clearInterval(interval);
interval = null;
}
readerContainer.requestFullscreen();
readerContainer.style.display = "block";
if (textToRead.length > 0) {
scrollToReadingBox();
countDownBeforeStart(displayingWord).then((done) => {
interval = play(textToRead, displayingWord, lastReadIndex);
readerContainer.addEventListener('click', () => {
if (interval) {
clearInterval(interval);
interval = null;
} else {
interval = play(textToRead, displayingWord, lastReadIndex);
}
});
});
}
});
function play(textToRead, displayingWord, lastReadIndex) {
let interval = setInterval(() => {
if (lastReadIndex == textToRead.length) {
clearInterval(interval);
displayingWord.innerHTML = "<blink class='text-success'>The end!</blink>";
// readerContainer.style.display = "none";
setTimeout(() => {
document.documentElement.scroll({
top: 0,
behavior: 'smooth'
});
document.documentElement.scroll({
top: 0,
behavior: 'smooth'
});
}, 5000);
} else {
displayingWord.innerText = textToRead[lastReadIndex++];
}
}, secondPerWord.value);
return interval;
}
function scrollToReadingBox() {
document.documentElement.scroll({
top: document.documentElement.offsetHeight + 100,
behavior: 'smooth'
});
document.documentElement.scroll({
top: document.body.offsetHeight + 100,
behavior: 'smooth'
});
}
function countDownBeforeStart(displayingWord) {
return new Promise((resolve, reject) => {
let counter = 2;
let interval = setInterval(() => {
if (counter === 0) {
displayingWord.innerText = 'Go';
clearInterval(interval);
setTimeout(() => {
resolve(1);
}, 2000);
} else {
displayingWord.innerHTML = "<span class='text-danger'>"+ counter-- +"</span>";
}
}, 1000);
});
}
};