]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blob - client/src/assets/player/shared/control-bar/peertube-link-button.ts
Fix button link on mobile
[github/Chocobozzz/PeerTube.git] / client / src / assets / player / shared / control-bar / peertube-link-button.ts
1 import videojs from 'video.js'
2 import { buildVideoLink, decorateVideoLink } from '@shared/core-utils'
3 import { PeerTubeLinkButtonOptions } from '../../types'
4
5 const Component = videojs.getComponent('Component')
6 class PeerTubeLinkButton extends Component {
7
8 constructor (player: videojs.Player, options?: PeerTubeLinkButtonOptions) {
9 super(player, options as any)
10 }
11
12 createEl () {
13 return this.buildElement()
14 }
15
16 updateHref () {
17 this.el().setAttribute('href', this.buildLink())
18 }
19
20 private buildElement () {
21 const el = videojs.dom.createEl('a', {
22 href: this.buildLink(),
23 innerHTML: (this.options_ as PeerTubeLinkButtonOptions).instanceName,
24 title: this.player().localize('Video page (new window)'),
25 className: 'vjs-peertube-link',
26 target: '_blank'
27 })
28
29 el.addEventListener('mouseenter', () => this.updateHref())
30 el.addEventListener('click', () => this.player().pause())
31
32 return el as HTMLButtonElement
33 }
34
35 private buildLink () {
36 const url = buildVideoLink({ shortUUID: (this.options_ as PeerTubeLinkButtonOptions).shortUUID })
37
38 return decorateVideoLink({ url, startTime: this.player().currentTime() })
39 }
40 }
41
42 videojs.registerComponent('PeerTubeLinkButton', PeerTubeLinkButton)