import videojs from 'video.js' import { isMobile } from '@root-helpers/web-browser' function getPauseBezel () { return `
` } function getPlayBezel () { return `
` } const Component = videojs.getComponent('Component') export class PauseBezel extends Component { container: HTMLDivElement private firstPlayDone = false private paused = false private playerPauseHandler: () => void private playerPlayHandler: () => void private videoChangeHandler: () => void constructor (player: videojs.Player, options?: videojs.ComponentOptions) { super(player, options) // Hide bezels on mobile since we already have our mobile overlay if (isMobile()) return this.playerPauseHandler = () => { if (player.seeking()) return this.paused = true if (player.ended()) return this.container.innerHTML = getPauseBezel() this.showBezel() } this.playerPlayHandler = () => { if (player.seeking() || !this.firstPlayDone || !this.paused) { this.firstPlayDone = true return } this.paused = false this.firstPlayDone = true this.container.innerHTML = getPlayBezel() this.showBezel() } this.videoChangeHandler = () => { this.firstPlayDone = false } player.on('video-change', () => this.videoChangeHandler) player.on('pause', this.playerPauseHandler) player.on('play', this.playerPlayHandler) } dispose () { if (this.playerPauseHandler) this.player().off('pause', this.playerPauseHandler) if (this.playerPlayHandler) this.player().off('play', this.playerPlayHandler) if (this.videoChangeHandler) this.player().off('video-change', this.videoChangeHandler) super.dispose() } createEl () { this.container = super.createEl('div', { className: 'vjs-bezels-content' }) as HTMLDivElement this.container.style.display = 'none' return this.container } showBezel () { this.container.style.display = 'inherit' setTimeout(() => { this.container.style.display = 'none' }, 500) // matching the animation duration } } videojs.registerComponent('PauseBezel', PauseBezel)