PeerTube/client/src/assets/player/shared/dock/peertube-dock-component.ts

69 lines
1.7 KiB
TypeScript

import videojs from 'video.js'
const Component = videojs.getComponent('Component')
export type PeerTubeDockComponentOptions = {
title?: string
description?: string
avatarUrl?: string
}
class PeerTubeDockComponent extends Component {
options_: videojs.ComponentOptions & PeerTubeDockComponentOptions
// eslint-disable-next-line @typescript-eslint/no-useless-constructor
constructor (player: videojs.Player, options: videojs.ComponentOptions & PeerTubeDockComponentOptions) {
super(player, options)
}
createEl () {
const el = super.createEl('div', { className: 'peertube-dock' })
if (this.options_.avatarUrl) {
const avatar = videojs.dom.createEl('img', {
className: 'peertube-dock-avatar',
src: this.options_.avatarUrl
})
el.appendChild(avatar)
}
const elWrapperTitleDescription = super.createEl('div', {
className: 'peertube-dock-title-description'
})
if (this.options_.title) {
const title = videojs.dom.createEl('div', {
className: 'peertube-dock-title',
title: this.options_.title,
innerText: this.options_.title
})
elWrapperTitleDescription.appendChild(title)
}
if (this.options_.description) {
const description = videojs.dom.createEl('div', {
className: 'peertube-dock-description',
title: this.options_.description,
innerText: this.options_.description
})
elWrapperTitleDescription.appendChild(description)
}
if (this.options_.title || this.options_.description) {
el.appendChild(elWrapperTitleDescription)
}
return el
}
}
videojs.registerComponent('PeerTubeDockComponent', PeerTubeDockComponent)
export {
PeerTubeDockComponent
}