mirror of https://github.com/Chocobozzz/PeerTube
Use video ratio for responsive embeds
parent
dfe98695d6
commit
91d7a3928f
|
@ -155,6 +155,7 @@ export class VideoBlockListComponent extends RestTable implements OnInit {
|
||||||
title: false,
|
title: false,
|
||||||
warningTitle: false
|
warningTitle: false
|
||||||
}),
|
}),
|
||||||
|
aspectRatio: entry.video.aspectRatio,
|
||||||
embedTitle: entry.video.name
|
embedTitle: entry.video.name
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,7 +11,7 @@ import { Video } from '@peertube/peertube-models'
|
||||||
templateUrl: './embed.component.html'
|
templateUrl: './embed.component.html'
|
||||||
})
|
})
|
||||||
export class EmbedComponent implements OnInit {
|
export class EmbedComponent implements OnInit {
|
||||||
@Input() video: Pick<Video, 'name' | 'uuid'>
|
@Input({ required: true }) video: Pick<Video, 'name' | 'uuid'> & Partial<Pick<Video, 'aspectRatio'>>
|
||||||
|
|
||||||
embedHTML: SafeHtml
|
embedHTML: SafeHtml
|
||||||
|
|
||||||
|
@ -27,7 +27,8 @@ export class EmbedComponent implements OnInit {
|
||||||
title: false,
|
title: false,
|
||||||
warningTitle: false
|
warningTitle: false
|
||||||
}),
|
}),
|
||||||
embedTitle: this.video.name
|
embedTitle: this.video.name,
|
||||||
|
aspectRatio: this.video.aspectRatio
|
||||||
})
|
})
|
||||||
|
|
||||||
this.embedHTML = this.sanitizer.bypassSecurityTrustHtml(html)
|
this.embedHTML = this.sanitizer.bypassSecurityTrustHtml(html)
|
||||||
|
|
|
@ -158,7 +158,7 @@ export class VideoShareComponent {
|
||||||
const { responsive } = options
|
const { responsive } = options
|
||||||
return this.hooks.wrapFun(
|
return this.hooks.wrapFun(
|
||||||
buildVideoOrPlaylistEmbed,
|
buildVideoOrPlaylistEmbed,
|
||||||
{ embedUrl: await this.getVideoEmbedUrl(), embedTitle: this.video.name, responsive },
|
{ embedUrl: await this.getVideoEmbedUrl(), embedTitle: this.video.name, responsive, aspectRatio: this.video.aspectRatio },
|
||||||
'video-watch',
|
'video-watch',
|
||||||
'filter:share.video-embed-code.build.params',
|
'filter:share.video-embed-code.build.params',
|
||||||
'filter:share.video-embed-code.build.result'
|
'filter:share.video-embed-code.build.result'
|
||||||
|
@ -193,7 +193,12 @@ export class VideoShareComponent {
|
||||||
const { responsive } = options
|
const { responsive } = options
|
||||||
return this.hooks.wrapFun(
|
return this.hooks.wrapFun(
|
||||||
buildVideoOrPlaylistEmbed,
|
buildVideoOrPlaylistEmbed,
|
||||||
{ embedUrl: await this.getPlaylistEmbedUrl(), embedTitle: this.playlist.displayName, responsive },
|
{
|
||||||
|
embedUrl: await this.getPlaylistEmbedUrl(),
|
||||||
|
embedTitle: this.playlist.displayName,
|
||||||
|
responsive,
|
||||||
|
aspectRatio: this.video.aspectRatio
|
||||||
|
},
|
||||||
'video-watch',
|
'video-watch',
|
||||||
'filter:share.video-playlist-embed-code.build.params',
|
'filter:share.video-playlist-embed-code.build.params',
|
||||||
'filter:share.video-playlist-embed-code.build.result'
|
'filter:share.video-playlist-embed-code.build.result'
|
||||||
|
|
|
@ -3,9 +3,10 @@ import { HTMLServerConfig, Video, VideoPrivacy, VideoPrivacyType } from '@peertu
|
||||||
function buildVideoOrPlaylistEmbed (options: {
|
function buildVideoOrPlaylistEmbed (options: {
|
||||||
embedUrl: string
|
embedUrl: string
|
||||||
embedTitle: string
|
embedTitle: string
|
||||||
|
aspectRatio?: number
|
||||||
responsive?: boolean
|
responsive?: boolean
|
||||||
}) {
|
}) {
|
||||||
const { embedUrl, embedTitle, responsive = false } = options
|
const { embedUrl, embedTitle, aspectRatio, responsive = false } = options
|
||||||
|
|
||||||
const iframe = document.createElement('iframe')
|
const iframe = document.createElement('iframe')
|
||||||
|
|
||||||
|
@ -21,7 +22,9 @@ function buildVideoOrPlaylistEmbed (options: {
|
||||||
const wrapper = document.createElement('div')
|
const wrapper = document.createElement('div')
|
||||||
|
|
||||||
wrapper.style.position = 'relative'
|
wrapper.style.position = 'relative'
|
||||||
wrapper.style.paddingTop = '56.25%'
|
wrapper.style.paddingTop = aspectRatio
|
||||||
|
? (1 / aspectRatio * 100).toFixed(2) + '%'
|
||||||
|
: '56.25%'
|
||||||
|
|
||||||
iframe.style.position = 'absolute'
|
iframe.style.position = 'absolute'
|
||||||
iframe.style.inset = '0'
|
iframe.style.inset = '0'
|
||||||
|
|
Loading…
Reference in New Issue