import"./../modules/emby-elements/emby-itemscontainer/emby-itemscontainer.js";import listView from"./../modules/listview/listview.js";import itemShortcuts from"./../modules/shortcuts.js";import globalize from"./../modules/common/globalize.js";function getListViewOptions(){return{fields:["Name"],highlight:!1,mediaInfo:!1,enableSideMediaInfo:!1,dropTarget:!1,hoverPlayButton:!1,imagePlayButton:!1,multiSelect:!1,draggable:!1,draggableXActions:!1,contextMenu:!1,enableOverview:!1,hoverMenu:!1,action:"custom",enableUserDataButtons:!1,moreButton:!1,listItemBodyClassName:"libraryTreeListItemBody",imageContainerClass:"libraryTreeListItemImageContainer",iconClass:"libraryTreeItemIcon",enableDefaultIcon:!0,preferIcon:!0,treeButton:!0,treeButtonClass:"btnToggleLibraryTreeNode",itemClass:"libraryTreeItem",artist:!1,gameSystem:!1,isBoundListItem:!1}}function getListOptions(){return{renderer:listView,options:getListViewOptions(),virtualScrollLayout:"vertical-grid"}}function getItems(query){let apiClient=this.getApiClient();return apiClient.getUserViews(Object.assign({},query),apiClient.getCurrentUserId()).then(function(result){let items=result.Items;return(items=items.slice(0)).push({Name:globalize.translate("Views"),IsFolder:!0,Type:"CollectionFolder",Id:"categories",ServerId:apiClient.serverId(),IsCategory:!0}),items})}function onItemAction(e){var item=e.detail.item;"livetv"===item.CollectionType||"UserView"===item.Type||"CollectionFolder"===item.Type||item.CollectionType||item.IsCategory||item.Id!==this.getCurrentItem()?.Id&&((e=e.target.closest(".listItem")).classList.add("navMenuOption-selected"),this.setCurrentItem(item,e),this.options.view.dispatchEvent(new CustomEvent("itemchange",{detail:{item:item},bubbles:!0,cancelable:!1})))}function getSubtree(instance,listItem,create){var tree=listItem.nextElementSibling;return tree&&tree.classList.contains("librarySubTree")?tree:create?(listItem.insertAdjacentHTML("afterend",'
'),(tree=listItem.nextElementSibling).addEventListener("click",onClick.bind(instance)),tree.addEventListener("action-null",onItemAction.bind(instance)),tree):null}function getCategories(apiClient){var items=[],serverId=apiClient.serverId();return items.push({Id:"category_videos",ServerId:serverId,Type:"Video",MediaType:"Video",Name:globalize.translate("Videos")}),items.push({Id:"category_audio",ServerId:serverId,Type:"Audio",MediaType:"Audio",Name:globalize.translate("Audio")}),items.push({Id:"category_photos",ServerId:serverId,Type:"Photo",MediaType:"Photo",Name:globalize.translate("Photos")}),items.push({Id:"category_games",ServerId:serverId,Type:"Game",MediaType:"Game",Name:globalize.translate("Games")}),items.push({Id:"category_books",ServerId:serverId,Type:"Book",MediaType:"Book",Name:globalize.translate("Books")}),apiClient.isMinServerVersion("4.8.2")&&items.push({Id:"category_missingepisodes",ServerId:serverId,Type:"Folder",Name:globalize.translate("HeaderMissingEpisodes")}),Promise.resolve(items)}function getSubviews(apiClient,item){var items=[],apiClient=apiClient.serverId(),idPrefix="mmview_"+item.Id+"_";let subviews=item.Subviews||[];if(!subviews.length)switch(item.CollectionType){case"tvshows":subviews=["series"];break;case"movies":subviews=["movies"];break;case"games":subviews=["games","gamesystems"];break;case"homevideos":case"photos":subviews=["photos","videos"]}return subviews.includes("gamesystems")&&items.push({Id:idPrefix+"itemtype_GameSystem",ServerId:apiClient,Type:"Folder",IsFolder:!0,Name:globalize.translate("Systems"),OriginalItem:item,IsCategory:!0}),subviews.includes("games")&&items.push({Id:idPrefix+"itemtype_Game",ServerId:apiClient,Type:"Folder",IsFolder:!0,Name:globalize.translate("Games"),OriginalItem:item,IsCategory:!0}),subviews.includes("videos")&&items.push({Id:idPrefix+"itemtype_Video",ServerId:apiClient,Type:"Folder",IsFolder:!0,Name:globalize.translate("Videos"),OriginalItem:item,IsCategory:!0}),subviews.includes("photos")&&items.push({Id:idPrefix+"itemtype_Photo",ServerId:apiClient,Type:"Folder",IsFolder:!0,Name:globalize.translate("Photos"),OriginalItem:item,IsCategory:!0}),subviews.includes("movies")&&items.push({Id:idPrefix+"itemtype_Movie",ServerId:apiClient,Type:"Folder",IsFolder:!0,Name:globalize.translate("Movies"),OriginalItem:item,IsCategory:!0}),subviews.includes("series")&&items.push({Id:idPrefix+"itemtype_Series",ServerId:apiClient,Type:"Folder",IsFolder:!0,Name:globalize.translate("Shows"),OriginalItem:item,IsCategory:!0}),items.push({Id:idPrefix+"folders",ServerId:apiClient,Type:"Folder",IsFolder:!0,Name:globalize.translate("Folders"),OriginalItem:item,IsCategory:!0}),Promise.resolve(items)}function getSubtreeItems(listItem,apiClient){var item=itemShortcuts.getItemFromElement(listItem);if("livetv"===item.CollectionType)return apiClient.getLiveTvChannels({AddCurrentProgram:!1});if("categories"===item.Id)return getCategories(apiClient);if("CollectionFolder"===item.Type)switch(item.CollectionType){case"playlists":case"boxsets":break;default:return getSubviews(apiClient,item)}return item.Id.startsWith("mmview_")?(listItem=item.Id.split("_"),getViewContent(apiClient,item,listItem[2],listItem[3])):getViewContent(apiClient,item,"folders")}function getViewContent(apiClient,listItem,viewType,itemType){listItem={ParentId:(listItem.OriginalItem||listItem).Id,Fields:"Settings",EnableTotalRecordCount:!1,EnableImages:!1,EnableUserData:!1};return"itemtype"===viewType?(listItem.IncludeItemTypes=itemType,listItem.Recursive=!0):(listItem.IsMissing=!1,listItem.IsVirtualUnaired=!1),apiClient.getItems(apiClient.getCurrentUserId(),listItem)}function loadSubtreeItems(listItem,tree,apiClient){getSubtreeItems(listItem,apiClient).then(function(result){var result=result.Items||result,options=getListViewOptions();options.itemsContainer=tree,listView.buildItems(result,options)})}function showSubtree(instance,listItem){var tree=getSubtree(instance,listItem,!0);tree._itemsLoaded||(tree._itemsLoaded=!0,loadSubtreeItems(listItem,tree,instance.getApiClient())),tree.classList.remove("hide")}function onClick(e){var listItem,e=e.target.closest(".btnToggleLibraryTreeNode");e&&(listItem=e.closest(".listItem"),e.classList.toggle("btnToggleLibraryTreeNode-expanded")?showSubtree(this,listItem):getSubtree(this,listItem)?.classList.add("hide"))}function LibraryTree(options){this.options=options;options=this.options.view;options.addEventListener("click",onClick.bind(this)),options.addEventListener("action-null",onItemAction.bind(this)),options.fetchData=getItems.bind(this),options.getListOptions=getListOptions.bind(this),options.refreshOnItemUpdated=!1,this.itemsContainer=options}require(["material-icons","css!metadatamanager/metadatamanager.css"]),LibraryTree.prototype.getApiClient=function(){return this.options.apiClient},LibraryTree.prototype.getCurrentItem=function(){return this.currentItem},LibraryTree.prototype.setCurrentItem=function(item,listItem){this.currentListItem?.classList.remove("navMenuOption-selected"),this.currentListItem=listItem,this.currentItem=item},LibraryTree.prototype.resume=function(options){return this.itemsContainer.resume(options)},LibraryTree.prototype.destroy=function(){this.options=null,this.currentListItem=null,this.currentItem=null};export default LibraryTree;