import React, { Component } from 'react' import { connect } from 'react-redux' import actions from 'app/actions' import ParagraphForm from '../components/paragraph.form' import ParagraphList from '../components/paragraph.list' import { paragraphElementLookup } from '../components/paragraphTypes' class ParagraphEditor extends Component { state = { selectedParagraph: null, selectedParagraphOffset: 0, } constructor(props) { super(props) this.handleAnnotationClick = this.handleAnnotationClick.bind(this) this.handleParagraphDoubleClick = this.handleParagraphDoubleClick.bind(this) this.handleCloseParagraphForm = this.handleCloseParagraphForm.bind(this) this.updateSelectedParagraph = this.updateSelectedParagraph.bind(this) } componentDidMount() { actions.transcript.buildAllParagraphs() } componentDidUpdate(prevProps) { if (this.props.paragraph !== prevProps.paragraph) { actions.transcript.buildAllParagraphs() } } handleAnnotationClick(e, paragraph, annotation){ actions.audio.seek(annotation.start_ts) } handleParagraphDoubleClick(e, paragraph) { let paragraphNode = e.target if (!paragraphNode.classList.contains('paragraph')) { paragraphNode = paragraphNode.parentNode } this.setState({ selectedParagraph: { ...paragraph }, selectedParagraphOffset: paragraphNode.offsetTop }) } updateSelectedParagraph(selectedParagraph) { this.setState({ selectedParagraph }) } handleCloseParagraphForm() { this.setState({ selectedParagraph: null }) } render() { const { paragraphs } = this.props const { selectedParagraph, selectedParagraphOffset } = this.state return (
{selectedParagraph && }
) } } const mapStateToProps = state => ({ paragraph: state.paragraph.index, paragraphs: state.paragraph.paragraphs, }) export default connect(mapStateToProps)(ParagraphEditor)