define(['appSettings', 'events', 'browser', 'libraryMenu', 'loading'], function (appSettings, events, browser, libraryMenu, loading) { 'use strict'; var currentDisplayInfo; function mirrorItem(info) { var item = info.item; MediaController.getCurrentPlayer().displayContent({ ItemName: item.Name, ItemId: item.Id, ItemType: item.Type, Context: info.context }); } function mirrorIfEnabled(info) { info = info || currentDisplayInfo; if (info && MediaController.enableDisplayMirroring()) { var player = MediaController.getPlayerInfo(); if (!player.isLocalPlayer && player.supportedCommands.indexOf('DisplayContent') != -1) { mirrorItem(info); } } } function showPlayerSelection(button, enableHistory) { var playerInfo = MediaController.getPlayerInfo(); if (!playerInfo.isLocalPlayer) { showActivePlayerMenu(playerInfo); return; } loading.show(); MediaController.getTargets().then(function (targets) { var menuItems = targets.map(function (t) { var name = t.name; if (t.appName && t.appName != t.name) { name += " - " + t.appName; } return { name: name, id: t.id, selected: playerInfo.id == t.id }; }); require(['actionsheet'], function (actionsheet) { loading.hide(); var menuOptions = { title: Globalize.translate('HeaderSelectPlayer'), items: menuItems, positionTo: button, resolveOnClick: true }; // Unfortunately we can't allow the url to change or chromecast will throw a security error // Might be able to solve this in the future by moving the dialogs to hashbangs if (!((enableHistory !== false && !browser.chrome) || AppInfo.isNativeApp)) { menuOptions.enableHistory = false; } actionsheet.show(menuOptions).then(function (id) { var target = targets.filter(function (t) { return t.id == id; })[0]; MediaController.trySetActivePlayer(target.playerName, target); mirrorIfEnabled(); }); }); }); } function showActivePlayerMenu(playerInfo) { require(['dialogHelper', 'dialog', 'emby-checkbox', 'emby-button'], function (dialogHelper) { showActivePlayerMenuInternal(dialogHelper, playerInfo); }); } function showActivePlayerMenuInternal(dialogHelper, playerInfo) { var html = ''; var dialogOptions = { removeOnClose: true }; dialogOptions.modal = false; dialogOptions.entryAnimationDuration = 160; dialogOptions.exitAnimationDuration = 160; dialogOptions.autoFocus = false; var dlg = dialogHelper.createDialog(dialogOptions); dlg.classList.add('promptDialog'); html += '