1 import videojs from 'video.js'
2 import { buildVideoLink, decorateVideoLink } from '@shared/core-utils'
3 import { PeerTubeLinkButtonOptions } from '../../types'
5 const Button = videojs.getComponent('Button')
6 class PeerTubeLinkButton extends Button {
8 private instanceName: string
10 constructor (player: videojs.Player, options?: PeerTubeLinkButtonOptions) {
11 super(player, options as any)
15 return this.buildElement()
19 this.el().setAttribute('href', this.buildLink())
26 private buildElement () {
27 const el = videojs.dom.createEl('a', {
28 href: this.buildLink(),
29 innerHTML: (this.options_ as PeerTubeLinkButtonOptions).instanceName,
30 title: this.player().localize('Video page (new window)'),
31 className: 'vjs-peertube-link',
35 el.addEventListener('mouseenter', () => this.updateHref())
37 return el as HTMLButtonElement
40 private buildLink () {
41 const url = buildVideoLink({ shortUUID: (this.options_ as PeerTubeLinkButtonOptions).shortUUID })
43 return decorateVideoLink({ url, startTime: this.player().currentTime() })
47 videojs.registerComponent('PeerTubeLinkButton', PeerTubeLinkButton)