define([
"exports",
"./../dom.js",
"./../common/inputmanager.js",
"./../common/usersettings/usersettings.js",
"./../common/globalize.js",
"./../common/datetime.js",
"./../common/playback/playbackmanager.js",
"./../emby-apiclient/events.js",
"./../emby-apiclient/connectionmanager.js",
"./../layoutmanager.js",
"./../approuter.js",
"./../maintabsmanager.js",
"./../viewmanager/viewmanager.js",
"./../backdrop/backdrop.js",
"./../common/servicelocator.js",
"./../navdrawer/navdrawer.js",
"./../navdrawer/navdrawercontent.js",
"./../common/input/api.js",
"./../emby-elements/emby-button/paper-icon-button-light.js",
"./../common/methodtimer.js",
], function (
_exports,
_dom,
_inputmanager,
_usersettings,
_globalize,
_datetime,
_playbackmanager,
_events,
_connectionmanager,
_layoutmanager,
_approuter,
_maintabsmanager,
_viewmanager,
_backdrop,
_servicelocator,
_navdrawer,
_navdrawercontent,
_api,
_paperIconButtonLight,
_methodtimer,
) {
Object.defineProperty(_exports, "__esModule", { value: !0 }),
(_exports.default = void 0),
require(["material-icons", "css!modules/appheader/appheader.css"]);
var headerHomeButton,
headerMenuButton,
headerBackButton,
headerCastButton,
headerHelpButton,
headerSearchButton,
headerSettingsButton,
headerUserButton,
selectedPlayerText,
headerRight,
currentServerId,
isUserAdmin,
headerMiddle,
_scrollingElement,
boundLayoutModeChangeFn,
skinHeaderElement = document.querySelector(".skinHeader"),
skinBodyElement = document.querySelector(".skinBody"),
hasPhysicalBackButton =
_servicelocator.appHost.supports("physicalbackbutton"),
supportsFullscreenMediaQueries = _servicelocator.appHost.supports(
"fullscreenmediaqueries",
),
backgroundContainer = document.querySelector(".backgroundContainer"),
decodingAttribute = _dom.default.supportsAsyncDecodedImages()
? ' decoding="async"'
: "",
TranslateProperty = CSS.supports("translate", "40px 100px")
? "translate"
: CSS.supports("transform", "scale(1)")
? "transform"
: "-webkit-transform",
userSignedIn = !1,
currentDrawerState = 0,
SupportsExternalLinks =
_servicelocator.appHost.supports("externallinks") &&
_servicelocator.appHost.supports("targetblank");
function updateClock() {
var clock = this.clockElement;
clock &&
(clock.innerHTML = _datetime.default
.getDisplayTime(new Date())
.toLowerCase());
}
function onLocalUserSignedOut(e) {
(userSignedIn = !1),
headerSearchButton.classList.add("hide"),
updateUserInHeader(null),
setRemoteControlVisibility();
}
function ensureHeaderSettingsButton() {
(headerUserButton =
headerUserButton || document.querySelector(".headerUserButton")),
(headerSettingsButton =
headerSettingsButton ||
document.querySelector(".headerSettingsButton"));
}
function updateUserInHeader(user) {
var userImageUrl;
ensureHeaderSettingsButton(),
user &&
user.PrimaryImageTag &&
(userImageUrl = (function (user, apiClient, options) {
return (
((options = options || {}).type = "Primary"),
user.PrimaryImageTag
? ((options.tag = user.PrimaryImageTag),
apiClient.getUserImageUrl(user.Id, options))
: null
);
})(user, _connectionmanager.default.getApiClient(user.ServerId), {
height: Math.round(0.56 * skinHeaderElement.offsetHeight),
})),
(headerUserButton.innerHTML = userImageUrl
? ''
: ''),
(isUserAdmin = user
? (headerUserButton.classList.remove("hide"),
_layoutmanager.default.tv
? headerSettingsButton.classList.add("hide")
: headerSettingsButton.classList.remove("hide"),
user.Policy.IsAdministrator)
: (headerUserButton.classList.add("hide"),
headerSettingsButton.classList.add("hide"),
!1));
}
function onUserUpdated(e, apiClient, data) {
apiClient.getCurrentUserId() === data.Id &&
apiClient.serverId() === currentServerId &&
updateUserInHeader(data);
}
function resetPremiereButton() {
_servicelocator.appHost.supports("premiereinheader") &&
_connectionmanager.default.currentApiClient() &&
_connectionmanager.default.currentApiClient().serverId() &&
require(["registrationServices", "emby-button"], function (
registrationServices,
) {
registrationServices
.validateFeature("themes", { viewOnly: !0, showDialog: !1 })
.then(removePremiereButton, addPremiereButton);
});
}
function onPremiereButtonClick() {
require(["registrationServices"], function (registrationServices) {
registrationServices
.validateFeature("themes", { viewOnly: !0 })
.then(resetPremiereButton);
});
}
function addPremiereButton() {
var html =
'";
document.querySelector(".btnHeaderPremiere") ||
(document
.querySelector(".headerRight")
.insertAdjacentHTML("afterbegin", html),
document
.querySelector(".btnHeaderPremiere")
.addEventListener("click", onPremiereButtonClick));
}
function removePremiereButton() {
var btn = document.querySelector(".btnHeaderPremiere");
btn && btn.remove();
}
function onLocalUserSignedIn(e, serverId, userId) {
(currentServerId = serverId),
(userSignedIn = !0),
_connectionmanager.default
.getApiClient(serverId)
.getUser(userId)
.then(updateUserInHeader),
resetPremiereButton(),
setRemoteControlVisibility(),
setSearchVisibility({});
}
function onHeaderMenuButtonClick() {
_navdrawer.default.open();
}
function onHomeClick() {
_approuter.default.goHome();
}
function onBackClick(e) {
_inputmanager.default.trigger("back", {
sourceElement: _viewmanager.default.currentView(),
originalEvent: e,
});
}
function onSearchClick(e) {
_inputmanager.default.trigger("search", {
sourceElement: _viewmanager.default.currentView(),
originalEvent: e,
});
}
function onUserButtonClick() {
_approuter.default.showUserMenu({ positionTo: this, positionY: "bottom" });
}
function onSettingsButtonClick() {
var manageServerRouteUrl = _approuter.default.getRouteUrl("manageserver");
if (!isUserAdmin || !_approuter.default.getRouteInfo(manageServerRouteUrl))
return onUserButtonClick.call(this);
_approuter.default.show(manageServerRouteUrl);
}
function onCastButtonClick() {
var btn = this;
require(["playerSelectionMenu"], function (playerSelectionMenu) {
playerSelectionMenu.show(btn);
});
}
function onLayoutModeChange() {
!_layoutmanager.default.tv && _dom.default.allowBackdropFilter()
? skinHeaderElement.classList.add("skinHeader-withbackdropfilter")
: skinHeaderElement.classList.remove("skinHeader-withbackdropfilter"),
ensureHeaderSettingsButton(),
_layoutmanager.default.tv || headerUserButton.classList.contains("hide")
? headerSettingsButton.classList.add("hide")
: headerSettingsButton.classList.remove("hide"),
_layoutmanager.default.tv
? (headerRight.classList.add("secondaryText"),
skinHeaderElement.classList.add("appHeader-tv"))
: (headerRight.classList.remove("secondaryText"),
skinHeaderElement.classList.remove("appHeader-tv")),
(headerMiddle = headerMiddle || document.querySelector(".headerMiddle")),
_layoutmanager.default.tv
? headerMiddle.classList.add("headerMiddle-tv")
: headerMiddle.classList.remove("headerMiddle-tv"),
this.destroyClock(),
this.loadClock(),
setRemoteControlVisibility();
}
function updateCastIcon() {
var info,
btnCast = headerCastButton;
btnCast &&
((info = _playbackmanager.default.getPlayerInfo()) && !info.isLocalPlayer
? ((btnCast.innerHTML = ""),
(selectedPlayerText.innerHTML = info.deviceName || info.name))
: ((btnCast.innerHTML = ""),
(selectedPlayerText.innerHTML = "")));
}
function onNewPlayQueueStart(e, player, state) {
!(function (state) {
return (
_layoutmanager.default.tv &&
state.NowPlayingItem &&
"Audio" === state.NowPlayingItem.MediaType
);
})(state) ||
state.IsBackgroundPlayback ||
_approuter.default.showNowPlaying();
}
function setRemoteControlVisibility() {
_servicelocator.appHost.supports("remotecontrol") &&
!_layoutmanager.default.tv &&
userSignedIn
? (headerCastButton.classList.remove("hide"),
selectedPlayerText.classList.remove("hide"))
: (headerCastButton.classList.add("hide"),
selectedPlayerText.classList.add("hide"));
}
function setSearchVisibility(viewDetail) {
!userSignedIn ||
!1 === viewDetail.searchButton ||
"search" ===
(null == (viewDetail = viewDetail.params) ? void 0 : viewDetail.type) ||
(!_layoutmanager.default.tv && [1, 2, 3].includes(currentDrawerState))
? headerSearchButton.classList.add("hide")
: headerSearchButton.classList.remove("hide");
}
function allowDrawer(detail) {
if (!1 !== detail.drawer && userSignedIn) {
if (detail.hideDrawerWithOtherUserIdParam) {
detail = detail.params;
if (detail && detail.userId && detail.serverId) {
var apiClient = _connectionmanager.default.getApiClient(
detail.serverId,
);
if (apiClient && apiClient.getCurrentUserId() !== detail.userId)
return;
}
}
return 1;
}
}
function updateWindowScroll(detail, view) {
(elem = _scrollingElement) ||
((elem = document.scrollingElement || document.documentElement),
(_scrollingElement = elem));
var elem;
enableWindowScroll(detail)
? (elem.classList.remove("noScrollY"),
elem.classList.add("overflowYScroll"),
skinBodyElement.classList.add("skinBody-withWindowScroll"),
skinHeaderElement.classList.add("headroom-scrolling"),
skinHeaderElement.classList.remove("headroom-hidden"))
: (elem.classList.add("noScrollY"),
elem.classList.remove("overflowYScroll"),
skinBodyElement.classList.remove("skinBody-withWindowScroll"));
}
function onNavDrawerStateChange(e, drawerState) {
3 === (currentDrawerState = drawerState)
? (headerHomeButton.classList.add("headerHomeButton-withdockeddrawer"),
headerMenuButton.classList.add("headerMenuButton-withdockeddrawer"),
backgroundContainer.classList.add(
"backgroundContainer-withdockeddrawer",
),
skinBodyElement.classList.add(
"skinBody-withMiniDrawer",
"skinBody-withDockedDrawer",
),
skinBodyElement.classList.remove("skinBody-withFullDrawer"),
skinHeaderElement.classList.remove("skinHeader-withfulldrawer"),
skinHeaderElement.classList.add(
"skinHeader-withminidrawer",
"skinHeader-withdockeddrawer",
))
: 2 === drawerState
? (headerHomeButton.classList.add("headerHomeButton-withdockeddrawer"),
headerMenuButton.classList.add("headerMenuButton-withdockeddrawer"),
backgroundContainer.classList.add(
"backgroundContainer-withdockeddrawer",
),
skinBodyElement.classList.add(
"skinBody-withFullDrawer",
"skinBody-withDockedDrawer",
),
skinBodyElement.classList.remove("skinBody-withMiniDrawer"),
skinHeaderElement.classList.add(
"skinHeader-withfulldrawer",
"skinHeader-withdockeddrawer",
),
skinHeaderElement.classList.remove("skinHeader-withminidrawer"))
: 1 === drawerState
? 3 === _navdrawer.default.closeState
? (headerHomeButton.classList.add("headerHomeButton-withdockeddrawer"),
headerMenuButton.classList.add("headerMenuButton-withdockeddrawer"),
backgroundContainer.classList.add(
"backgroundContainer-withdockeddrawer",
),
skinBodyElement.classList.remove("skinBody-withFullDrawer"),
skinHeaderElement.classList.remove("skinHeader-withfulldrawer"),
skinBodyElement.classList.add(
"skinBody-withMiniDrawer",
"skinBody-withDockedDrawer",
),
skinHeaderElement.classList.add(
"skinHeader-withminidrawer",
"skinHeader-withdockeddrawer",
))
: (headerHomeButton.classList.remove(
"headerHomeButton-withdockeddrawer",
),
headerMenuButton.classList.remove(
"headerMenuButton-withdockeddrawer",
),
backgroundContainer.classList.remove(
"backgroundContainer-withdockeddrawer",
),
skinBodyElement.classList.remove(
"skinBody-withFullDrawer",
"skinBody-withMiniDrawer",
"skinBody-withDockedDrawer",
),
skinHeaderElement.classList.remove(
"skinHeader-withfulldrawer",
"skinHeader-withminidrawer",
"skinHeader-withdockeddrawer",
))
: (skinBodyElement.classList.remove(
"skinBody-withFullDrawer",
"skinBody-withMiniDrawer",
"skinBody-withDockedDrawer",
),
skinHeaderElement.classList.remove(
"skinHeader-withfulldrawer",
"skinHeader-withminidrawer",
"skinHeader-withdockeddrawer",
),
backgroundContainer.classList.remove(
"backgroundContainer-withdockeddrawer",
),
headerHomeButton.classList.remove("headerHomeButton-withdockeddrawer"),
headerMenuButton.classList.remove("headerMenuButton-withdockeddrawer")),
setSearchVisibility(_viewmanager.default.currentViewInfo() || {});
}
function onViewShow(e) {
var instance,
detail = e.detail;
detail.clearBackdrop && _backdrop.default.clear(),
(function (detail) {
var drawerStyle;
allowDrawer(detail) &&
!_layoutmanager.default.tv &&
("docked" ===
(drawerStyle = detail.settingsTheme
? "docked"
: _usersettings.default.drawerStyle()) ||
"docked-mini" === drawerStyle)
? (_layoutmanager.default.tv && (drawerStyle = "docked-mini"),
(detail.drawerInline = !0),
_navdrawer.default.open(!0, "docked-mini" === drawerStyle))
: ((_navdrawer.default.closeState = null),
_navdrawer.default.close());
})(detail),
(function (detail) {
!1 === (detail = detail.backButton) ||
!_approuter.default.canGoBack() ||
(hasPhysicalBackButton && !0 !== detail && !_layoutmanager.default.tv)
? headerBackButton.classList.add("hide")
: !supportsFullscreenMediaQueries ||
!0 === detail ||
_layoutmanager.default.tv
? headerBackButton.classList.remove(
"headerBackButton-showfullscreen",
"hide",
)
: (headerBackButton.classList.add("headerBackButton-showfullscreen"),
headerBackButton.classList.remove("hide"));
})(detail),
(function (detail) {
userSignedIn && !1 !== detail.homeButton
? headerHomeButton.classList.remove("hide")
: headerHomeButton.classList.add("hide");
})(detail),
setSearchVisibility(detail),
(function (detail) {
!_layoutmanager.default.tv && userSignedIn && allowDrawer(detail)
? headerMenuButton.classList.remove("hide")
: headerMenuButton.classList.add("hide");
})(detail),
(function (detail) {
(detail = detail.helpUrl) && SupportsExternalLinks
? ((headerHelpButton.href = detail),
headerHelpButton.classList.remove("hide"))
: headerHelpButton.classList.add("hide");
})(detail),
(function (detail) {
!_layoutmanager.default.tv && detail.adjustHeaderForEmbeddedScroll
? skinHeaderElement.classList.add("adjustHeaderForEmbeddedScroll")
: skinHeaderElement.classList.remove("adjustHeaderForEmbeddedScroll");
})(detail),
(function (detail) {
!1 === detail.secondaryHeaderFeatures
? headerRight.classList.add("hide")
: headerRight.classList.remove("hide");
})(detail, e.target),
(function (header, detail) {
detail.defaultTitle
? header.setDefaultTitle()
: null != (detail = detail.title) &&
header.setTitle(_globalize.default.translate(detail));
})(this, detail, e.target),
(instance = (instance = this).pageTitleElement) &&
(_layoutmanager.default.tv ||
headerBackButton.classList.contains("hide")
? instance.classList.add("pageTitle-marginstart")
: instance.classList.remove("pageTitle-marginstart")),
_navdrawer.default.onViewShow(e),
!detail.isRestored && enableWindowScroll(detail) && window.scrollTo(0, 0);
}
function enableWindowScroll(detail) {
return !0 === detail.windowScroll;
}
function removeTransformFromHeader() {
skinHeaderElement.style[TranslateProperty] = "none";
}
function onViewBeforeShow(e) {
var detail = e.detail,
e = e.target,
skinHeader =
(detail.headerTabs || _maintabsmanager.default.setTabs(null),
skinHeaderElement);
!1 !== detail.headerBackground &&
skinHeader.classList.add("skinHeader-withBackground"),
(detail.adjustHeaderForEmbeddedScroll && !0 !== detail.windowScroll) ||
removeTransformFromHeader(),
updateWindowScroll(detail, e),
!1 === detail.headerBackground &&
skinHeader.classList.remove("skinHeader-withBackground"),
this.setTransparent(detail.transparentHeader);
}
function render(instance) {
var Help, headerLeft, Back, Home, Menu;
(instance.element = skinHeaderElement),
(headerLeft = skinHeaderElement.querySelector(".headerLeft")),
(Menu = _globalize.default.translate("Menu")),
(Home = _globalize.default.translate("Home")),
(Back = _globalize.default.translate("Back")),
(Help = _globalize.default.translate("Help")),
(headerLeft.innerHTML =
'\n \n \n \n