Reduce bundle sizes
[oweals/peertube.git] / client / src / assets / player / peertube-link-button.ts
1 import * as videojs from 'video.js'
2 import { VideoJSComponentInterface, videojsUntyped } from './peertube-videojs-typings'
3 import { buildVideoLink } from './utils'
4
5 const Button: VideoJSComponentInterface = videojsUntyped.getComponent('Button')
6 class PeerTubeLinkButton extends Button {
7
8   constructor (player: videojs.Player, options) {
9     super(player, options)
10   }
11
12   createEl () {
13     return this.buildElement()
14   }
15
16   updateHref () {
17     this.el().setAttribute('href', buildVideoLink(this.player().currentTime()))
18   }
19
20   handleClick () {
21     this.player_.pause()
22   }
23
24   private buildElement () {
25     const el = videojsUntyped.dom.createEl('a', {
26       href: buildVideoLink(),
27       innerHTML: 'PeerTube',
28       title: this.player_.localize('Go to the video page'),
29       className: 'vjs-peertube-link',
30       target: '_blank'
31     })
32
33     el.addEventListener('mouseenter', () => this.updateHref())
34
35     return el
36   }
37 }
38 Button.registerComponent('PeerTubeLinkButton', PeerTubeLinkButton)