import React, { Component } from 'react'
import { Route } from 'react-router-dom'
import { bindActionCreators } from 'redux'
import { connect } from 'react-redux'
import { floatLT, floatLTE } from 'app/utils'
import ParagraphForm from '../components/paragraph.form'
import { MEDIA_TYPES } from 'app/constants'
class ParagraphList extends Component {
state = {
currentParagraph: -1,
currentAnnotation: -1,
}
componentDidUpdate(prevProps) {
if (this.props.audio.play_ts === prevProps.audio.play_ts) return
this.setCurrentParagraph()
}
setCurrentParagraph() {
const { play_ts } = this.props.audio
const insideParagraph = this.props.paragraphs.some(paragraph => {
if (floatLTE(paragraph.start_ts, play_ts) && floatLT(play_ts, paragraph.end_ts)) {
this.setCurrentAnnotation(paragraph, play_ts)
return true
}
return false
})
if (!insideParagraph) {
this.setState({
currentParagraph: -1,
currentAnnotation: -1,
})
}
}
setCurrentAnnotation(paragraph, play_ts) {
const { id: currentParagraph, annotations } = paragraph
let currentAnnotation
let annotation
let i = 0
let len = annotations.length
for (let i = 0; i < len - 1; i++) {
if (floatLT(play_ts, annotations[i+1].start_ts)) {
currentAnnotation = annotations[i].id
break
}
}
if (!currentAnnotation) {
currentAnnotation = annotations[len-1].id
}
this.setState({ currentParagraph, currentAnnotation })
}
render() {
const {
paragraphs, media,
paragraphElementLookup, selectedParagraph,
onAnnotationClick, onParagraphDoubleClick,
} = this.props
const { currentParagraph, currentAnnotation } = this.state
return paragraphs.map(paragraph => {
if (selectedParagraph && selectedParagraph.id === paragraph.id) {
paragraph = selectedParagraph
}
if (paragraph.type in paragraphElementLookup) {
const ParagraphElement = paragraphElementLookup[paragraph.type]
return (