46 lines
1.5 KiB
JavaScript
46 lines
1.5 KiB
JavaScript
// ****************************************************************************
|
|
// LbryVolumeBarClass
|
|
// ****************************************************************************
|
|
|
|
import videojs from 'video.js';
|
|
|
|
const isDev = process.env.NODE_ENV !== 'production';
|
|
|
|
const VIDEOJS_CONTROL_BAR_CLASS = 'ControlBar';
|
|
const VIDEOJS_VOLUME_PANEL_CLASS = 'VolumePanel';
|
|
const VIDEOJS_VOLUME_CONTROL_CLASS = 'VolumeControl';
|
|
const VIDEOJS_VOLUME_BAR_CLASS = 'VolumeBar';
|
|
|
|
class LbryVolumeBarClass extends videojs.getComponent(VIDEOJS_VOLUME_BAR_CLASS) {
|
|
constructor(player, options = {}) {
|
|
super(player, options);
|
|
}
|
|
|
|
static replaceExisting(player) {
|
|
try {
|
|
const volumeControl = player
|
|
.getChild(VIDEOJS_CONTROL_BAR_CLASS)
|
|
.getChild(VIDEOJS_VOLUME_PANEL_CLASS)
|
|
.getChild(VIDEOJS_VOLUME_CONTROL_CLASS);
|
|
const volumeBar = volumeControl.getChild(VIDEOJS_VOLUME_BAR_CLASS);
|
|
volumeControl.removeChild(volumeBar);
|
|
volumeControl.addChild(new LbryVolumeBarClass(player));
|
|
} catch (error) {
|
|
// In case it slips in 'Production', the original volume bar will be used and the site should still be working
|
|
// (just not exactly the way we want).
|
|
if (isDev) throw Error('\n\nvideojs.jsx: Volume Panel hierarchy changed?\n\n' + error);
|
|
}
|
|
}
|
|
|
|
handleMouseDown(event) {
|
|
super.handleMouseDown(event);
|
|
event.stopPropagation();
|
|
}
|
|
|
|
handleMouseMove(event) {
|
|
super.handleMouseMove(event);
|
|
event.stopPropagation();
|
|
}
|
|
}
|
|
|
|
export default LbryVolumeBarClass;
|