import React, { Component } from 'react' import { generateTransform, generateVideoStyle } from 'app/views/tile/tile.utils' import { timestampToSeconds } from 'app/utils' export default class TileVideo extends Component { constructor(props) { super(props) this.videoRef = React.createRef() this.handleTimeUpdate = this.handleTimeUpdate.bind(this) this.handleEnded = this.handleEnded.bind(this) } componentDidMount() { this.videoRef.current.addEventListener('ended', this.handleEnded) this.videoRef.current.addEventListener('timeupdate', this.handleTimeUpdate) } componentWillUnmount() { this.videoRef.current.removeEventListener('timeupdate', this.handleTimeUpdate) this.videoRef.current.removeEventListener('ended', this.handleEnded) } handleTimeUpdate() { if (this.props.tile.settings.loop && this.props.tile.settings.loop_section) { const loop_start = timestampToSeconds(this.props.tile.settings.loop_start) || 0 const loop_end = timestampToSeconds(this.props.tile.settings.loop_end) || this.videoRef.current.duration if (this.videoRef.current.currentTime > loop_end) { this.videoRef.current.currentTime = loop_start } } } handleEnded() { this.props.onPlaybackEnded(this.props.tile) if (this.props.tile.settings.loop && this.props.tile.settings.loop_section) { const loop_start = timestampToSeconds(this.props.tile.settings.loop_start) || 0 this.videoRef.current.currentTime = loop_start } } render() { let { tile, bounds, box, viewing, onMouseDown, onDoubleClick } = this.props // console.log(tile) const style = { transform: generateTransform(tile, box), opacity: tile.settings.opacity, } let className = ['tile', tile.type].join(' ') if (tile.target_page_id || (viewing && tile.href)) { className += ' ' + (tile.settings.cursor || 'hand_up') } // console.log(tile.settings) if (!tile.settings.url) { return null } className += ' ' + tile.settings.align return (
) } }