mirror of
https://github.com/jellyfin/jellyfin-web
synced 2025-03-30 19:56:21 +00:00
update shared components
This commit is contained in:
parent
ee11212148
commit
6f21a963ea
52 changed files with 1405 additions and 1023 deletions
|
@ -1,4 +1,4 @@
|
|||
define(['datetime', 'userdataButtons', 'itemHelper', 'paper-icon-button-light'], function (datetime, userdataButtons, itemHelper) {
|
||||
define(['datetime', 'userdataButtons', 'itemHelper', 'events', 'browser', 'paper-icon-button-light'], function (datetime, userdataButtons, itemHelper, events, browser) {
|
||||
|
||||
var currentPlayer;
|
||||
|
||||
|
@ -24,6 +24,7 @@
|
|||
|
||||
html += '<div class="nowPlayingBar hide">';
|
||||
|
||||
html += '<div class="nowPlayingBarTop">';
|
||||
html += '<div class="nowPlayingBarPositionContainer sliderContainer">';
|
||||
html += '<input type="range" is="emby-slider" pin step=".1" min="0" max="100" value="0" class="nowPlayingBarPositionSlider"/>';
|
||||
html += '</div>';
|
||||
|
@ -66,6 +67,7 @@
|
|||
html += '<button is="paper-icon-button-light" class="remoteControlButton mediaButton autoSize"><i class="md-icon">tablet_android</i></button>';
|
||||
html += '<button is="paper-icon-button-light" class="playlistButton mediaButton autoSize"><i class="md-icon">queue_music</i></button>';
|
||||
|
||||
html += '</div>';
|
||||
html += '</div>';
|
||||
|
||||
html += '</div>';
|
||||
|
@ -73,17 +75,7 @@
|
|||
return html;
|
||||
}
|
||||
|
||||
var height;
|
||||
|
||||
function getHeight(elem) {
|
||||
|
||||
if (!height) {
|
||||
height = elem.offsetHeight;
|
||||
}
|
||||
|
||||
return height + 'px';
|
||||
}
|
||||
|
||||
var translateY = '-70px';
|
||||
function slideDown(elem) {
|
||||
|
||||
if (elem.classList.contains('hide')) {
|
||||
|
@ -94,15 +86,15 @@
|
|||
elem.classList.add('hide');
|
||||
};
|
||||
|
||||
if (!browserInfo.animate || browserInfo.mobile) {
|
||||
if (!browser.animate || browser.mobile) {
|
||||
onfinish();
|
||||
return;
|
||||
}
|
||||
|
||||
requestAnimationFrame(function () {
|
||||
var keyframes = [
|
||||
{ height: getHeight(elem), offset: 0 },
|
||||
{ height: '0', display: 'none', offset: 1 }];
|
||||
{ transform: 'translateY(' + translateY + ')', offset: 0 },
|
||||
{ transform: 'none', offset: 1 }];
|
||||
var timing = { duration: 200, iterations: 1, fill: 'both', easing: 'ease-out' };
|
||||
elem.animate(keyframes, timing).onfinish = onfinish;
|
||||
});
|
||||
|
@ -116,15 +108,37 @@
|
|||
|
||||
elem.classList.remove('hide');
|
||||
|
||||
if (!browserInfo.animate || browserInfo.mobile) {
|
||||
if (!browser.animate || browser.mobile) {
|
||||
return;
|
||||
}
|
||||
|
||||
requestAnimationFrame(function () {
|
||||
|
||||
var keyframes = [
|
||||
{ height: '0', offset: 0 },
|
||||
{ height: getHeight(elem), offset: 1 }];
|
||||
{ transform: 'none', offset: 0 },
|
||||
{ transform: 'translateY(' + translateY + ')', offset: 1 }];
|
||||
var timing = { duration: 200, iterations: 1, fill: 'both', easing: 'ease-out' };
|
||||
elem.animate(keyframes, timing);
|
||||
});
|
||||
}
|
||||
|
||||
function slideUpToFullScreen(elem) {
|
||||
|
||||
if (!elem.classList.contains('hide')) {
|
||||
return;
|
||||
}
|
||||
|
||||
elem.classList.remove('hide');
|
||||
|
||||
if (!browser.animate || browser.mobile) {
|
||||
return;
|
||||
}
|
||||
|
||||
requestAnimationFrame(function () {
|
||||
|
||||
var keyframes = [
|
||||
{ transform: 'none', offset: 0 },
|
||||
{ transform: 'translateY(-100%)', offset: 1 }];
|
||||
var timing = { duration: 200, iterations: 1, fill: 'both', easing: 'ease-out' };
|
||||
elem.animate(keyframes, timing);
|
||||
});
|
||||
|
@ -306,7 +320,7 @@
|
|||
document.body.insertAdjacentHTML('beforeend', getNowPlayingBarHtml());
|
||||
nowPlayingBarElement = document.querySelector('.nowPlayingBar');
|
||||
|
||||
if (browserInfo.safari && browserInfo.mobile) {
|
||||
if (browser.safari && browser.mobile) {
|
||||
// Not handled well here. The wrong elements receive events, bar doesn't update quickly enough, etc.
|
||||
nowPlayingBarElement.classList.add('noMediaProgress');
|
||||
}
|
||||
|
@ -532,7 +546,7 @@
|
|||
}).join('');
|
||||
|
||||
var url;
|
||||
var imgHeight = 80;
|
||||
var imgHeight = 70;
|
||||
|
||||
var nowPlayingItem = state.NowPlayingItem;
|
||||
|
||||
|
@ -646,11 +660,11 @@
|
|||
|
||||
if (currentPlayer) {
|
||||
|
||||
Events.off(currentPlayer, 'playbackstart', onPlaybackStart);
|
||||
Events.off(currentPlayer, 'playbackstop', onPlaybackStopped);
|
||||
Events.off(currentPlayer, 'volumechange', onVolumeChanged);
|
||||
Events.off(currentPlayer, 'playstatechange', onStateChanged);
|
||||
Events.off(currentPlayer, 'positionchange', onStateChanged);
|
||||
events.off(currentPlayer, 'playbackstart', onPlaybackStart);
|
||||
events.off(currentPlayer, 'playbackstop', onPlaybackStopped);
|
||||
events.off(currentPlayer, 'volumechange', onVolumeChanged);
|
||||
events.off(currentPlayer, 'playstatechange', onStateChanged);
|
||||
events.off(currentPlayer, 'positionchange', onStateChanged);
|
||||
|
||||
currentPlayer.endPlayerUpdates();
|
||||
currentPlayer = null;
|
||||
|
@ -690,14 +704,14 @@
|
|||
onStateChanged.call(player, { type: 'init' }, state);
|
||||
});
|
||||
|
||||
Events.on(player, 'playbackstart', onPlaybackStart);
|
||||
Events.on(player, 'playbackstop', onPlaybackStopped);
|
||||
Events.on(player, 'volumechange', onVolumeChanged);
|
||||
Events.on(player, 'playstatechange', onStateChanged);
|
||||
Events.on(player, 'positionchange', onStateChanged);
|
||||
events.on(player, 'playbackstart', onPlaybackStart);
|
||||
events.on(player, 'playbackstop', onPlaybackStopped);
|
||||
events.on(player, 'volumechange', onVolumeChanged);
|
||||
events.on(player, 'playstatechange', onStateChanged);
|
||||
events.on(player, 'positionchange', onStateChanged);
|
||||
}
|
||||
|
||||
Events.on(MediaController, 'playerchange', function () {
|
||||
events.on(MediaController, 'playerchange', function () {
|
||||
|
||||
bindToPlayer(MediaController.getCurrentPlayer());
|
||||
});
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue