]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blame - client/src/assets/player/shared/control-bar/peertube-link-button.ts
Put instance name in embed button
[github/Chocobozzz/PeerTube.git] / client / src / assets / player / shared / control-bar / peertube-link-button.ts
CommitLineData
512decf3 1import videojs from 'video.js'
15a7eafb 2import { buildVideoLink, decorateVideoLink } from '@shared/core-utils'
57d65032 3import { PeerTubeLinkButtonOptions } from '../../types'
c6352f2c 4
f5fcd9f7 5const Button = videojs.getComponent('Button')
c6352f2c
C
6class PeerTubeLinkButton extends Button {
7
bd2b51be
C
8 private instanceName: string
9
9162fdd3
C
10 constructor (player: videojs.Player, options?: PeerTubeLinkButtonOptions) {
11 super(player, options as any)
960a11e8
C
12 }
13
c6352f2c 14 createEl () {
fc73684a
C
15 return this.buildElement()
16 }
17
18 updateHref () {
9162fdd3 19 this.el().setAttribute('href', this.buildLink())
fc73684a
C
20 }
21
22 handleClick () {
f5fcd9f7 23 this.player().pause()
fc73684a
C
24 }
25
26 private buildElement () {
f5fcd9f7 27 const el = videojs.dom.createEl('a', {
9162fdd3 28 href: this.buildLink(),
bd2b51be 29 innerHTML: (this.options_ as PeerTubeLinkButtonOptions).instanceName,
d6d951dd 30 title: this.player().localize('Video page (new window)'),
c6352f2c
C
31 className: 'vjs-peertube-link',
32 target: '_blank'
33 })
fc73684a
C
34
35 el.addEventListener('mouseenter', () => this.updateHref())
36
f5fcd9f7 37 return el as HTMLButtonElement
c6352f2c 38 }
9162fdd3
C
39
40 private buildLink () {
23ca2f7b 41 const url = buildVideoLink({ shortUUID: (this.options_ as PeerTubeLinkButtonOptions).shortUUID })
9162fdd3
C
42
43 return decorateVideoLink({ url, startTime: this.player().currentTime() })
44 }
c6352f2c 45}
f5fcd9f7
C
46
47videojs.registerComponent('PeerTubeLinkButton', PeerTubeLinkButton)