blakeblackshear.frigate/web/src/components/VideoPlayer.jsx

47 lines
1.0 KiB
React
Raw Normal View History

2021-05-28 19:13:48 +02:00
import { h, Component } from 'preact';
import videojs from 'video.js';
import 'videojs-playlist';
import 'video.js/dist/video-js.css';
const defaultOptions = {
controls: true,
fluid: true,
};
export default class VideoPlayer extends Component {
componentDidMount() {
const { options, onReady = () => {} } = this.props;
const videoJsOptions = {
...defaultOptions,
...options,
};
this.player = videojs(this.videoNode, videoJsOptions, function onPlayerReady() {
onReady(this);
});
}
componentWillUnmount() {
const { onDispose = () => {} } = this.props;
2021-05-28 19:13:48 +02:00
if (this.player) {
this.player.dispose();
onDispose();
2021-05-28 19:13:48 +02:00
}
}
// shouldComponentUpdate() {
// return false;
// }
2021-05-28 19:13:48 +02:00
render() {
2021-06-02 08:41:26 +02:00
const { style, children } = this.props;
2021-05-28 19:13:48 +02:00
return (
<div style={style}>
<div data-vjs-player>
2021-06-02 08:41:26 +02:00
<video ref={(node) => (this.videoNode = node)} className="video-js vjs-default-skin" controls playsinline />
{children}
2021-05-28 19:13:48 +02:00
</div>
</div>
);
}
}