EmbyCrackedClient/web/modules/navdrawer/navdrawercontent.js
2025-06-25 11:46:04 +08:00

1 line
No EOL
31 KiB
JavaScript

import connectionManager from"./../emby-apiclient/connectionmanager.js";import dom from"./../dom.js";import globalize from"./../common/globalize.js";import appRouter from"./../approuter.js";import layoutManager from"./../layoutmanager.js";import events from"./../emby-apiclient/events.js";import{appHost}from"./../common/servicelocator.js";import pluginManager from"./../common/pluginmanager.js";import listView from"./../listview/listview.js";import"./../emby-elements/emby-button/paper-icon-button-light.js";import"./../emby-elements/emby-itemscontainer/emby-itemscontainer.js";import viewManager from"./../viewmanager/viewmanager.js";import inputManager from"./../common/inputmanager.js";import keyboardManager from"./../input/keyboard.js";import focusManager from"./../focusmanager.js";import"./../cardbuilder/cardbuilder.js";import itemManager from"./../common/itemmanager/itemmanager.js";let currentDrawerType=0,navDrawerContentElement,navDrawerScroller=document.querySelector(".mainDrawer"),currentServerId,enableLazyLoadingDrawerContents=!1;function showAlert(options){return Emby.importModule("./modules/common/dialogs/alert.js").then(function(alert){return alert(options)})}function loadEmbyInput(){return Emby.importModule("./modules/emby-elements/emby-input/emby-input.js")}function getNavDrawerContentElement(){return navDrawerContentElement=navDrawerContentElement||document.querySelector(".mainDrawerScrollSlider")}function getDrawerType(e){e=e.detail;return currentServerId&&!1!==e.drawer?e.settingsTheme?2:1:0}function createSettingsMenuList(pluginItems,apiClient){var links=[{Name:globalize.translate("Server"),section:"server"},{Name:globalize.translate("Dashboard"),href:appRouter.getRouteUrl("manageserver"),Icon:"dashboard"},{Name:globalize.translate("Settings"),href:"/dashboard/settings",Icon:"settings"},{Name:globalize.translate("Users"),href:"/users",Icon:"people"},{Name:"Emby Premiere",href:"/embypremiere",Icon:"star"},{Name:globalize.translate("Library"),href:"/librarysetup",Icon:"folder"}];return links.push({Name:globalize.translate("LiveTV"),href:"/livetvsetup",Icon:"dvr"}),links.push({Name:globalize.translate("Network"),Icon:"wifi",href:"/network"}),links.push({Name:globalize.translate("Transcoding"),Icon:"transform",href:"/transcoding"}),links.push({Name:globalize.translate("Database"),href:"/database",Icon:"storage"}),links.push({Name:globalize.translate("Conversions"),Icon:"sync",href:"/conversions?mode=convert"}),links.push({Name:globalize.translate("HeaderScheduledTasks"),href:"/scheduledtasks",Icon:"schedule"}),links.push({Name:globalize.translate("Logs"),href:"/logs",Icon:"folder_open"}),addPluginPagesToMainMenu(links,pluginItems,"server"),links.push({divider:!0,Name:globalize.translate("Devices")}),links.push({Name:globalize.translate("Devices"),href:"/devices",Icon:"devices"}),links.push({Name:globalize.translate("Downloads"),Icon:"&#xe5db;",href:"/serverdownloads"}),links.push({Name:globalize.translate("HeaderCameraUpload"),href:"/devices/cameraupload.html",Icon:"photo_camera"}),addPluginPagesToMainMenu(links,pluginItems,"devices"),links.push({divider:!0,Name:globalize.translate("Advanced")}),links.push({Name:globalize.translate("Plugins"),Icon:"add_shopping_cart",href:"/plugins"}),links.push({Name:globalize.translate("HeaderApiKeys"),href:"/apikeys",Icon:"vpn_key"}),links.push({Name:globalize.translate("MetadataManager"),href:"/metadatamanager",Icon:"edit"}),addPluginPagesToMainMenu(links,pluginItems),links}function addPluginPagesToMainMenu(links,pluginItems,section,user){for(let i=0,length=pluginItems.length;i<length;i++){var pluginItem=pluginItems[i];if(pluginManager.allowPluginPages(pluginItem.PluginId)){if(user){if(!pluginItem.EnableInUserMenu)continue}else if(!pluginItem.EnableInMainMenu)continue;if(user||pluginItem.MenuSection===section){let href=pluginItem.Href||pluginManager.getConfigurationPageUrl(pluginItem.Name);user&&(href+="&userId="+user.Id),links.push({Name:pluginItem.DisplayName,Icon:pluginItem.MenuIcon||"folder",href:href,navMenuId:pluginItem.NavMenuId||"/"+href})}}}}function getAdminMenuItems(apiClient,user,signal){return appRouter.getRouteInfo(appRouter.getRouteUrl("manageserver"))&&user.Policy.IsAdministrator?apiClient.getConfigurationPages({EnableInMainMenu:!0,UserId:user.Id},signal).then(function(items){return createSettingsMenuList(items,apiClient)},function(err){return[]}):Promise.resolve([])}function sortRoutes(a,b){var aOrder=null==a.order?1e3:a.order,bOrder=null==b.order?1e3:b.order;if(bOrder<aOrder)return 1;if(aOrder<bOrder)return-1;let aName=a.title,bName=(aName=aName&&globalize.translate(aName),b.title);return bName=bName&&globalize.translate(bName),aName>bName?1:bName>aName?-1:0}function getUserSettingsRoutes(user,apiClient,loggedInUser){let routes=appRouter.getRoutes().filter(function(r){return enableRouteForUser(r,user,loggedInUser)}),restrictedFeatures=user.Policy.RestrictedFeatures||[];return routes=(routes=routes.filter(function(r){return!(r.featureId&&restrictedFeatures.includes(r.featureId)||r.minServerVersion&&!apiClient.isMinServerVersion(r.minServerVersion))})).sort(sortRoutes)}function getAppSetingsRoutes(){let routes=appRouter.getRoutes().filter(function(r){return"settings"===r.type&&"user"!==r.settingsType});return routes=routes.sort(sortRoutes)}function enableRouteForUser(route,user,loggedInUser){return"settings"===route.type&&"user"===route.settingsType&&appRouter.validateUserAccessToRoute(route,user,loggedInUser)}function mapRouteToMenuItem(route,user){let path=route.path;return path&&"settings"===route.type&&"user"===route.settingsType&&(path=(path+="?userId="+user.Id)+"&serverId="+user.ServerId),{Name:globalize.translate(route.title),href:path,Icon:route.icon}}function getAppSettingsMenuItems(options){var items=[],user=options.user,routes=(!1!==options.home&&(items.push({Name:globalize.translate("Home"),Icon:"&#xe88a;",ItemClass:"drawer-home",href:appRouter.getRouteUrl("home")}),items.push({Name:globalize.translate("Search"),Icon:"&#xe8b6;",href:"#",onclick:"search",ItemClass:"drawer-search"})),items.push({Name:user.Name,section:"user"}),getAppSetingsRoutes());if(routes.length){items.push({Name:appHost.appName()});for(let i=0,length=routes.length;i<length;i++)items.push(mapRouteToMenuItem(routes[i],user))}return Promise.resolve(items)}function getSettingsMenuItems(options){var apiClient=options.apiClient,user=options.user,signal=options.signal,promises=[];return!1!==options.appSettings&&promises.push(getAppSettingsMenuItems(options)),!1!==options.serverSettings&&promises.push(getAdminMenuItems(apiClient,user,signal)),Promise.all(promises).then(function(responses){let items=responses[0];return items=0<responses.length?items.concat(responses[1]):items})}let embyCollapseLoaded;function loadEmbyCollapse(){return embyCollapseLoaded?Promise.resolve():(embyCollapseLoaded=!0,Emby.importModule("./modules/emby-elements/emby-collapse/emby-collapse.js"))}function getItemsSection(options,title,expanded,listType){var html="";let headerClass="navMenuHeader secondaryText";return options.itemClass&&(headerClass+=" navMenuHeader-"+options.itemClass),options.headerClass&&(headerClass+=" "+options.headerClass),layoutManager.tv&&(headerClass+=" navMenuHeader-tv"),(html+='<div is="emby-collapse" title="'+title+'" data-expanded="'+expanded+'" class="navDrawerCollapseSection focuscontainer-x navDrawerItemsSection" data-headerclass="'+headerClass+'" data-buttonclass="navDrawerCollapseButton noautofocus" data-iconclass="navDrawerCollapseIcon">')+('<div is="emby-itemscontainer" class="navDrawerItemsContainer itemsContainer vertical-list collapseContent navDrawerCollapseContent" data-fromserver="true" data-listtype="'+listType+'">')+"</div></div>"}let currentListItems;function getItemsHtml(items,options){options.isGlobalList?currentListItems=items:options.listItems=items;let menuHtml="";if(!1!==options.header&&!layoutManager.tv){if(menuHtml=layoutManager.tv?(menuHtml+='<div class="navDrawerHeader navDrawerHeader-tv flex flex-direction-row align-items-center">')+'<div class="flex-grow"><h2 class="navDrawerLogo navDrawerLogo-tv pageTitleWithLogo pageTitleWithDefaultLogo flex-grow"></h2>':(menuHtml+='<div class="navDrawerHeader flex flex-direction-row align-items-center focusable" data-focusabletype="autofocus">',!1!==options.drawerOptions&&(menuHtml+='<button type="button" is="paper-icon-button-light" class="btnToggleNavDrawer noautofocus" title="" style="font-size:80%;margin-inline-end:0;"><i class="md-icon">menu</i></button>'),menuHtml+('<a is="emby-linkbutton" class="btnNavDrawerLogo flex-grow" href="'+appRouter.getRouteUrl("home")+'" title="'+globalize.translate("Home")+'" aria-label="'+globalize.translate("Home"))+'"><h2 class="navDrawerLogo pageTitleWithLogo pageTitleWithDefaultLogo flex-grow"></h2>'),menuHtml+=layoutManager.tv?"</div>":"</a>",!layoutManager.tv){let icon,title,buttonClass;buttonClass=enableLazyLoadingDrawerContents?(icon="view_sidebar",title=globalize.translate("HeaderPinSidebar")," btnPinNavDrawer-iconpin"):(icon="close",title=globalize.translate("Close")," btnPinNavDrawer-hovershow"),!1!==options.drawerOptions?menuHtml+='<button type="button" is="paper-icon-button-light" class="btnPinNavDrawer noautofocus secondaryText'+buttonClass+'" title="'+title+'" aria-label="'+title+'"><i class="md-icon btnPinNavDrawerIcon autortl">'+icon+"</i></button>":menuHtml+='<div style="visibility:hidden;" class="btnPinNavDrawer secondaryText paper-icon-button-light'+buttonClass+'"><i class="md-icon btnPinNavDrawerIcon autortl">'+icon+"</i></div>"}menuHtml=menuHtml+"</div>"+"</div>"}var collapsible=!1!==options.collapsible&&!layoutManager.tv,sectionClose=collapsible?"</div></div>":"</div>";let isSectionOpen=!1;var serverId=options.serverId,userId=options.user?.Id,defaultItemsContainerClass=("navDrawerItemsContainer "+(options.itemsContainerClass||"")).trim();let sectionsContainerAdded=!1;for(let i=0,length=items.length;i<length;i++){var item=items[i];if(item.section&&isSectionOpen&&(isSectionOpen=!1,menuHtml+=sectionClose),"playlists"===item.section)menuHtml+=getItemsSection(options,globalize.translate("Playlists"),!0,"playlists");else if("collections"===item.section)menuHtml+=getItemsSection(options,globalize.translate("Collections"),!1,"collections");else if(item.href)isSectionOpen||(isSectionOpen=!0,menuHtml+='<div is="emby-itemscontainer" class="'+defaultItemsContainerClass+' itemsContainer vertical-list" data-listindex="'+i+'"></div>');else if(item.Name){isSectionOpen&&(isSectionOpen=!1,menuHtml+=sectionClose),sectionsContainerAdded||(menuHtml+='<div is="emby-scroller" class="navdrawerSectionsContainer emby-scroller scrollY scrollY-mini scrollFrameY hiddenScrollY-hover" data-mousewheel="true" data-horizontal="false" data-focusscroll="true"><div class="navdrawerSectionsSlider scrollSlider mainDrawerScrollSlider scrollSliderY mainDrawerScrollSlider-autofont"> ',sectionsContainerAdded=!0);let headerClass="navMenuHeader secondaryText",itemsContainerClass=(options.itemClass&&(headerClass+=" navMenuHeader-"+options.itemClass),options.headerClass&&(headerClass+=" "+options.headerClass),layoutManager.tv&&(headerClass+=" navMenuHeader-tv"),0===i&&(headerClass+=" navMenuHeader-first"),defaultItemsContainerClass+" itemsContainer vertical-list");collapsible?(loadEmbyCollapse(),menuHtml+='<div is="emby-collapse" title="'+item.Name+'" data-expanded="true" class="navDrawerCollapseSection focuscontainer-x" data-headerclass="'+headerClass+'" data-buttonclass="navDrawerCollapseButton noautofocus" data-iconclass="navDrawerCollapseIcon">',itemsContainerClass+=" collapseContent navDrawerCollapseContent"):(menuHtml+='<h3 class="'+headerClass+'">',item.imageUrl&&(menuHtml+='<img src="'+item.imageUrl+'" class="navMenuHeaderImage" />'),menuHtml=menuHtml+item.Name+"</h3>",itemsContainerClass+=" focuscontainer-x"),menuHtml+='<div is="emby-itemscontainer" class="'+itemsContainerClass+'" data-listindex="'+(i+1)+'"',serverId&&(menuHtml+=' data-serverid="'+serverId+'"'),userId&&(menuHtml+=' data-userid="'+userId+'"'),item.section&&(menuHtml+=' data-section="'+item.section+'"'),menuHtml+=">",isSectionOpen=!0}}return isSectionOpen&&(isSectionOpen=!1,menuHtml+=sectionClose),sectionsContainerAdded&&(menuHtml+="</div></div>"),menuHtml}function getSettingsDrawerHtmlWithoutUser(apiClient,signal){return apiClient.getCurrentUser({signal:signal}).then(function(user){return getSettingsDrawerHtml({apiClient:apiClient,user:user,loggedInUser:user,signal:signal,isGlobalList:!0})})}function getSettingsDrawerHtml(options){return getSettingsMenuItems(options).then(function(items){return options.drawerOptions=!1,getItemsHtml(items,options)})}function getUserViews(apiClient){return apiClient.getUserViews({},apiClient.getCurrentUserId()).then(function(result){var items=result.Items,list=[];for(let i=0,length=items.length;i<length;i++){var view=items[i];list.push(view)}return list})}function getUserImageUrl(user,apiClient,options){return(options=options||{}).type="Primary",user.PrimaryImageTag?(options.tag=user.PrimaryImageTag,apiClient.getUserImageUrl(user.Id,options)):null}function getLibraryDrawerHtml(apiClient,signal){return apiClient.getCurrentUser({signal:signal}).then(function(user){return getUserViews(apiClient,signal).then(function(result){var items=result,menuItems=[];layoutManager.tv||menuItems.push({Name:globalize.translate("Expand"),Icon:"&#xe5d2;",href:"#",onclick:"menu",Id:"btnExpandMiniDrawer"}),layoutManager.tv&&(menuItems.push({Name:user.Name,Icon:itemManager.getDefaultIcon({Type:"User"}),href:"#",onclick:"changeuser",ImageUrl:getUserImageUrl(user,apiClient)}),appHost.supports("multiserver"))&&menuItems.push({Name:apiClient.serverName(),Icon:itemManager.getDefaultIcon({Type:"Server"}),href:"#",onclick:"selectserver"}),layoutManager.tv||menuItems.push({Name:globalize.translate("Home"),Icon:"&#xe88a;",ItemClass:"drawer-home",href:appRouter.getRouteUrl("home")}),menuItems.push({Name:globalize.translate("Search"),Icon:"&#xe8b6;",href:"#",onclick:"search",ItemClass:"drawer-search",navMenuId:"search"}),layoutManager.tv&&menuItems.push({Name:globalize.translate("Home"),Icon:"&#xe88a;",ItemClass:"drawer-home",href:appRouter.getRouteUrl("home")}),layoutManager.tv&&menuItems.push({Name:globalize.translate("Settings"),Icon:"&#xe8B8;",href:"#",onclick:"settings"}),menuItems.push({Name:globalize.translate("HeaderMyMedia")}),user.Policy.EnableContentDownloading&&appHost.supports("sync")&&menuItems.push({Name:globalize.translate("Downloads"),href:appRouter.getRouteUrl("downloads"),Icon:"&#xe2C7;"});for(let i=0,length=items.length;i<length;i++){var item=items[i],url=appRouter.getRouteUrl(item);item.href=url,menuItems.push(item)}return user.Policy.IsAdministrator&&appRouter.getRouteInfo(appRouter.getRouteUrl("manageserver"))&&!layoutManager.tv&&menuItems.push({Name:globalize.translate("MetadataManager"),href:"/metadatamanager",Icon:"&#xe2C7;"}),layoutManager.tv||(menuItems.push({section:"playlists"}),menuItems.push({section:"collections"})),getItemsHtml(menuItems,{isGlobalList:!0})})})}function getDrawerHtml(type,signal){var apiClient=currentServerId?connectionManager.getApiClient(currentServerId):connectionManager.currentApiClient();return 1===type&&currentServerId?getLibraryDrawerHtml(apiClient,signal):2===type?getSettingsDrawerHtmlWithoutUser(apiClient,signal):Promise.resolve("")}function getPlaylistsFetchFn(serverId){return function(){var apiClient=connectionManager.getApiClient(serverId);return apiClient.getItems(apiClient.getCurrentUserId(),{Fields:"PrimaryImageAspectRatio",Recursive:!0,IncludeItemTypes:"Playlist"})}}function getCollectionsFetchFn(serverId){return function(){var apiClient=connectionManager.getApiClient(serverId);return apiClient.getItems(apiClient.getCurrentUserId(),{Fields:"PrimaryImageAspectRatio",Recursive:!0,IncludeItemTypes:"BoxSet"})}}function getListOptions(items){var isSettings=this.itemClass?.includes("settings");return{renderer:listView,options:{action:"link",image:!0,fields:["Name"],enableUserDataButtons:!1,moreButton:!1,highlight:!1,mediaInfo:!1,dropTarget:!0,itemClass:("navMenuOption navDrawerListItem "+(this.itemClass||"")).trim(),contentWrapperClass:layoutManager.tv&&!isSettings?"navMenuOption-listItem-content-reduceleftpadding":"navMenuOption-listItem-content",listItemBodyClassName:("navDrawerListItemBody "+(layoutManager.tv?"navDrawerListItemBody-tv ":"")+(this.listItemBodyClass||"")).trim(),imageContainerClass:"navDrawerListItemImageContainer navDrawerListItemImageContainer-transparent",hoverPlayButton:!1,multiSelect:!1,draggable:!1,draggableXActions:!1,iconClass:"navDrawerListItemIcon"+(layoutManager.tv?" navDrawerListItemIcon-tv":""),imagePlayButton:!1,largeFont:!1,enableSideMediaInfo:!1,iconSpacing:!0,noTextWrap:!0,allowBorderXOffset:!1},virtualScrollLayout:"vertical-list"}}function getMenuItemsFromListIndex(index,allListItems){var items=allListItems.slice(index);for(let i=0,length=items.length;i<length;i++)if(!items[i].href)return items.length=i,items;return items}function getUserMenuItemsFromServer(apiClient,user,signal){return apiClient.getConfigurationPages({EnableInUserMenu:!0,UserId:user.Id},signal).then(function(items){var links=[];return addPluginPagesToMainMenu(links,items,null,user),links},function(err){return[]})}function getUserMenuItems(serverId,userId,includeFromServer){let apiClient=connectionManager.getApiClient(serverId);return apiClient.getUser(userId).then(function(user){return apiClient.getCurrentUser().then(function(loggedInUser){return(includeFromServer?getUserMenuItemsFromServer(apiClient,user):Promise.resolve([])).then(function(serverItems){let items=getUserSettingsRoutes(user,apiClient,loggedInUser).map(function(i){return mapRouteToMenuItem(i,user)});return items=items.concat(serverItems),connectionManager.isLoggedIntoConnect()&&"ios"===globalThis.appMode&&items.push({Name:globalize.translate("DeleteEmbyConnectAccount"),href:"#",Icon:"&#xef66;",onclick:"deleteembyconnectaccount"}),items})})})}function getNavMenuItemsResult(){var allListItems=this.listItems,itemsContainer=this.itemsContainer,section=itemsContainer.getAttribute("data-section");let itemPromise;return(itemPromise="user"===section?getUserMenuItems(section=itemsContainer.getAttribute("data-serverid")||connectionManager.currentApiClient().serverId(),itemsContainer.getAttribute("data-userid")||connectionManager.getApiClient(section).getCurrentUserId(),"true"===itemsContainer.getAttribute("data-fromserver")):Promise.resolve(getMenuItemsFromListIndex(parseInt(itemsContainer.getAttribute("data-listindex")),allListItems))).then(function(items){return{Items:items,TotalRecordCount:items.length}})}function getNavMenuListOptionsInternal(items,options,enableOverview){var fields=["Name"];if(enableOverview&&fields.push("ShortOverview"),options.asideIcon)for(let i=0,length=items.length;i<length;i++)items[i].asideIcon="&#xe5cc;";var user=(items[0]?.ServerId?connectionManager.getApiClient(items[0]):null)?.getCurrentUserCached(),isSettings=(items.length,options.itemClass?.includes("settings"));return{renderer:listView,options:{action:"custom",fields:fields,enableUserDataButtons:!1,moreButton:!1,highlight:null!=options.highlight&&options.highlight,border:options.border,mediaInfo:!1,dropTarget:!1,itemClass:("navMenuOption navDrawerListItem "+(options.itemClass||"")).trim(),contentWrapperClass:layoutManager.tv&&!isSettings?"navMenuOption-listItem-content-reduceleftpadding":"navMenuOption-listItem-content",listItemBodyClassName:("navDrawerListItemBody "+(layoutManager.tv?"navDrawerListItemBody-tv ":"")+(options.listItemBodyClass||"")).trim(),imageContainerClass:"navDrawerListItemImageContainer"+(layoutManager.tv?" navDrawerListItemImageContainer-tv":"")+(enableOverview?" navDrawerListItemImageContainer-padded":""),hoverPlayButton:!1,multiSelect:!1,contextMenu:0<items.length&&null!=user&&0<itemManager.getCommands({items:[items[0]],user:user}).length,draggable:!1,draggableXActions:!1,iconClass:"navDrawerListItemIcon"+(layoutManager.tv?" navDrawerListItemIcon-tv":""),imagePlayButton:!1,tooltip:!0,preferIcon:!enableOverview,addImageSizeToUrl:!0,enableSideMediaInfo:!1,iconSpacing:!0,noTextWrap:!0,allowBorderXOffset:!0===options.allowBorderXOffset,itemBackground:options.itemBackground},virtualScrollLayout:"vertical-list"}}function getFirstNavMenuListOptions(items){return getNavMenuListOptionsInternal.call(this,items,this,layoutManager.tv)}function getNavMenuListOptions(items){return getNavMenuListOptionsInternal.call(this,items,this)}function onItemsContainerUpgrade(){return this.resume({refresh:!0})}function waitForUpgrade(itemsContainer){return itemsContainer.waitForCustomElementUpgrade().then(onItemsContainerUpgrade.bind(itemsContainer))}function initItemsContainers(elem,options){var apiClient=currentServerId?connectionManager.getApiClient(currentServerId):connectionManager.currentApiClient(),itemsContainers=elem.querySelectorAll(".itemsContainer"),promises=[];options=options||{},layoutManager.tv||promises.push(loadEmbyInput());for(let i=0,length=itemsContainers.length;i<length;i++){var itemsContainer=itemsContainers[i],type=itemsContainer.getAttribute("data-listtype");if("playlists"===type)itemsContainer.fetchData=getPlaylistsFetchFn(apiClient.serverId()),itemsContainer.getListOptions=getListOptions.bind(options),itemsContainer.parentContainer=itemsContainer.closest(".navDrawerCollapseSection");else if("collections"===type)itemsContainer.fetchData=getCollectionsFetchFn(apiClient.serverId()),itemsContainer.getListOptions=getListOptions.bind(options),itemsContainer.parentContainer=itemsContainer.closest(".navDrawerCollapseSection");else{if(!itemsContainer.hasAttribute("data-listindex")&&!itemsContainer.hasAttribute("data-section"))continue;itemsContainer.fetchData=getNavMenuItemsResult.bind({itemsContainer:itemsContainer,listItems:options.listItems||currentListItems}),"0"===itemsContainer.getAttribute("data-listindex")?itemsContainer.getListOptions=options.getNavMenuListOptions||getFirstNavMenuListOptions.bind(options):itemsContainer.getListOptions=options.getNavMenuListOptions||getNavMenuListOptions.bind(options),itemsContainer.addEventListener("action-null",onItemAction)}itemsContainer.afterRefresh=afterItemsContainerRefresh,promises.push(waitForUpgrade(itemsContainer))}return elem.itemsContainers=itemsContainers,Promise.all(promises)}function triggerSearch(e,txtNavDrawerSearch){txtNavDrawerSearch=txtNavDrawerSearch.value;inputManager.trigger("search",{sourceElement:viewManager.currentView(),originalEvent:e,value:txtNavDrawerSearch})}function onTxtSearchInput(e){switch(e.detail.command){case"select":triggerSearch(e,this);break;case"down":this.isSelectionDialogOpen()&&(this.focusSelectionDialog(),e.preventDefault())}}function onTxtSearchKeydown(e){"Enter"!==keyboardManager.normalizeKeyFromEvent(e)||e.repeat||(this.closeSelectionDialog(),triggerSearch(e,this))}function onTextSearchFocus(e){!this._selectionOpen&&this.value&&triggerSearch(e,this)}function onTextSearchInput(e){this.value||triggerSearch(e,this)}function onTextSearchItemSelected(e){appRouter.showItem(e.detail.item)}function onTextSearchItemSelectionOpen(e){this._selectionOpen=!0}function onTextSearchItemSelectionClose(e){this._selectionOpen=!1}function onTextSearchItemSelectionCancelled(e){focusManager.focus(this)}function getSearchItems(query){var apiClient=currentServerId?connectionManager.getApiClient(currentServerId):connectionManager.currentApiClient();return(query=Object.assign({SearchTerm:this.value,Recursive:!0,Fields:"PrimaryImageAspectRatio,PremiereDate,ProductionYear",EnableUserData:!1,GroupProgramsBySeries:!0},query)).Limit=30,apiClient.getItems(apiClient.getCurrentUserId(),query)}let currentViewEvent;function afterItemsContainerRefresh(){if(currentViewEvent&&updateSelectedItemForItemsContainer(this,currentViewEvent),"true"!==this.getAttribute("data-fromserver"))return this.setAttribute("data-fromserver","true"),this.refreshItems();var searchTextHtml;this.querySelector(".drawer-home")&&(searchTextHtml='<div class="inputContainer navDrawerSearchFieldContainer">',searchTextHtml=(searchTextHtml+='<i class="md-icon navDrawerSearchIcon secondaryText">search</i>')+'<input is="emby-input" type="search" labelclass="navDrawerSearchFieldContainer-label" label="" placeholder="'+globalize.translate("Search")+'" title="'+globalize.translate("Search")+'" data-autocompleteitems="true" class="txtNavDrawerSearch" data-refocus="false" />',this.insertAdjacentHTML("afterbegin",searchTextHtml+="</div>"),searchTextHtml=this.querySelector(".txtNavDrawerSearch"),inputManager.on(searchTextHtml,onTxtSearchInput),dom.addEventListener(searchTextHtml,"keydown",onTxtSearchKeydown,{}),searchTextHtml.addEventListener("focus",onTextSearchFocus),searchTextHtml.addEventListener("input",onTextSearchInput),searchTextHtml.addEventListener("itemselected",onTextSearchItemSelected),searchTextHtml.addEventListener("selectionopen",onTextSearchItemSelectionOpen),searchTextHtml.addEventListener("selectionclose",onTextSearchItemSelectionClose),searchTextHtml.addEventListener("selectioncancel",onTextSearchItemSelectionCancelled),searchTextHtml.getItems=getSearchItems.bind(searchTextHtml))}function onSetInnerHtmlCallback(html){var elem;null!=html&&(html||(currentDrawerType=0),elem=getNavDrawerContentElement(),layoutManager.tv?(elem.classList.remove("mainDrawerScrollSlider-autofont"),navDrawerScroller.classList.add("mainDrawer-tv")):(elem.classList.add("mainDrawerScrollSlider-autofont"),navDrawerScroller.classList.remove("mainDrawer-tv")),elem.innerHTML=html,initItemsContainers(elem),elem.scrollTop=0)}function onRequestError(e){console.log("error filling drawer: "+e+e.stack)}function updateDrawerContents(e,type,signal,autoFocusAfterLoad){type=[getDrawerHtml(currentDrawerType=type,signal),layoutManager.tv?Promise.resolve():loadEmbyCollapse(),layoutManager.tv?Promise.resolve():loadEmbyInput()];Promise.all(type).then(function(responses){responses=responses[0];signal.aborted||(onSetInnerHtmlCallback(responses),autoFocusAfterLoad&&setTimeout(autoFocus,100))},onRequestError)}function getItemIndexFromNavMenuId(itemsContainer,currentNavMenuId){currentNavMenuId=(currentNavMenuId||"").toLowerCase();var items=itemsContainer.items||[];for(let i=0,length=items.length;i<length;i++){var routeInfo,item=items[i];let navMenuId=item.navMenuId;if(!navMenuId&&item.href&&(routeInfo=appRouter.getRouteInfo(item.href),navMenuId=routeInfo&&routeInfo.navMenuId||item.href),currentNavMenuId===(navMenuId||"").toLowerCase())return i}return-1}function updateSelectedItemForItemsContainer(itemsContainer,e){var itemFromNavOption,currentNavMenuId=e.detail.navMenuId,navDrawerElement=getNavDrawerContentElement();let newSelectedOption=currentNavMenuId?navDrawerElement.querySelector('.navMenuOption[data-navmenuid="'+currentNavMenuId+'"]'):null;return(newSelectedOption=itemsContainer.hasAttribute("data-listindex")&&-1!==(currentNavMenuId=getItemIndexFromNavMenuId(itemsContainer,currentNavMenuId))?itemsContainer.getElement(currentNavMenuId):newSelectedOption)||e.detail.params&&e.detail.params.id&&e.detail.params.serverId&&-1!==(currentNavMenuId=itemsContainer.indexOfItemId(e.detail.params.id))&&(itemFromNavOption=itemsContainer.getItem(currentNavMenuId))&&itemFromNavOption.ServerId===e.detail.params.serverId&&(newSelectedOption=itemsContainer.getElement(currentNavMenuId)),!(!newSelectedOption||!newSelectedOption.classList.contains("navMenuOption-selected"))||(newSelectedOption?((itemFromNavOption=navDrawerElement.querySelector(".navMenuOption-selected"))&&itemFromNavOption.classList.remove("navMenuOption-selected"),newSelectedOption.classList.add("navMenuOption-selected"),e.detail.requiresDynamicTitle&&setTitleFromSelectedOption(newSelectedOption),navDrawerScroller.scrollToElement(newSelectedOption,{behavior:"instant"}),!0):void 0)}function updateSelectedItem(e){var itemsContainers=getNavDrawerContentElement().itemsContainers||[];for(let i=0,length=itemsContainers.length;i<length&&!updateSelectedItemForItemsContainer(itemsContainers[i],e);i++);}function onViewShow(e){onViewShowInternal(currentViewEvent=e,!(enableLazyLoadingDrawerContents=!e.detail.drawerInline))}let renderAbortController;function getNewSignal(){var current=renderAbortController,current=(current&&current.abort(),new AbortController);return(renderAbortController=current).signal}function onViewShowInternal(e,loadContent,autoFocusAfterLoad){var drawerType=getDrawerType(e);drawerType!==currentDrawerType?loadContent?updateDrawerContents(e,drawerType,getNewSignal(),autoFocusAfterLoad):(onSetInnerHtmlCallback(""),autoFocusAfterLoad&&autoFocus()):currentDrawerType&&(loadContent&&updateSelectedItem(e),autoFocusAfterLoad)&&setTimeout(autoFocus,100)}function onLocalUserSignedIn(e,serverId,userId){currentServerId=serverId,currentDrawerType=0}function onLocalUserSignedOut(){currentServerId=null}function onBeforeOpen(autoFocusAfterLoad){enableLazyLoadingDrawerContents&&onViewShowInternal(currentViewEvent,!0,autoFocusAfterLoad)}function autoFocus(options){var navDrawerElement=getNavDrawerContentElement(),elem=navDrawerElement.querySelector(".navMenuOption-selected");return elem&&focusManager.isCurrentlyFocusable(elem)?(focusManager.focus(elem,{instantScroll:!0}),elem):((options=options||{}).instantScroll=!0,focusManager.autoFocus(navDrawerElement,options))}events.on(connectionManager,"localusersignedin",onLocalUserSignedIn),events.on(connectionManager,"localusersignedout",onLocalUserSignedOut);let navDrawerContent={onViewShow:onViewShow,onBeforeOpen:onBeforeOpen,autoFocus:autoFocus,getSettingsDrawerHtml:getSettingsDrawerHtml,getAppSettingsMenuItems:getAppSettingsMenuItems,getItemsHtml:getItemsHtml,initItemsContainers:initItemsContainers};function setTitleFromSelectedOption(newSelectedOption){newSelectedOption=newSelectedOption.querySelector(".listItemBodyText")||newSelectedOption,newSelectedOption=(newSelectedOption.innerText||newSelectedOption.textContent).trim();events.trigger(navDrawerContent,"dynamic-title",[newSelectedOption])}function deleteEmbyConnectAccount(){var prefix=appHost.supports("externallinks")&&appHost.supports("targetblank")?'<a is="emby-linkbutton" href="https://emby.media/community" target="_blank" class="button-link">':"",suffix=appHost.supports("externallinks")&&appHost.supports("targetblank")?"</a>":"";showAlert({html:globalize.translate("DeleteEmbyConnectAccountHelp",prefix,suffix,prefix+"https://emby.media/community"+suffix),title:globalize.translate("DeleteEmbyConnectAccount")})}function onNavigated(){events.trigger(navDrawerContent,"navigated")}function onItemAction(e){var apiClient,item=e.detail.item,onclick=item.onclick;if("logout"===onclick)apiClient=currentServerId?connectionManager.getApiClient(currentServerId):connectionManager.currentApiClient(),appRouter.logout(apiClient);else if("exit"===onclick)appHost.exit();else if("sleep"===onclick)appHost.sleep();else if("shutdown"===onclick)appHost.shutdown();else if("restart"===onclick)appHost.restart();else if("settings"===onclick)appRouter.showSettings();else if("selectserver"===onclick)appRouter.showSelectServer();else if("changeuser"===onclick){let apiClient=currentServerId?connectionManager.getApiClient(currentServerId):connectionManager.currentApiClient();void appRouter.showServerLogin({apiClient:apiClient})}else"search"===onclick?inputManager.trigger("search",{sourceElement:viewManager.currentView(),originalEvent:e}):"menu"===onclick?events.trigger(navDrawerContent,"open-requested"):"deleteembyconnectaccount"===onclick?deleteEmbyConnectAccount():(apiClient=item.href)&&appRouter.show(apiClient).then(onNavigated)}export default navDrawerContent;