extended_video_player.js (1352B)
- import React from 'react';
 - import PropTypes from 'prop-types';
 - export default class ExtendedVideoPlayer extends React.PureComponent {
 - static propTypes = {
 - src: PropTypes.string.isRequired,
 - alt: PropTypes.string,
 - width: PropTypes.number,
 - height: PropTypes.number,
 - time: PropTypes.number,
 - controls: PropTypes.bool.isRequired,
 - muted: PropTypes.bool.isRequired,
 - onClick: PropTypes.func,
 - };
 - handleLoadedData = () => {
 - if (this.props.time) {
 - this.video.currentTime = this.props.time;
 - }
 - }
 - componentDidMount () {
 - this.video.addEventListener('loadeddata', this.handleLoadedData);
 - }
 - componentWillUnmount () {
 - this.video.removeEventListener('loadeddata', this.handleLoadedData);
 - }
 - setRef = (c) => {
 - this.video = c;
 - }
 - handleClick = e => {
 - e.stopPropagation();
 - const handler = this.props.onClick;
 - if (handler) handler();
 - }
 - render () {
 - const { src, muted, controls, alt } = this.props;
 - return (
 - <div className='extended-video-player'>
 - <video
 - ref={this.setRef}
 - src={src}
 - autoPlay
 - role='button'
 - tabIndex='0'
 - aria-label={alt}
 - muted={muted}
 - controls={controls}
 - loop={!controls}
 - onClick={this.handleClick}
 - />
 - </div>
 - );
 - }
 - }