1 line
No EOL
59 KiB
JavaScript
1 line
No EOL
59 KiB
JavaScript
import dom from"./../dom.js";import focusManager from"./../focusmanager.js";import globalize from"./../common/globalize.js";import userSettings from"./../common/usersettings/usersettings.js";import itemManager from"./../common/itemmanager/itemmanager.js";import layoutManager from"./../layoutmanager.js";import cardBuilder from"./../cardbuilder/cardbuilder.js";import listView from"./../listview/listview.js";import loading from"./../loading/loading.js";import AlphaPicker from"./../alphapicker/alphapicker.js";import playbackManager from"./../common/playback/playbackmanager.js";import connectionManager from"./../emby-apiclient/connectionmanager.js";import mainTabsManager from"./../maintabsmanager.js";import itemShortcuts from"./../shortcuts.js";let 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 loadMultiSelect(){return layoutManager.tv?Promise.resolve(null):Emby.importModule("./modules/multiselect/multiselect.js")}let dataGrid;function loadDataGrid(){return dataGrid?Promise.resolve(dataGrid):Emby.importModule("./modules/datagrid/datagrid.js").then(function(response){return dataGrid=response})}function showActionSheet(options){return Emby.importModule("./modules/actionsheet/actionsheet.js").then(function(ActionSheet){return ActionSheet.show(options)})}function getApiClient(instance){return instance.getApiClient?instance.getApiClient():instance.apiClient||((instance=instance.params.serverId)?connectionManager.getApiClient(instance):connectionManager.currentApiClient())}function onAlphaNumericValueEntered(value){trySelectValue(this,this.scroller,this.view,value,!0)}function onAlphaValueChanged(e){e=e.detail.value;trySelectValue(this,this.scroller,this.itemsContainer,e,!!layoutManager.tv)}function trySelectValue(instance,scroller,view,value,focus){let sortValues=instance.getSortValues();!value||"#"===value&&"Ascending"===sortValues.sortOrder?instance.itemsContainer.scrollToIndex(0,{forceInstantScroll:!1},focus):instance.getItems({Limit:0}).then(function(totalResult){var sortBy,query;totalResult.TotalRecordCount<=1?instance.itemsContainer.scrollToIndex(0,{forceInstantScroll:!1},focus):"#"===value&&"Descending"===sortValues.sortOrder?instance.itemsContainer.scrollToIndex(totalResult.TotalRecordCount-1,{forceInstantScroll:!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){let newIndex;newIndex="Descending"===sortValues.sortOrder?result.TotalRecordCount:Math.max(totalResult.TotalRecordCount-result.TotalRecordCount,0),instance.itemsContainer.scrollToIndex(newIndex,{forceInstantScroll:!1},focus)}))})}function refreshAfterSettingsChange(instance){instance.resetRandomSeed(),instance.itemsContainer.refreshItems()}function showViewSettingsMenu(e){let instance=this;Emby.importModule("./modules/viewsettings/viewsettings.js").then(function(ViewSettings){let 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=(sorting=instance.getDefaultSorting())?.sortBy,sorting=sorting?.sortOrder,instance.setSortValueInternal(defaultSortBy,sorting)),isGrid="datagrid"===viewSettings.imageType,refreshAfterSettingsChange(instance)}})})}function setSelectedSortOption(instance,options){var currentValues=instance.getSortValues();for(let 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?"":"";opt.asideIcon=icon;break}}}function showSortMenu(e){let instance=this;var options=instance.getSortMenuOptions();setSelectedSortOption(instance,options),showActionSheet({items:options,positionTo:e.target.closest("button"),positionY:"bottom",hideTitleWhenNotFullscreen:!0,title:globalize.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.getApiClient(params.serverId))}function setEmptyListMessage(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");html&&dom.addEventListener(html,"click",this.clearFilters.bind(this),{})}function onMultiSelectActive(e){var itemsContainer=this.itemsContainer,renderer=itemsContainer.currentListOptions?.renderer;renderer&&renderer.onMultiSelectActive&&renderer.onMultiSelectActive(itemsContainer,this._headerElement)}function onMultiSelectInactive(e){var itemsContainer=this.itemsContainer,renderer=itemsContainer.currentListOptions?.renderer;renderer&&renderer.onMultiSelectInactive&&renderer.onMultiSelectInactive(itemsContainer,this._headerElement)}function onItemsContainerFocus(e){var alphaPicker=this.alphaPicker;alphaPicker&&(e=itemShortcuts.getItemFromChildNode(e.target,null,this.itemsContainer))&&alphaPicker.setCurrentFromItem(e)}function onDataFetched(result){var values=this.getSortValues(),values=this.enableAlphaPicker(values.sortBy,values.sortOrder),values=(dom.removeEventListener(this.itemsContainer,"focus",onItemsContainerFocus.bind(this),{capture:!0,passive:!0}),layoutManager.tv&&values&&dom.addEventListener(this.itemsContainer,"focus",onItemsContainerFocus.bind(this),{capture:!0,passive:!0}),result.Items||result);return"datagrid"!==this.getViewSettings(values).imageType?Promise.resolve(result):loadDataGrid().then(function(){return Promise.resolve(result)})}function bindAll(elems,eventName,fn){for(let i=0,length=elems.length;i<length;i++)elems[i].addEventListener(eventName,fn)}function mapPrefix(i){return i.Name}function isNotName(n){return"Name"!==n}function isNotAirTime(n){return"AirTime"!==n}function isNotParentName(n){return"ParentName"!==n}function adjustListOptionsForGroupingProgramsBySeries(instance,items,options){"search"!==instance.params.type&&items.length&&items[0].AsSeries&&(options.progress=!1,options.showAirDateTime=!1,options.fields=options.fields.filter(isNotName).filter(isNotAirTime).filter(isNotParentName),options.fields.push("ParentNameOrName"))}function modifyFieldsInListOptions(instance,items,options,settings){var itemType=instance.getDisplayPreset()||"",params=instance.params;switch(itemType){case"":settings.fields.includes("Name")&&options.fields.push("ParentName");break;case"Game":case"MusicVideo":case"MusicAlbum":case"Audio":settings.fields.includes("Name")&&options.fields.push("ParentName");break;case"Episode":settings.fields.includes("Name")&&options.fields.unshift("ParentName");break;case"TvChannel":"OnNow"===params.type&&(options.programsAsSeries=!0,options.action="programlink",options.showCurrentProgramImage=!0),settings.fields.includes("Name")&&("OnNow"===params.type?(options.fields.unshift("CurrentProgramName"),options.fields.unshift("CurrentProgramParentName")):options.fields.push("CurrentProgramParentName"),options.fields.push("CurrentProgramTime"));break;case"Program":options.showAirDateTime=!0,settings.fields.includes("Name")&&("true"!==params.IsMovie&&options.fields.push("ParentName"),"Recordings"!==params.type)&&options.fields.push("AirTime")}}function getEnabledFields(availableFields,enabledFieldIds){var list=[];for(let i=0,length=availableFields.length;i<length;i++){var field=availableFields[i];enabledFieldIds.includes(field.id)&&list.push(field)}return list}function getAvailableFieldIdMap(instance){var fields=instance.getAvailableFields(),result={};for(let i=0,length=fields.length;i<length;i++){var field=fields[i];result[field.id]=field}return result}function filterFields(availableFieldIds,userConfiguredFields){var list=[];for(let i=0,length=userConfiguredFields.length;i<length;i++)availableFieldIds[userConfiguredFields[i]]&&list.push(userConfiguredFields[i]);return list}function allItemsAudioOrPhoto(items){let i,length,matches=0;for(i=0,length=items.length;i<length;i++){var item=items[i];if(item){if(item.IsFolder||"Audio"!==item.MediaType&&"Photo"!==item.MediaType)return!1;matches++}}return 0<matches}function allItemsAudio(items){let i,length,hasIndexNumber,matches=0;for(i=0,length=items.length;i<length;i++){var item=items[i];if(item){if(item.IsFolder||"Audio"!==item.MediaType)return!1;matches++,item.IndexNumber&&(hasIndexNumber=!0)}}return hasIndexNumber&&0<matches}function detectDefaultViewType(instance,defaults,items){let viewType=instance._defaultViewType;return viewType||(items=items||instance.itemsContainer.items||[]).length&&allItemsAudio(items)&&(viewType=instance._defaultViewType="list"),viewType}function hideOrShowAll(elems,hide){for(let i=0,length=elems.length;i<length;i++)hide?elems[i].classList.add("hide"):elems[i].classList.remove("hide")}function updateAlphaPickerState(instance,numItems){var alphaPicker,values=instance.getSortValues(),values=instance.enableAlphaPicker(values.sortBy,values.sortOrder);values?instance.initAlphaNumericShortcuts():instance.destroyAlphaNumericShortcuts(),instance.alphaPicker&&(alphaPicker=instance.alphaPickerElement)&&(values&&30<numItems?(alphaPicker.classList.remove("hide"),instance.refreshPrefixes()):(alphaPicker.classList.add("hide"),(values=instance.getInlinePaddingElement())&&values.classList.remove("padded-left-withalphapicker","padded-right-withalphapicker")))}function onSearchResultsFetched(result){return result.ItemTypes&&this.refreshSearchTabs(result.ItemTypes),result}function getSortMenuOption(sortMenuOptions,sortBy){for(let i=0,length=sortMenuOptions.length;i<length;i++){var option=sortMenuOptions[i];if(option.value===sortBy)return option}return null}function destroyHeader(instance){var elem=instance._headerElement;if(elem){try{elem.remove()}catch(err){}instance._headerElement=null}}function onHeaderContextMenu(e){e.preventDefault(),this.showColumnSelector(e)}function onHeaderClick(e){e.target.closest(".btnConfigureGridColumns")?this.showColumnSelector(e):(e=e.target.closest(".btnGridHeaderColumnSort"))&&this.setSortValue(e.getAttribute("data-sortvalue"))}function ensureHeader(instance){let elem=instance._headerElement;var itemsContainer;return elem||(instance._headerElement=elem=document.createElement("div"),elem.className="itemsContainer_header",(itemsContainer=instance.itemsContainer).parentNode.insertBefore(elem,itemsContainer),elem.addEventListener("contextmenu",onHeaderContextMenu.bind(instance)),elem.addEventListener("click",onHeaderClick.bind(instance))),elem}function onScroll(e){var headerElement,scroller=this.scroller;scroller&&(headerElement=this._headerElement)&&(headerElement.scrollLeft=scroller.scrollLeft)}function removeScrollListener(instance){var scroller;instance.boundOnScroll&&((scroller=instance.scroller)&&scroller.removeEventListener("scroll",instance.boundOnScroll),instance.boundOnScroll=null)}function getBaseDisplayPreset(instance){var types=instance.getItemTypes(),itemType=types.length?types[0]:null;return itemType=itemType||((types=instance.getQueryIncludeItemTypes()).length?types[0]: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=onDataFetched.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",onMultiSelectActive.bind(this)),this.itemsContainer.addEventListener("multiselectinactive",onMultiSelectInactive.bind(this))},ListController.prototype.initButtons=function(){var view=this.view;let i,length,hasAnyViewSettings;var btnViewSettings=view.querySelectorAll(".btnViewSettings"),supportsViewSettings=!1!==this.supportsViewSettings;for(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")),"x"===this.scrollDirection())&&btnPlay.classList.add("hide")},ListController.prototype.saveSortingOnServer=function(){return!1},ListController.prototype.setSortValueInternal=function(value,sortOrder){sortOrder=sortOrder||"Ascending";var settingsKey=this.getSettingsKey(),saveSortingOnServer=this.saveSortingOnServer();userSettings.setFilter(this.getSortBySettingsKey(),value,saveSortingOnServer),userSettings.setFilter(settingsKey+"-sortorder",sortOrder,saveSortingOnServer),this.updateSortText()},ListController.prototype.getDefaultSortingForField=function(fieldId){var field=this.getAvailableField(fieldId);if(!field)return null;var sortOptions=this.getSortMenuOptions();for(let 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();let sortOrder=currentValues.sortOrder;if(currentValues.sortBy===value)sortOrder="Ascending"===sortOrder?"Descending":"Ascending";else{var sortOptions=this.getSortMenuOptions();for(let 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.refreshPrefixes=function(){let instance=this;this.getPrefixes().then(function(prefixes){instance.alphaPicker.setPrefixes(prefixes)})},ListController.prototype.getPrefixes=function(){if("search"===this.params.type)return Promise.resolve([]);var queryInfo=this.getQueryInfo(!1),apiClient=getApiClient(this);let methodName=this.getPrefixesApiClientMethodName();var query=queryInfo.query,sortBy=query.SortBy||"";sortBy.startsWith("AlbumArtist")?(methodName="getArtistPrefixes",query.ArtistType="AlbumArtist"):sortBy.startsWith("Artist")&&(methodName="getArtistPrefixes",query.ArtistType="Artist"),query.SortBy=null,query.StartIndex=null,query.Limit=null,query.Fields=null,query.EnableImageTypes=null,query.ImageTypeLimit=null,query.NameStartsWithOrGreater=null,query.ArtistStartsWithOrGreater=null,query.AlbumArtistStartsWithOrGreater=null,query.IncludeItemTypes=this.getPrefixQueryIncludeItemTypes().join(",")||null;let promise;return(promise="User"===this.getDisplayPreset()?apiClient.getUserPrefixes(queryInfo.query):"getLiveTvChannelTagPrefixes"===methodName?apiClient[methodName](query):apiClient[methodName](apiClient.getCurrentUserId(),query)).then(function(result){return result.map(mapPrefix)})},ListController.prototype.getCommandOptions=function(item){return this.itemsContainer?.getCommandOptions(item)||{}},ListController.prototype.getDataGridOptions=function(items,availableFields){items=Object.assign(this.getBaseListRendererOptions(items),{columns:availableFields});return layoutManager.tv||(items.action="none"),items.sortValues=this.getSortValues(),items},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"),list.push("datagrid"),list.filter(this.supportsViewType.bind(this))},ListController.prototype.supportsViewType=function(viewType){return"datagrid"!==viewType||"TvChannel"!==(this.getDisplayPreset()||"")},ListController.prototype.getCardOptions=function(items,settings){var params=this.params;let shape,preferThumb,preferDisc,preferLogo,defaultShape;var itemType=this.getDisplayPreset()||"";if("banner"===settings.imageType)shape="banner";else if("disc"===settings.imageType)shape="square",preferDisc=!0;else if("logo"===settings.imageType)shape="backdrop",preferLogo=!0;else if("thumb"===settings.imageType)shape="backdrop",preferThumb=!0;else switch(itemType){case"Program":case"TvChannel":shape="auto",preferThumb="auto",defaultShape="true"===params.IsMovie||"OnNow"===params.type?"portrait":"backdrop";break;default:"nextup"===params.type?(shape="backdrop",preferThumb="thumb"===settings.imageType):shape="auto"}var options=Object.assign(this.getBaseListRendererOptions(items),{shape:shape,preferThumb:preferThumb,preferDisc:preferDisc,preferLogo:preferLogo,fields:settings.fields,parentId:this.isGlobalQuery()?null:this.params.parentId,cardSize:this.getViewSettings().cardSize,defaultShape:defaultShape});switch(modifyFieldsInListOptions(this,items,options,settings),adjustListOptionsForGroupingProgramsBySeries(this,items,options),itemType){case"TvChannel":options.preferThumb||(options.preferThumb="auto"),options.defaultBackground=!0,options.showCurrentProgramImage||(options.paddedImage=!0);break;case"Audio":options.sideFooter=!0;break;case"SeriesTimer":settings.fields.includes("Name")&&(options.fields.push("SeriesTimerChannel"),options.fields.push("SeriesTimerTime")),options.preferThumb||(options.preferThumb="auto")}return"MusicArtist"===itemType&&(options.round=!0),options.overlayText=0===options.fields.length||"None"===options.fields[0],options.context=this.getContext(),options.typeIndicator="folders"===options.context,"x"===this.scrollDirection()&&(options.centerText=!1,options.horizontalGrid=!0,options.fields=[]),options},ListController.prototype.getListViewOptions=function(items,settings){var options=this.getBaseListRendererOptions(items),itemType=(options.fields=settings.fields||[],this.getDisplayPreset()||"");switch(modifyFieldsInListOptions(this,items,options,settings),adjustListOptionsForGroupingProgramsBySeries(this,items,options),itemType){case"":case"SyncJob":case"Playlist":options.imageSize="small";break;case"Audio":case"Log":options.imageSize="smaller";break;case"BoxSet":case"MusicAlbum":case"Trailer":case"Movie":case"Program":case"TvChannel":case"Genre":case"MusicGenre":case"GameGenre":case"Tag":case"Studio":case"MusicArtist":case"Person":case"Video":case"Episode":case"Series":case"Photo":case"PhotoAlbum":case"Game":case"GameSystem":options.imageSize="medium";break;default:options.imageSize="smallest"}return options},ListController.prototype.getBaseListRendererOptions=function(items,settings){let multiSelect,draggable=!0;var itemType=this.getDisplayPreset()||"";switch(itemType){case"Program":multiSelect=!1,draggable=!1;break;case"TvChannel":multiSelect=!1;break;default:multiSelect=!0}let action,playAction;switch(itemType){case"Photo":case"Audio":action="playallfromhere",playAction="playallfromhere";break;default:var isAllAudioOrPhoto=allItemsAudioOrPhoto(items);action=isAllAudioOrPhoto?"playallfromhere":null,playAction=isAllAudioOrPhoto?"playallfromhere":null}return"search"===this.params.type&&(playAction=null,"playallfromhere"===action)&&(action="play"),{context:this.getContext(),draggable:draggable,multiSelect:multiSelect,playAction:playAction,action:action}},ListController.prototype.getListOptions=function(items){var settings=this.getViewSettings(items);return"datagrid"===settings.imageType?{renderer:dataGrid,options:this.getDataGridOptions(items,getEnabledFields(this.getAvailableFields(),settings.fields)),virtualScrollLayout:"vertical",commandOptions:this.getCommandOptions()}:"list"===settings.imageType?{renderer:listView,options:this.getListViewOptions(items,settings),virtualScrollLayout:"vertical",commandOptions:this.getCommandOptions()}:{renderer:cardBuilder,options:this.getCardOptions(items,settings),virtualScrollLayout:this.getCardVirtualScrollLayout(),commandOptions:this.getCommandOptions()}},ListController.prototype.getCardVirtualScrollLayout=function(){return"x"===this.scrollDirection()?"horizontal-grid":"vertical-grid"},ListController.prototype.getAvailableField=function(id){return this.getAvailableFields()[id]},ListController.prototype.getAvailableFields=function(){let fields=this._availableFields;if(!fields){var fieldList=this.getAvailableFieldsInternal();for(let i=0,length=fieldList.length;i<length;i++){var field=fieldList[i];fieldList[field.id]=field}fields=fieldList,this._availableFields=fields}return fields},ListController.prototype.getAvailableFieldsInternal=function(){var params=this.params;return"downloads"===params.parentId||"search"===params.type?[]:itemManager.getAvailableFields({itemType:this.getDisplayPreset(),apiClient:getApiClient(this),parentItem:this.getParentItem()})},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")});let instance=this;showActionSheet({items:availableFields,positionTo:originalEvent.target,positionX:"after",positionY:"bottom",positionClientY:originalEvent.clientY,positionClientX:originalEvent.clientX,offsetTop:2,hasItemSelectionState:!1,multiple:!0,emptyValueSetEqualsAll:!0,selectedValues:instance.getViewSettings([]).fields,onChange:function(fields){userSettings.set(instance.getSettingsKey()+"-fields",fields.join(","),!1),refreshAfterSettingsChange(instance)}})},ListController.prototype.getViewSettingDefaults=function(parentItem,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,defaults,listItems)),defaults.imageType||(availableFields=this.getDisplayPreset()||"",defaults.imageType="Audio"===availableFields?"list":"primary"),defaults},ListController.prototype.getViewSettings=function(items){items=items||this.itemsContainer.getItems();var basekey=this.getSettingsKey(),availableFieldIds=getAvailableFieldIdMap(this),availableFields=this.getAvailableFields(),item=this.getParentItem(),item=this.getViewSettingDefaults(item,items,availableFields),items=userSettings.get(basekey+"-imageType",!1)||item.imageType,cardSize=userSettings.get(basekey+"-cardSize",!1)||"default";let userConfiguredFields=userSettings.get(basekey+"-fields",!1);userConfiguredFields=(userConfiguredFields="None"!==userConfiguredFields||"datagrid"!==items&&"list"!==items?userConfiguredFields:null)&&filterFields(availableFieldIds,userConfiguredFields=userConfiguredFields.split(","));availableFieldIds=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.get(basekey+"-groupItemsIntoTags",!0),groupItemsIntoCollections:"true"===userSettings.get(basekey+"-groupItemsIntoCollections",!0),imageType:items,cardSize:cardSize,defaultFields:availableFieldIds,tableDefaultFields:item}},ListController.prototype.autoFocus=function(options){options=Object.assign({skipIfNotEnabled:!0},options);let elem=focusManager.autoFocus(this.itemsContainer,options);var view;return elem||(options.skipIfNotEnabled&&!focusManager.isAutoFocusEnabled()?null:(view=this.view)&&(elem=focusManager.autoFocus(view,options))?elem:(elem=mainTabsManager.focus())||null)},ListController.prototype.getParentItem=function(){return this.currentItem||this.options?.item},ListController.prototype.play=function(){let instance=this;return loadMultiSelect().then(function(MultiSelect){if(!MultiSelect?.canPlay()){var parentItem=instance.getParentItem(),params=instance.params;if(parentItem&&!instance.getQueryInfo(!0).hasFilters&&!params.type&&!connectionManager.getApiClient(parentItem).isMinServerVersion("4.8.0.30"))if("SortName"===instance.getSortValues().sortBy)return playbackManager.play({items:[parentItem],parentId:params.parentId,autoplay:!0});return instance.getItems({Limit:300,Recursive:!0,IsFolder:!1,ProjectToMedia:!0}).then(function(result){playbackManager.play({items:result.Items,autoplay:!0})})}MultiSelect.play()})},ListController.prototype.shuffle=function(){let instance=this;return loadMultiSelect().then(function(MultiSelect){if(MultiSelect?.canPlay())MultiSelect.shuffle();else{var MultiSelect=instance.getParentItem(),params=instance.params;if(!MultiSelect||instance.getQueryInfo(!0).hasFilters||connectionManager.getApiClient(MultiSelect).isMinServerVersion("4.8.0.30"))return instance.getItems({Limit:300,Recursive:!0,IsFolder:!1,ProjectToMedia:!0,SortBy:"Random"}).then(function(result){playbackManager.play({items:result.Items,autoplay:!0})});playbackManager.shuffle(MultiSelect,null,{parentId:params.parentId,autoplay:!0})}})},ListController.prototype.queue=function(){this.getItems({Limit:300,Recursive:!0,ProjectToMedia:!0,IsFolder:!1}).then(function(result){playbackManager.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.translate("ValueOneItem"):globalize.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(){switch(getBaseDisplayPreset(this)||""){case"Program":case"TvChannel":case"Timer":case"SeriesTimer":case"Recording":return"livetv";case"Series":case"Episode":return"tvshows"}return this.getParentItem()?.CollectionType},ListController.prototype.getSortBySettingsKey=function(sortMenuOptions){return this.getSettingsKey()+"-sortby"},ListController.prototype.getSortByValue=function(){var saveSortingOnServer=this.saveSortingOnServer();return userSettings.getFilter(this.getSortBySettingsKey(),saveSortingOnServer)},ListController.prototype.getVisibleFilters=function(){var list=[],fieldIds=getAvailableFieldIdMap(this),itemType=this.getDisplayPreset();if(fieldIds.Played)switch(list.push("IsUnplayed"),list.push("IsPlayed"),itemType){case"":case"Movie":case"Episode":case"Trailer":case"Audio":case"MusicVideo":case"Video":list.push("IsResumable")}switch(fieldIds.IsFavorite&&list.push("IsFavorite"),itemType){case"Movie":case"Episode":case"Trailer":case"MusicVideo":case"Video":list.push("AudioCodecs"),list.push("AudioLayouts"),list.push("VideoCodecs"),list.push("ExtendedVideoTypes"),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())switch(this.getParentItem()?.Type){case"CollectionFolder":case"Folder":var field=this.getDefaultSortingForField("Filename");if(field)return field}return itemManager.getDefaultSorting({itemType:this.getDisplayPreset(),apiClient:getApiClient(this)})},ListController.prototype.getFilterMenuOptions=function(){var params=this.params,query={Recursive:this.getQueryInfo(!1).Recursive};return params.IsAiring&&(query.IsAiring="true"===params.IsAiring),params.IsMovie&&(query.IsMovie="true"===params.IsMovie),params.IsKids&&(query.IsKids="true"===params.IsKids),params.IsNews&&(query.IsNews="true"===params.IsNews),params.IsSeries&&(query.IsSeries="true"===params.IsSeries),params.IsSports&&(query.IsSports="true"===params.IsSports),query},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(){switch(this.getDisplayPreset()){case"Episode":return"missingepisodes"===this.params.type?!1:!0;case"Movie":case"Series":case"Trailer":case"Audio":case"MusicAlbum":case"MusicArtist":case"MusicVideo":case"Video":case"Genre":case"MusicGenre":case"GameGenre":return!0}var item=this.getParentItem();if(item)switch(item.Type){case"PhotoAlbum":case"Log":return!1;default:return!0}return!1},ListController.prototype.enableAlphaPicker=function(sortBy,sortOrder){return!(!this.supportsAlphaPicker()||"x"===this.scrollDirection()||"search"===this.params.type||"SortName"!==(sortBy=sortBy||"")&&!sortBy.startsWith("AlbumArtist")&&!sortBy.startsWith("Artist"))},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.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({element:alphaPickerElement,itemsContainer:this.itemsContainer,prefixes:[],setValueOnFocus:!0}),this.alphaPicker.on("alphavaluechanged",onAlphaValueChanged.bind(this)))},ListController.prototype.getBaseQuery=function(item){var params=this.params,parentId=params.parentId,sortValues=this.getSortValues();let fields=this.getRequestedItemFields();var settings=this.getViewSettings(),visibleFields=("primary"!==settings.imageType&&"list"!==settings.imageType&&"datagrid"!==settings.imageType||(fields+=",PrimaryImageAspectRatio","OnNow"===params.type&&(fields+=",ProgramPrimaryImageAspectRatio")),settings.fields);!visibleFields.includes("ProductionYear")&&"list"!==settings.imageType||(fields+=",ProductionYear,Status,EndDate"),!visibleFields.includes("CommunityRating")&&"list"!==settings.imageType||(fields+=",CommunityRating"),!visibleFields.includes("OfficialRating")&&"list"!==settings.imageType||(fields+=",OfficialRating"),!visibleFields.includes("CriticRating")&&"list"!==settings.imageType||(fields+=",CriticRating"),visibleFields.includes("PremiereDate")&&(fields+=",PremiereDate"),visibleFields.includes("StartDate")&&(fields+=",StartDate"),visibleFields.includes("DateCreated")&&(fields+=",DateCreated"),visibleFields.includes("Resolution")&&(fields+=",Width,Height"),visibleFields.includes("Bitrate")&&(fields+=",Bitrate"),visibleFields.includes("Size")&&(fields+=",Size"),visibleFields.includes("Container")&&(fields+=",Container"),visibleFields.includes("Video3DFormat")&&(fields+=",Video3DFormat"),visibleFields.includes("Genres")&&(fields+=",Genres"),visibleFields.includes("Studios")&&(fields+=",Studios"),visibleFields.includes("Tags")&&(fields+=",Tags"),visibleFields.includes("Filename")&&(fields+=",Filename"),visibleFields.includes("Path")&&(fields+=",Path"),visibleFields.includes("Overview")&&(fields+=",Overview"),visibleFields.includes("OriginalTitle")&&(fields+=",OriginalTitle"),visibleFields.includes("SortName")&&(fields+=",SortName"),visibleFields.includes("PlayCount")&&(fields+=",UserDataPlayCount"),visibleFields.includes("DatePlayed")&&(fields+=",UserDataLastPlayedDate"),visibleFields.includes("Tagline")&&(fields+=",Taglines"),this.enableAlphaPicker(sortValues.sortBy,sortValues.sortOrder)&&layoutManager.tv&&(fields+=",Prefix");let imageTypes=this.getRequestedImageTypes();"banner"===settings.imageType?imageTypes+=",Banner":"disc"===settings.imageType?imageTypes+=",Disc":"logo"===settings.imageType&&(imageTypes+=",Logo");visibleFields={IncludeItemTypes:this.getQueryIncludeItemTypes().join(",")||null,Fields:fields,StartIndex:0};return this.addSortingToQuery(sortValues,visibleFields),params.mediaTypes&&(visibleFields.MediaTypes=params.mediaTypes),parentId&&!this.isGlobalQuery()&&(visibleFields.ParentId=parentId),"datagrid"!==settings.imageType&&(visibleFields.EnableImageTypes=imageTypes,visibleFields.ImageTypeLimit=1),"OnNow"===params.type&&(visibleFields.EnableUserData=!1),"Program"===params.type&&(visibleFields.HasAired=!1),"true"===params.IsFavorite&&(visibleFields.IsFavorite=!0),"true"===params.IsMovie?visibleFields.IsMovie=!0:"false"===params.IsMovie&&(visibleFields.IsMovie=!1),"true"===params.IsSeries?visibleFields.IsSeries=!0:"false"===params.IsSeries&&(visibleFields.IsSeries=!1),"true"===params.IsNewOrPremiere?visibleFields.IsNewOrPremiere=!0:"false"===params.IsNewOrPremiere&&(visibleFields.IsNewOrPremiere=!1),"true"===params.IsNews?visibleFields.IsNews=!0:"false"===params.IsNews&&(visibleFields.IsNews=!1),"true"===params.IsSports?visibleFields.IsSports=!0:"false"===params.IsSports&&(visibleFields.IsSports=!1),"true"===params.IsKids?visibleFields.IsKids=!0:"false"===params.IsKids&&(visibleFields.IsKids=!1),"OnNow"===params.type||"true"===params.IsAiring?visibleFields.IsAiring=!0:"false"===params.IsAiring&&(visibleFields.IsAiring=!1),params.genreId&&(visibleFields.GenreIds=params.genreId),item&&("Studio"===item.Type?(visibleFields.StudioIds=item.Id,visibleFields.Recursive=!0):"Tag"===item.Type?(visibleFields.TagIds=item.Id,visibleFields.Recursive=!0):"Genre"===item.Type||"GameGenre"===item.Type||"MusicGenre"===item.Type?(visibleFields.GenreIds=item.Id,visibleFields.Recursive=!0):"Person"===item.Type&&(visibleFields.PersonIds=item.Id,visibleFields.Recursive=!0)),params.artistId&&(visibleFields.ArtistIds=params.artistId),params.albumArtistId&&(visibleFields.AlbumArtistIds=params.albumArtistId),this.isRecursiveQuery()&&(visibleFields.Recursive=!0),params.mediaTypes&&(visibleFields.IsFolder=!1,visibleFields.IsVirtualItem=!1,visibleFields.ExcludeItemTypes="Program"),visibleFields},ListController.prototype.addSortingToQuery=function(sortValues,query){let sortOrder=sortValues.sortOrder;var sortMenuOption;sortValues.sortBy&&sortOrder&&(sortMenuOption=getSortMenuOption(this.getSortMenuOptions(),sortValues.sortBy))&&sortMenuOption["sortOrder"+sortOrder]&&(sortOrder=sortMenuOption["sortOrder"+sortOrder]),query.SortBy=sortValues.sortBy,query.SortOrder=sortOrder},ListController.prototype.isRecursiveQuery=function(){var params=this.params;return params.type||params.mediaTypes||this.isGlobalQuery()},ListController.prototype.getQueryInfo=function(enableFilters){var query=this.getBaseQuery(this.getParentItem()),queryFilters=[];let hasFilters;"favorites"===this.options?.mode&&queryFilters.push("IsFavorite"),!1!==enableFilters&&((enableFilters=this.getFilters()).SeriesStatus&&(query.SeriesStatus=enableFilters.SeriesStatus,hasFilters=!0),enableFilters.IsPlayed&&(queryFilters.push("IsPlayed"),hasFilters=!0),enableFilters.IsUnplayed&&(queryFilters.push("IsUnplayed"),hasFilters=!0),enableFilters.IsFavorite&&(queryFilters.push("IsFavorite"),hasFilters=!0),enableFilters.IsResumable&&(queryFilters.push("IsResumable"),hasFilters=!0),enableFilters.Containers&&(hasFilters=!0,query.Containers=enableFilters.Containers),enableFilters.AudioCodecs&&(hasFilters=!0,query.AudioCodecs=enableFilters.AudioCodecs),enableFilters.AudioLayouts&&(hasFilters=!0,query.AudioLayouts=enableFilters.AudioLayouts),enableFilters.AudioLanguages&&(hasFilters=!0,query.AudioLanguages=enableFilters.AudioLanguages),enableFilters.VideoCodecs&&(hasFilters=!0,query.VideoCodecs=enableFilters.VideoCodecs),enableFilters.ExtendedVideoTypes&&(hasFilters=!0,query.ExtendedVideoTypes=enableFilters.ExtendedVideoTypes),enableFilters.SubtitleCodecs&&(hasFilters=!0,query.SubtitleCodecs=enableFilters.SubtitleCodecs),enableFilters.SubtitleLanguages&&(hasFilters=!0,query.SubtitleLanguages=enableFilters.SubtitleLanguages),enableFilters.GenreIds&&(hasFilters=!0,query.GenreIds=enableFilters.GenreIds),enableFilters.OfficialRatings&&(hasFilters=!0,query.OfficialRatings=enableFilters.OfficialRatings),enableFilters.StudioIds&&(hasFilters=!0,query.StudioIds=enableFilters.StudioIds),enableFilters.TagIds&&(hasFilters=!0,query.TagIds=enableFilters.TagIds),enableFilters.Years&&(hasFilters=!0,query.Years=enableFilters.Years),enableFilters.Is3D&&(query.Is3D=!0,hasFilters=!0),enableFilters.Resolution&&(this.setResolutionIntoQuery(query,enableFilters.Resolution),hasFilters=!0),null!=enableFilters.HasSubtitles&&(query.HasSubtitles=enableFilters.HasSubtitles,hasFilters=!0),null!=enableFilters.HasLyrics&&(query.HasSubtitles=enableFilters.HasLyrics,hasFilters=!0),null!=enableFilters.ChannelMappingStatus&&(query.ChannelMappingStatus=enableFilters.ChannelMappingStatus,hasFilters=!0),null!=enableFilters.HasTrailer&&(query.HasTrailer=enableFilters.HasTrailer,hasFilters=!0),null!=enableFilters.HasSpecialFeature&&(query.HasSpecialFeature=enableFilters.HasSpecialFeature,hasFilters=!0),null!=enableFilters.HasThemeSong&&(query.HasThemeSong=enableFilters.HasThemeSong,hasFilters=!0),null!=enableFilters.HasThemeVideo&&(query.HasThemeVideo=enableFilters.HasThemeVideo,hasFilters=!0),null!=enableFilters.HasOverview&&(query.HasOverview=enableFilters.HasOverview,hasFilters=!0),null!=enableFilters.HasImdbId&&(query.HasImdbId=enableFilters.HasImdbId,hasFilters=!0),null!=enableFilters.HasTvdbId&&(query.HasTvdbId=enableFilters.HasTvdbId,hasFilters=!0),null!=enableFilters.HasTmdbId&&(query.HasTmdbId=enableFilters.HasTmdbId,hasFilters=!0),null!=enableFilters.IsLocked)&&(query.IsLocked=enableFilters.IsLocked,hasFilters=!0),query.Filters=queryFilters.length?queryFilters.join(","):null;var enableFilters=this.getViewSettings(),queryFilters=(enableFilters.groupItemsIntoCollections?query.GroupItemsIntoCollections=!0:enableFilters.groupItemsIntoTags&&(query.GroupItemsInto="Tags"),"search"===this.params.type&&(query.SearchTerm=this.lastSearchTerm=this.searchFields.getSearchTerm(),queryFilters=this.view.querySelector(".emby-searchable-tab-button.emby-tab-button-active"))&&(enableFilters=queryFilters.getAttribute("data-searchtype"),query.IncludeItemTypes="all"!==enableFilters?enableFilters:null),("Program"!==query.IncludeItemTypes||query.IsAiring||query.IsSports)&&(query.IncludeItemTypes||"search"!==this.params.type)||(query.GroupProgramsBySeries=!0),this.getSortValues());return(queryFilters.sortBy||"").startsWith("Random")&&(query.RandomSeed=this.getRandomSeed()),{query:query,hasFilters:hasFilters}},ListController.prototype.getItems=function(initialQuery,signal){var apiClient=getApiClient(this),queryInfo=this.getQueryInfo(!0);switch(this.setFilterStatus(queryInfo.hasFilters),initialQuery&&(queryInfo.query=Object.assign(queryInfo.query,initialQuery)),this.getDisplayPreset()){case"User":return delete queryInfo.query.Fields,apiClient.getUsersQueryResult(queryInfo.query);case"Device":return delete queryInfo.query.Fields,apiClient.getDevices(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)):"getMissingEpisodes"===initialQuery||"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(onSearchResultsFetched.bind(this))):"getItems"===initialQuery?apiClient[initialQuery](apiClient.getCurrentUserId(),queryInfo.query,signal):apiClient[initialQuery](apiClient.getCurrentUserId(),queryInfo.query)},ListController.prototype.onRefreshing=function(result){var listOptions=this.itemsContainer.currentListOptions,listOptions=(listOptions.renderer.renderHeader?listOptions.renderer.renderHeader(this,ensureHeader(this),listOptions.options):destroyHeader(this),this.getViewSettings()),items=(cardBuilder.setUserPreferredSize(this.itemsContainer,listOptions.cardSize),this.configureScrollingForView(),result.Items||result),result=result.TotalRecordCount||items.length,items=(this.fillDisplayTotalRecordCount(result),updateAlphaPickerState(this,result),this.getInlinePaddingElement()),listOptions=(items&&("datagrid"===(listOptions=listOptions.imageType)||"list"===listOptions?layoutManager.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(listOptions.querySelectorAll(".btnPlay"),!(result&&this.supportsPlay())),hideOrShowAll(listOptions.querySelectorAll(".btnShuffle"),!(result&&this.supportsShuffle())),hideOrShowAll(listOptions.querySelectorAll(".btnQueue"),!(result&&this.supportsQueue()))},ListController.prototype.afterItemsRefreshed=function(result){var items=result.Items||result;result.TotalRecordCount||items.length||this.setEmptyListState(),loading.hide()},ListController.prototype.onGetItems=function(){loading.show()},ListController.prototype.onGetItemsFailed=function(result){loading.hide()},ListController.prototype.configureScrollingForView=function(){var itemsContainer=this.itemsContainer,headerElement=this._headerElement,hasListHeader=null!=headerElement,currentListOptions=itemsContainer.currentListOptions,hasFixedPositionListHeader=null!=headerElement&¤tListOptions?.options.enableFixedPositionHeader&&supportsCssVariables&&supportsCalcMin,itemsViewSettingsContainer=this.itemsViewSettingsContainer,hasListHeader=(itemsViewSettingsContainer&&(hasListHeader&&hasFixedPositionListHeader?itemsViewSettingsContainer.classList.add("itemsViewSettingsContainer-fixed","viewContent-fixed"):itemsViewSettingsContainer.classList.remove("itemsViewSettingsContainer-fixed","viewContent-fixed")),headerElement&&(hasFixedPositionListHeader?headerElement.classList.add("itemsContainer_header_fixed","viewContent-fixed"):headerElement.classList.remove("itemsContainer_header_fixed","viewContent-fixed")),this.scroller);if(hasListHeader){hasListHeader.setHeaderBindingEnabled(!hasFixedPositionListHeader);let paddedTopPageElem=this.paddedTopPageElem;paddedTopPageElem=paddedTopPageElem||(this.paddedTopPageElem=itemsContainer.closest(".padded-top-page"));itemsViewSettingsContainer=hasListHeader.querySelector(".scrollSliderY"),headerElement=(hasFixedPositionListHeader?(hasListHeader.classList.add("margin-top-page","margin-top-page-listheader","dataGrid-mainscroller-scrollX"),itemsViewSettingsContainer&&itemsViewSettingsContainer.classList.add("dataGrid-mainscroller-scrollX-scrollSliderY"),paddedTopPageElem&&paddedTopPageElem!==hasListHeader&&paddedTopPageElem.classList.remove("padded-top-page"),this.boundOnScroll||(this.boundOnScroll=onScroll.bind(this)),hasListHeader.addEventListener("scroll",this.boundOnScroll)):(removeScrollListener(this),hasListHeader.classList.remove("margin-top-page","margin-top-page-listheader","dataGrid-mainscroller-scrollX"),itemsViewSettingsContainer&&itemsViewSettingsContainer.classList.remove("dataGrid-mainscroller-scrollX-scrollSliderY"),paddedTopPageElem&&paddedTopPageElem!==hasListHeader&&paddedTopPageElem.classList.add("padded-top-page")),itemsContainer.closest(".scrollSlider"));headerElement&&(hasFixedPositionListHeader=currentListOptions?.options.scrollXWidth,headerElement.style.width=hasFixedPositionListHeader?hasFixedPositionListHeader+"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.translate("TwoSearchCharsRequired"))}return Promise.resolve(globalize.translate("NoItemsMatchingFound"))}return this.getQueryInfo(!0).hasFilters?(searchTerm=(searchTerm="<div>"+globalize.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"></i>')+"<span>"+globalize.translate("HeaderClearFilters")+"</span></button>",Promise.resolve(searchTerm)):Promise.resolve(globalize.translate("NoItemsFound"))},ListController.prototype.setEmptyListState=function(){this.getEmptyListMessage().then(setEmptyListMessage.bind(this))},ListController.prototype.initAlphaNumericShortcuts=function(){if(this.enableAlphaNumericShortcuts&&!this.alphaNumericShortcuts){let instance=this;Emby.importModule("./modules/alphanumericshortcuts/alphanumericshortcuts.js").then(function(AlphaNumericShortcuts){instance.alphaNumericShortcuts=new AlphaNumericShortcuts({itemsContainer:instance.itemsContainer}),instance.alphaNumericShortcuts.onAlphaNumericValueEntered=onAlphaNumericValueEntered.bind(instance)})}},ListController.prototype.supportsSorting=function(){return 0<this.getSortMenuOptions().length},ListController.prototype.getSortValues=function(){var saveSortingOnServer,basekey=this.getSettingsKey();let sortBy=this.getSortByValue(),sortOrder;return sortBy?(saveSortingOnServer=this.saveSortingOnServer(),sortOrder="Descending"===userSettings.getFilter(basekey+"-sortorder",saveSortingOnServer)?"Descending":"Ascending"):(basekey=this.getDefaultSorting())&&(sortBy=basekey.sortBy,sortOrder=basekey.sortOrder),{sortBy:sortBy,sortOrder:sortOrder}},ListController.prototype.updateSortText=function(){var btnSortText=this.btnSortText;if(btnSortText){var options=this.getSortMenuOptions(),values=this.getSortValues(),sortBy=values.sortBy;for(let i=0,length=options.length;i<length;i++)if(sortBy===options[i].value){btnSortText.innerHTML=options[i].name;break}var btnSortIcon=this.btnSortIcon;btnSortIcon&&(btnSortIcon.innerHTML="Descending"===values.sortOrder?"":"")}},ListController.prototype.showFilterMenu=function(e){let instance=this;var params=instance.params;let query={};params.genreId&&(query.GenreIds=params.genreId);var item=instance.getParentItem();item&&("Studio"===item.Type?query.StudioIds=item.Id:"Tag"===item.Type?query.TagIds=item.Id:"Genre"===item.Type||"GameGenre"===item.Type||"MusicGenre"===item.Type?query.GenreIds=item.Id:"Person"===item.Type&&(query.PersonIds=item.Id)),params.artistId&&(query.ArtistIds=params.artistId),params.albumArtistId&&(query.AlbumArtistIds=params.albumArtistId),Emby.importModule("./modules/filtermenu/filtermenu.js").then(function(FilterMenu){(new FilterMenu).show(Object.assign(query,{positionTo:e.target.closest("button"),positionY:"bottom",settings:instance.getFilters(),visibleSettings:instance.getVisibleFilters(),onChange:function(changes){var settingsKey=instance.getSettingsKey(),keys=Object.keys(changes);for(let i=0,length=keys.length;i<length;i++){var key=keys[i];userSettings.setFilter(settingsKey+"-filter-"+key,changes[key])}keys.length&&refreshAfterSettingsChange(instance)},parentId:instance.isGlobalQuery()?null:instance.params.parentId,itemTypes:instance.getItemTypes?instance.getItemTypes():[],serverId:getApiClient(instance).serverId(),filterMenuOptions:instance.getFilterMenuOptions()}))})},ListController.prototype.setFilterStatus=function(hasFilters){var filterButtons=this.filterButtons;if(filterButtons.length)for(let 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.getFilter(basekey+"-filter-IsPlayed"),IsUnplayed:"true"===userSettings.getFilter(basekey+"-filter-IsUnplayed"),IsFavorite:"true"===userSettings.getFilter(basekey+"-filter-IsFavorite"),IsResumable:"true"===userSettings.getFilter(basekey+"-filter-IsResumable"),Is3D:"true"===userSettings.getFilter(basekey+"-filter-Is3D"),Resolution:userSettings.getFilter(basekey+"-filter-Resolution"),VideoTypes:userSettings.getFilter(basekey+"-filter-VideoTypes"),SeriesStatus:userSettings.getFilter(basekey+"-filter-SeriesStatus"),HasSubtitles:userSettings.getFilter(basekey+"-filter-HasSubtitles"),HasLyrics:userSettings.getFilter(basekey+"-filter-HasLyrics"),ChannelMappingStatus:userSettings.getFilter(basekey+"-filter-ChannelMappingStatus"),HasTrailer:userSettings.getFilter(basekey+"-filter-HasTrailer"),HasSpecialFeature:userSettings.getFilter(basekey+"-filter-HasSpecialFeature"),HasThemeSong:userSettings.getFilter(basekey+"-filter-HasThemeSong"),HasThemeVideo:userSettings.getFilter(basekey+"-filter-HasThemeVideo"),HasOverview:userSettings.getFilter(basekey+"-filter-HasOverview"),HasImdbId:userSettings.getFilter(basekey+"-filter-HasImdbId"),HasTvdbId:userSettings.getFilter(basekey+"-filter-HasTvdbId"),HasTmdbId:userSettings.getFilter(basekey+"-filter-HasTmdbId"),IsLocked:userSettings.getFilter(basekey+"-filter-IsLocked"),GenreIds:userSettings.getFilter(basekey+"-filter-GenreIds"),StudioIds:userSettings.getFilter(basekey+"-filter-StudioIds"),TagIds:userSettings.getFilter(basekey+"-filter-TagIds"),OfficialRatings:userSettings.getFilter(basekey+"-filter-OfficialRatings"),Containers:userSettings.getFilter(basekey+"-filter-Containers"),AudioCodecs:userSettings.getFilter(basekey+"-filter-AudioCodecs"),AudioLayouts:userSettings.getFilter(basekey+"-filter-AudioLayouts"),AudioLanguages:userSettings.getFilter(basekey+"-filter-AudioLanguages"),SubtitleLanguages:userSettings.getFilter(basekey+"-filter-SubtitleLanguages"),VideoCodecs:userSettings.getFilter(basekey+"-filter-VideoCodecs"),ExtendedVideoTypes:userSettings.getFilter(basekey+"-filter-ExtendedVideoTypes"),SubtitleCodecs:userSettings.getFilter(basekey+"-filter-SubtitleCodecs"),Years:userSettings.getFilter(basekey+"-filter-Years")}},ListController.prototype.getSortMenuOptions=function(){return itemManager.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 itemType=getBaseDisplayPreset(this);if(!itemType)switch(this.getContext()){case"boxsets":return"BoxSet";case"playlists":return"Playlist"}return itemType},ListController.prototype.clearFilters=function(){var basekey=this.getSettingsKey();userSettings.remove(basekey+"-filter-IsPlayed"),userSettings.remove(basekey+"-filter-IsUnplayed"),userSettings.remove(basekey+"-filter-IsFavorite"),userSettings.remove(basekey+"-filter-IsResumable"),userSettings.remove(basekey+"-filter-Is4K"),userSettings.remove(basekey+"-filter-IsHD"),userSettings.remove(basekey+"-filter-IsSD"),userSettings.remove(basekey+"-filter-Is3D"),userSettings.remove(basekey+"-filter-Resolution"),userSettings.remove(basekey+"-filter-SeriesStatus"),userSettings.remove(basekey+"-filter-HasSubtitles"),userSettings.remove(basekey+"-filter-HasLyrics"),userSettings.remove(basekey+"-filter-ChannelMappingStatus"),userSettings.remove(basekey+"-filter-HasTrailer"),userSettings.remove(basekey+"-filter-HasSpecialFeature"),userSettings.remove(basekey+"-filter-HasThemeSong"),userSettings.remove(basekey+"-filter-HasThemeVideo"),userSettings.remove(basekey+"-filter-HasOverview"),userSettings.remove(basekey+"-filter-HasImdbId"),userSettings.remove(basekey+"-filter-HasTvdbId"),userSettings.remove(basekey+"-filter-HasTmdbId"),userSettings.remove(basekey+"-filter-IsLocked"),userSettings.remove(basekey+"-filter-GenreIds"),userSettings.remove(basekey+"-filter-StudioIds"),userSettings.remove(basekey+"-filter-TagIds"),userSettings.remove(basekey+"-filter-OfficialRatings"),userSettings.remove(basekey+"-filter-Containers"),userSettings.remove(basekey+"-filter-AudioCodecs"),userSettings.remove(basekey+"-filter-AudioLayouts"),userSettings.remove(basekey+"-filter-AudioLanguages"),userSettings.remove(basekey+"-filter-SubtitleLanguages"),userSettings.remove(basekey+"-filter-VideoCodecs"),userSettings.remove(basekey+"-filter-ExtendedVideoTypes"),userSettings.remove(basekey+"-filter-SubtitleCodecs"),userSettings.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};export default ListController; |