import dom from"./../dom.js";import inputManager from"./../common/inputmanager.js";import userSettings from"./../common/usersettings/usersettings.js";import globalize from"./../common/globalize.js";import datetime from"./../common/datetime.js";import playbackManager from"./../common/playback/playbackmanager.js";import events from"./../emby-apiclient/events.js";import connectionManager from"./../emby-apiclient/connectionmanager.js";import layoutManager from"./../layoutmanager.js";import appRouter from"./../approuter.js";import mainTabsManager from"./../maintabsmanager.js";import viewManager from"./../viewmanager/viewmanager.js";import backdrop from"./../backdrop/backdrop.js";import{appHost}from"./../common/servicelocator.js";import navDrawerInstance from"./../navdrawer/navdrawer.js";import navDrawerContent from"./../navdrawer/navdrawercontent.js";import serverNotifications from"./../common/input/api.js";import"./../emby-elements/emby-button/paper-icon-button-light.js";import"./../emby-elements/emby-button/emby-button.js";import MethodTimer from"./../common/methodtimer.js";import appHeaderContent from"./appheadercontent.js";require(["material-icons","css!modules/appheader/appheader.css"]);let skinHeaderElement=document.querySelector(".skinHeader"),skinBodyElement=document.querySelector(".skinBody"),hasPhysicalBackButton=appHost.supports("physicalbackbutton"),supportsFullscreenMediaQueries=appHost.supports("fullscreenmediaqueries"),backgroundContainer=document.querySelector(".backgroundContainer"),supportsAsyncDecodedImages=dom.supportsAsyncDecodedImages(),decodingAttribute=supportsAsyncDecodedImages?' decoding="async"':"",SupportsTranslateProperty=CSS.supports("translate","40px 100px"),TranslateProperty=SupportsTranslateProperty?"translate":CSS.supports("transform","scale(1)")?"transform":"-webkit-transform",docElem=document.documentElement,userSignedIn=!1,headerLeft,headerHomeButton,headerMenuButton,headerBackButton,headerCastButton,headerHelpButton,headerSearchButton,headerSettingsButton,headerUserButton,selectedPlayerText,headerRight,currentServerId,isUserAdmin,headerMiddle,currentDrawerState,appFooter,SupportsExternalLinks=appHost.supports("externallinks")&&appHost.supports("targetblank");function updateClock(){var clock=this.clockElement;clock&&(clock.innerHTML=datetime.getDisplayTime(new Date).toLowerCase())}function onLocalUserSignedOut(e){userSignedIn=!1,headerSearchButton.classList.add("hide"),updateUserInHeader(null),setRemoteControlVisibility()}function getUserImageUrl(user,apiClient,options){return(options=options||{}).type="Primary",user.PrimaryImageTag?(options.tag=user.PrimaryImageTag,apiClient.getUserImageUrl(user.Id,options)):null}function ensureHeaderMiddle(){headerMiddle=headerMiddle||document.querySelector(".headerMiddle")}function ensureHeaderSettingsButton(){headerUserButton=headerUserButton||document.querySelector(".headerUserButton"),headerSettingsButton=headerSettingsButton||document.querySelector(".headerSettingsButton")}function updateUserInHeader(user){ensureHeaderSettingsButton();let userImageUrl;var apiClient,height;user&&user.PrimaryImageTag&&(apiClient=connectionManager.getApiClient(user.ServerId),height=Math.round(.56*skinHeaderElement.offsetHeight),userImageUrl=getUserImageUrl(user,apiClient,{height:height})),userImageUrl?headerUserButton.innerHTML='':headerUserButton.innerHTML='',isUserAdmin=user?(headerUserButton.classList.remove("hide"),layoutManager.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(){appHost.supports("premiereinheader")&&connectionManager.currentApiClient()&&connectionManager.currentApiClient().serverId()&&userSignedIn&&Emby.importModule("./modules/registrationservices/registrationservices.js").then(function(registrationServices){registrationServices.validateFeature("themes",{viewOnly:!0,showDialog:!1}).then(removePremiereButton,addPremiereButton)})}function onPremiereButtonClick(){Emby.importModule("./modules/registrationservices/registrationservices.js").then(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.getApiClient(serverId).getUser(userId).then(updateUserInHeader),resetPremiereButton(),setRemoteControlVisibility(),setSearchVisibility({})}function onHeaderMenuButtonClick(){navDrawerInstance.open()}function onHomeClick(){appRouter.goHome()}function onBackClick(e){inputManager.trigger("back",{sourceElement:viewManager.currentView(),originalEvent:e})}function onSearchClick(e){inputManager.trigger("search",{sourceElement:viewManager.currentView(),originalEvent:e})}function onUserButtonClick(){appRouter.showUserMenu({positionTo:this,positionY:"bottom",positionX:"right",transformOrigin:"right top"})}function onSettingsButtonClick(){var manageServerRouteUrl=appRouter.getRouteUrl("manageserver");if(!isUserAdmin||!appRouter.getRouteInfo(manageServerRouteUrl))return onUserButtonClick.call(this);appRouter.show(manageServerRouteUrl)}function onCastButtonClick(){let btn=this;Emby.importModule("./modules/playback/playerselection.js").then(function(playerSelectionMenu){playerSelectionMenu.show(btn)})}let bottomTabsLoaded;function loadBottomTabs(){bottomTabsLoaded||(bottomTabsLoaded=!0,Emby.importModule("./modules/dockedtabs/dockedtabs.js"))}function onLayoutModeChange(){!layoutManager.tv&&dom.allowBackdropFilter()?skinHeaderElement.classList.add("skinHeader-withbackdropfilter"):skinHeaderElement.classList.remove("skinHeader-withbackdropfilter"),ensureHeaderSettingsButton(),layoutManager.tv||headerUserButton.classList.contains("hide")?headerSettingsButton.classList.add("hide"):headerSettingsButton.classList.remove("hide"),layoutManager.tv?(headerRight.classList.add("secondaryText"),skinHeaderElement.classList.add("appHeader-tv")):(headerRight.classList.remove("secondaryText"),skinHeaderElement.classList.remove("appHeader-tv"),loadBottomTabs()),ensureHeaderMiddle(),layoutManager.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.getPlayerInfo())&&!info.isLocalPlayer?(btnCast.innerHTML="",selectedPlayerText.innerHTML=info.deviceName||info.name):(btnCast.innerHTML="",selectedPlayerText.innerHTML=""))}function enableAudioNavigate(state){return layoutManager.tv&&state.NowPlayingItem&&"Audio"===state.NowPlayingItem.MediaType}function onNewPlayQueueStart(e,player,state){enableAudioNavigate(state)&&!state.IsBackgroundPlayback&&appRouter.showNowPlaying()}function setRemoteControlVisibility(){appHost.supports("remotecontrol")&&!layoutManager.tv&&userSignedIn?(headerCastButton.classList.remove("hide"),selectedPlayerText.classList.remove("hide")):(headerCastButton.classList.add("hide"),selectedPlayerText.classList.add("hide"))}function updateHelpButton(detail){detail=detail.helpUrl;detail&&SupportsExternalLinks?(headerHelpButton.href=detail,headerHelpButton.classList.remove("hide")):headerHelpButton.classList.add("hide")}function setSearchVisibility(viewDetail){null!=currentDrawerState&&(!userSignedIn||!1===viewDetail.searchButton||"search"===viewDetail.params?.type||!layoutManager.tv&&[1,2,3].includes(currentDrawerState)?headerSearchButton.classList.add("hide"):headerSearchButton.classList.remove("hide"))}function updateHomeButton(detail){userSignedIn&&!1!==detail.homeButton?headerHomeButton.classList.remove("hide"):headerHomeButton.classList.add("hide")}function allowDrawer(detail){if(!1===detail.drawer)return!1;if(!userSignedIn)return!1;if(detail.hideDrawerWithOtherUserIdParam){detail=detail.params;if(detail&&detail.userId&&detail.serverId){var apiClient=connectionManager.getApiClient(detail.serverId);if(apiClient&&apiClient.getCurrentUserId()!==detail.userId)return!1}}return!0}function updateMenuButton(detail,drawerAllowed){!layoutManager.tv&&userSignedIn&&drawerAllowed?headerMenuButton.classList.remove("hide"):headerMenuButton.classList.add("hide")}function updateBackButton(detail){let backButtonConfig=detail.backButton;!1===(backButtonConfig=null==backButtonConfig&&detail.headerTabs?!1:backButtonConfig)||!appRouter.canGoBack()||hasPhysicalBackButton&&!0!==backButtonConfig&&!layoutManager.tv?headerBackButton.classList.add("hide"):!supportsFullscreenMediaQueries||!0===backButtonConfig||layoutManager.tv?headerBackButton.classList.remove("headerBackButton-showfullscreen","hide"):(headerBackButton.classList.add("headerBackButton-showfullscreen"),headerBackButton.classList.remove("hide"))}function updateTitle(header,detail,view){detail.defaultTitle?header.setDefaultTitle():null!=(detail=detail.title)&&header.setTitle(globalize.translate(detail))}function updateRightHeader(header,detail,view){!1===detail.secondaryHeaderFeatures?headerRight.classList.add("hide"):headerRight.classList.remove("hide")}let _scrollingElement;function getScrollingElement(){let elem=_scrollingElement;return elem||(elem=document.scrollingElement||document.documentElement,_scrollingElement=elem),elem}function adjustHeaderForEmbeddedScroll(detail){!layoutManager.tv&&detail.adjustHeaderForEmbeddedScroll?skinHeaderElement.classList.add("adjustHeaderForEmbeddedScroll"):skinHeaderElement.classList.remove("adjustHeaderForEmbeddedScroll")}function updateWindowScroll(detail,view){var scrollingElement=getScrollingElement();!0===detail.windowScroll?(scrollingElement.classList.remove("noScrollY"),scrollingElement.classList.add("overflowYScroll"),skinBodyElement.classList.add("skinBody-withWindowScroll"),skinHeaderElement.classList.add("headroom-scrolling"),skinHeaderElement.classList.remove("headroom-hidden")):(scrollingElement.classList.add("noScrollY"),scrollingElement.classList.remove("overflowYScroll"),skinBodyElement.classList.remove("skinBody-withWindowScroll"))}function onNavDrawerStateChange(e,drawerState){currentDrawerState=drawerState,appFooter=appFooter||document.querySelector(".appfooter"),3===drawerState?(headerHomeButton.classList.add("headerHomeButton-withdockeddrawer"),headerMenuButton.classList.add("headerMenuButton-withdockeddrawer"),backgroundContainer.classList.add("backgroundContainer-withdockeddrawer"),viewManager.addViewClass("page-withMiniDrawer","page-withDockedDrawer"),viewManager.removeViewClass("page-withFullDrawer"),docElem.classList.remove("withFullDrawer"),skinHeaderElement.classList.remove("skinHeader-withfulldrawer"),skinHeaderElement.classList.add("skinHeader-withminidrawer"),headerLeft.classList.add("headerLeft-withdockeddrawer"),appFooter&&(appFooter.classList.add("appfooter-withMiniDrawer"),appFooter.classList.remove("appfooter-withFullDrawer"))):2===drawerState?(headerHomeButton.classList.add("headerHomeButton-withdockeddrawer"),headerMenuButton.classList.add("headerMenuButton-withdockeddrawer"),backgroundContainer.classList.add("backgroundContainer-withdockeddrawer"),docElem.classList.add("withFullDrawer"),viewManager.addViewClass("page-withFullDrawer","page-withDockedDrawer"),viewManager.removeViewClass("page-withMiniDrawer"),skinHeaderElement.classList.add("skinHeader-withfulldrawer"),headerLeft.classList.add("headerLeft-withdockeddrawer"),skinHeaderElement.classList.remove("skinHeader-withminidrawer"),appFooter&&(appFooter.classList.add("appfooter-withFullDrawer"),appFooter.classList.remove("appfooter-withMiniDrawer"))):1===drawerState?3===navDrawerInstance.closeState?(headerHomeButton.classList.add("headerHomeButton-withdockeddrawer"),headerMenuButton.classList.add("headerMenuButton-withdockeddrawer"),backgroundContainer.classList.add("backgroundContainer-withdockeddrawer"),docElem.classList.remove("withFullDrawer"),skinHeaderElement.classList.remove("skinHeader-withfulldrawer"),viewManager.removeViewClass("page-withFullDrawer"),viewManager.addViewClass("page-withMiniDrawer","page-withDockedDrawer"),skinHeaderElement.classList.add("skinHeader-withminidrawer"),headerLeft.classList.add("headerLeft-withdockeddrawer"),appFooter&&(appFooter.classList.remove("appfooter-withFullDrawer"),appFooter.classList.add("appfooter-withMiniDrawer"))):(headerHomeButton.classList.remove("headerHomeButton-withdockeddrawer"),headerMenuButton.classList.remove("headerMenuButton-withdockeddrawer"),backgroundContainer.classList.remove("backgroundContainer-withdockeddrawer"),docElem.classList.remove("withFullDrawer"),viewManager.removeViewClass("page-withMiniDrawer","page-withDockedDrawer","page-withFullDrawer"),skinHeaderElement.classList.remove("skinHeader-withfulldrawer","skinHeader-withminidrawer"),headerLeft.classList.remove("headerLeft-withdockeddrawer"),appFooter&&appFooter.classList.remove("appfooter-withMiniDrawer","appfooter-withFullDrawer")):(docElem.classList.remove("withFullDrawer"),viewManager.removeViewClass("page-withMiniDrawer","page-withDockedDrawer","page-withFullDrawer"),skinHeaderElement.classList.remove("skinHeader-withfulldrawer","skinHeader-withminidrawer"),headerLeft.classList.remove("headerLeft-withdockeddrawer"),backgroundContainer.classList.remove("backgroundContainer-withdockeddrawer"),headerHomeButton.classList.remove("headerHomeButton-withdockeddrawer"),headerMenuButton.classList.remove("headerMenuButton-withdockeddrawer"),appFooter&&appFooter.classList.remove("appfooter-withMiniDrawer","appfooter-withFullDrawer"));drawerState=viewManager.currentViewInfo();drawerState&&setSearchVisibility(drawerState)}function updateDrawerLayout(detail,drawerAllowed){if(drawerAllowed)if(layoutManager.tv)navDrawerInstance.closeState=null,navDrawerInstance.close();else{let drawerStyle=detail.settingsTheme?"docked":userSettings.drawerStyle();"docked"===drawerStyle||"docked-mini"===drawerStyle?(layoutManager.tv&&(drawerStyle="docked-mini"),detail.drawerInline=!0,navDrawerInstance.open(!0,"docked-mini"===drawerStyle)):(navDrawerInstance.closeState=null,navDrawerInstance.close())}else navDrawerInstance.closeState=null,navDrawerInstance.close()}function updateTitleMargin(instance){instance=instance.pageTitleElement;instance&&(layoutManager.tv?instance.classList.add("pageTitle-marginstart"):instance.classList.remove("pageTitle-marginstart"))}function onViewShow(e){var drawerAllowed,detail=e.detail;"true"===detail.params?.asDialog||(detail.clearBackdrop&&backdrop.clear(),updateDrawerLayout(detail,drawerAllowed=allowDrawer(detail)),updateBackButton(detail),updateHomeButton(detail),setSearchVisibility(detail),updateMenuButton(detail,drawerAllowed),updateHelpButton(detail),adjustHeaderForEmbeddedScroll(detail),updateRightHeader(this,detail,e.target),updateTitle(this,detail,e.target),updateTitleMargin(this),navDrawerInstance.onViewShow(e),detail.isRestored)||!0!==detail.windowScroll||window.scrollTo(0,0)}function clearTabs(){mainTabsManager.setTabs(null)}function removeTransformFromHeader(){skinHeaderElement.style[TranslateProperty]="none"}function onViewBeforeShow(e){var skinHeader,detail=e.detail;"true"!==detail.params?.asDialog&&(e=e.target,detail.headerTabs||clearTabs(),skinHeader=skinHeaderElement,!1===detail.headerBackground?skinHeader.classList.remove("skinHeader-withBackground"):skinHeader.classList.add("skinHeader-withBackground"),detail.adjustHeaderForEmbeddedScroll&&!0!==detail.windowScroll||removeTransformFromHeader(),updateWindowScroll(detail,e),this.setTransparent(detail.transparentHeader))}function shouldShowLeftNav(e){return!1!==viewManager.currentViewInfo()?.drawer&&!e.detail?.originalEvent?.repeat}function onHeaderCommand(e){switch(e.detail.command){case"moveleftedge":"rtl"!==document.dir&&shouldShowLeftNav(e)&&(navDrawerInstance.openIfClosed(!0),e.preventDefault());break;case"moverightedge":"rtl"===document.dir&&shouldShowLeftNav(e)&&(navDrawerInstance.openIfClosed(!0),e.preventDefault())}}let boundLayoutModeChangeFn;function bindEvents(instance){var parent=instance.element;headerBackButton=parent.querySelector(".headerBackButton"),headerHomeButton=parent.querySelector(".headerHomeButton"),headerMenuButton=parent.querySelector(".headerMenuButton"),headerCastButton=parent.querySelector(".headerCastButton"),headerHelpButton=parent.querySelector(".headerHelpButton"),headerSearchButton=parent.querySelector(".headerSearchButton"),selectedPlayerText=parent.querySelector(".headerSelectedPlayer"),headerRight=parent.querySelector(".headerRight"),headerBackButton.addEventListener("click",onBackClick),headerHomeButton.addEventListener("click",onHomeClick),headerSearchButton.addEventListener("click",onSearchClick),headerCastButton.addEventListener("click",onCastButtonClick),parent.querySelector(".headerUserButton").addEventListener("click",onUserButtonClick),parent.querySelector(".headerSettingsButton").addEventListener("click",onSettingsButtonClick),headerMenuButton.addEventListener("click",onHeaderMenuButtonClick),boundLayoutModeChangeFn=onLayoutModeChange.bind(instance),events.on(layoutManager,"modechange",boundLayoutModeChangeFn),events.on(playbackManager,"playerchange",updateCastIcon),events.on(playbackManager,"playqueuestart",onNewPlayQueueStart),events.on(connectionManager,"localusersignedin",onLocalUserSignedIn),events.on(connectionManager,"localusersignedout",onLocalUserSignedOut),events.on(serverNotifications,"UserUpdated",onUserUpdated),document.addEventListener("viewbeforeshow",onViewBeforeShow.bind(instance)),document.addEventListener("viewshow",onViewShow.bind(instance)),inputManager.on(skinHeaderElement,onHeaderCommand),instance.pageTitleElement=parent.querySelector(".pageTitle"),resetPremiereButton(),events.on(connectionManager,"resetregistrationinfo",resetPremiereButton)}function unbindEvents(instance){instance=instance.element;instance&&(instance.querySelector(".headerBackButton").removeEventListener("click",onBackClick),instance.querySelector(".headerHomeButton").removeEventListener("click",onHomeClick),instance.querySelector(".headerSearchButton").removeEventListener("click",onSearchClick),instance.querySelector(".headerCastButton").removeEventListener("click",onCastButtonClick),instance.querySelector(".headerUserButton").removeEventListener("click",onUserButtonClick),instance.querySelector(".headerSettingsButton").removeEventListener("click",onSettingsButtonClick),instance.querySelector(".headerMenuButton").removeEventListener("click",onHeaderMenuButtonClick)),events.off(layoutManager,"modechange",boundLayoutModeChangeFn),events.off(playbackManager,"playerchange",updateCastIcon),events.off(playbackManager,"playqueuestart",onNewPlayQueueStart),events.off(connectionManager,"localusersignedin",onLocalUserSignedIn),events.off(connectionManager,"localusersignedout",onLocalUserSignedOut),events.off(serverNotifications,"UserUpdated",onUserUpdated),events.off(connectionManager,"resetregistrationinfo",resetPremiereButton),document.removeEventListener("viewbeforeshow",onViewBeforeShow),document.removeEventListener("viewshow",onViewShow)}function onDynamicTitleFromNavDrawer(e,title){this.setTitle(title)}function render(instance){instance.element=skinHeaderElement,addHeaderLeftContent(),addHeaderRightContent(),bindEvents(instance),setRemoteControlVisibility(),onLayoutModeChange.call(instance),events.on(navDrawerInstance,"drawer-state-change",onNavDrawerStateChange),events.on(navDrawerContent,"dynamic-title",onDynamicTitleFromNavDrawer.bind(instance))}function addHeaderLeftContent(){headerLeft=skinHeaderElement.querySelector(".headerLeft");var Menu=globalize.translate("Menu"),Home=globalize.translate("Home"),Back=globalize.translate("Back"),Help=globalize.translate("Help");headerLeft.innerHTML=`

 

`}function addHeaderRightContent(){var ManageEmbyServer=globalize.translate("ManageEmbyServer"),Settings=globalize.translate("Settings"),Search=globalize.translate("Search"),PlayOnAnotherDevice=globalize.translate("PlayOnAnotherDevice");skinHeaderElement.querySelector(".headerRight").innerHTML=`
`}function AppHeader(){}AppHeader.prototype.init=function(){return render(this)},AppHeader.prototype.stopClockInterval=function(){var interval=this.clockInterval;interval&&(interval.destroy(),this.clockInterval=null)},AppHeader.prototype.startClockInterval=function(){this.clockInterval=new MethodTimer({onInterval:updateClock.bind(this),timeoutMs:5e4,type:"interval"})},AppHeader.prototype.loadClock=function(){var elem;layoutManager.tv?((elem=document.querySelector(".headerClock")).classList.remove("hide"),this.clockElement=elem,this.stopClockInterval(),this.startClockInterval(),updateClock.call(this)):this.destroyClock()};let defaultDocumentTitle=document.title||"Emby";function getDefaultDocumentTitle(){return defaultDocumentTitle}function getTitleHtml(title){return title?"string"!=typeof title?title.Name||"":title:""}AppHeader.prototype.setDefaultTitle=function(){var pageTitleElement=this.pageTitleElement;pageTitleElement&&(pageTitleElement.classList.add("pageTitleWithLogo","pageTitleWithDefaultLogo"),pageTitleElement.style.backgroundImage=null,pageTitleElement.innerHTML=""),document.title=getDefaultDocumentTitle()},AppHeader.prototype.setTitle=function(title){var html,pageTitleElement;null==title?this.setDefaultTitle():(html=getTitleHtml(title="-"===title?"":title),(pageTitleElement=this.pageTitleElement)&&(pageTitleElement.classList.remove("pageTitleWithLogo","pageTitleWithDefaultLogo"),pageTitleElement.style.backgroundImage=null,pageTitleElement.innerHTML=html||""),document.title=title?"string"==typeof title?title:title.Name||getDefaultDocumentTitle():getDefaultDocumentTitle())},AppHeader.prototype.setLogoTitle=function(options){let url=options.url;if(!url){var items=options.items;for(let i=0,length=items.length;i