1
0
Fork 0
mirror of https://github.com/jellyfin/jellyfin-web synced 2025-03-30 19:56:21 +00:00

Merge branch 'master' into return-of-the-scrollbar

This commit is contained in:
Dmitry Lyzo 2020-11-20 09:28:55 +03:00 committed by GitHub
commit c2b1d02a33
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
321 changed files with 7572 additions and 6563 deletions

View file

@ -1,7 +1,7 @@
import events from 'events';
import browser from 'browser';
import appRouter from 'appRouter';
import loading from 'loading';
import { Events } from 'jellyfin-apiclient';
import browser from '../../scripts/browser';
import { appRouter } from '../../components/appRouter';
import loading from '../../components/loading/loading';
/* globals YT */
@ -24,7 +24,7 @@ function createMediaElement(instance, options) {
const dlg = document.querySelector('.youtubePlayerContainer');
if (!dlg) {
import('css!./style').then(() => {
import('./style.css').then(() => {
loading.show();
const dlg = document.createElement('div');
@ -93,7 +93,7 @@ function onEndedInternal(instance) {
src: instance._currentSrc
};
events.trigger(instance, 'stopped', [stopInfo]);
Events.trigger(instance, 'stopped', [stopInfo]);
instance._currentSrc = null;
if (instance.currentYoutubePlayer) {
@ -108,7 +108,7 @@ function onPlayerReady(event) {
}
function onTimeUpdate(e) {
events.trigger(this, 'timeupdate');
Events.trigger(this, 'timeupdate');
}
function onPlaying(instance, playOptions, resolve) {
@ -127,68 +127,64 @@ function onPlaying(instance, playOptions, resolve) {
instance.videoDialog.classList.remove('onTop');
}
import('loading').then(({default: loading}) => {
loading.hide();
});
loading.hide();
}
}
function setCurrentSrc(instance, elem, options) {
return new Promise(function (resolve, reject) {
import('queryString').then(({default: queryString}) => {
instance._currentSrc = options.url;
const params = queryString.parse(options.url.split('?')[1]);
// 3. This function creates an <iframe> (and YouTube player)
// after the API code downloads.
window.onYouTubeIframeAPIReady = function () {
instance.currentYoutubePlayer = new YT.Player('player', {
height: instance.videoDialog.offsetHeight,
width: instance.videoDialog.offsetWidth,
videoId: params.v,
events: {
'onReady': onPlayerReady,
'onStateChange': function (event) {
if (event.data === YT.PlayerState.PLAYING) {
onPlaying(instance, options, resolve);
} else if (event.data === YT.PlayerState.ENDED) {
onEndedInternal(instance);
} else if (event.data === YT.PlayerState.PAUSED) {
events.trigger(instance, 'pause');
}
instance._currentSrc = options.url;
const params = new URLSearchParams(options.url.split('?')[1]); /* eslint-disable-line compat/compat */
// 3. This function creates an <iframe> (and YouTube player)
// after the API code downloads.
window.onYouTubeIframeAPIReady = function () {
instance.currentYoutubePlayer = new YT.Player('player', {
height: instance.videoDialog.offsetHeight,
width: instance.videoDialog.offsetWidth,
videoId: params.get('v'),
events: {
'onReady': onPlayerReady,
'onStateChange': function (event) {
if (event.data === YT.PlayerState.PLAYING) {
onPlaying(instance, options, resolve);
} else if (event.data === YT.PlayerState.ENDED) {
onEndedInternal(instance);
} else if (event.data === YT.PlayerState.PAUSED) {
Events.trigger(instance, 'pause');
}
},
playerVars: {
controls: 0,
enablejsapi: 1,
modestbranding: 1,
rel: 0,
showinfo: 0,
fs: 0,
playsinline: 1
}
});
let resizeListener = instance.resizeListener;
if (resizeListener) {
window.removeEventListener('resize', resizeListener);
window.addEventListener('resize', resizeListener);
} else {
resizeListener = instance.resizeListener = onVideoResize.bind(instance);
window.addEventListener('resize', resizeListener);
},
playerVars: {
controls: 0,
enablejsapi: 1,
modestbranding: 1,
rel: 0,
showinfo: 0,
fs: 0,
playsinline: 1
}
window.removeEventListener('orientationChange', resizeListener);
window.addEventListener('orientationChange', resizeListener);
};
});
if (!window.YT) {
const tag = document.createElement('script');
tag.src = 'https://www.youtube.com/iframe_api';
const firstScriptTag = document.getElementsByTagName('script')[0];
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
let resizeListener = instance.resizeListener;
if (resizeListener) {
window.removeEventListener('resize', resizeListener);
window.addEventListener('resize', resizeListener);
} else {
window.onYouTubeIframeAPIReady();
resizeListener = instance.resizeListener = onVideoResize.bind(instance);
window.addEventListener('resize', resizeListener);
}
});
window.removeEventListener('orientationChange', resizeListener);
window.addEventListener('orientationChange', resizeListener);
};
if (!window.YT) {
const tag = document.createElement('script');
tag.src = 'https://www.youtube.com/iframe_api';
const firstScriptTag = document.getElementsByTagName('script')[0];
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
} else {
window.onYouTubeIframeAPIReady();
}
});
}
@ -292,7 +288,7 @@ class YoutubePlayer {
// This needs a delay before the youtube player will report the correct player state
setTimeout(function () {
events.trigger(instance, 'pause');
Events.trigger(instance, 'pause');
}, 200);
}
}
@ -306,7 +302,7 @@ class YoutubePlayer {
// This needs a delay before the youtube player will report the correct player state
setTimeout(function () {
events.trigger(instance, 'unpause');
Events.trigger(instance, 'unpause');
}, 200);
}
}