diff options
author | Chocobozzz <me@florianbigard.com> | 2022-03-08 16:26:30 +0100 |
---|---|---|
committer | Chocobozzz <me@florianbigard.com> | 2022-03-08 16:36:08 +0100 |
commit | 01dd04cd5ab7b55d2a9af7d0ebf405bee9579b09 (patch) | |
tree | b7096d36dbf9607ae1977685e3088a340902a3f8 /client/src/assets/player/dock | |
parent | 383386d8e25b5734f8b7ea7277c1a1a118cc488a (diff) | |
download | PeerTube-01dd04cd5ab7b55d2a9af7d0ebf405bee9579b09.tar.gz PeerTube-01dd04cd5ab7b55d2a9af7d0ebf405bee9579b09.tar.zst PeerTube-01dd04cd5ab7b55d2a9af7d0ebf405bee9579b09.zip |
Display avatar in embed poster
Diffstat (limited to 'client/src/assets/player/dock')
-rw-r--r-- | client/src/assets/player/dock/peertube-dock-component.ts | 65 | ||||
-rw-r--r-- | client/src/assets/player/dock/peertube-dock-plugin.ts | 25 |
2 files changed, 90 insertions, 0 deletions
diff --git a/client/src/assets/player/dock/peertube-dock-component.ts b/client/src/assets/player/dock/peertube-dock-component.ts new file mode 100644 index 000000000..183c7a00f --- /dev/null +++ b/client/src/assets/player/dock/peertube-dock-component.ts | |||
@@ -0,0 +1,65 @@ | |||
1 | import videojs from 'video.js' | ||
2 | |||
3 | const Component = videojs.getComponent('Component') | ||
4 | |||
5 | export type PeerTubeDockComponentOptions = { | ||
6 | title?: string | ||
7 | description?: string | ||
8 | avatarUrl?: string | ||
9 | } | ||
10 | |||
11 | class PeerTubeDockComponent extends Component { | ||
12 | |||
13 | createEl () { | ||
14 | const options = this.options_ as PeerTubeDockComponentOptions | ||
15 | |||
16 | const el = super.createEl('div', { | ||
17 | className: 'peertube-dock' | ||
18 | }) | ||
19 | |||
20 | if (options.avatarUrl) { | ||
21 | const avatar = videojs.dom.createEl('img', { | ||
22 | className: 'peertube-dock-avatar', | ||
23 | src: options.avatarUrl | ||
24 | }) | ||
25 | |||
26 | el.appendChild(avatar) | ||
27 | } | ||
28 | |||
29 | const elWrapperTitleDescription = super.createEl('div', { | ||
30 | className: 'peertube-dock-title-description' | ||
31 | }) | ||
32 | |||
33 | if (options.title) { | ||
34 | const title = videojs.dom.createEl('div', { | ||
35 | className: 'peertube-dock-title', | ||
36 | title: options.title, | ||
37 | innerHTML: options.title | ||
38 | }) | ||
39 | |||
40 | elWrapperTitleDescription.appendChild(title) | ||
41 | } | ||
42 | |||
43 | if (options.description) { | ||
44 | const description = videojs.dom.createEl('div', { | ||
45 | className: 'peertube-dock-description', | ||
46 | title: options.description, | ||
47 | innerHTML: options.description | ||
48 | }) | ||
49 | |||
50 | elWrapperTitleDescription.appendChild(description) | ||
51 | } | ||
52 | |||
53 | if (options.title || options.description) { | ||
54 | el.appendChild(elWrapperTitleDescription) | ||
55 | } | ||
56 | |||
57 | return el | ||
58 | } | ||
59 | } | ||
60 | |||
61 | videojs.registerComponent('PeerTubeDockComponent', PeerTubeDockComponent) | ||
62 | |||
63 | export { | ||
64 | PeerTubeDockComponent | ||
65 | } | ||
diff --git a/client/src/assets/player/dock/peertube-dock-plugin.ts b/client/src/assets/player/dock/peertube-dock-plugin.ts new file mode 100644 index 000000000..245981692 --- /dev/null +++ b/client/src/assets/player/dock/peertube-dock-plugin.ts | |||
@@ -0,0 +1,25 @@ | |||
1 | import videojs from 'video.js' | ||
2 | import { PeerTubeDockComponent } from './peertube-dock-component' | ||
3 | |||
4 | const Plugin = videojs.getPlugin('plugin') | ||
5 | |||
6 | export type PeerTubeDockPluginOptions = { | ||
7 | title?: string | ||
8 | description?: string | ||
9 | avatarUrl?: string | ||
10 | } | ||
11 | |||
12 | class PeerTubeDockPlugin extends Plugin { | ||
13 | constructor (player: videojs.Player, options: videojs.PlayerOptions & PeerTubeDockPluginOptions) { | ||
14 | super(player, options) | ||
15 | |||
16 | this.player.addClass('peertube-dock') | ||
17 | |||
18 | this.player.ready(() => { | ||
19 | this.player.addChild('PeerTubeDockComponent', options) as PeerTubeDockComponent | ||
20 | }) | ||
21 | } | ||
22 | } | ||
23 | |||
24 | videojs.registerPlugin('peertubeDock', PeerTubeDockPlugin) | ||
25 | export { PeerTubeDockPlugin } | ||