68 lines
1.6 KiB
JavaScript
68 lines
1.6 KiB
JavaScript
import { Chapter } from './src/Chapter.js'
|
|
import { Player } from './src/Player.js'
|
|
|
|
import './components/rsvp-word.js'
|
|
|
|
const inputText = document.getElementById('input')
|
|
const output = document.getElementById('output')
|
|
|
|
const prevSentenceButton = document.getElementById('prevSentence')
|
|
const prevWordButton = document.getElementById('prevWord')
|
|
const nextWordButton = document.getElementById('nextWord')
|
|
const nextSentenceButton = document.getElementById('nextSentence')
|
|
|
|
const playButton = document.getElementById('play')
|
|
|
|
let chapter = new Chapter(inputText.value, 10)
|
|
let player = new Player()
|
|
|
|
function updateUI() {
|
|
prevSentenceButton.disabled = !chapter.hasPrevSentence()
|
|
prevWordButton.disabled = !chapter.hasPrevWord()
|
|
nextWordButton.disabled = !chapter.hasNextWord()
|
|
nextSentenceButton.disabled = !chapter.hasNextSentence()
|
|
|
|
playButton.innerText = player.playing ? 'pause' : 'start'
|
|
|
|
output.setAttribute('word', chapter.currentSegment)
|
|
}
|
|
|
|
function tick() {
|
|
if (!chapter.hasNext()) {
|
|
player.stop()
|
|
} else {
|
|
chapter.next()
|
|
}
|
|
updateUI()
|
|
}
|
|
|
|
function handleClick(e) {
|
|
switch (e.target.getAttribute('action')) {
|
|
case 'load':
|
|
chapter = new Chapter(inputText.value, 10)
|
|
break
|
|
case 'prevSentence':
|
|
chapter.prevSentence()
|
|
break
|
|
case 'nextSentence':
|
|
chapter.nextSentence()
|
|
break
|
|
case 'prevWord':
|
|
chapter.prevWord()
|
|
break
|
|
case 'nextWord':
|
|
chapter.nextWord()
|
|
break
|
|
case 'play-pause':
|
|
player.toggle()
|
|
break
|
|
}
|
|
updateUI()
|
|
}
|
|
|
|
for (let button of document.getElementsByClassName('action')) {
|
|
button.onclick = handleClick
|
|
}
|
|
player.subscribe('main', tick)
|
|
updateUI()
|