define(["appSettings", "events", "browser", "loading", "playbackManager", "appRouter", "globalize", "apphost"], function(appSettings, events, browser, loading, playbackManager, appRouter, globalize, appHost) { "use strict"; function mirrorItem(info, player) { var item = info.item; playbackManager.displayContent({ ItemName: item.Name, ItemId: item.Id, ItemType: item.Type, Context: info.context }, player) } function mirrorIfEnabled(info) { if (info && playbackManager.enableDisplayMirroring()) { var getPlayerInfo = playbackManager.getPlayerInfo(); getPlayerInfo && (getPlayerInfo.isLocalPlayer || -1 === getPlayerInfo.supportedCommands.indexOf("DisplayContent") || mirrorItem(info, playbackManager.getCurrentPlayer())) } } function emptyCallback() {} function getTargetSecondaryText(target) { return target.user ? target.user.Name : null } function getIcon(target) { var deviceType = target.deviceType; switch (!deviceType && target.isLocalPlayer && (deviceType = browser.tv ? "tv" : browser.mobile ? "smartphone" : "desktop"), deviceType || (deviceType = "tv"), deviceType) { case "smartphone": return ""; case "tablet": return ""; case "tv": return ""; case "cast": return ""; case "desktop": return ""; default: return "" } } function showPlayerSelection(button) { var currentPlayerInfo = playbackManager.getPlayerInfo(); if (currentPlayerInfo && !currentPlayerInfo.isLocalPlayer) return void showActivePlayerMenu(currentPlayerInfo); var currentPlayerId = currentPlayerInfo ? currentPlayerInfo.id : null; loading.show(), playbackManager.getTargets().then(function(targets) { var menuItems = targets.map(function(t) { var name = t.name; return t.appName && t.appName !== t.name && (name += " - " + t.appName), { name: name, id: t.id, selected: currentPlayerId === t.id, secondaryText: getTargetSecondaryText(t), icon: getIcon(t) } }); require(["actionsheet"], function(actionsheet) { loading.hide(); var menuOptions = { title: globalize.translate("sharedcomponents#HeaderPlayOn"), items: menuItems, positionTo: button, resolveOnClick: !0, border: !0 }; browser.chrome && !appHost.supports("castmenuhashchange") && (menuOptions.enableHistory = !1), actionsheet.show(menuOptions).then(function(id) { var target = targets.filter(function(t) { return t.id === id })[0]; playbackManager.trySetActivePlayer(target.playerName, target), mirrorIfEnabled() }, emptyCallback) }) }) } function showActivePlayerMenu(playerInfo) { require(["dialogHelper", "dialog", "emby-checkbox", "emby-button"], function(dialogHelper) { showActivePlayerMenuInternal(dialogHelper, playerInfo) }) } function disconnectFromPlayer(currentDeviceName) { -1 !== playbackManager.getSupportedCommands().indexOf("EndSession") ? require(["dialog"], function(dialog) { var menuItems = []; menuItems.push({ name: globalize.translate("sharedcomponents#Yes"), id: "yes" }), menuItems.push({ name: globalize.translate("sharedcomponents#No"), id: "no" }), dialog({ buttons: menuItems, text: globalize.translate("sharedcomponents#ConfirmEndPlayerSession", currentDeviceName) }).then(function(id) { switch (id) { case "yes": playbackManager.getCurrentPlayer().endSession(), playbackManager.setDefaultPlayerActive(); break; case "no": playbackManager.setDefaultPlayerActive() } }) }) : playbackManager.setDefaultPlayerActive() } function showActivePlayerMenuInternal(dialogHelper, playerInfo) { var html = "", dialogOptions = { removeOnClose: !0 }; dialogOptions.modal = !1, dialogOptions.entryAnimationDuration = 160, dialogOptions.exitAnimationDuration = 160, dialogOptions.autoFocus = !1; var dlg = dialogHelper.createDialog(dialogOptions); dlg.classList.add("promptDialog"); var currentDeviceName = playerInfo.deviceName || playerInfo.name; if (html += '