2019-01-23 15:36:45 +01:00
|
|
|
import { buildVideoLink } from '../utils'
|
2020-04-17 11:20:12 +02:00
|
|
|
import videojs from 'video.js/dist/alt/video.core.js'
|
2018-03-30 17:40:00 +02:00
|
|
|
|
2020-01-28 17:29:50 +01:00
|
|
|
const Button = videojs.getComponent('Button')
|
2018-03-30 17:40:00 +02:00
|
|
|
class PeerTubeLinkButton extends Button {
|
|
|
|
|
2020-04-17 11:20:12 +02:00
|
|
|
constructor (player: videojs.Player, options?: videojs.ComponentOptions) {
|
2018-05-30 17:10:00 +02:00
|
|
|
super(player, options)
|
|
|
|
}
|
|
|
|
|
2018-03-30 17:40:00 +02:00
|
|
|
createEl () {
|
2018-05-28 11:35:18 +02:00
|
|
|
return this.buildElement()
|
|
|
|
}
|
|
|
|
|
|
|
|
updateHref () {
|
2019-06-12 12:40:24 +02:00
|
|
|
this.el().setAttribute('href', buildVideoLink({ startTime: this.player().currentTime() }))
|
2018-05-28 11:35:18 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
handleClick () {
|
2020-01-28 17:29:50 +01:00
|
|
|
this.player().pause()
|
2018-05-28 11:35:18 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
private buildElement () {
|
2020-01-28 17:29:50 +01:00
|
|
|
const el = videojs.dom.createEl('a', {
|
2018-05-30 17:10:00 +02:00
|
|
|
href: buildVideoLink(),
|
2018-03-30 17:40:00 +02:00
|
|
|
innerHTML: 'PeerTube',
|
2020-01-28 17:29:50 +01:00
|
|
|
title: this.player().localize('Go to the video page'),
|
2018-03-30 17:40:00 +02:00
|
|
|
className: 'vjs-peertube-link',
|
|
|
|
target: '_blank'
|
|
|
|
})
|
2018-05-28 11:35:18 +02:00
|
|
|
|
|
|
|
el.addEventListener('mouseenter', () => this.updateHref())
|
|
|
|
|
2020-01-28 17:29:50 +01:00
|
|
|
return el as HTMLButtonElement
|
2018-03-30 17:40:00 +02:00
|
|
|
}
|
|
|
|
}
|
2020-01-28 17:29:50 +01:00
|
|
|
|
|
|
|
videojs.registerComponent('PeerTubeLinkButton', PeerTubeLinkButton)
|