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

Automatic deuglification of remotecontrol.js

This commit is contained in:
Sparky 2019-02-02 11:08:20 -05:00
parent 55aeb42179
commit 39dfc7dd23

View file

@ -1,268 +1,471 @@
define(["browser", "datetime", "backdrop", "libraryBrowser", "listView", "imageLoader", "playbackManager", "nowPlayingHelper", "events", "connectionManager", "apphost", "globalize", "cardStyle", "emby-itemscontainer", "css!css/nowplaying.css", "emby-ratingbutton"], function(browser, datetime, backdrop, libraryBrowser, listView, imageLoader, playbackManager, nowPlayingHelper, events, connectionManager, appHost, globalize) { define(["browser", "datetime", "backdrop", "libraryBrowser", "listView", "imageLoader", "playbackManager", "nowPlayingHelper", "events", "connectionManager", "apphost", "globalize", "cardStyle", "emby-itemscontainer", "css!css/nowplaying.css", "emby-ratingbutton"], function (browser, datetime, backdrop, libraryBrowser, listView, imageLoader, playbackManager, nowPlayingHelper, events, connectionManager, appHost, globalize) {
"use strict"; "use strict";
function showAudioMenu(context, player, button, item) { function showAudioMenu(context, player, button, item) {
var currentIndex = playbackManager.getAudioStreamIndex(player), var currentIndex = playbackManager.getAudioStreamIndex(player);
streams = playbackManager.audioTracks(player), var streams = playbackManager.audioTracks(player);
menuItems = streams.map(function(s) { var menuItems = streams.map(function (s__q) {
var menuItem = { var menuItem = {
name: s.DisplayTitle, name: s__q.DisplayTitle,
id: s.Index id: s__q.Index
}; };
return s.Index == currentIndex && (menuItem.selected = !0), menuItem
if (s__q.Index == currentIndex) {
menuItem.selected = true;
}
return menuItem;
}); });
require(["actionsheet"], function(actionsheet) {
require(["actionsheet"], function (actionsheet) {
actionsheet.show({ actionsheet.show({
items: menuItems, items: menuItems,
positionTo: button, positionTo: button,
callback: function(id) { callback: function (id) {
playbackManager.setAudioStreamIndex(parseInt(id), player) playbackManager.setAudioStreamIndex(parseInt(id), player);
} }
}) });
}) });
} }
function showSubtitleMenu(context, player, button, item) { function showSubtitleMenu(context, player, button, item) {
var currentIndex = playbackManager.getSubtitleStreamIndex(player), var currentIndex = playbackManager.getSubtitleStreamIndex(player);
streams = playbackManager.subtitleTracks(player), var streams = playbackManager.subtitleTracks(player);
menuItems = streams.map(function(s) { var menuItems = streams.map(function (s__w) {
var menuItem = { var menuItem = {
name: s.DisplayTitle, name: s__w.DisplayTitle,
id: s.Index id: s__w.Index
}; };
return s.Index == currentIndex && (menuItem.selected = !0), menuItem
if (s__w.Index == currentIndex) {
menuItem.selected = true;
}
return menuItem;
}); });
menuItems.unshift({ menuItems.unshift({
id: -1, id: -1,
name: globalize.translate("ButtonOff"), name: globalize.translate("ButtonOff"),
selected: null == currentIndex selected: null == currentIndex
}), require(["actionsheet"], function(actionsheet) { });
require(["actionsheet"], function (actionsheet) {
actionsheet.show({ actionsheet.show({
items: menuItems, items: menuItems,
positionTo: button, positionTo: button,
callback: function(id) { callback: function (id) {
playbackManager.setSubtitleStreamIndex(parseInt(id), player) playbackManager.setSubtitleStreamIndex(parseInt(id), player);
} }
}) });
}) });
} }
function getNowPlayingNameHtml(nowPlayingItem, includeNonNameInfo) { function getNowPlayingNameHtml(nowPlayingItem, includeNonNameInfo) {
return nowPlayingHelper.getNowPlayingNames(nowPlayingItem, includeNonNameInfo).map(function(i) { return nowPlayingHelper.getNowPlayingNames(nowPlayingItem, includeNonNameInfo).map(function (i__e) {
return i.text return i__e.text;
}).join("<br/>") }).join("<br/>");
} }
function seriesImageUrl(item, options) { function seriesImageUrl(item, options) {
if ("Episode" !== item.Type) return null; if ("Episode" !== item.Type) {
if (options = options || {}, options.type = options.type || "Primary", "Primary" === options.type && item.SeriesPrimaryImageTag) return options.tag = item.SeriesPrimaryImageTag, connectionManager.getApiClient(item.ServerId).getScaledImageUrl(item.SeriesId, options); return null;
if ("Thumb" === options.type) {
if (item.SeriesThumbImageTag) return options.tag = item.SeriesThumbImageTag, connectionManager.getApiClient(item.ServerId).getScaledImageUrl(item.SeriesId, options);
if (item.ParentThumbImageTag) return options.tag = item.ParentThumbImageTag, connectionManager.getApiClient(item.ServerId).getScaledImageUrl(item.ParentThumbItemId, options)
} }
return null
if (options = options || {}, options.type = options.type || "Primary", "Primary" === options.type && item.SeriesPrimaryImageTag) {
options.tag = item.SeriesPrimaryImageTag;
return connectionManager.getApiClient(item.ServerId).getScaledImageUrl(item.SeriesId, options);
}
if ("Thumb" === options.type) {
if (item.SeriesThumbImageTag) {
options.tag = item.SeriesThumbImageTag;
return connectionManager.getApiClient(item.ServerId).getScaledImageUrl(item.SeriesId, options);
}
if (item.ParentThumbImageTag) {
options.tag = item.ParentThumbImageTag;
return connectionManager.getApiClient(item.ServerId).getScaledImageUrl(item.ParentThumbItemId, options);
}
}
return null;
} }
function imageUrl(item, options) { function imageUrl(item, options) {
return options = options || {}, options.type = options.type || "Primary", item.ImageTags && item.ImageTags[options.type] ? (options.tag = item.ImageTags[options.type], connectionManager.getApiClient(item.ServerId).getScaledImageUrl(item.PrimaryImageItemId || item.Id, options)) : item.AlbumId && item.AlbumPrimaryImageTag ? (options.tag = item.AlbumPrimaryImageTag, connectionManager.getApiClient(item.ServerId).getScaledImageUrl(item.AlbumId, options)) : null options = options || {};
options.type = options.type || "Primary";
if (item.ImageTags && item.ImageTags[options.type]) {
options.tag = item.ImageTags[options.type];
return connectionManager.getApiClient(item.ServerId).getScaledImageUrl(item.PrimaryImageItemId || item.Id, options);
}
if (item.AlbumId && item.AlbumPrimaryImageTag) {
options.tag = item.AlbumPrimaryImageTag;
return connectionManager.getApiClient(item.ServerId).getScaledImageUrl(item.AlbumId, options);
}
return null;
} }
function updateNowPlayingInfo(context, state) { function updateNowPlayingInfo(context, state) {
var item = state.NowPlayingItem, var item = state.NowPlayingItem;
displayName = item ? getNowPlayingNameHtml(item).replace("<br/>", " - ") : ""; var displayName = item ? getNowPlayingNameHtml(item).replace("<br/>", " - ") : "";
context.querySelector(".nowPlayingPageTitle").innerHTML = displayName, displayName.length > 0 ? context.querySelector(".nowPlayingPageTitle").classList.remove("hide") : context.querySelector(".nowPlayingPageTitle").classList.add("hide"); context.querySelector(".nowPlayingPageTitle").innerHTML = displayName;
if (displayName.length > 0) {
context.querySelector(".nowPlayingPageTitle").classList.remove("hide");
} else {
context.querySelector(".nowPlayingPageTitle").classList.add("hide");
}
var url = item ? seriesImageUrl(item, { var url = item ? seriesImageUrl(item, {
maxHeight: 300 maxHeight: 300
}) || imageUrl(item, { }) || imageUrl(item, {
maxHeight: 300 maxHeight: 300
}) : null; }) : null;
if (console.log("updateNowPlayingInfo"), setImageUrl(context, url), item) { if (console.log("updateNowPlayingInfo"), setImageUrl(context, url), item) {
backdrop.setBackdrops([item]); backdrop.setBackdrops([item]);
var apiClient = connectionManager.getApiClient(item.ServerId); var apiClient = connectionManager.getApiClient(item.ServerId);
apiClient.getItem(apiClient.getCurrentUserId(), item.Id).then(function(fullItem) { apiClient.getItem(apiClient.getCurrentUserId(), item.Id).then(function (fullItem) {
var userData = fullItem.UserData || {}, var userData = fullItem.UserData || {};
likes = null == userData.Likes ? "" : userData.Likes; var likes = null == userData.Likes ? "" : userData.Likes;
context.querySelector(".nowPlayingPageUserDataButtons").innerHTML = '<button is="emby-ratingbutton" type="button" class="listItemButton paper-icon-button-light" data-id="' + fullItem.Id + '" data-serverid="' + fullItem.ServerId + '" data-itemtype="' + fullItem.Type + '" data-likes="' + likes + '" data-isfavorite="' + userData.IsFavorite + '"><i class="md-icon">&#xE87D;</i></button>' context.querySelector(".nowPlayingPageUserDataButtons").innerHTML = '<button is="emby-ratingbutton" type="button" class="listItemButton paper-icon-button-light" data-id="' + fullItem.Id + '" data-serverid="' + fullItem.ServerId + '" data-itemtype="' + fullItem.Type + '" data-likes="' + likes + '" data-isfavorite="' + userData.IsFavorite + '"><i class="md-icon">&#xE87D;</i></button>';
}) });
} else backdrop.clear(), context.querySelector(".nowPlayingPageUserDataButtons").innerHTML = "" } else {
backdrop.clear();
context.querySelector(".nowPlayingPageUserDataButtons").innerHTML = "";
}
} }
function setImageUrl(context, url) { function setImageUrl(context, url) {
currentImgUrl = url; currentImgUrl = url;
var imgContainer = context.querySelector(".nowPlayingPageImageContainer"); var imgContainer = context.querySelector(".nowPlayingPageImageContainer");
url ? (imgContainer.innerHTML = '<img class="nowPlayingPageImage" src="' + url + '" />', imgContainer.classList.remove("hide")) : (imgContainer.classList.add("hide"), imgContainer.innerHTML = "")
if (url) {
imgContainer.innerHTML = '<img class="nowPlayingPageImage" src="' + url + '" />';
imgContainer.classList.remove("hide");
} else {
imgContainer.classList.add("hide");
imgContainer.innerHTML = "";
}
} }
function buttonEnabled(btn, enabled) { function buttonEnabled(btn, enabled) {
btn.disabled = !enabled btn.disabled = !enabled;
} }
function buttonVisible(btn, enabled) { function buttonVisible(btn, enabled) {
enabled ? btn.classList.remove("hide") : btn.classList.add("hide") if (enabled) {
btn.classList.remove("hide");
} else {
btn.classList.add("hide");
}
} }
function updateSupportedCommands(context, commands) { function updateSupportedCommands(context, commands) {
for (var all = context.querySelectorAll(".btnCommand"), i = 0, length = all.length; i < length; i++) buttonEnabled(all[i], -1 != commands.indexOf(all[i].getAttribute("data-command"))) var all = context.querySelectorAll(".btnCommand");
for (var i__r = 0, length = all.length; i__r < length; i__r++) {
buttonEnabled(all[i__r], -1 != commands.indexOf(all[i__r].getAttribute("data-command")));
} }
}
var currentImgUrl; var currentImgUrl;
return function() { return function () {
function toggleRepeat(player) { function toggleRepeat(player) {
if (player) switch (playbackManager.getRepeatMode(player)) { if (player) {
switch (playbackManager.getRepeatMode(player)) {
case "RepeatNone": case "RepeatNone":
playbackManager.setRepeatMode("RepeatAll", player); playbackManager.setRepeatMode("RepeatAll", player);
break; break;
case "RepeatAll": case "RepeatAll":
playbackManager.setRepeatMode("RepeatOne", player); playbackManager.setRepeatMode("RepeatOne", player);
break; break;
case "RepeatOne": case "RepeatOne":
playbackManager.setRepeatMode("RepeatNone", player) playbackManager.setRepeatMode("RepeatNone", player);
}
} }
} }
function updatePlayerState(player, context, state) { function updatePlayerState(player, context, state) {
lastPlayerState = state; lastPlayerState = state;
var item = state.NowPlayingItem, var item = state.NowPlayingItem;
playerInfo = playbackManager.getPlayerInfo(), var playerInfo = playbackManager.getPlayerInfo();
supportedCommands = playerInfo.supportedCommands; var supportedCommands = playerInfo.supportedCommands;
currentPlayerSupportedCommands = supportedCommands; currentPlayerSupportedCommands = supportedCommands;
var playState = state.PlayState || {}; var playState = state.PlayState || {};
buttonVisible(context.querySelector(".btnToggleFullscreen"), item && "Video" == item.MediaType && -1 != supportedCommands.indexOf("ToggleFullscreen")), updateAudioTracksDisplay(player, context), updateSubtitleTracksDisplay(player, context), -1 != supportedCommands.indexOf("DisplayMessage") ? context.querySelector(".sendMessageSection").classList.remove("hide") : context.querySelector(".sendMessageSection").classList.add("hide"), -1 != supportedCommands.indexOf("SendString") ? context.querySelector(".sendTextSection").classList.remove("hide") : context.querySelector(".sendTextSection").classList.add("hide"), buttonVisible(context.querySelector(".btnStop"), null != item), buttonVisible(context.querySelector(".btnNextTrack"), null != item), buttonVisible(context.querySelector(".btnPreviousTrack"), null != item), buttonVisible(context.querySelector(".btnRewind"), null != item), buttonVisible(context.querySelector(".btnFastForward"), null != item); buttonVisible(context.querySelector(".btnToggleFullscreen"), item && "Video" == item.MediaType && -1 != supportedCommands.indexOf("ToggleFullscreen"));
updateAudioTracksDisplay(player, context);
updateSubtitleTracksDisplay(player, context);
if (-1 != supportedCommands.indexOf("DisplayMessage")) {
context.querySelector(".sendMessageSection").classList.remove("hide");
} else {
context.querySelector(".sendMessageSection").classList.add("hide");
}
if (-1 != supportedCommands.indexOf("SendString")) {
context.querySelector(".sendTextSection").classList.remove("hide");
} else {
context.querySelector(".sendTextSection").classList.add("hide");
}
buttonVisible(context.querySelector(".btnStop"), null != item);
buttonVisible(context.querySelector(".btnNextTrack"), null != item);
buttonVisible(context.querySelector(".btnPreviousTrack"), null != item);
buttonVisible(context.querySelector(".btnRewind"), null != item);
buttonVisible(context.querySelector(".btnFastForward"), null != item);
var positionSlider = context.querySelector(".nowPlayingPositionSlider"); var positionSlider = context.querySelector(".nowPlayingPositionSlider");
if (positionSlider && !positionSlider.dragging) { if (positionSlider && !positionSlider.dragging) {
positionSlider.disabled = !playState.CanSeek; positionSlider.disabled = !playState.CanSeek;
var isProgressClear = state.MediaSource && null == state.MediaSource.RunTimeTicks; var isProgressClear = state.MediaSource && null == state.MediaSource.RunTimeTicks;
positionSlider.setIsClear(isProgressClear) positionSlider.setIsClear(isProgressClear);
} }
updatePlayPauseState(playState.IsPaused, null != item), updateTimeDisplay(playState.PositionTicks, item ? item.RunTimeTicks : null), updatePlayerVolumeState(context, playState.IsMuted, playState.VolumeLevel), item && "Video" == item.MediaType ? context.classList.remove("hideVideoButtons") : context.classList.add("hideVideoButtons"), updateRepeatModeDisplay(playState.RepeatMode), updateNowPlayingInfo(context, state)
updatePlayPauseState(playState.IsPaused, null != item);
updateTimeDisplay(playState.PositionTicks, item ? item.RunTimeTicks : null);
updatePlayerVolumeState(context, playState.IsMuted, playState.VolumeLevel);
if (item && "Video" == item.MediaType) {
context.classList.remove("hideVideoButtons");
} else {
context.classList.add("hideVideoButtons");
}
updateRepeatModeDisplay(playState.RepeatMode);
updateNowPlayingInfo(context, state);
} }
function updateAudioTracksDisplay(player, context) { function updateAudioTracksDisplay(player, context) {
var supportedCommands = currentPlayerSupportedCommands; var supportedCommands = currentPlayerSupportedCommands;
buttonVisible(context.querySelector(".btnAudioTracks"), playbackManager.audioTracks(player).length > 1 && -1 != supportedCommands.indexOf("SetAudioStreamIndex")) buttonVisible(context.querySelector(".btnAudioTracks"), playbackManager.audioTracks(player).length > 1 && -1 != supportedCommands.indexOf("SetAudioStreamIndex"));
} }
function updateSubtitleTracksDisplay(player, context) { function updateSubtitleTracksDisplay(player, context) {
var supportedCommands = currentPlayerSupportedCommands; var supportedCommands = currentPlayerSupportedCommands;
buttonVisible(context.querySelector(".btnSubtitles"), playbackManager.subtitleTracks(player).length && -1 != supportedCommands.indexOf("SetSubtitleStreamIndex")) buttonVisible(context.querySelector(".btnSubtitles"), playbackManager.subtitleTracks(player).length && -1 != supportedCommands.indexOf("SetSubtitleStreamIndex"));
} }
function updateRepeatModeDisplay(repeatMode) { function updateRepeatModeDisplay(repeatMode) {
var context = dlg, var context = dlg;
toggleRepeatButton = context.querySelector(".repeatToggleButton"); var toggleRepeatButton = context.querySelector(".repeatToggleButton");
"RepeatAll" == repeatMode ? (toggleRepeatButton.innerHTML = "<i class='md-icon'>repeat</i>", toggleRepeatButton.classList.add("repeatButton-active")) : "RepeatOne" == repeatMode ? (toggleRepeatButton.innerHTML = "<i class='md-icon'>repeat_one</i>", toggleRepeatButton.classList.add("repeatButton-active")) : (toggleRepeatButton.innerHTML = "<i class='md-icon'>repeat</i>", toggleRepeatButton.classList.remove("repeatButton-active"))
if ("RepeatAll" == repeatMode) {
toggleRepeatButton.innerHTML = "<i class='md-icon'>repeat</i>";
toggleRepeatButton.classList.add("repeatButton-active");
} else {
if ("RepeatOne" == repeatMode) {
toggleRepeatButton.innerHTML = "<i class='md-icon'>repeat_one</i>";
toggleRepeatButton.classList.add("repeatButton-active");
} else {
toggleRepeatButton.innerHTML = "<i class='md-icon'>repeat</i>";
toggleRepeatButton.classList.remove("repeatButton-active");
}
}
} }
function updatePlayerVolumeState(context, isMuted, volumeLevel) { function updatePlayerVolumeState(context, isMuted, volumeLevel) {
var view = context, var view = context;
supportedCommands = currentPlayerSupportedCommands, var supportedCommands = currentPlayerSupportedCommands;
showMuteButton = !0, var showMuteButton = true;
showVolumeSlider = !0; - 1 === supportedCommands.indexOf("Mute") && (showMuteButton = !1), -1 === supportedCommands.indexOf("SetVolume") && (showVolumeSlider = !1), currentPlayer.isLocalPlayer && appHost.supports("physicalvolumecontrol") && (showMuteButton = !1, showVolumeSlider = !1), isMuted ? (view.querySelector(".buttonMute").setAttribute("title", globalize.translate("Unmute")), view.querySelector(".buttonMute i").innerHTML = "&#xE04F;") : (view.querySelector(".buttonMute").setAttribute("title", globalize.translate("Mute")), view.querySelector(".buttonMute i").innerHTML = "&#xE050;"), showMuteButton ? view.querySelector(".buttonMute").classList.remove("hide") : view.querySelector(".buttonMute").classList.add("hide"); var showVolumeSlider = true;
var nowPlayingVolumeSlider = context.querySelector(".nowPlayingVolumeSlider"),
nowPlayingVolumeSliderContainer = context.querySelector(".nowPlayingVolumeSliderContainer"); if (-1 === supportedCommands.indexOf("Mute")) {
nowPlayingVolumeSlider && (showVolumeSlider ? nowPlayingVolumeSliderContainer.classList.remove("hide") : nowPlayingVolumeSliderContainer.classList.add("hide"), nowPlayingVolumeSlider.dragging || (nowPlayingVolumeSlider.value = volumeLevel || 0)) showMuteButton = false;
}
if (-1 === supportedCommands.indexOf("SetVolume")) {
showVolumeSlider = false;
}
if (currentPlayer.isLocalPlayer && appHost.supports("physicalvolumecontrol")) {
showMuteButton = false;
showVolumeSlider = false;
}
if (isMuted) {
view.querySelector(".buttonMute").setAttribute("title", globalize.translate("Unmute"));
view.querySelector(".buttonMute i").innerHTML = "&#xE04F;";
} else {
view.querySelector(".buttonMute").setAttribute("title", globalize.translate("Mute"));
view.querySelector(".buttonMute i").innerHTML = "&#xE050;";
}
if (showMuteButton) {
view.querySelector(".buttonMute").classList.remove("hide");
} else {
view.querySelector(".buttonMute").classList.add("hide");
}
var nowPlayingVolumeSlider = context.querySelector(".nowPlayingVolumeSlider");
var nowPlayingVolumeSliderContainer = context.querySelector(".nowPlayingVolumeSliderContainer");
if (nowPlayingVolumeSlider) {
if (showVolumeSlider) {
nowPlayingVolumeSliderContainer.classList.remove("hide");
} else {
nowPlayingVolumeSliderContainer.classList.add("hide");
}
if (!nowPlayingVolumeSlider.dragging) {
nowPlayingVolumeSlider.value = volumeLevel || 0;
}
}
} }
function updatePlayPauseState(isPaused, isActive) { function updatePlayPauseState(isPaused, isActive) {
var context = dlg, var context = dlg;
btnPlayPause = context.querySelector(".btnPlayPause"); var btnPlayPause = context.querySelector(".btnPlayPause");
btnPlayPause.querySelector("i").innerHTML = isPaused ? "play_arrow" : "pause", buttonVisible(btnPlayPause, isActive) btnPlayPause.querySelector("i").innerHTML = isPaused ? "play_arrow" : "pause";
buttonVisible(btnPlayPause, isActive);
} }
function updateTimeDisplay(positionTicks, runtimeTicks) { function updateTimeDisplay(positionTicks, runtimeTicks) {
var context = dlg, var context = dlg;
positionSlider = context.querySelector(".nowPlayingPositionSlider"); var positionSlider = context.querySelector(".nowPlayingPositionSlider");
if (positionSlider && !positionSlider.dragging)
if (positionSlider && !positionSlider.dragging) {
if (runtimeTicks) { if (runtimeTicks) {
var pct = positionTicks / runtimeTicks; var pct = positionTicks / runtimeTicks;
pct *= 100, positionSlider.value = pct pct *= 100;
} else positionSlider.value = 0; positionSlider.value = pct;
context.querySelector(".positionTime").innerHTML = null == positionTicks ? "--:--" : datetime.getDisplayRunningTime(positionTicks), context.querySelector(".runtime").innerHTML = null != runtimeTicks ? datetime.getDisplayRunningTime(runtimeTicks) : "--:--" } else {
positionSlider.value = 0;
}
}
context.querySelector(".positionTime").innerHTML = null == positionTicks ? "--:--" : datetime.getDisplayRunningTime(positionTicks);
context.querySelector(".runtime").innerHTML = null != runtimeTicks ? datetime.getDisplayRunningTime(runtimeTicks) : "--:--";
} }
function getPlaylistItems(player) { function getPlaylistItems(player) {
return playbackManager.getPlaylist(player) return playbackManager.getPlaylist(player);
} }
function loadPlaylist(context, player) { function loadPlaylist(context, player) {
getPlaylistItems(player).then(function(items) { getPlaylistItems(player).then(function (items) {
var html = ""; var html = "";
html += listView.getListViewHtml({ html += listView.getListViewHtml({
items: items, items: items,
smallIcon: !0, smallIcon: true,
action: "setplaylistindex", action: "setplaylistindex",
enableUserDataButtons: !1, enableUserDataButtons: false,
rightButtons: [{ rightButtons: [{
icon: "&#xE15D;", icon: "&#xE15D;",
title: globalize.translate("ButtonRemove"), title: globalize.translate("ButtonRemove"),
id: "remove" id: "remove"
}], }],
dragHandle: !0 dragHandle: true
}), items.length ? context.querySelector(".playlistSection").classList.remove("hide") : context.querySelector(".playlistSection").classList.add("hide"); });
if (items.length) {
context.querySelector(".playlistSection").classList.remove("hide");
} else {
context.querySelector(".playlistSection").classList.add("hide");
}
var itemsContainer = context.querySelector(".playlist"); var itemsContainer = context.querySelector(".playlist");
itemsContainer.innerHTML = html; itemsContainer.innerHTML = html;
var playlistItemId = playbackManager.getCurrentPlaylistItemId(player); var playlistItemId = playbackManager.getCurrentPlaylistItemId(player);
if (playlistItemId) { if (playlistItemId) {
var img = itemsContainer.querySelector('.listItem[data-playlistItemId="' + playlistItemId + '"] .listItemImage'); var img = itemsContainer.querySelector('.listItem[data-playlistItemId="' + playlistItemId + '"] .listItemImage');
img && (img.classList.remove("lazy"), img.classList.add("playlistIndexIndicatorImage"))
if (img) {
img.classList.remove("lazy");
img.classList.add("playlistIndexIndicatorImage");
} }
imageLoader.lazyChildren(itemsContainer)
})
} }
function onPlaybackStart(e, state) { imageLoader.lazyChildren(itemsContainer);
console.log("remotecontrol event: " + e.type); });
}
function onPlaybackStart(e__t, state) {
console.log("remotecontrol event: " + e__t.type);
var player = this; var player = this;
onStateChanged.call(player, e, state) onStateChanged.call(player, e__t, state);
} }
function onRepeatModeChange(e) { function onRepeatModeChange(e__y) {
var player = this; var player = this;
updateRepeatModeDisplay(playbackManager.getRepeatMode(player)) updateRepeatModeDisplay(playbackManager.getRepeatMode(player));
} }
function onPlaylistUpdate(e) { function onPlaylistUpdate(e__u) {
loadPlaylist(dlg, this) loadPlaylist(dlg, this);
} }
function onPlaylistItemRemoved(e, info) { function onPlaylistItemRemoved(e__i, info) {
for (var context = dlg, playlistItemIds = info.playlistItemIds, i = 0, length = playlistItemIds.length; i < length; i++) { var context = dlg;
var listItem = context.querySelector('.listItem[data-playlistItemId="' + playlistItemIds[i] + '"]'); var playlistItemIds = info.playlistItemIds;
listItem && listItem.parentNode.removeChild(listItem)
for (var i__o = 0, length = playlistItemIds.length; i__o < length; i__o++) {
var listItem = context.querySelector('.listItem[data-playlistItemId="' + playlistItemIds[i__o] + '"]');
if (listItem) {
listItem.parentNode.removeChild(listItem);
}
} }
} }
function onPlaybackStopped(e, state) { function onPlaybackStopped(e__p, state) {
console.log("remotecontrol event: " + e.type); console.log("remotecontrol event: " + e__p.type);
var player = this; var player = this;
state.NextMediaType || (updatePlayerState(player, dlg, {}), loadPlaylist(dlg))
if (!state.NextMediaType) {
updatePlayerState(player, dlg, {});
loadPlaylist(dlg);
}
} }
function onPlayPauseStateChanged(e) { function onPlayPauseStateChanged(e__a) {
updatePlayPauseState(this.paused(), !0) updatePlayPauseState(this.paused(), true);
} }
function onStateChanged(event, state) { function onStateChanged(event, state) {
var player = this; var player = this;
updatePlayerState(player, dlg, state), loadPlaylist(dlg, player) updatePlayerState(player, dlg, state);
loadPlaylist(dlg, player);
} }
function onTimeUpdate(e) { function onTimeUpdate(e__s) {
var now = (new Date).getTime(); var now = new Date().getTime();
if (!(now - lastUpdateTime < 700)) { if (!(now - lastUpdateTime < 700)) {
lastUpdateTime = now; lastUpdateTime = now;
var player = this; var player = this;
currentRuntimeTicks = playbackManager.duration(player), updateTimeDisplay(playbackManager.currentTime(player), currentRuntimeTicks) currentRuntimeTicks = playbackManager.duration(player);
updateTimeDisplay(playbackManager.currentTime(player), currentRuntimeTicks);
} }
} }
function onVolumeChanged(e) { function onVolumeChanged(e__d) {
var player = this; var player = this;
updatePlayerVolumeState(dlg, player.isMuted(), player.getVolume()) updatePlayerVolumeState(dlg, player.isMuted(), player.getVolume());
} }
function releaseCurrentPlayer() { function releaseCurrentPlayer() {
var player = currentPlayer; var player = currentPlayer;
player && (events.off(player, "playbackstart", onPlaybackStart), events.off(player, "statechange", onStateChanged), events.off(player, "repeatmodechange", onRepeatModeChange), events.off(player, "playlistitemremove", onPlaylistUpdate), events.off(player, "playlistitemmove", onPlaylistUpdate), events.off(player, "playbackstop", onPlaybackStopped), events.off(player, "volumechange", onVolumeChanged), events.off(player, "pause", onPlayPauseStateChanged), events.off(player, "unpause", onPlayPauseStateChanged), events.off(player, "timeupdate", onTimeUpdate), currentPlayer = null)
if (player) {
events.off(player, "playbackstart", onPlaybackStart);
events.off(player, "statechange", onStateChanged);
events.off(player, "repeatmodechange", onRepeatModeChange);
events.off(player, "playlistitemremove", onPlaylistUpdate);
events.off(player, "playlistitemmove", onPlaylistUpdate);
events.off(player, "playbackstop", onPlaybackStopped);
events.off(player, "volumechange", onVolumeChanged);
events.off(player, "pause", onPlayPauseStateChanged);
events.off(player, "unpause", onPlayPauseStateChanged);
events.off(player, "timeupdate", onTimeUpdate);
currentPlayer = null;
}
} }
function bindToPlayer(context, player) { function bindToPlayer(context, player) {
@ -270,141 +473,238 @@ define(["browser", "datetime", "backdrop", "libraryBrowser", "listView", "imageL
var state = playbackManager.getPlayerState(player); var state = playbackManager.getPlayerState(player);
onStateChanged.call(player, { onStateChanged.call(player, {
type: "init" type: "init"
}, state), events.on(player, "playbackstart", onPlaybackStart), events.on(player, "statechange", onStateChanged), events.on(player, "repeatmodechange", onRepeatModeChange), events.on(player, "playlistitemremove", onPlaylistItemRemoved), events.on(player, "playlistitemmove", onPlaylistUpdate), events.on(player, "playbackstop", onPlaybackStopped), events.on(player, "volumechange", onVolumeChanged), events.on(player, "pause", onPlayPauseStateChanged), events.on(player, "unpause", onPlayPauseStateChanged), events.on(player, "timeupdate", onTimeUpdate); }, state);
var playerInfo = playbackManager.getPlayerInfo(), events.on(player, "playbackstart", onPlaybackStart);
supportedCommands = playerInfo.supportedCommands; events.on(player, "statechange", onStateChanged);
currentPlayerSupportedCommands = supportedCommands, updateSupportedCommands(context, supportedCommands) events.on(player, "repeatmodechange", onRepeatModeChange);
events.on(player, "playlistitemremove", onPlaylistItemRemoved);
events.on(player, "playlistitemmove", onPlaylistUpdate);
events.on(player, "playbackstop", onPlaybackStopped);
events.on(player, "volumechange", onVolumeChanged);
events.on(player, "pause", onPlayPauseStateChanged);
events.on(player, "unpause", onPlayPauseStateChanged);
events.on(player, "timeupdate", onTimeUpdate);
var playerInfo = playbackManager.getPlayerInfo();
var supportedCommands = playerInfo.supportedCommands;
currentPlayerSupportedCommands = supportedCommands;
updateSupportedCommands(context, supportedCommands);
} }
} }
function onBtnCommandClick() { function onBtnCommandClick() {
currentPlayer && (this.classList.contains("repeatToggleButton") ? toggleRepeat(currentPlayer) : playbackManager.sendCommand({ if (currentPlayer) {
if (this.classList.contains("repeatToggleButton")) {
toggleRepeat(currentPlayer);
} else {
playbackManager.sendCommand({
Name: this.getAttribute("data-command") Name: this.getAttribute("data-command")
}, currentPlayer)) }, currentPlayer);
}
}
} }
function getSaveablePlaylistItems() { function getSaveablePlaylistItems() {
return getPlaylistItems(currentPlayer).then(function(items) { return getPlaylistItems(currentPlayer).then(function (items) {
return items.filter(function(i) { return items.filter(function (i__f) {
return i.Id && i.ServerId if (i__f.Id) {
}) return i__f.ServerId;
}) }
return false;
});
});
} }
function savePlaylist() { function savePlaylist() {
require(["playlistEditor"], function(playlistEditor) { require(["playlistEditor"], function (playlistEditor) {
getSaveablePlaylistItems().then(function(items) { getSaveablePlaylistItems().then(function (items) {
var serverId = items.length ? items[0].ServerId : ApiClient.serverId(); var serverId = items.length ? items[0].ServerId : ApiClient.serverId();
(new playlistEditor).show({ new playlistEditor().show({
items: items.map(function(i) { items: items.map(function (i__g) {
return i.Id return i__g.Id;
}), }),
serverId: serverId, serverId: serverId,
enableAddToPlayQueue: !1, enableAddToPlayQueue: false,
defaultValue: "new" defaultValue: "new"
}) });
}) });
}) });
} }
function bindEvents(context) { function bindEvents(context) {
for (var btnCommand = context.querySelectorAll(".btnCommand"), i = 0, length = btnCommand.length; i < length; i++) btnCommand[i].addEventListener("click", onBtnCommandClick); var btnCommand = context.querySelectorAll(".btnCommand");
context.querySelector(".btnToggleFullscreen").addEventListener("click", function(e) {
currentPlayer && playbackManager.sendCommand({ for (var i__h = 0, length = btnCommand.length; i__h < length; i__h++) {
Name: e.target.getAttribute("data-command") btnCommand[i__h].addEventListener("click", onBtnCommandClick);
}, currentPlayer) }
}), context.querySelector(".btnAudioTracks").addEventListener("click", function(e) {
currentPlayer && lastPlayerState && lastPlayerState.NowPlayingItem && showAudioMenu(context, currentPlayer, e.target, lastPlayerState.NowPlayingItem) context.querySelector(".btnToggleFullscreen").addEventListener("click", function (e__j) {
}), context.querySelector(".btnSubtitles").addEventListener("click", function(e) { if (currentPlayer) {
currentPlayer && lastPlayerState && lastPlayerState.NowPlayingItem && showSubtitleMenu(context, currentPlayer, e.target, lastPlayerState.NowPlayingItem) playbackManager.sendCommand({
}), context.querySelector(".btnStop").addEventListener("click", function() { Name: e__j.target.getAttribute("data-command")
currentPlayer && playbackManager.stop(currentPlayer) }, currentPlayer);
}), context.querySelector(".btnPlayPause").addEventListener("click", function() { }
currentPlayer && playbackManager.playPause(currentPlayer) });
}), context.querySelector(".btnNextTrack").addEventListener("click", function() { context.querySelector(".btnAudioTracks").addEventListener("click", function (e__k) {
currentPlayer && playbackManager.nextTrack(currentPlayer) if (currentPlayer && lastPlayerState && lastPlayerState.NowPlayingItem) {
}), context.querySelector(".btnRewind").addEventListener("click", function() { showAudioMenu(context, currentPlayer, e__k.target, lastPlayerState.NowPlayingItem);
currentPlayer && playbackManager.rewind(currentPlayer) }
}), context.querySelector(".btnFastForward").addEventListener("click", function() { });
currentPlayer && playbackManager.fastForward(currentPlayer) context.querySelector(".btnSubtitles").addEventListener("click", function (e__l) {
}), context.querySelector(".btnPreviousTrack").addEventListener("click", function() { if (currentPlayer && lastPlayerState && lastPlayerState.NowPlayingItem) {
currentPlayer && playbackManager.previousTrack(currentPlayer) showSubtitleMenu(context, currentPlayer, e__l.target, lastPlayerState.NowPlayingItem);
}), context.querySelector(".nowPlayingPositionSlider").addEventListener("change", function() { }
});
context.querySelector(".btnStop").addEventListener("click", function () {
if (currentPlayer) {
playbackManager.stop(currentPlayer);
}
});
context.querySelector(".btnPlayPause").addEventListener("click", function () {
if (currentPlayer) {
playbackManager.playPause(currentPlayer);
}
});
context.querySelector(".btnNextTrack").addEventListener("click", function () {
if (currentPlayer) {
playbackManager.nextTrack(currentPlayer);
}
});
context.querySelector(".btnRewind").addEventListener("click", function () {
if (currentPlayer) {
playbackManager.rewind(currentPlayer);
}
});
context.querySelector(".btnFastForward").addEventListener("click", function () {
if (currentPlayer) {
playbackManager.fastForward(currentPlayer);
}
});
context.querySelector(".btnPreviousTrack").addEventListener("click", function () {
if (currentPlayer) {
playbackManager.previousTrack(currentPlayer);
}
});
context.querySelector(".nowPlayingPositionSlider").addEventListener("change", function () {
var value = this.value; var value = this.value;
if (currentPlayer) { if (currentPlayer) {
var newPercent = parseFloat(value); var newPercent = parseFloat(value);
playbackManager.seekPercent(newPercent, currentPlayer) playbackManager.seekPercent(newPercent, currentPlayer);
} }
}), context.querySelector(".nowPlayingPositionSlider").getBubbleText = function(value) { });
context.querySelector(".nowPlayingPositionSlider").getBubbleText = function (value) {
var state = lastPlayerState; var state = lastPlayerState;
if (!state || !state.NowPlayingItem || !currentRuntimeTicks) return "--:--";
if (!state || !state.NowPlayingItem || !currentRuntimeTicks) {
return "--:--";
}
var ticks = currentRuntimeTicks; var ticks = currentRuntimeTicks;
return ticks /= 100, ticks *= value, datetime.getDisplayRunningTime(ticks) ticks /= 100;
}, context.querySelector(".nowPlayingVolumeSlider").addEventListener("change", function() { ticks *= value;
playbackManager.setVolume(this.value, currentPlayer) return datetime.getDisplayRunningTime(ticks);
}), context.querySelector(".buttonMute").addEventListener("click", function() { };
playbackManager.toggleMute(currentPlayer)
context.querySelector(".nowPlayingVolumeSlider").addEventListener("change", function () {
playbackManager.setVolume(this.value, currentPlayer);
});
context.querySelector(".buttonMute").addEventListener("click", function () {
playbackManager.toggleMute(currentPlayer);
}); });
var playlistContainer = context.querySelector(".playlist"); var playlistContainer = context.querySelector(".playlist");
playlistContainer.addEventListener("action-remove", function(e) { playlistContainer.addEventListener("action-remove", function (e__z) {
playbackManager.removeFromPlaylist([e.detail.playlistItemId], currentPlayer) playbackManager.removeFromPlaylist([e__z.detail.playlistItemId], currentPlayer);
}), playlistContainer.addEventListener("itemdrop", function(e) { });
var newIndex = e.detail.newIndex, playlistContainer.addEventListener("itemdrop", function (e__x) {
playlistItemId = e.detail.playlistItemId; var newIndex = e__x.detail.newIndex;
playbackManager.movePlaylistItem(playlistItemId, newIndex, currentPlayer) var playlistItemId = e__x.detail.playlistItemId;
}), context.querySelector(".btnSavePlaylist").addEventListener("click", savePlaylist) playbackManager.movePlaylistItem(playlistItemId, newIndex, currentPlayer);
});
context.querySelector(".btnSavePlaylist").addEventListener("click", savePlaylist);
} }
function onPlayerChange() { function onPlayerChange() {
bindToPlayer(dlg, playbackManager.getCurrentPlayer()) bindToPlayer(dlg, playbackManager.getCurrentPlayer());
} }
function onMessageSubmit(e) { function onMessageSubmit(e__c) {
var form = e.target; var form = e__c.target;
return playbackManager.sendCommand({ playbackManager.sendCommand({
Name: "DisplayMessage", Name: "DisplayMessage",
Arguments: { Arguments: {
Header: form.querySelector("#txtMessageTitle").value, Header: form.querySelector("#txtMessageTitle").value,
Text: form.querySelector("#txtMessageText", form).value Text: form.querySelector("#txtMessageText", form).value
} }
}, currentPlayer), form.querySelector("input").value = "", require(["toast"], function(toast) { }, currentPlayer);
toast("Message sent.") form.querySelector("input").value = "";
}), e.preventDefault(), e.stopPropagation(), !1
require(["toast"], function (toast) {
toast("Message sent.");
});
e__c.preventDefault();
e__c.stopPropagation();
return false;
} }
function onSendStringSubmit(e) { function onSendStringSubmit(e__v) {
var form = e.target; var form = e__v.target;
return playbackManager.sendCommand({ playbackManager.sendCommand({
Name: "SendString", Name: "SendString",
Arguments: { Arguments: {
String: form.querySelector("#txtTypeText", form).value String: form.querySelector("#txtTypeText", form).value
} }
}, currentPlayer), form.querySelector("input").value = "", require(["toast"], function(toast) { }, currentPlayer);
toast("Text sent.") form.querySelector("input").value = "";
}), e.preventDefault(), e.stopPropagation(), !1
require(["toast"], function (toast) {
toast("Text sent.");
});
e__v.preventDefault();
e__v.stopPropagation();
return false;
} }
function init(ownerView, context) { function init(ownerView, context) {
bindEvents(context), context.querySelector(".sendMessageForm").addEventListener("submit", onMessageSubmit), context.querySelector(".typeTextForm").addEventListener("submit", onSendStringSubmit), events.on(playbackManager, "playerchange", onPlayerChange) bindEvents(context);
context.querySelector(".sendMessageForm").addEventListener("submit", onMessageSubmit);
context.querySelector(".typeTextForm").addEventListener("submit", onSendStringSubmit);
events.on(playbackManager, "playerchange", onPlayerChange);
} }
function onDialogClosed(e) { function onDialogClosed(e__b) {
releaseCurrentPlayer(), events.off(playbackManager, "playerchange", onPlayerChange), lastPlayerState = null releaseCurrentPlayer();
events.off(playbackManager, "playerchange", onPlayerChange);
lastPlayerState = null;
} }
function onShow(context, tab) { function onShow(context, tab) {
currentImgUrl = null, bindToPlayer(context, playbackManager.getCurrentPlayer()) currentImgUrl = null;
} bindToPlayer(context, playbackManager.getCurrentPlayer());
var dlg, currentPlayer, lastPlayerState, currentPlayerSupportedCommands = [],
lastUpdateTime = 0,
currentRuntimeTicks = 0,
self = this;
self.init = function(ownerView, context) {
dlg = context, init(ownerView, dlg)
}, self.onShow = function() {
onShow(dlg, window.location.hash)
}, self.destroy = function() {
onDialogClosed()
}
} }
var dlg;
var currentPlayer;
var lastPlayerState;
var currentPlayerSupportedCommands = [];
var lastUpdateTime = 0;
var currentRuntimeTicks = 0;
var self = this;
self.init = function (ownerView, context) {
dlg = context;
init(ownerView, dlg);
};
self.onShow = function () {
onShow(dlg, window.location.hash);
};
self.destroy = function () {
onDialogClosed();
};
};
}); });