dashboard-ui/modules/tabbedview/listcontroller.js
2023-08-31 15:30:17 +02:00

1 line
43 KiB
JavaScript

define(["exports","./../dom.js","./../browser.js","./../focusmanager.js","./../common/globalize.js","./../common/usersettings/usersettings.js","./../common/itemmanager/itemmanager.js","./../layoutmanager.js","./../cardbuilder/cardbuilder.js","./../listview/listview.js","./../loading/loading.js","./../multiselect/multiselect.js","./../alphapicker/alphapicker.js","./../common/playback/playbackmanager.js","./../emby-apiclient/connectionmanager.js","./../datagrid/datagrid.js","./../maintabsmanager.js","./../shortcuts.js"],function(_exports,_dom,_browser,_focusmanager,_globalize,_usersettings,_itemmanager,_layoutmanager,_cardbuilder,_listview,_loading,_multiselect,_alphapicker,_playbackmanager,_connectionmanager,_datagrid,_maintabsmanager,_shortcuts){Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.default=void 0;var supportsCssVariables=CSS.supports("color","var(--fake-var)"),supportsCalc=CSS.supports("width","min(45.2%,calc(100% - .65em))"),supportsMin=CSS.supports("width","min(10em, 5vw)"),supportsCalcMin=supportsCalc&&supportsMin;function showActionSheet(options){return Emby.importModule("./modules/actionsheet/actionsheet.js").then(function(ActionSheet){return ActionSheet.show(options)})}function getApiClient(instance){return instance.apiClient||((instance=instance.params.serverId)?_connectionmanager.default.getApiClient(instance):_connectionmanager.default.currentApiClient())}function trySelectValue(instance,scroller,view,value,focus){var sortValues=instance.getSortValues();!value||"#"===value&&"Ascending"===sortValues.sortOrder?instance.itemsContainer.scrollToIndex(0,{},focus):instance.getItems({Limit:0}).then(function(totalResult){var sortBy,query;totalResult.TotalRecordCount<=1?instance.itemsContainer.scrollToIndex(0,{},focus):"#"===value&&"Descending"===sortValues.sortOrder?instance.itemsContainer.scrollToIndex(totalResult.TotalRecordCount-1,{},focus):(query={Limit:0},(sortBy=sortValues.sortBy||"").startsWith("AlbumArtist")?query.AlbumArtistStartsWithOrGreater=value:sortBy.startsWith("Artist")?query.ArtistStartsWithOrGreater=value:query.NameStartsWithOrGreater=value,instance.getItems(query).then(function(result){result="Descending"===sortValues.sortOrder?result.TotalRecordCount:Math.max(totalResult.TotalRecordCount-result.TotalRecordCount,0);instance.itemsContainer.scrollToIndex(result,{},focus)}))})}function refreshAfterSettingsChange(instance){instance.resetRandomSeed(),instance.itemsContainer.refreshItems()}function showViewSettingsMenu(e){var instance=this;require(["viewSettings"],function(ViewSettings){var isGrid="datagrid"===instance.getViewSettings().imageType;(new ViewSettings).show({settingsKey:instance.getSettingsKey(),settings:instance.getViewSettings(),visibleSettings:instance.getVisibleViewSettings(),availableFields:instance.getAvailableFields(),viewOptions:instance.getAvailableViewOptions(),positionTo:e.target.closest("button"),positionY:"bottom",onChange:function(){var defaultSortBy,sorting,viewSettings=instance.getViewSettings();isGrid&&"datagrid"!==viewSettings.imageType&&(defaultSortBy=null==(sorting=instance.getDefaultSorting())?void 0:sorting.sortBy,sorting=null==sorting?void 0:sorting.sortOrder,instance.setSortValueInternal(defaultSortBy,sorting)),isGrid="datagrid"===viewSettings.imageType,refreshAfterSettingsChange(instance)}})})}function showSortMenu(e){var instance=this,options=instance.getSortMenuOptions();!function(instance,options){for(var currentValues=instance.getSortValues(),i=0,length=options.length;i<length;i++){var opt=options[i];if(opt.selected=opt.value===currentValues.sortBy,opt.selected){var icon="Descending"===currentValues.sortOrder?"&#xE5DB;":"&#xE5D8;";opt.asideIcon=icon;break}}}(instance,options),showActionSheet({items:options,positionTo:e.target.closest("button"),positionY:"bottom",hideTitleWhenNotFullscreen:!0,title:_globalize.default.translate("HeaderSortBy"),offsetTop:2,hasItemAsideIcon:!0,hasItemSelectionState:!0}).then(function(value){instance.setSortValue(value)})}function ListController(view,params){this.view=view,(this.params=params).serverId&&(this.apiClient=_connectionmanager.default.getApiClient(params.serverId))}function onItemsContainerFocus(e){var alphaPicker=this.alphaPicker;alphaPicker&&(e=_shortcuts.default.getItemFromChildNode(e.target,null,this.itemsContainer))&&alphaPicker.setCurrentFromItem(e)}function bindAll(elems,eventName,fn){for(var i=0,length=elems.length;i<length;i++)elems[i].addEventListener(eventName,fn)}function mapPrefix(i){return i.Name}function getAvailableFieldIdMap(instance){for(var fields=instance.getAvailableFields(),result={},i=0,length=fields.length;i<length;i++){var field=fields[i];result[field.id]=field}return result}function detectDefaultViewType(instance,defaults,items){var viewType=instance._defaultViewType;return viewType=!viewType&&(items=items||instance.itemsContainer.items||[]).length&&function(items){for(var hasIndexNumber,matches=0,i=0,length=items.length;i<length;i++){var item=items[i];if(item){if(item.IsFolder||"Audio"!==item.MediaType)return;matches++,item.IndexNumber&&(hasIndexNumber=!0)}}return hasIndexNumber&&0<matches}(items)?instance._defaultViewType="list":viewType}function hideOrShowAll(elems,hide){for(var i=0,length=elems.length;i<length;i++)hide?elems[i].classList.add("hide"):elems[i].classList.remove("hide")}function destroyHeader(instance){var elem=instance._headerElement;if(elem){try{elem.remove()}catch(err){}instance._headerElement=null}}function ensureHeader(instance){var itemsContainer,elem=instance._headerElement;return elem||(instance._headerElement=elem=document.createElement("div"),elem.className="itemsContainer_header",(itemsContainer=instance.itemsContainer).parentNode.insertBefore(elem,itemsContainer),elem.addEventListener("contextmenu",function(e){e.preventDefault(),this.showColumnSelector(e)}.bind(instance)),elem.addEventListener("click",function(e){e.target.closest(".btnConfigureGridColumns")?this.showColumnSelector(e):(e=e.target.closest(".btnGridHeaderColumnSort"))&&this.setSortValue(e.getAttribute("data-sortvalue"))}.bind(instance))),elem}function removeScrollListener(instance){var scroller;instance.boundOnScroll&&((scroller=instance.scroller)&&scroller.removeEventListener("scroll",instance.boundOnScroll),instance.boundOnScroll=null)}ListController.prototype.initItemsContainer=function(){var view=this.view;this.itemsContainer=view.querySelector(".itemsContainer"),this.itemsContainer.setListClasses=!0,this.itemsContainer.fetchData=this.getItems.bind(this),this.itemsContainer.onGetItems=this.onGetItems.bind(this),this.itemsContainer.virtualChunkSize=this.virtualChunkSize(),this.itemsContainer.getListOptions=this.getListOptions.bind(this),this.itemsContainer.onDataFetched=function(result){var values=this.getSortValues(),values=this.enableAlphaPicker(values.sortBy,values.sortOrder);_dom.default.removeEventListener(this.itemsContainer,"focus",onItemsContainerFocus.bind(this),{capture:!0,passive:!0}),_layoutmanager.default.tv&&values&&_dom.default.addEventListener(this.itemsContainer,"focus",onItemsContainerFocus.bind(this),{capture:!0,passive:!0})}.bind(this),this.itemsContainer.onRefreshing=this.onRefreshing.bind(this),this.itemsContainer.afterRefresh=this.afterItemsRefreshed.bind(this),this.itemsContainer.onGetItemsFailed=this.onGetItemsFailed.bind(this),this.itemsContainer.showColumnSelector=this.showColumnSelector.bind(this),this.itemsContainer.addEventListener("multiselectactive",function(e){var itemsContainer=this.itemsContainer,_itemsContainer$curre=null==(_itemsContainer$curre=itemsContainer.currentListOptions)?void 0:_itemsContainer$curre.renderer;_itemsContainer$curre&&_itemsContainer$curre.onMultiSelectActive&&_itemsContainer$curre.onMultiSelectActive(itemsContainer,this._headerElement)}.bind(this)),this.itemsContainer.addEventListener("multiselectinactive",function(e){var itemsContainer=this.itemsContainer,_itemsContainer$curre2=null==(_itemsContainer$curre2=itemsContainer.currentListOptions)?void 0:_itemsContainer$curre2.renderer;_itemsContainer$curre2&&_itemsContainer$curre2.onMultiSelectInactive&&_itemsContainer$curre2.onMultiSelectInactive(itemsContainer,this._headerElement)}.bind(this))},ListController.prototype.initButtons=function(){for(var hasAnyViewSettings,view=this.view,btnViewSettings=view.querySelectorAll(".btnViewSettings"),supportsViewSettings=!1!==this.supportsViewSettings,i=0,length=btnViewSettings.length;i<length;i++)btnViewSettings[i].addEventListener("click",showViewSettingsMenu.bind(this)),supportsViewSettings&&(hasAnyViewSettings=!0,btnViewSettings[i].classList.remove("hide"));var filterButtons=view.querySelectorAll(".btnFilter"),hasVisibleFilters=(this.filterButtons=filterButtons,this.getVisibleFilters().length);for(i=0,length=filterButtons.length;i<length;i++){var btnFilter=filterButtons[i];btnFilter.addEventListener("click",this.showFilterMenu.bind(this)),hasVisibleFilters?(hasAnyViewSettings=!0,btnFilter.classList.remove("hide")):btnFilter.classList.add("hide")}var sortButtons=view.querySelectorAll(".btnSort"),supportsSorting=(this.sortButtons=sortButtons,this.supportsSorting());for(i=0,length=sortButtons.length;i<length;i++){var sortButton=sortButtons[i];sortButton.addEventListener("click",showSortMenu.bind(this)),supportsSorting?(hasAnyViewSettings=!0,sortButton.classList.remove("hide")):sortButton.classList.add("hide")}this.btnSortText=view.querySelector(".btnSortText"),this.btnSortIcon=view.querySelector(".btnSortIcon"),null==this.enableAlphaNumericShortcuts&&(this.enableAlphaNumericShortcuts="true"===this.itemsContainer.getAttribute("data-alphanumericshortcuts")&&this.enableVirtualData());var btnPlay=view.querySelectorAll(".btnPlay"),btnShuffle=view.querySelectorAll(".btnShuffle"),btnQueue=view.querySelectorAll(".btnQueue"),btnPlay=(bindAll(btnPlay,"click",this.play.bind(this)),bindAll(btnShuffle,"click",this.shuffle.bind(this)),bindAll(btnQueue,"click",this.queue.bind(this)),this.supportsPlay()&&btnPlay.length&&(hasAnyViewSettings=!0),this.supportsShuffle()&&btnShuffle.length&&(hasAnyViewSettings=!0),this.supportsQueue()&&btnQueue.length&&(hasAnyViewSettings=!0),view.querySelector(".itemsViewSettingsContainer"));(this.itemsViewSettingsContainer=btnPlay)&&(hasAnyViewSettings||!1!==this.enableTotalRecordCountDisplay||this.hasOtherViewButtons?btnPlay.classList.remove("hide"):btnPlay.classList.add("hide"),hasAnyViewSettings||this.hasOtherViewButtons?(btnPlay.classList.add("focusable"),btnPlay.setAttribute("data-focusabletype","nearest")):(btnPlay.classList.remove("focusable"),btnPlay.removeAttribute("data-focusabletype")))},ListController.prototype.saveSortingOnServer=function(){return!1},ListController.prototype.setSortValueInternal=function(value,sortOrder){sortOrder=sortOrder||"Ascending";var settingsKey=this.getSettingsKey(),saveSortingOnServer=this.saveSortingOnServer();_usersettings.default.setFilter(this.getSortBySettingsKey(),value,saveSortingOnServer),_usersettings.default.setFilter(settingsKey+"-sortorder",sortOrder,saveSortingOnServer),this.updateSortText()},ListController.prototype.getDefaultSortingForField=function(fieldId){var field=this.getAvailableField(fieldId);if(!field)return null;for(var sortOptions=this.getSortMenuOptions(),i=0,length=sortOptions.length;i<length;i++){var sortOption=sortOptions[i];if(sortOption.value===field.sortBy)return{sortBy:sortOption.value,sortOrder:sortOption.defaultSortOrder}}},ListController.prototype.setSortValue=function(value){var currentValues=this.getSortValues(),sortOrder=currentValues.sortOrder;if(currentValues.sortBy===value)sortOrder="Ascending"===sortOrder?"Descending":"Ascending";else for(var sortOptions=this.getSortMenuOptions(),i=0,length=sortOptions.length;i<length;i++){var sortOption=sortOptions[i];if(sortOption.value===value){sortOrder=sortOption.defaultSortOrder;break}}this.setSortValueInternal(value,sortOrder),refreshAfterSettingsChange(this)},ListController.prototype.getPlayAction=function(){return null},ListController.prototype.refreshPrefixes=function(){var instance=this;this.getPrefixes().then(function(prefixes){instance.alphaPicker.setPrefixes(prefixes)})},ListController.prototype.getPrefixes=function(){var apiClient,queryInfo,methodName,sortBy;return"search"===this.params.type?Promise.resolve([]):(queryInfo=this.getQueryInfo(!1),apiClient=this.apiClient,(queryInfo=queryInfo.query).SortBy=null,queryInfo.StartIndex=null,queryInfo.Limit=null,queryInfo.Fields=null,queryInfo.EnableImageTypes=null,queryInfo.ImageTypeLimit=null,queryInfo.NameStartsWithOrGreater=null,queryInfo.ArtistStartsWithOrGreater=null,queryInfo.AlbumArtistStartsWithOrGreater=null,queryInfo.IncludeItemTypes=this.getPrefixQueryIncludeItemTypes().join(",")||null,methodName=this.getPrefixesApiClientMethodName(),(sortBy=this.getSortValues().sortBy||"").startsWith("AlbumArtist")?(methodName="getArtistPrefixes",queryInfo.ArtistType="AlbumArtist"):sortBy.startsWith("Artist")&&(methodName="getArtistPrefixes",queryInfo.ArtistType="Artist"),("getUserPrefixes"===methodName||"getLiveTvChannelTagPrefixes"===methodName?apiClient[methodName](queryInfo):apiClient[methodName](apiClient.getCurrentUserId(),queryInfo)).then(function(result){return result.map(mapPrefix)}))},ListController.prototype.getCommandOptions=function(){return{}},ListController.prototype.getDataGridOptions=function(items,availableFields){availableFields=Object.assign(this.getBaseListRendererOptions(),{columns:availableFields});return _layoutmanager.default.tv||(availableFields.action="none"),availableFields.sortValues=this.getSortValues(),availableFields},ListController.prototype.getAvailableViewOptions=function(){var list=[];return list.push("primary"),list.push("banner"),list.push("disc"),list.push("logo"),list.push("thumb"),list.push("list"),this.supportsViewType("datagrid")&&list.push("datagrid"),list},ListController.prototype.supportsViewType=function(viewType){var itemType=this.getDisplayPreset()||"";return"datagrid"!==viewType||"TvChannel"!==itemType},ListController.prototype.getCardOptions=function(items,settings){var preferThumb,preferDisc,preferLogo,shape;return"x"===this.scrollDirection()?Object.assign(this.getBaseListRendererOptions(),{shape:"auto",rows:{portrait:2,square:3,backdrop:3,fourThree:3},overlayText:!0,draggable:!1,context:"folders",multiSelect:!1,typeIndicator:!0,cardSize:this.getViewSettings().cardSize}):("banner"===settings.imageType?shape="banner":"disc"===settings.imageType?(shape="square",preferDisc=!0):"logo"===settings.imageType?(shape="backdrop",preferLogo=!0):"thumb"===settings.imageType?(shape="backdrop",preferThumb=!0):shape="auto",settings=settings.fields,(shape=Object.assign(this.getBaseListRendererOptions(),{shape:shape,preferThumb:preferThumb,preferDisc:preferDisc,preferLogo:preferLogo,fields:settings,overlayText:0===settings.length||"None"===settings[0],parentId:this.isGlobalQuery()?null:this.params.parentId,playAction:this.getPlayAction()})).typeIndicator="folders"===this.getContext(),shape)},ListController.prototype.getListViewOptions=function(items,settings){var options=this.getBaseListRendererOptions();return options.fields=settings.fields||[],options},ListController.prototype.getBaseListRendererOptions=function(items,settings){var multiSelect;switch(this.getDisplayPreset()||""){case"Program":case"TvChannel":multiSelect=!1;break;default:multiSelect=!0}return{context:this.getContext(),draggable:!0,multiSelect:multiSelect}},ListController.prototype.getListOptions=function(items){var settings=this.getViewSettings(items);return"datagrid"===settings.imageType?{renderer:_datagrid.default,options:this.getDataGridOptions(items,function(availableFields,enabledFieldIds){for(var list=[],i=0,length=availableFields.length;i<length;i++){var field=availableFields[i];enabledFieldIds.includes(field.id)&&list.push(field)}return list}(this.getAvailableFields(),settings.fields)),virtualScrollLayout:"vertical",commandOptions:this.getCommandOptions()}:"list"===settings.imageType?{renderer:_listview.default,options:this.getListViewOptions(items,settings),virtualScrollLayout:"vertical",commandOptions:this.getCommandOptions()}:{renderer:_cardbuilder.default,options:this.getCardOptions(items,settings),virtualScrollLayout:this.getCardVirtualScrollLayout(),commandOptions:this.getCommandOptions()}},ListController.prototype.getCardVirtualScrollLayout=function(){return"x"===this.scrollDirection()?null:"vertical-grid"},ListController.prototype.getAvailableField=function(id){return this.getAvailableFields()[id]},ListController.prototype.getAvailableFields=function(){var fields=this._availableFields;if(!fields){for(var fieldList=this.getAvailableFieldsInternal(),i=0,length=fieldList.length;i<length;i++){var field=fieldList[i];fieldList[field.id]=field}this._availableFields=fields=fieldList}return fields},ListController.prototype.getAvailableFieldsInternal=function(){var params=this.params;return"downloads"===params.parentId||"search"===params.type?[]:_itemmanager.default.getAvailableFields({itemType:this.getDisplayPreset()})},ListController.prototype.getVisibleViewSettings=function(){var params=this.params;if("downloads"===params.parentId)return[];if("search"===params.type)return[];var settings=[],params=this.getDisplayPreset()||"";switch(params){case"Photo":case"Server":break;default:settings.push("imageType")}switch(params){case"":case"Audio":case"MusicAlbum":case"Game":case"Movie":case"MusicVideo":case"Video":case"Trailer":case"Episode":case"Series":settings.push("groupItemsIntoCollections")}return"TvChannel"===params&&settings.push("groupItemsIntoTags"),settings},ListController.prototype.showColumnSelector=function(originalEvent){var availableFields=this.getAvailableFields().filter(function(a){return!a.viewTypes||(a.viewTypes||"").includes("datagrid")}),instance=this;showActionSheet({items:availableFields,positionTo:originalEvent.target,positionX:"right",positionY:"bottom",positionClientY:originalEvent.clientY,positionClientX:originalEvent.clientX,offsetTop:2,hasItemSelectionState:!1,multiple:!0,emptyValueSetEqualsAll:!0,selectedValues:instance.getViewSettings([]).fields}).then(function(fields){_usersettings.default.set(instance.getSettingsKey()+"-fields",fields.join(","),!1),refreshAfterSettingsChange(instance)})},ListController.prototype.getViewSettingDefaults=function(currentItem,listItems,availableFields){var defaults={};return defaults.fields=availableFields.filter(function(a){return"*"===a.defaultVisible||(a.defaultVisible||"").includes("cards")}).map(function(a){return a.id}),this.params.defaultView?defaults.imageType=this.params.defaultView:"folders"===this.getContext()&&(defaults.imageType=detectDefaultViewType(this,0,listItems)),defaults.imageType||(defaults.imageType="primary"),defaults},ListController.prototype.getViewSettings=function(items){items=items||this.itemsContainer.getItems();var basekey=this.getSettingsKey(),availableFieldIds=getAvailableFieldIdMap(this),availableFields=this.getAvailableFields(),item=this.currentItem,item=this.getViewSettingDefaults(item,items,availableFields),items=_usersettings.default.get(basekey+"-imageType",!1)||item.imageType,cardSize=_usersettings.default.get(basekey+"-cardSize",!1)||"default",userConfiguredFields=_usersettings.default.get(basekey+"-fields",!1),availableFieldIds=(userConfiguredFields=(userConfiguredFields="None"!==userConfiguredFields||"datagrid"!==items&&"list"!==items?userConfiguredFields:null)&&function(availableFieldIds,userConfiguredFields){for(var list=[],i=0,length=userConfiguredFields.length;i<length;i++)availableFieldIds[userConfiguredFields[i]]&&list.push(userConfiguredFields[i]);return list}(availableFieldIds,userConfiguredFields=userConfiguredFields.split(",")),item.fields.slice(0)),item=availableFields.filter(function(a){return"*"===a.defaultVisible||(a.defaultVisible||"").includes("datagrid")}).map(function(a){return a.id});return{fields:userConfiguredFields=userConfiguredFields&&(userConfiguredFields.length||"datagrid"!==items)?userConfiguredFields:("datagrid"===items?item:availableFieldIds).slice(0),groupItemsIntoTags:"true"===_usersettings.default.get(basekey+"-groupItemsIntoTags",!0),groupItemsIntoCollections:"true"===_usersettings.default.get(basekey+"-groupItemsIntoCollections",!0),imageType:items,cardSize:cardSize,defaultFields:availableFieldIds,tableDefaultFields:item}},ListController.prototype.autoFocus=function(options){options=Object.assign({skipIfNotEnabled:!0},options);var view,elem=_focusmanager.default.autoFocus(this.itemsContainer,options);return elem||(options.skipIfNotEnabled&&!_focusmanager.default.isAutoFocusEnabled()?null:(view=this.view)&&(elem=_focusmanager.default.autoFocus(view,options))?elem:(elem=_maintabsmanager.default.focus())||null)},ListController.prototype.play=function(){if(!_multiselect.default.canPlay()){var currentItem=this.currentItem,params=this.params;if(currentItem&&!this.getQueryInfo(!0).hasFilters&&!params.type&&!_connectionmanager.default.getApiClient(currentItem).isMinServerVersion("4.8.0.30"))if("SortName"===this.getSortValues().sortBy)return _playbackmanager.default.play({items:[currentItem],parentId:params.parentId,autoplay:!0});return this.getItems({Limit:300,Recursive:!0,IsFolder:!1,ProjectToMedia:!0}).then(function(result){_playbackmanager.default.play({items:result.Items,autoplay:!0})})}_multiselect.default.play()},ListController.prototype.shuffle=function(){var currentItem=this.currentItem,params=this.params;if(!currentItem||this.getQueryInfo(!0).hasFilters||_connectionmanager.default.getApiClient(currentItem).isMinServerVersion("4.8.0.30"))return this.getItems({Limit:300,Recursive:!0,IsFolder:!1,ProjectToMedia:!0,SortBy:"Random"}).then(function(result){_playbackmanager.default.play({items:result.Items,autoplay:!0})});_playbackmanager.default.shuffle(currentItem,null,{parentId:params.parentId})},ListController.prototype.queue=function(){this.getItems({Limit:300,Recursive:!0,ProjectToMedia:!0,IsFolder:!1}).then(function(result){_playbackmanager.default.queue({items:result.Items})})},ListController.prototype.isGlobalQuery=function(){return!1},ListController.prototype.virtualChunkSize=function(){return null},ListController.prototype.enableVirtualData=function(){return this.itemsContainer.hasAttribute("data-virtualscrolllayout")},ListController.prototype.getItemCountText=function(numItems){return 1===numItems?_globalize.default.translate("ValueOneItem"):_globalize.default.translate("ItemCount",numItems)},ListController.prototype.getPrefixesApiClientMethodName=function(){return"getPrefixes"},ListController.prototype.getApiClientQueryMethodName=function(){return"getItems"},ListController.prototype.getPrefixQueryIncludeItemTypes=function(){return this.getQueryIncludeItemTypes()},ListController.prototype.getQueryIncludeItemTypes=function(){return this.getItemTypes()},ListController.prototype.getContext=function(){return null},ListController.prototype.getSortBySettingsKey=function(sortMenuOptions){return this.getSettingsKey()+"-sortby"},ListController.prototype.getSortByValue=function(){var saveSortingOnServer=this.saveSortingOnServer();return _usersettings.default.getFilter(this.getSortBySettingsKey(),saveSortingOnServer)},ListController.prototype.getVisibleFilters=function(){var list=[],fieldIds=getAvailableFieldIdMap(this),itemType=(fieldIds.Played&&(list.push("IsUnplayed"),list.push("IsPlayed"),list.push("IsResumable")),fieldIds.IsFavorite&&list.push("IsFavorite"),this.getDisplayPreset());switch(itemType){case"Movie":case"Episode":case"Trailer":case"MusicVideo":case"Video":list.push("AudioCodecs"),list.push("AudioLayouts"),list.push("VideoCodecs"),list.push("SubtitleCodecs"),list.push("HasSubtitles"),list.push("VideoType")}switch("Audio"===itemType&&list.push("HasLyrics"),itemType){case"Movie":case"Series":case"Season":case"Episode":case"MusicVideo":case"Video":case"Trailer":case"Person":list.push("HasTmdbId")}switch(itemType){case"Movie":case"Series":case"Season":case"Episode":case"MusicVideo":case"Video":case"Trailer":case"BoxSet":case"Person":list.push("HasImdbId")}switch(itemType){case"Movie":case"Series":case"Season":case"Episode":case"MusicVideo":case"Video":case"Trailer":list.push("HasTvdbId")}switch(itemType){case"Movie":case"Series":case"Season":case"Episode":case"BoxSet":case"MusicVideo":case"Video":case"Game":list.push("HasTrailer"),list.push("HasSpecialFeature"),list.push("HasThemeSong"),list.push("HasThemeVideo")}switch(fieldIds.Video3DFormat&&list.push("Is3D"),fieldIds.Resolution&&list.push("Resolution"),fieldIds.Container&&list.push("Containers"),fieldIds.ProductionYear&&list.push("Years"),fieldIds.Genres&&list.push("Genres"),fieldIds.Studios&&list.push("Studios"),fieldIds.Tags&&list.push("Tags"),fieldIds.OfficialRating&&list.push("OfficialRatings"),itemType){case"Movie":case"Series":case"Season":case"Episode":case"BoxSet":case"Trailer":case"Audio":case"MusicAlbum":case"MusicArtist":case"Playlist":case"Video":case"Game":case"Book":case"Person":case"GameSystem":case"Photo":case"TvChannel":list.push("HasOverview"),list.push("IsLocked")}return"Series"===itemType&&list.push("SeriesStatus"),list},ListController.prototype.getDefaultSorting=function(){if("folders"===this.getContext()){var item=this.currentItem;if(item&&"Folder"===item.Type){item=this.getDefaultSortingForField("Filename");if(item)return item}}return _itemmanager.default.getDefaultSorting({itemType:this.getDisplayPreset()})},ListController.prototype.getFilterMenuOptions=function(){return{}},ListController.prototype.getItemTypes=function(){return[]},ListController.prototype.supportsPlay=function(){switch(this.getDisplayPreset()||""){case"":case"Movie":case"Episode":case"Trailer":case"Audio":case"MusicAlbum":case"MusicArtist":case"MusicVideo":case"Video":case"Photo":return!0;default:return!1}},ListController.prototype.supportsShuffle=function(){return this.supportsPlay()},ListController.prototype.supportsQueue=function(){return this.supportsPlay()},ListController.prototype.supportsAlphaPicker=function(){return!1},ListController.prototype.enableAlphaPicker=function(sortBy,sortOrder){return!(!this.supportsAlphaPicker()||"search"===this.params.type||"SortName"!==(sortBy=sortBy||"")&&!sortBy.startsWith("AlbumArtist")&&!sortBy.startsWith("Artist")&&"User"!==this.getDisplayPreset())},ListController.prototype.getInlinePaddingElement=function(){return this.itemsContainer.closest(".padded-left")},ListController.prototype.initAlphaPicker=function(){var alphaPickerElement,paddingElement;!this.alphaPicker&&(this.alphaPickerElement=this.view.querySelector(".alphaPicker"),alphaPickerElement=this.alphaPickerElement)&&(paddingElement=this.getInlinePaddingElement(),_layoutmanager.default.tv?(alphaPickerElement.classList.add("alphaPicker-fixed-left"),alphaPickerElement.classList.remove("alphaPicker-fixed-right"),paddingElement&&(paddingElement.classList.add("padded-left-withalphapicker"),paddingElement.classList.remove("padded-right-withalphapicker"))):(alphaPickerElement.classList.add("alphaPicker-fixed-right"),alphaPickerElement.classList.remove("alphaPicker-fixed-left"),paddingElement&&(paddingElement.classList.remove("padded-left-withalphapicker"),paddingElement.classList.add("padded-right-withalphapicker"))),this.alphaPicker=new _alphapicker.default({element:alphaPickerElement,itemsContainer:this.itemsContainer,prefixes:[],setValueOnFocus:!0}),this.alphaPicker.on("alphavaluechanged",function(e){e=e.detail.value,trySelectValue(this,this.scroller,this.itemsContainer,e)}.bind(this)))},ListController.prototype.getItems=function(initialQuery,signal){var apiClient=getApiClient(this),queryInfo=this.getQueryInfo(!0),initialQuery=(this.setFilterStatus(queryInfo.hasFilters),initialQuery&&(queryInfo.query=Object.assign(queryInfo.query,initialQuery)),this.getApiClientQueryMethodName());return"getActivityLog"===initialQuery?(queryInfo.query.HasUserId=!1,apiClient.getActivityLog(queryInfo.query)):"getUserActivityLog"===initialQuery?(queryInfo.query.HasUserId=!0,apiClient.getActivityLog(queryInfo.query)):"getLogs"===initialQuery||"getLogLines"===initialQuery||"getApiKeys"===initialQuery||"getLiveTvChannelsForManagement"===initialQuery?apiClient[initialQuery](queryInfo.query):"getNextUpEpisodes"===initialQuery?(queryInfo.query.UserId=apiClient.getCurrentUserId(),queryInfo.query.EnableTotalRecordCount=!1,queryInfo.query.LegacyNextUp=!0,apiClient[initialQuery](queryInfo.query,signal)):"getLiveTvChannels"===initialQuery||"getLiveTvRecordings"===initialQuery||"getLiveTvChannelTags"===initialQuery?(queryInfo.query.UserId=apiClient.getCurrentUserId(),apiClient[initialQuery](queryInfo.query,signal)):"search"===this.params.type?(this.view.querySelector(".emby-searchable-tab-button.emby-tab-button-active")&&(queryInfo.query.IncludeSearchTypes=!1),apiClient.getSearchResults(queryInfo.query).then(function(result){return result.ItemTypes&&this.refreshSearchTabs(result.ItemTypes),result}.bind(this))):apiClient[initialQuery](apiClient.getCurrentUserId(),queryInfo.query)},ListController.prototype.onRefreshing=function(result){var values,alphaPicker,listOptions=this.itemsContainer.currentListOptions,listOptions=(listOptions.renderer.renderHeader?listOptions.renderer.renderHeader(this,ensureHeader(this),listOptions.options):destroyHeader(this),this.getViewSettings()),items=(_cardbuilder.default.setUserPreferredSize(this.itemsContainer,listOptions.cardSize),this.configureScrollingForView(),result.Items||result),result=result.TotalRecordCount||items.length,items=(this.fillDisplayTotalRecordCount(result),items=result,values=(instance=this).getSortValues(),(values=instance.enableAlphaPicker(values.sortBy,values.sortOrder))?instance.initAlphaNumericShortcuts():instance.destroyAlphaNumericShortcuts(),instance.alphaPicker&&(alphaPicker=instance.alphaPickerElement)&&(values&&30<items?(alphaPicker.classList.remove("hide"),instance.refreshPrefixes()):(alphaPicker.classList.add("hide"),(values=instance.getInlinePaddingElement())&&values.classList.remove("padded-left-withalphapicker","padded-right-withalphapicker"))),this.getInlinePaddingElement()),instance=(items&&("datagrid"===(alphaPicker=listOptions.imageType)||"list"===alphaPicker?_layoutmanager.default.tv?items.classList.add("padded-left-withlist","padded-right-withlist","padded-left-withlist-tv","padded-right-withlist-tv"):(items.classList.add("padded-left-withlist","padded-right-withlist"),items.classList.remove("padded-left-withlist-tv","padded-right-withlist-tv")):items.classList.remove("padded-left-withlist","padded-right-withlist","padded-left-withlist-tv","padded-right-withlist-tv")),this.itemsViewSettingsContainer||this.view);hideOrShowAll(instance.querySelectorAll(".btnPlay"),!(result&&this.supportsPlay())),hideOrShowAll(instance.querySelectorAll(".btnShuffle"),!(result&&this.supportsShuffle())),hideOrShowAll(instance.querySelectorAll(".btnQueue"),!(result&&this.supportsQueue()))},ListController.prototype.afterItemsRefreshed=function(result){var items=result.Items||result;result.TotalRecordCount||items.length||this.setEmptyListState(),_loading.default.hide()},ListController.prototype.onGetItems=function(){_loading.default.show()},ListController.prototype.onGetItemsFailed=function(result){_loading.default.hide()},ListController.prototype.scrollDirection=function(){var _this$options;return(null==(_this$options=this.options)?void 0:_this$options.scrollDirection)||"y"},ListController.prototype.configureScrollingForView=function(){var itemsContainer=this.itemsContainer,headerElement=this._headerElement,currentListOptions=itemsContainer.currentListOptions,hasFixedPositionListHeader=null!=headerElement&&(null==currentListOptions?void 0:currentListOptions.options.enableFixedPositionHeader)&&supportsCssVariables&&supportsCalcMin&&!_browser.default.iOS,itemsViewSettingsContainer=this.itemsViewSettingsContainer,itemsViewSettingsContainer=(itemsViewSettingsContainer&&(null!=headerElement&&hasFixedPositionListHeader?itemsViewSettingsContainer.classList.add("itemsViewSettingsContainer-fixed"):itemsViewSettingsContainer.classList.remove("itemsViewSettingsContainer-fixed")),headerElement&&(hasFixedPositionListHeader?headerElement.classList.add("itemsContainer_header_fixed"):headerElement.classList.remove("itemsContainer_header_fixed")),this.scroller);itemsViewSettingsContainer&&(itemsViewSettingsContainer.setHeaderBindingEnabled(!hasFixedPositionListHeader),headerElement=(headerElement=this.paddedTopPageElem)||(this.paddedTopPageElem=itemsContainer.closest(".padded-top-page")),hasFixedPositionListHeader?(itemsViewSettingsContainer.classList.add("margin-top-page","margin-top-page-listheader","dataGrid-mainscroller-scrollX"),headerElement&&headerElement!==itemsViewSettingsContainer&&headerElement.classList.remove("padded-top-page"),this.boundOnScroll||(this.boundOnScroll=function(e){var headerElement,scroller=this.scroller;scroller&&(headerElement=this._headerElement)&&(headerElement.scrollLeft=scroller.scrollLeft)}.bind(this)),itemsViewSettingsContainer.addEventListener("scroll",this.boundOnScroll)):(removeScrollListener(this),itemsViewSettingsContainer.classList.remove("margin-top-page","margin-top-page-listheader","dataGrid-mainscroller-scrollX"),headerElement&&headerElement!==itemsViewSettingsContainer&&headerElement.classList.add("padded-top-page")),hasFixedPositionListHeader=itemsContainer.closest(".scrollSlider"))&&(itemsViewSettingsContainer=null==currentListOptions?void 0:currentListOptions.options.scrollXWidth,hasFixedPositionListHeader.style.width=itemsViewSettingsContainer?itemsViewSettingsContainer+"ch":null)},ListController.prototype.fillDisplayTotalRecordCount=function(totalRecordCount){var elem=this.view.querySelector(".listTotalRecordCount");elem&&(!1===this.enableTotalRecordCountDisplay?elem.classList.add("hide"):elem.innerHTML=this.getItemCountText(totalRecordCount))},ListController.prototype.getEmptyListMessage=function(){if("search"===this.params.type){if(this.searchFields){var searchTerm=this.lastSearchTerm;if(!searchTerm)return Promise.resolve("");if(searchTerm.length<2)return Promise.resolve(_globalize.default.translate("TwoSearchCharsRequired"))}return Promise.resolve(_globalize.default.translate("NoItemsMatchingFound"))}return this.getQueryInfo(!0).hasFilters?(searchTerm=(searchTerm="<div>"+_globalize.default.translate("NoItemsMatchingFound")+'</div><button style="margin-top:2em;" type="button" is="emby-button" class="raised btnClearFilters"><i class="md-icon button-icon button-icon-left">&#xe0b8;</i>')+"<span>"+_globalize.default.translate("HeaderClearFilters")+"</span></button>",Promise.resolve(searchTerm)):Promise.resolve(_globalize.default.translate("NoItemsFound"))},ListController.prototype.setEmptyListState=function(){this.getEmptyListMessage().then(function(html){html='<div class="flex padded-top align-items-center justify-content-center flex-grow flex-direction-column">'+html,this.itemsContainer.setOtherInnerHTML(html+="</div>"),destroyHeader(this),(html=this.itemsContainer.querySelector(".btnClearFilters"))&&_dom.default.addEventListener(html,"click",this.clearFilters.bind(this),{})}.bind(this))},ListController.prototype.initAlphaNumericShortcuts=function(){var instance;this.enableAlphaNumericShortcuts&&!this.alphaNumericShortcuts&&(instance=this,require(["alphaNumericShortcuts"],function(AlphaNumericShortcuts){instance.alphaNumericShortcuts=new AlphaNumericShortcuts({itemsContainer:instance.itemsContainer}),instance.alphaNumericShortcuts.onAlphaNumericValueEntered=function(value){trySelectValue(this,this.scroller,this.view,value,!0)}.bind(instance)}))},ListController.prototype.supportsSorting=function(){return 0<this.getSortMenuOptions().length},ListController.prototype.getSortValues=function(){var saveSortingOnServer,basekey=this.getSettingsKey(),sortBy=this.getSortByValue();return sortBy?(saveSortingOnServer=this.saveSortingOnServer(),saveSortingOnServer="Descending"===_usersettings.default.getFilter(basekey+"-sortorder",saveSortingOnServer)?"Descending":"Ascending"):(basekey=this.getDefaultSorting())&&(sortBy=basekey.sortBy,saveSortingOnServer=basekey.sortOrder),{sortBy:sortBy,sortOrder:saveSortingOnServer}},ListController.prototype.updateSortText=function(){var btnSortText=this.btnSortText;if(btnSortText){for(var options=this.getSortMenuOptions(),values=this.getSortValues(),sortBy=values.sortBy,i=0,length=options.length;i<length;i++)if(sortBy===options[i].value){btnSortText.innerHTML=_globalize.default.translate("SortByValue",options[i].name);break}var btnSortIcon=this.btnSortIcon;btnSortIcon&&(btnSortIcon.innerHTML="Descending"===values.sortOrder?"&#xE5DB;":"&#xE5D8;")}},ListController.prototype.showFilterMenu=function(e){var instance=this;require(["filterMenu"],function(FilterMenu){function onChange(){refreshAfterSettingsChange(instance)}(new FilterMenu).show({positionTo:e.target.closest("button"),positionY:"bottom",settingsKey:instance.getSettingsKey(),settings:instance.getFilters(),visibleSettings:instance.getVisibleFilters(),onChange:onChange,parentId:instance.isGlobalQuery()?null:instance.params.parentId,itemTypes:instance.getItemTypes?instance.getItemTypes():[],serverId:instance.apiClient.serverId(),filterMenuOptions:instance.getFilterMenuOptions()}).then(onChange)})},ListController.prototype.setFilterStatus=function(hasFilters){var filterButtons=this.filterButtons;if(filterButtons.length)for(var i=0,length=filterButtons.length;i<length;i++){var btnFilter=filterButtons[i];hasFilters?btnFilter.classList.add("filter-active"):btnFilter.classList.remove("filter-active")}},ListController.prototype.setResolutionIntoQuery=function(query,resolution){if(resolution)switch(resolution=resolution.toLowerCase()){case"4k":query.MinWidth=3800;break;case"1080p":query.MinWidth=1800,query.MaxWidth=2200;break;case"720p":query.MinWidth=1200,query.MaxWidth=1799;break;case"hd":query.MinWidth=1200,query.MaxWidth=2200;break;case"sd":query.MaxWidth=1199}},ListController.prototype.getFilters=function(){var basekey=this.getSettingsKey();return{IsPlayed:"true"===_usersettings.default.getFilter(basekey+"-filter-IsPlayed"),IsUnplayed:"true"===_usersettings.default.getFilter(basekey+"-filter-IsUnplayed"),IsFavorite:"true"===_usersettings.default.getFilter(basekey+"-filter-IsFavorite"),IsResumable:"true"===_usersettings.default.getFilter(basekey+"-filter-IsResumable"),Is3D:"true"===_usersettings.default.getFilter(basekey+"-filter-Is3D"),Resolution:_usersettings.default.getFilter(basekey+"-filter-Resolution"),VideoTypes:_usersettings.default.getFilter(basekey+"-filter-VideoTypes"),SeriesStatus:_usersettings.default.getFilter(basekey+"-filter-SeriesStatus"),HasSubtitles:_usersettings.default.getFilter(basekey+"-filter-HasSubtitles"),HasLyrics:_usersettings.default.getFilter(basekey+"-filter-HasLyrics"),ChannelMappingStatus:_usersettings.default.getFilter(basekey+"-filter-ChannelMappingStatus"),HasTrailer:_usersettings.default.getFilter(basekey+"-filter-HasTrailer"),HasSpecialFeature:_usersettings.default.getFilter(basekey+"-filter-HasSpecialFeature"),HasThemeSong:_usersettings.default.getFilter(basekey+"-filter-HasThemeSong"),HasThemeVideo:_usersettings.default.getFilter(basekey+"-filter-HasThemeVideo"),HasOverview:_usersettings.default.getFilter(basekey+"-filter-HasOverview"),HasImdbId:_usersettings.default.getFilter(basekey+"-filter-HasImdbId"),HasTvdbId:_usersettings.default.getFilter(basekey+"-filter-HasTvdbId"),HasTmdbId:_usersettings.default.getFilter(basekey+"-filter-HasTmdbId"),IsLocked:_usersettings.default.getFilter(basekey+"-filter-IsLocked"),GenreIds:_usersettings.default.getFilter(basekey+"-filter-GenreIds"),StudioIds:_usersettings.default.getFilter(basekey+"-filter-StudioIds"),TagIds:_usersettings.default.getFilter(basekey+"-filter-TagIds"),OfficialRatings:_usersettings.default.getFilter(basekey+"-filter-OfficialRatings"),Containers:_usersettings.default.getFilter(basekey+"-filter-Containers"),AudioCodecs:_usersettings.default.getFilter(basekey+"-filter-AudioCodecs"),AudioLayouts:_usersettings.default.getFilter(basekey+"-filter-AudioLayouts"),AudioLanguages:_usersettings.default.getFilter(basekey+"-filter-AudioLanguages"),SubtitleLanguages:_usersettings.default.getFilter(basekey+"-filter-SubtitleLanguages"),VideoCodecs:_usersettings.default.getFilter(basekey+"-filter-VideoCodecs"),SubtitleCodecs:_usersettings.default.getFilter(basekey+"-filter-SubtitleCodecs"),Years:_usersettings.default.getFilter(basekey+"-filter-Years")}},ListController.prototype.getSortMenuOptions=function(){return _itemmanager.default.getSortMenuOptions({itemType:this.getDisplayPreset(),availableFieldIds:getAvailableFieldIdMap(this),apiClient:getApiClient(this)})},ListController.prototype.getRandomSeed=function(){return this.randomSeed||this.resetRandomSeed(),this.randomSeed},ListController.prototype.resetRandomSeed=function(){this.randomSeed=Math.floor(1e7*Math.random())+1},ListController.prototype.getDisplayPreset=function(){var types=this.getItemTypes(),itemType=types.length?types[0]:null;return itemType=itemType||((types=this.getQueryIncludeItemTypes()).length?types[0]:null)},ListController.prototype.clearFilters=function(){var basekey=this.getSettingsKey();_usersettings.default.remove(basekey+"-filter-IsPlayed"),_usersettings.default.remove(basekey+"-filter-IsUnplayed"),_usersettings.default.remove(basekey+"-filter-IsFavorite"),_usersettings.default.remove(basekey+"-filter-IsResumable"),_usersettings.default.remove(basekey+"-filter-Is4K"),_usersettings.default.remove(basekey+"-filter-IsHD"),_usersettings.default.remove(basekey+"-filter-IsSD"),_usersettings.default.remove(basekey+"-filter-Is3D"),_usersettings.default.remove(basekey+"-filter-Resolution"),_usersettings.default.remove(basekey+"-filter-SeriesStatus"),_usersettings.default.remove(basekey+"-filter-HasSubtitles"),_usersettings.default.remove(basekey+"-filter-HasLyrics"),_usersettings.default.remove(basekey+"-filter-ChannelMappingStatus"),_usersettings.default.remove(basekey+"-filter-HasTrailer"),_usersettings.default.remove(basekey+"-filter-HasSpecialFeature"),_usersettings.default.remove(basekey+"-filter-HasThemeSong"),_usersettings.default.remove(basekey+"-filter-HasThemeVideo"),_usersettings.default.remove(basekey+"-filter-HasOverview"),_usersettings.default.remove(basekey+"-filter-HasImdbId"),_usersettings.default.remove(basekey+"-filter-HasTvdbId"),_usersettings.default.remove(basekey+"-filter-HasTmdbId"),_usersettings.default.remove(basekey+"-filter-IsLocked"),_usersettings.default.remove(basekey+"-filter-GenreIds"),_usersettings.default.remove(basekey+"-filter-StudioIds"),_usersettings.default.remove(basekey+"-filter-TagIds"),_usersettings.default.remove(basekey+"-filter-OfficialRatings"),_usersettings.default.remove(basekey+"-filter-Containers"),_usersettings.default.remove(basekey+"-filter-AudioCodecs"),_usersettings.default.remove(basekey+"-filter-AudioLayouts"),_usersettings.default.remove(basekey+"-filter-AudioLanguages"),_usersettings.default.remove(basekey+"-filter-SubtitleLanguages"),_usersettings.default.remove(basekey+"-filter-VideoCodecs"),_usersettings.default.remove(basekey+"-filter-SubtitleCodecs"),_usersettings.default.remove(basekey+"-filter-Years"),this.itemsContainer.refreshItems()},ListController.prototype.destroyAlphaNumericShortcuts=function(){var alphaNumericShortcuts=this.alphaNumericShortcuts;alphaNumericShortcuts&&(alphaNumericShortcuts.destroy(),this.alphaNumericShortcuts=null)},ListController.prototype.resume=function(options){options.refresh||this.configureScrollingForView()},ListController.prototype.pause=function(){var itemsContainer=this.itemsContainer,itemsContainer=(itemsContainer&&itemsContainer.pause&&itemsContainer.pause(),this.alphaNumericShortcuts);itemsContainer&&itemsContainer.pause()},ListController.prototype.destroy=function(){this.destroyAlphaNumericShortcuts(),this.filterButtons=null,this.alphaPicker&&(this.alphaPicker.destroy(),this.alphaPicker=null),removeScrollListener(this),destroyHeader(this),this.sortButtons=null,this.btnSortText=null,this.btnSortIcon=null,this.alphaPickerElement=null,this.itemsViewSettingsContainer=null,this.paddedTopPageElem=null,this.view=null,this.itemsContainer=null,this.params=null},_exports.default=ListController});