EmbyCrackedClient/web/modules/common/itemmanager/baseitemcontroller.js
2025-06-25 11:46:04 +08:00

1 line
No EOL
77 KiB
JavaScript

import globalize from"./../globalize.js";import connectionManager from"./../../emby-apiclient/connectionmanager.js";import loading from"./../../loading/loading.js";import dataFormatter from"./../dataformatter.js";import{appHost}from"./../servicelocator.js";import playbackManager from"./../playback/playbackmanager.js";import layoutManager from"./../../layoutmanager.js";import ApiClient from"./../../emby-apiclient/apiclient.js";import datetime from"./../datetime.js";import userSettings from"./../usersettings/usersettings.js";import textEncoding from"./../textencoding.js";import appRouter from"./../../approuter.js";let DownloadIcon="&#xe5db;";function showToast(options){return Emby.importModule("./modules/toast/toast.js").then(function(toast){return toast(options)})}function showDialog(options){return Emby.importModule("./modules/dialog/dialog.js").then(function(dialog){return dialog(options)})}function showConfirm(options){return Emby.importModule("./modules/common/dialogs/confirm.js").then(function(confirm){return confirm(options)})}function showAlert(options){return Emby.importModule("./modules/common/dialogs/alert.js").then(function(alert){return alert(options)})}function showAlertAndReject(options,response){function onDone(){return Promise.reject(response)}return showAlert(options).then(onDone,onDone)}function rejectNoSupportedCommands(){return Promise.reject("nocommands")}function rejectNoItems(){return Promise.reject("noitems")}function BaseItemController(){}function canEditInternal(item,user,checkAdmin){if(!item.Id)return!1;if(!1!==checkAdmin&&!user?.Policy.IsAdministrator)return!1;switch(item.Type){case"UserRootFolder":case"CollectionFolder":case"UserView":case"PlaylistsFolder":case"ApiKey":case"Program":case"Genre":case"MusicGenre":case"GameGenre":case"Studio":case"Tag":case"RemoteSubtitle":case"GenericListItem":case"Log":case"Timer":case"SeriesTimer":case"Plugin":case"Server":case"ItemImage":case"Recording":case"ActivityLogEntry":case"ActiveSession":case"Chapter":return!1;case"ChannelManagementInfo":return item.ManagementId&&item.ManagementId!==item.Id;default:return!ApiClient.isLocalItem(item)}}function mapToPlaylistItemId(item){return item.PlaylistItemId}function mediaSupportsSubtitleEditing(item){var itemType=item.Type;return"Video"===item.MediaType&&"TvChannel"!==itemType&&"Trailer"!==itemType&&"Program"!==itemType&&"Virtual"!==item.LocationType&&("Recording"!==itemType||"Completed"===item.Status)||"Audio"===item.MediaType}function editVirtualFolder(item,options){var options=options.positionTo,view=options.closest(".page");let refreshLibrary=!!options&&"true"===view.getAttribute("data-refreshlibrary");return Emby.importModule("./components/medialibraryeditor/medialibraryeditor.js").then(function(Medialibraryeditor){return(new Medialibraryeditor).show({refresh:refreshLibrary,library:item})})}function showMetadataEditor(items){return Emby.importModule("./modules/metadataeditor/metadataeditor.js").then(function(MetadataEditor){var MetadataEditor=new MetadataEditor,item=items[0],apiClient=connectionManager.getApiClient(item);return MetadataEditor.show(item.Id,apiClient.serverId())})}BaseItemController.prototype.getTypeNames=function(){return[]},BaseItemController.prototype.getDisplayName=function(item,options){options=options||{};var itemType=item.Type;let number,nameSeparator,name;switch(itemType){case"Timer":item=item.ProgramInfo||item,name=item.IsSeries||item.EpisodeTitle?item.EpisodeTitle||"":item.Name||item.DisplayTitle||"";break;case"Program":case"Recording":name=item.IsSeries||item.EpisodeTitle?item.EpisodeTitle||"":item.Name||item.DisplayTitle||"";break;case"ApiKey":name=item.AppName;break;case"TvChannel":case"ChannelManagementInfo":return name=item.Name||"",item.ChannelNumber&&!1!==options.includeIndexNumber?options.channelNumberFirst?item.ChannelNumber+" "+name:(name.endsWith(item.ChannelNumber)||(name+=" "+item.ChannelNumber),name):name;default:name=item.Name||item.DisplayTitle||""}return!1!==options.enableSpecialEpisodePrefix&&0===item.ParentIndexNumber&&"Episode"===itemType?name=globalize.translate("ValueSpecialEpisodeName",name):null==item.IndexNumber||!1===options.includeIndexNumber||"Episode"!==itemType&&"Program"!==itemType&&"Recording"!==itemType?null!=item.IndexNumber&&!1!==options.includeIndexNumber&&item.SupportsResume&&"Audio"===itemType&&(number=item.IndexNumber,nameSeparator=" - ",number)&&(name=name?number+nameSeparator+name:number):(number=item.IndexNumber,!(nameSeparator=" - ")!==options.includeParentInfo&&null!=item.ParentIndexNumber?number="S"+item.ParentIndexNumber+":E"+number:nameSeparator=". ",null!=item.IndexNumberEnd&&(number+="-"+item.IndexNumberEnd),(number="Program"!==item.Type&&"Recording"!==item.Type||item.EpisodeTitle?number:null)&&(name=name?number+nameSeparator+name:number)),name},BaseItemController.prototype.canAddToCollection=function(item,user){var itemType=item.Type;return("Recording"!==itemType||"Completed"===item.Status)&&!(item.CollectionType||["ActiveSession","Genre","MusicGenre","Studio","GameGenre","Log","Tag","UserView","CollectionFolder","Audio","Program","Timer","SeriesTimer","BoxSet","ApiKey","TvChannel","RemoteSubtitle","Chapter"].includes(itemType)||ApiClient.isLocalItem(item)||"Device"===itemType||"User"===itemType||"Plugin"===itemType||"Server"===itemType||"ActivityLogEntry"===itemType||"ItemImage"===itemType||"LiveTVTunerDevice"===itemType||"LiveTVGuideSource"===itemType||"ChannelManagementInfo"===itemType||!item.Id)&&(!user||canEditInternal(item,user))},BaseItemController.prototype.removeFromPlayQueue=function(items,options){return playbackManager.removeFromPlaylist(items.map(mapToPlaylistItemId))},BaseItemController.prototype.canRemoveFromCollection=function(item,user){return item.CollectionId&&this.canAddToCollection(item,user)},BaseItemController.prototype.canAddToPlaylist=function(item){var mediaType,itemType=item.Type;return"Program"!==itemType&&"TvChannel"!==itemType&&"Timer"!==itemType&&"SeriesTimer"!==itemType&&"VirtualFolder"!==itemType&&"ActiveSession"!==itemType&&"Chapter"!==itemType&&("Recording"!==itemType||"Completed"===item.Status)&&"Photo"!==(mediaType=item.MediaType)&&"Game"!==mediaType&&"livetv"!==(mediaType=item.CollectionType)&&"playlists"!==mediaType&&!ApiClient.isLocalItem(item)&&(!(!item.IsFolder&&"Genre"!==itemType&&"MusicGenre"!==itemType&&"MusicAlbum"!==itemType&&"MusicArtist"!==itemType&&"Studio"!==itemType&&"Tag"!==itemType)||"Device"!==itemType&&"User"!==itemType&&"Plugin"!==itemType&&"Log"!==itemType&&"Server"!==itemType&&"ActivityLogEntry"!==itemType&&"ApiKey"!==itemType&&!!item.Id&&item.MediaType)},BaseItemController.prototype.canRemoveFromPlayQueue=function(item){return item.PlaylistItemId&&!item.PlaylistId},BaseItemController.prototype.canRemoveFromPlaylist=function(item){return item.PlaylistItemId&&item.PlaylistId},BaseItemController.prototype.canManageMultiVersionGrouping=function(item,user){return!item.IsFolder&&"Video"===item.MediaType&&!ApiClient.isLocalItem(item)&&!!user.Policy.IsAdministrator&&"TvChannel"!==item.Type},BaseItemController.prototype.canRate=function(item){if(!item.UserData)return!1;switch(item.Type){case"Program":case"Timer":case"SeriesTimer":case"CollectionFolder":case"UserView":case"Channel":case"Season":case"Studio":case"Folder":return!1;default:return!0}},BaseItemController.prototype.canMarkPlayed=function(item){if(item.SupportsResume)return!0;switch(item.Type){case"AudioBook":case"Series":case"Season":case"Recording":return!0;case"TvChannel":case"Program":case"Chapter":return!1;case"Folder":return!0;case"CollectionFolder":return"boxsets"===item.CollectionType||"playlists"===item.CollectionType||"music"===item.CollectionType?!1:!0}switch(item.MediaType){case"Game":case"Book":case"Video":return!0}return!1},BaseItemController.prototype.canConvert=function(item,user){if(!item.Id)return!1;switch(item.MediaType){case"Book":case"Photo":case"Game":case"Audio":return!1}switch(item.CollectionType){case"livetv":case"playlists":case"boxsets":return!1}switch(item.Type){case"Book":case"Photo":case"Game":case"Audio":case"TvChannel":case"Channel":case"Person":case"Year":case"Program":case"Timer":case"SeriesTimer":case"GameGenre":case"Device":case"User":case"Log":case"Plugin":case"VirtualFolder":case"ItemImage":case"Server":case"ActivityLogEntry":case"ApiKey":case"LiveTVTunerDevice":case"LiveTVGuideSource":case"ChannelManagementInfo":case"ActiveSession":case"RemoteSubtitle":case"Chapter":return!1}return!("Virtual"===item.LocationType&&!item.IsFolder||user&&!user.Policy.EnableMediaConversion||ApiClient.isLocalItem(item))},BaseItemController.prototype.getEditCommand=function(items){let text;switch(items[0].Type){case"":case"Folder":case"Movie":case"Series":case"Season":case"Episode":case"BoxSet":case"Trailer":case"Audio":case"MusicAlbum":case"MusicArtist":case"MusicGenre":case"MusicVideo":case"Playlist":case"Video":case"Game":case"Book":case"Genre":case"GameGenre":case"Person":case"GameSystem":case"Photo":case"PhotoAlbum":case"TvChannel":case"Studio":case"Channel":case"UserView":case"Tag":case"Device":text=globalize.translate("HeaderEditMetadata");break;default:text=globalize.translate("Edit")}return{name:text,id:"edit",icon:"edit"}},BaseItemController.prototype.editItems=function(items,options){if(!items.length)return rejectNoItems();switch(items[0].Type){case"Device":case"User":case"ActiveSession":case"SeriesTimer":case"Timer":case"LiveTVTunerDevice":case"LiveTVGuideSource":return rejectNoSupportedCommands();case"VirtualFolder":return editVirtualFolder(items[0],options);default:return showMetadataEditor(items)}},BaseItemController.prototype.canEdit=function(items,user){return 1===items.length&&canEditInternal(items[0],user)},BaseItemController.prototype.canSync=function(item,user){return!(user&&!user.Policy.EnableContentDownloading||ApiClient.isLocalItem(item))&&item.SupportsSync},BaseItemController.prototype.canDownload=function(item){switch(item.Type){case"Log":case"RemoteSubtitle":return item.CanDownload;case"MediaStream":return item.IsExternal&&"Subtitle"===item.StreamType&&appHost.supports("filedownload");default:return item.CanDownload&&appHost.supports("filedownload")}},BaseItemController.prototype.canDownloadSubtitles=function(item,user){switch(item.Type){case"Movie":case"Episode":return this.canEditSubtitles(item,user);default:return!1}},BaseItemController.prototype.canIdentify=function(item,user){var itemType=item.Type;return!("Movie"!==itemType&&"Trailer"!==itemType&&"Series"!==itemType&&"Game"!==itemType&&"BoxSet"!==itemType&&"Person"!==itemType&&"Book"!==itemType&&"MusicAlbum"!==itemType&&"MusicArtist"!==itemType&&"MusicVideo"!==itemType||!user.Policy.IsAdministrator||ApiClient.isLocalItem(item))},BaseItemController.prototype.canShare=function(item,user){switch(item.Type){case"TvChannel":case"Channel":case"Person":case"Year":case"Program":case"Timer":case"SeriesTimer":case"GameGenre":case"MusicGenre":case"Genre":case"Device":case"User":case"Plugin":case"Server":case"ActivityLogEntry":case"ApiKey":case"Tag":case"VirtualFolder":case"ItemImage":case"LiveTVTunerDevice":case"LiveTVGuideSource":case"ChannelManagementInfo":case"ActiveSession":case"CollectionFolder":case"UserView":case"RemoteSubtitle":case"Chapter":case"Recording":return!1;case"Log":return item.CanShare;default:return user?!!item.Id&&!ApiClient.isLocalItem(item)&&user.Policy.EnablePublicSharing&&"Photo"===item.Type&&appHost.supports("sharing"):!1}},BaseItemController.prototype.canEditImages=function(item,user){var itemType=item.Type;if("Photo"===item.MediaType)return!1;if(("CollectionFolder"===itemType||"UserView"===itemType||"PlaylistsFolder"===itemType||"Genre"===itemType||"MusicGenre"===itemType||"GameGenre"===itemType||"Studio"===itemType||"Tag"===itemType)&&!ApiClient.isLocalItem(item))return!!user.Policy.IsAdministrator;switch(itemType){case"Device":case"User":case"Plugin":case"LiveTVTunerDevice":case"LiveTVGuideSource":case"Recording":if("Completed"!==item.Status)return!1}return canEditInternal(item,user)},BaseItemController.prototype.canEditSubtitles=function(item,user){if(user&&mediaSupportsSubtitleEditing(item)){if(user.Policy.EnableSubtitleDownloading||user.Policy.EnableSubtitleManagement)return canEditInternal(item,user,!1);if(null==user.Policy.EnableSubtitleDownloading&&null==user.Policy.EnableSubtitleManagement)return canEditInternal(item,user)}return!1},BaseItemController.prototype.canReorder=function(item,user){switch(item.Type){case"ChannelManagementInfo":return!0;case"ItemImage":return"Backdrop"===item.ImageType;default:return!1}},BaseItemController.prototype.canMoveUp=function(item,user){if(!this.canReorder(item,user))return!1;switch(item.Type){case"ChannelManagementInfo":return item.SortIndexNumber;case"ItemImage":return item.ImageIndex;default:return!1}},BaseItemController.prototype.canMoveDown=function(item,user){if(!this.canReorder(item,user))return!1;switch(item.Type){case"ChannelManagementInfo":return!0;case"ItemImage":return item.ImageIndex<item.TotalImages-1;default:return!1}},BaseItemController.prototype.moveInOrder=function(items,options){return Promise.resolve()},BaseItemController.prototype.canScanLibraryFiles=function(item,user){switch(item.Type){case"Playlist":case"Genre":case"MusicGenre":case"GameGenre":case"Channel":case"MusicArtist":return!1;default:return this.canRefreshMetadata(item,user)&&item.IsFolder}},BaseItemController.prototype.canRefreshMetadata=function(item,user){if(!item.Id)return!1;var itemType=item.Type;switch(itemType){case"Device":case"User":case"Plugin":case"Server":case"ActivityLogEntry":case"ApiKey":case"ItemImage":case"Log":case"LiveTVTunerDevice":case"LiveTVGuideSource":case"ChannelManagementInfo":case"ActiveSession":case"RemoteSubtitle":case"Chapter":return!1}switch(item.CollectionType){case"livetv":case"boxsets":return!1}return!(!user||!user.Policy.IsAdministrator||"Timer"===itemType||"SeriesTimer"===itemType||"Program"===itemType||"TvChannel"===itemType||"Recording"===itemType&&"Completed"!==item.Status||ApiClient.isLocalItem(item))},BaseItemController.prototype.canDelete=function(item,user){if(item.CanDelete)return!0;var itemType=item.Type;switch(itemType){case"ItemImage":return null!=item.ImageTag;case"Server":return!0;case"Timer":case"SeriesTimer":case"Recording":return user?.Policy.EnableLiveTvManagement}if(user){if(("LiveTVTunerDevice"===itemType||"LiveTVGuideSource"===itemType)&&user.Policy.IsAdministrator)return!0;if("Plugin"===item.Type&&user.Policy.IsAdministrator)return!0;if(user.Policy.IsAdministrator&&"User"===item.Type&&item.Id!==connectionManager.getApiClient(item).getCurrentUserId())return!0;if(user.Policy.IsAdministrator&&"Device"===item.Type&&item.Id!==connectionManager.deviceId())return!0;if("MediaStream"===item.Type&&(user.Policy.EnableSubtitleManagement||null==user.Policy.EnableSubtitleManagement&&user.Policy.IsAdministrator)&&item.IsExternal)return!0;if("VirtualFolder"===itemType&&user.Policy.IsAdministrator&&"boxsets"!==item.CollectionType)return!0}return!1},BaseItemController.prototype.isSingleItemFetchRequired=function(type){switch(type){case"Plugin":case"Device":case"Server":case"Log":case"ApiKey":case"ActivityLogEntry":case"MediaStream":case"RemoteSubtitle":case"ItemImage":case"LiveTVTunerDevice":case"LiveTVGuideSource":case"ChannelManagementInfo":case"ActiveSession":case"ScheduledTask":case"Chapter":return!1;default:return!0}};let defaultIconsByItemType={MusicAlbum:"&#xe019;",MusicArtist:"&#xe7FD;",Person:"&#xe7FD;",Channel:"&#xe2C7;",Device:"&#xe333;",ActiveSession:"&#xe333;",User:"&#xe7fd;",Server:"&#xe328;",SelectServer:"&#xe328;",ManualLogin:"&#xe898;",Downloads:"&#xe2c7;",CollectionFolder:"&#xe2c7;",UserView:"&#xe2c7;",ForgotPassword:"&#xe887;",AddServer:"&#xe147;",AddVirtualFolder:"&#xe147;",ActivityLogEntry:"&#xe878;",Log:"&#xe873;",ApiKey:"&#xe0da;",Tag:"&#xe892;",ItemImage:"&#xe3f4;",PluginCatalogItem:"&#xe87b;",TvChannel:"&#xe639;",ChannelManagementInfo:"&#xe639;",RemoteSubtitle:"&#xe01c;",LiveTVTunerDevice:"&#xe639;",LiveTVGuideSource:"&#xe1b2;",Audio:"&#xe019;",Photo:"&#xe412;",Book:"&#xea19;",Game:"&#xea28;",Playlist:"&#xe0ee;",MusicVideo:"&#xe063;",Studio:"&#xe06b;"},defaultIconsByCollectionType={movies:"&#xe02c;",music:"&#xe310;",audiobooks:"&#xe310;",homevideos:"&#xe412;",photos:"&#xe412;",livetv:"&#xe1b2;",tvshows:"&#xe333;",games:defaultIconsByItemType.Game,trailers:"&#xe02c;",musicvideos:"&#xe063;",books:"&#xea19;",channels:"&#xe2C7;",playlists:defaultIconsByItemType.Playlist,boxsets:"&#xf1c8;"},defaultIconsByStreamType={Audio:"&#xe1b8;",Video:"&#xe04b;",Subtitle:defaultIconsByItemType.RemoteSubtitle,EmbeddedImage:"&#xe412;",Lyrics:"&#xec0b;"},defaultIconsByMediaType={Video:"&#xe02c;",Audio:defaultIconsByItemType.Audio,Photo:defaultIconsByItemType.Photo,Book:defaultIconsByItemType.Book,Game:defaultIconsByItemType.Game},DeleteMessages=(BaseItemController.prototype.getDefaultIcon=function(item){let icon;var collectionType=item.CollectionType;if(collectionType&&(icon=defaultIconsByCollectionType[collectionType]))return icon;var collectionType=item.Type;if(collectionType&&(icon=defaultIconsByItemType[collectionType]))return icon;let streamType=item.StreamType;return streamType&&("Lyrics"===item.SubtitleType&&(streamType="Lyrics"),icon=defaultIconsByStreamType[streamType])||(collectionType=item.MediaType)&&(icon=defaultIconsByMediaType[collectionType])?icon:"&#xe2C7;"},{Item:{single:{text:globalize.translate("ConfirmDeleteItem")+"\n\n"+globalize.translate("AreYouSureToContinue"),title:globalize.translate("HeaderDeleteItem")},plural:{text:globalize.translate("ConfirmDeleteItems")+"\n\n"+globalize.translate("AreYouSureToContinue"),title:globalize.translate("HeaderDeleteItems")}},Device:{single:{text:globalize.translate("DeleteDeviceConfirmation"),title:globalize.translate("HeaderDeleteDevice")},plural:{text:globalize.translate("DeleteDeviceConfirmation"),title:globalize.translate("HeaderDeleteDevice")}},Plugin:{single:{text:globalize.translate("UninstallPluginConfirmation"),title:globalize.translate("HeaderUninstallPlugin"),confirmText:globalize.translate("Uninstall")},plural:{text:globalize.translate("UninstallPluginConfirmation"),title:globalize.translate("HeaderUninstallPlugin"),confirmText:globalize.translate("Uninstall")}},Server:{single:{text:"DeleteServerConfirmation",title:globalize.translate("HeaderDeleteServer")},plural:{text:"DeleteServerConfirmation",title:globalize.translate("HeaderDeleteServer")}},User:{single:{text:"DeleteUserConfirmation",title:globalize.translate("HeaderDeleteUser")},plural:{text:"DeleteUserConfirmation",title:globalize.translate("HeaderDeleteUser")}},LiveTVGuideSource:{single:{text:"MessageConfirmDeleteGuideProvider",title:globalize.translate("HeaderDeleteProvider")},plural:{text:"MessageConfirmDeleteGuideProvider",title:globalize.translate("HeaderDeleteProvider")}},LiveTVTunerDevice:{single:{text:"MessageConfirmDeleteTunerDevice",title:globalize.translate("HeaderDeleteDevice")},plural:{text:"MessageConfirmDeleteTunerDevice",title:globalize.translate("HeaderDeleteDevice")}},ApiKey:{single:{text:"MessageConfirmRevokeApiKey",title:globalize.translate("HeaderConfirmRevokeApiKey")},plural:{text:"MessageConfirmRevokeApiKey",title:globalize.translate("HeaderConfirmRevokeApiKey")}},ItemImage:{single:{text:"ConfirmDeleteImage"},plural:{text:"ConfirmDeleteImage"}},Timer:{single:{text:"MessageConfirmRecordingCancellation",title:globalize.translate("HeaderCancelRecording"),confirmText:globalize.translate("HeaderCancelRecording"),cancelText:globalize.translate("HeaderKeepRecording"),notification:"RecordingCancelled"},plural:{text:"MessageConfirmRecordingCancellation",title:globalize.translate("HeaderCancelRecording"),confirmText:globalize.translate("HeaderCancelRecording"),cancelText:globalize.translate("HeaderKeepRecording"),notification:"RecordingCancelled"}},Recording:{single:{text:"MessageConfirmRecordingCancellation",title:globalize.translate("HeaderCancelRecording"),confirmText:globalize.translate("HeaderCancelRecording"),cancelText:globalize.translate("HeaderKeepRecording"),notification:"RecordingCancelled"},plural:{text:"MessageConfirmRecordingCancellation",title:globalize.translate("HeaderCancelRecording"),confirmText:globalize.translate("HeaderCancelRecording"),cancelText:globalize.translate("HeaderKeepRecording"),notification:"RecordingCancelled"}},SeriesTimer:{single:{text:"MessageConfirmRecordingCancellation",title:globalize.translate("HeaderCancelSeries"),confirmText:globalize.translate("HeaderCancelSeries"),cancelText:globalize.translate("HeaderKeepSeries"),notification:"SeriesCancelled"},plural:{text:"MessageConfirmRecordingCancellation",title:globalize.translate("HeaderCancelSeries"),confirmText:globalize.translate("HeaderCancelSeries"),cancelText:globalize.translate("HeaderKeepSeries"),notification:"SeriesCancelled"}},VirtualFolder:{single:{text:"MessageAreYouSureYouWishToRemoveLibrary",title:globalize.translate("HeaderRemoveLibrary"),confirmText:globalize.translate("Remove")},plural:{text:"MessageAreYouSureYouWishToRemoveLibrary",title:globalize.translate("HeaderRemoveLibrary"),confirmText:globalize.translate("Remove")}}});function getDeleteText(deleteInfo,item){let msg;return msg=deleteInfo.Paths.length?(msg=globalize.translate("ConfirmDeleteItem"),(msg+="\n\n"+globalize.translate("FollowingFilesWillBeDeleted")+"\n"+deleteInfo.Paths.join("\n"))+"\n\n"+globalize.translate("AreYouSureToContinue")):globalize.translate("DeleteItemConfirmation",item.Name)}function getDeleteHtml(deleteInfo,item){let msg;if(deleteInfo.Paths.length){msg=globalize.translate("ConfirmDeleteItem"),msg+="<p>"+globalize.translate("FollowingFilesWillBeDeleted")+"</p>";for(let i=0,length=deleteInfo.Paths.length;i<length;i++)msg+='<div class="secondaryText">'+deleteInfo.Paths[i]+"</div>";msg+='<p style="margin-bottom:0;">'+globalize.translate("AreYouSureToContinue")+"</p>"}else msg=globalize.translate("DeleteItemConfirmation",item.Name);return msg}function onItemsDeleted(instance,deleteOptions,deleteResult,showNotification){return showNotification&&instance.showAfterDeleteNotification(deleteOptions,deleteResult),Emby.importModule("./modules/approuter.js").then(function(appRouter){var item,parentId;return"back"===deleteOptions.navigate?appRouter.back():deleteOptions.navigate&&((parentId=(item=deleteOptions.items[0]).SeasonId||item.SeriesId||item.ParentId)?appRouter.showItem(parentId,item.ServerId):appRouter.goHome()),Promise.resolve(deleteResult)})}function mapToId(i){return i.Id}function getLeaveSharedItemTitle(item){return item.Type,globalize.translate("HeaderRemoveFromLibrary")}function leaveSharedItems(instance,items,options){let item=items[0];var title=getLeaveSharedItemTitle(item);return showConfirm({title:title,text:globalize.translate("RemoveSharedItemConfirmation"),confirmText:title,primary:"cancel"}).then(function(){var apiClient=connectionManager.getApiClient(item);return apiClient.leaveSharedItems({UserId:apiClient.getCurrentUserId(),ItemIds:items.map(mapToId)}).then(function(result){return onItemsDeleted(instance,options,result,!1)})})}function htmlEncode(val){return val&&textEncoding.htmlEncode(val)}function deleteVirtualFolder(virtualFolder,apiClient,options){options="true"===options.positionTo.closest(".page").getAttribute("data-refreshlibrary");return apiClient.removeVirtualFolder(virtualFolder,options)}function hasLyrics(item){var item=item.MediaSources;return!!item&&!!(item=item[0])&&0<(item.MediaStreams||[]).filter(function(s){return"Subtitle"===s.Type}).length}function filterItemsByMethod(instance,items,method,user,limit){var list=[];for(let i=0,length=items.length;i<length;i++){var item=items[i];if(instance[method](item,user)&&(list.push(item),limit)&&limit<=list.length)break}return list}function getUserFromOptions(options,apiClient){let user=options.user;return user=!user&&apiClient&&options.users?options.users[apiClient.serverId()]:user}function addToList(items,listType){return Emby.importModule("./modules/addtolist/addtolist.js").then(function(AddToList){return(new AddToList).show({items:items,type:listType})})}function getNumberSortOption(itemType){return"TvChannel"!==itemType?{name:globalize.translate("Number"),value:"ParentIndexNumber,IndexNumber,SortName",defaultSortOrder:"Ascending"}:{name:globalize.translate("ChannelNumber"),value:"ChannelNumber,SortName",defaultSortOrder:"Ascending"}}function getFileSortOption(){return{name:globalize.translate("FileName"),value:"IsFolder,Filename"}}function getDateLastActiveSortOption(itemType,apiClient){switch(itemType){case"User":case"Device":return apiClient?.isMinServerVersion("4.8.0.47")?{name:globalize.translate("DateLastActive"),value:"DateLastActivity,SortName",defaultSortOrder:"Descending"}:null}}function getIpAddressSortOption(itemType,apiClient){if("Device"===itemType)return apiClient?.isMinServerVersion("4.8.0.48")?{name:globalize.translate("IpAddress"),value:"IpAddress,DateLastActivity,SortName",defaultSortOrder:"Ascending",sortOrderAscending:"Ascending,Descending,Ascending",sortOrderDescending:"Descending,Descending,Ascending"}:null}function getDateAddedSortOption(itemType,apiClient){switch(itemType){case"":case"Movie":case"Series":case"Season":case"Episode":case"BoxSet":case"Trailer":case"Audio":case"MusicAlbum":case"MusicArtist":case"MusicVideo":case"Video":case"Game":case"Book":case"Person":case"Photo":case"TvChannel":case"Playlist":return{name:globalize.translate("DateAdded"),value:"DateCreated,SortName",defaultSortOrder:"Descending"};case"User":return apiClient?.isMinServerVersion("4.8.0.47")?{name:globalize.translate("DateAdded"),value:"DateCreated,SortName",defaultSortOrder:"Descending"}:null}}function getDateLastEpisodeAiredSortOption(itemType,apiClient){return!apiClient.isMinServerVersion("4.9.0.17")||"Series"!==itemType?null:{name:globalize.translate("LastEpisodeDateAired"),value:"LastContentPremiereDate,SortName",defaultSortOrder:"Descending"}}function getDateLastEpisodeAddedSortOption(itemType){return"Series"!==itemType?null:{name:globalize.translate("LastEpisodeDateAdded"),value:"DateLastContentAdded,SortName",defaultSortOrder:"Descending"}}function getDatePlayedSortOption(itemType){return"Series"!==itemType?{name:globalize.translate("DatePlayed"),value:"DatePlayed,SortName",defaultSortOrder:"Descending"}:{name:globalize.translate("DatePlayed"),value:"SeriesDatePlayed,SortName",defaultSortOrder:"Descending"}}function getCriticRatingSortOption(){return{name:globalize.translate("CriticRating"),value:"CriticRating,SortName",defaultSortOrder:"Descending"}}function getPlayCountSortOption(){return{name:globalize.translate("Plays"),value:"PlayCount,SortName",defaultSortOrder:"Descending"}}function getRuntimeSortOption(){return{name:globalize.translate("Runtime"),value:"Runtime,SortName",defaultSortOrder:"Ascending"}}function getParentalRatingSortOption(){return{name:globalize.translate("ParentalRating"),value:"OfficialRating,SortName",defaultSortOrder:"Descending"}}function getProductionYearSortOption(){return{name:globalize.translate("Year"),value:"ProductionYear,SortName",defaultSortOrder:"Descending"}}function getStartDateSortOption(itemType){return"Program"!==itemType?null:{name:globalize.translate("AirDate"),value:"StartDate",defaultSortOrder:"Ascending"}}function getFavoritesSortOption(itemType){return"TvChannel"!==itemType?null:{name:globalize.translate("Favorites"),value:"IsFavorite,DatePlayed,ChannelNumber,SortName",defaultSortOrder:"Ascending",sortOrderAscending:"Ascending,Descending,Ascending",sortOrderDescending:"Descending,Ascending,Ascending"}}function getRandomSortOption(itemType,apiClient){switch(itemType){case"Movie":case"Series":case"Episode":case"Audio":case"MusicAlbum":case"MusicArtist":case"Photo":case"Video":case"MusicVideo":case"Trailer":break;default:return null}return apiClient&&apiClient.isMinServerVersion("4.8.0.11")?{name:globalize.translate("Random"),value:"Random",defaultSortOrder:"Ascending"}:null}function getCommunityRatingOptionName(itemType){switch(itemType){case"Movie":case"Trailer":case"Series":return globalize.translate("ImdbRating")}return globalize.translate("CommunityRating")}function getCommunityRatingSortOption(itemType){return{name:getCommunityRatingOptionName(itemType),value:"CommunityRating,SortName",defaultSortOrder:"Descending"}}function getOriginalTitleSortOption(){return{name:globalize.translate("OriginalTitle"),value:"OriginalTitle,SortName",defaultSortOrder:"Descending"}}function getContainerSortOption(){return{name:globalize.translate("Container"),value:"Container,SortName",defaultSortOrder:"Descending"}}function getSizeSortOption(itemType){return"Log"!==itemType?{name:globalize.translate("Size"),value:"Size,SortName",defaultSortOrder:"Descending"}:null}function getBitrateSortOption(){return{name:globalize.translate("Bitrate"),value:"TotalBitrate,SortName",defaultSortOrder:"Descending"}}function getResolutionSortOption(){return{name:globalize.translate("Resolution"),value:"Resolution,SortName",defaultSortOrder:"Descending"}}function getReleaseDateSortOption(){return{name:globalize.translate("ReleaseDate"),value:"ProductionYear,PremiereDate,SortName",defaultSortOrder:"Descending"}}function getSeriesSortOption(itemType){return"Episode"!==itemType?null:{name:globalize.translate("Series"),value:"SeriesSortName,ParentIndexNumber,IndexNumber,SortName",defaultSortOrder:"Ascending"}}function getAlbumSortOption(){return{name:globalize.translate("Album"),value:"Album,ParentIndexNumber,IndexNumber"}}function getArtistSortValue(){return"Artist,Album,ParentIndexNumber,IndexNumber,SortName"}function getArtistSortOption(){return{name:globalize.translate("Artist"),value:getArtistSortValue()}}function getComposerSortOption(){return{name:globalize.translate("Composer"),value:getArtistSortValue().replace("Artist","Composer")}}function getAlbumArtistSortOption(){return{name:globalize.translate("AlbumArtist"),value:getArtistSortValue().replace("Artist","AlbumArtist")}}function getColumnSize(id){switch(id){case"IndexNumber":case"ParentIndexNumber":case"Video3DFormat":return 3;case"ProductionYear":case"PlayCount":return 4;case"Image":case"Icon":return 4;case"CommunityRating":case"CriticRating":case"Number":return 6;case"EpisodeNumber":case"Runtime":return 10;case"Date":case"Bitrate":case"Size":case"Resolution":case"Container":case"Version":return 12;case"DateTime":return 20;case"Artist":case"AlbumArtist":case"Composer":case"SeriesName":case"Album":case"Genres":case"Email":return 30;case"Studios":case"Name":case"OriginalTitle":case"SortName":case"Filename":case"IpAddress":return 40;case"Path":return 80;default:return 15}}function compareByName(a,b){a=a.menuSortKey||a.name,b=b.menuSortKey||b.name;return a<b?-1:b<a?1:0}function getPlaylistOrCollectionSortMenuOptions(listType){var options=[];return options.push({name:"Playlist"===listType?globalize.translate("PlaylistOrder"):"BoxSet"===listType?globalize.translate("CollectionOrder"):globalize.translate("Default"),value:"default",defaultSortOrder:"Ascending"}),options.push({name:globalize.translate("Album"),value:"Album,ParentIndexNumber,IndexNumber",defaultSortOrder:"Ascending"}),"Playlist"===listType&&options.push({name:globalize.translate("AlbumArtist"),value:"AlbumArtist,Album,ParentIndexNumber,IndexNumber,SortName",defaultSortOrder:"Ascending"}),options.push({name:globalize.translate("Artist"),value:"Artist,Album,ParentIndexNumber,IndexNumber,SortName",defaultSortOrder:"Ascending"}),options.push({name:globalize.translate("CommunityRating"),value:"CommunityRating",defaultSortOrder:"Descending"}),options.push({name:globalize.translate("Runtime"),value:"Runtime",defaultSortOrder:"Ascending"}),options.push({name:globalize.translate("Title"),value:"SortName",defaultSortOrder:"Ascending"}),options.push({name:globalize.translate("ReleaseDate"),value:"ProductionYear,PremiereDate",defaultSortOrder:"Descending"}),options.push({name:globalize.translate("Year"),value:"ProductionYear",defaultSortOrder:"Descending"}),options}function notifyAddedToList(listName,listType,numItems){listName=textEncoding.htmlEncode(listName);numItems=1===numItems?globalize.translate("OneItemAddedTo",listName):globalize.translate("ItemsAddedTo",numItems,listName);showToast({text:"Playlist"===listType?globalize.translate("HeaderAddedToPlaylist"):globalize.translate("HeaderAddedToCollection"),secondaryText:numItems,icon:"&#xe03b;"})}function confirmDuplicatesIfNeeded(apiClient,userId,type,id,addIds){return"Playlist"!==type?Promise.resolve():apiClient.getAddToPlaylistInfo(userId,id,addIds).then(function(result){return result.ContainsDuplicates?((result={text:1<result.ItemCount?globalize.translate("ItemsAlreadyInPlaylist"):globalize.translate("ItemAlreadyInPlaylist"),buttons:[]}).buttons.push({name:globalize.translate("HeaderAddAgain"),id:"add",type:"submit"}),result.buttons.push({name:globalize.translate("Skip"),id:"skip"}),result.buttons.push({name:globalize.translate("Cancel"),id:"cancel",type:"cancel"}),showDialog(result).then(function(result){return"add"===result||"skip"===result?Promise.resolve(result):Promise.reject(result)})):Promise.resolve()})}function onAddedToList(type,id){"Playlist"===type?userSettings.set("playlisteditor-lastplaylistid",id):"Collection"===type&&userSettings.set("collectioneditor-lastcollectionid",id)}BaseItemController.prototype.getDeleteMessages=function(item){return"MediaStream"===item.Type&&"Subtitle"===item.StreamType?{single:{text:"MessageAreYouSureDeleteSubtitles",title:globalize.translate("ConfirmDeletion"),confirmText:globalize.translate("Delete")},plural:{text:"MessageAreYouSureDeleteSubtitles",title:globalize.translate("ConfirmDeletion"),confirmText:globalize.translate("Delete")}}:DeleteMessages[item.Type]},BaseItemController.prototype.getDeleteMessageOptions=function(options){var items=options.items,options=options.deleteMessages||this.getDeleteMessages(items[0])||DeleteMessages.Item,options=1<items.length?options.plural:options.single;return(options=Object.assign({},options)).primary="cancel",options.confirmText||(options.confirmText=globalize.translate("Delete")),1===items.length?options.text=globalize.translate(options.text,items[0].Name):options.text=globalize.translate(options.text,items.length),options},BaseItemController.prototype.showSeriesDeleteConfirmation=function(options){var item=options.items[0],apiClient=connectionManager.getApiClient(item);let instance=this;return apiClient.getEpisodes(item.Id,{Limit:1,SortBy:"DatePlayed",SortOrder:"Descending",IsPlayed:!0,UserId:apiClient.getCurrentUserId(),ExcludeLocationTypes:"Virtual"}).then(function(result){return result.Items.length?showDialog({title:globalize.translate("HeaderDeleteSeries"),text:"",buttons:[{name:globalize.translate("Cancel"),id:"cancel",type:"submit"},{name:globalize.translate("HeaderDeleteLastPlayedEpisode"),id:"deletelastplayed",type:"cancel"},{name:globalize.translate("HeaderDeleteSeries"),id:"deleteseries",type:"cancel"}]}).then(function(id){return"deleteseries"===id?{deleteType:id}:"deletelastplayed"===id?{deleteType:id,item:result.Items[0]}:"cancel"===id?Promise.reject():rejectNoSupportedCommands()}):instance.showLibraryItemDeleteConfirmation(options).then(function(){return{deleteType:"deleteseries"}})})},BaseItemController.prototype.showDeleteConfirmation=function(options){if(1===options.items.length)switch(options.items[0].Type){case"VirtualFolder":case"SeriesTimer":case"Timer":case"Recording":case"ItemImage":case"LiveTVGuideSource":case"LiveTVTunerDevice":case"ApiKey":case"Server":case"MediaStream":case"Device":case"Plugin":case"User":break;case"Series":return this.showSeriesDeleteConfirmation(options);default:if(this.enableLibraryItemDeleteConfirmation())return this.showLibraryItemDeleteConfirmation(options)}return showConfirm(this.getDeleteMessageOptions(options))},BaseItemController.prototype.enableLibraryItemDeleteConfirmation=function(){return!0},BaseItemController.prototype.showLibraryItemDeleteConfirmation=function(options){let item=options.items[0];var options=connectionManager.getApiClient(item),itemId=item.Id;return options.getDeleteInfo(itemId).then(function(deleteInfo){return showConfirm({title:globalize.translate("HeaderDeleteItem"),text:getDeleteText(deleteInfo,item),html:getDeleteHtml(deleteInfo,item),confirmText:globalize.translate("Delete"),primary:"cancel",centerText:!1})})},BaseItemController.prototype.deleteItems=function(options){if("leaveshareditems"===options.deleteType)return leaveSharedItems(this,options.items,options);let instance=this,optionsClone=Object.assign({},options);var apiClient=connectionManager.getApiClient(optionsClone.items[0]);return(apiClient?.getCurrentUserId()&&"Server"!==optionsClone.items[0].Type?apiClient.getCurrentUser():Promise.resolve()).then(function(user){user=filterItemsByMethod(instance,optionsClone.items,"canDelete",user);return user.length?(optionsClone.items=user,(!1===options?.confirm?Promise.resolve():instance.showDeleteConfirmation(options)).then(function(deleteConfirmationResult){return loading.show(),instance.deleteItemsInternal(optionsClone,deleteConfirmationResult).then(function(result){return loading.hide(),onItemsDeleted(instance,options,result,!0)})})):rejectNoItems()})},BaseItemController.prototype.getItemTypeName=function(type){if(!type)return null;switch(type){case"Genre":case"MusicGenre":case"GameGenre":return globalize.translate("Genre");case"BoxSet":return globalize.translate("Collection");case"Audio":return globalize.translate("Song");case"MusicArtist":return globalize.translate("Artist");case"MusicAlbum":return globalize.translate("Album");case"MusicVideo":return globalize.translate("HeaderMusicVideo");case"TvChannel":return globalize.translate("Channel");case"LiveTvProgram":return globalize.translate("Program");case"ApiKey":return globalize.translate("HeaderApiKey");case"Timer":return globalize.translate("Recording");case"SeriesTimer":return globalize.translate("SeriesRecording")}return globalize.translate(type)},BaseItemController.prototype.getPluralItemTypeName=function(type){switch(type){case"Genre":case"MusicGenre":case"GameGenre":return globalize.translate("Genres");case"BoxSet":return globalize.translate("Collections");case"Audio":return globalize.translate("Songs");case"MusicArtist":return globalize.translate("Artists");case"MusicAlbum":return globalize.translate("Albums");case"MusicVideo":return globalize.translate("HeaderMusicVideos");case"Person":return globalize.translate("People");case"TvChannel":return globalize.translate("Channels");case"Series":return globalize.translate("Shows");case"LiveTvProgram":return globalize.translate("Programs");case"ApiKey":return globalize.translate("HeaderApiKeys")}return globalize.translate(type+"s")},BaseItemController.prototype.showAfterDeleteNotification=function(deleteOptions,deleteResult){var items=deleteOptions.items,deleteOptions=deleteOptions.deleteMessages||this.getDeleteMessages(items[0])||DeleteMessages.Item;let text=(1<items.length?deleteOptions.plural:deleteOptions.single).notification;text&&showToast(text=1===items.length?globalize.translate(text,items[0].Name):globalize.translate(text,items.length))},BaseItemController.prototype.supportsContextMenu=function(item){switch(item.Type){case"Program":case"AddServer":case"EmbyConnect":return!1;case"MediaStream":return"Subtitle"===item.StreamType&&item.IsExternal?!0:!1;case"Trailer":return item.Id?!0:!1;default:return!0}},BaseItemController.prototype.resolveField=function(item,field,options){switch(field){case"LastActivityDateRelative":var val=item.LastActivityDate||item.DateLastActivity;return val?dataFormatter.formatRelativeTime(val):null;case"LastActivityDate":{let val=item.LastActivityDate||item.DateLastActivity;return val?datetime.toLocaleString(new Date(Date.parse(val))):null}case"LastUser":var val=item.LastUserId?appRouter.getRouteUrl({Type:"User",Name:item.LastUserName,Id:item.LastUserId,ServerId:item.ServerId}):null,lastUserName=textEncoding.htmlEncode(item.LastUserName||"");return val?'<a is="emby-linkbutton" class="button-link button-link-color-inherit button-link-fontweight-inherit" href="'+val+'">'+lastUserName+"</a>":lastUserName;case"DateCreated":{let val=item.DateCreated;return val?datetime.toLocaleDateString(new Date(Date.parse(val))):null}case"DateModified":{let val=item.DateModified;return val?datetime.toLocaleString(new Date(Date.parse(val))):null}case"ShortOverviewHtml":return item.ShortOverviewHtml;case"Container":return htmlEncode(item.Container?.toUpperCase());case"AppNameVersion":val=[];return item.AppName&&val.push(item.AppName),item.AppVersion&&val.push(item.AppVersion),textEncoding.htmlEncode(val.join(" "))||null;case"Size":{let val=item.Size;return null!=val?dataFormatter.sizeToString(val):null}case"Bitrate":{let val=item.Bitrate;return null!=val?dataFormatter.bitrateToString(val):null}default:return htmlEncode(item[field])}},BaseItemController.prototype.deleteItemsInternal=function(options,deleteConfirmationResult){var items=options.items,item=items[0];switch(item.Type){case"Device":return connectionManager.getApiClient(item).deleteDevices(options.items);case"Plugin":return connectionManager.getApiClient(item).uninstallPlugins(options.items);case"User":return connectionManager.getApiClient(item).deleteUsers(options.items);case"VirtualFolder":return deleteVirtualFolder(item,connectionManager.getApiClient(item),options);case"SeriesTimer":return connectionManager.getApiClient(item).cancelLiveTvSeriesTimer(item.Id);case"Timer":case"Recording":return connectionManager.getApiClient(item).cancelLiveTvTimer(item.TimerId||item.Id);case"ItemImage":return connectionManager.getApiClient(item).deleteItemImage(item.ItemId,item.ImageType,item.ImageIndex);case"LiveTVGuideSource":return connectionManager.getApiClient(item).deleteLiveTVGuideSource(item.Id);case"LiveTVTunerDevice":return connectionManager.getApiClient(item).deleteLiveTVTunerDevice(item.Id);case"ApiKey":return connectionManager.getApiClient(item).deleteApiKeys(items);case"Server":return connectionManager.deleteServer(item.Id);case"Series":return"deletelastplayed"===deleteConfirmationResult?.deleteType?(options.navigate=null,connectionManager.getApiClient(item).deleteItems([deleteConfirmationResult.item])):connectionManager.getApiClient(item).deleteItems(items);case"MediaStream":return"Subtitle"===item.StreamType?connectionManager.getApiClient(item).deleteSubtitles(item.ItemId,item.MediaSourceId,item.Index):rejectNoSupportedCommands();default:return connectionManager.getApiClient(item).deleteItems(items)}},BaseItemController.prototype.getDeleteCommand=function(items){var items=items[0].Type;if("Plugin"!==items&&"VirtualFolder"!==items&&"Timer"!==items&&"SeriesTimer"!==items)return items=this.isDeletePrimaryCommand(items),{name:globalize.translate("Delete"),id:"delete",icon:"delete",primaryCommand:items,horizontalDragSection:"right"}},BaseItemController.prototype.getCommands=function(options){var commands=[];let items=options.items;items||(items=[],options.item&&items.push(options.item));var item=items[0];let canPlay=playbackManager.canPlay(item);1<items.length&&"Playlist"===items[0].Type&&(canPlay=!1);var apiClient=connectionManager.getApiClient(item),user=getUserFromOptions(options,apiClient),itemType=item.Type;options.setChecked?commands.push({name:globalize.translate("Enable"),id:"togglecheckbox",icon:"&#xe834;"}):options.setUnchecked&&commands.push({name:globalize.translate("Disable"),id:"togglecheckbox",icon:"&#xe835;"}),options.programInfo&&"Program"===itemType&&commands.push({name:globalize.translate("Info"),id:"link",icon:"&#xe88e;"}),canPlay&&("Photo"===item.MediaType?!1!==options.playSlideshow&&commands.push({name:globalize.translate("PlaySlideshow"),id:"playallfromhereautoplay",icon:"&#xe037;"}):(!1===options.play||(isPlayQueueItem=item.PlaylistItemId&&!item.PlaylistId)&&1!==items.length||commands.push({name:globalize.translate("Play"),id:"resume",icon:"&#xe037;",primaryCommand:!isPlayQueueItem}),1===items.length&&(options.playFromBeginning&&("Series"===itemType||"MusicAlbum"===itemType&&item.SupportsResume||item.UserData&&0<item.UserData.PlaybackPositionTicks)&&commands.push({name:globalize.translate("PlayFromBeginning"),id:"playfrombeginning",icon:"&#xe037;"}),filterItemsByMethod(this,items,"canRemoveFromPlayQueue",user,1).length||options.playAllFromHere&&"Program"!==itemType&&"Recording"!==itemType&&"TvChannel"!==itemType&&"Chapter"!==itemType&&commands.push({name:globalize.translate("PlayAllFromHere"),id:"playallfromhere",icon:"&#xe037;"})))),filterItemsByMethod(this,items,"canRemoveFromPlayQueue",user,1).length?commands.push({name:globalize.translate("HeaderRemoveFromPlayQueue"),id:"removefromplayqueue",icon:"remove_circle_outline",primaryCommand:!0,horizontalDragSection:"right"}):playbackManager.canQueue(item)&&(!1!==options.queue&&commands.push({name:globalize.translate("HeaderAddToPlayQueue"),id:"queue",icon:"&#xe03b;",horizontalDragSection:"left"}),!1!==options.queue)&&commands.push({name:globalize.translate("HeaderPlayNext"),id:"queuenext",icon:"&#xe03b;",horizontalDragSection:"left"}),(item.IsFolder||"MusicArtist"===itemType||"MusicGenre"===itemType)&&"livetv"!==item.CollectionType&&canPlay&&!1!==options.shuffle&&commands.push({name:globalize.translate("Shuffle"),id:"shuffle",icon:"&#xe043;"}),1===items.length&&("Audio"!==item.MediaType&&"MusicAlbum"!==itemType&&"MusicArtist"!==itemType||!1===options.instantMix||ApiClient.isLocalItem(item)||commands.push({name:globalize.translate("HeaderInstantMix"),id:"instantmix",icon:"&#xe043;"}),options.gotoItem)&&commands.push({name:globalize.translate("HeaderGoToItem"),id:"link",icon:this.getDefaultIcon(item)}),commands.length&&(commands[commands.length-1].dividerAfter=!0);let needsDivider=!1;var isPlayQueueItem=filterItemsByMethod(this,items,"canAddToPlaylist",user,1).length,isPlayQueueItem=(filterItemsByMethod(this,items,"canAddToCollection",user,1).length&&(commands.push({name:globalize.translate("HeaderAddToCollection"),id:"addtocollection",icon:"&#xe03b;",horizontalDragSection:isPlayQueueItem?null:"left"}),needsDivider=!0),isPlayQueueItem&&(commands.push({name:globalize.translate("HeaderAddToPlaylist"),id:"addtoplaylist",icon:"&#xe03b;",primaryCommand:!0,horizontalDragSection:"left"}),needsDivider=!0),user&&!1!==options.favorites&&filterItemsByMethod(this,items,"canRate",user,1).length&&(item.UserData&&item.UserData.IsFavorite?commands.push({name:globalize.translate("HeaderRemoveFromFavorites"),id:"unfavorite",icon:"&#xe87d;",iconClass:"icon_circle_strike"}):commands.push({name:globalize.translate("HeaderAddToFavorites"),id:"favorite",icon:"&#xe87d;"}),needsDivider=!0),user&&!1!==options.played&&filterItemsByMethod(this,items,"canMarkPlayed",user,1).length&&(isPlayQueueItem=item.UserData&&item.UserData.Played,commands.push(isPlayQueueItem?{name:globalize.translate("HeaderMarkUnplayed"),id:"markunplayed",icon:"check",iconClass:"icon_circle_strike"}:{name:globalize.translate("HeaderMarkPlayed"),id:"markplayed",icon:"check"}),needsDivider=!0),needsDivider&&(commands[commands.length-1].dividerAfter=!0,needsDivider=!1),1===items.length&&(options.multiSelect&&!layoutManager.tv&&(needsDivider=!0,commands.push({name:globalize.translate("MultiSelect"),id:"multiselect",icon:"select_all"})),"MediaStream"===itemType&&item.IsExternal&&"Subtitle"===item.StreamType&&(needsDivider=!0,commands.push({name:globalize.translate("Preview"),id:"preview",icon:"&#xe89e;"})),"RemoteSubtitle"===itemType)&&(needsDivider=!0,commands.push({name:globalize.translate("Preview"),id:"preview",icon:"&#xe89e;"})),needsDivider&&(commands[commands.length-1].dividerAfter=!0,needsDivider=!1),1===items.length&&(user&&("Timer"===itemType&&filterItemsByMethod(this,items,"canDelete",user,1).length&&!1!==options.cancelTimer&&commands.push({name:globalize.translate("HeaderCancelRecording"),id:"canceltimer",icon:"&#xe061;"}),"SeriesTimer"===itemType)&&filterItemsByMethod(this,items,"canDelete",user,1).length&&!1!==options.cancelTimer&&commands.push({name:globalize.translate("HeaderCancelSeries"),id:"cancelseriestimer",icon:"&#xe3c9;"}),"VirtualFolder"===itemType&&user.Policy.IsAdministrator&&"boxsets"!==item.CollectionType&&commands.push({name:globalize.translate("HeaderChangeFolderType"),id:"changelibrarycontenttype",icon:"&#xe2c7;"}),"Server"===itemType&&commands.push({name:globalize.translate("Connect"),id:"connecttoserver",icon:"&#xe63E;"}),"ApiKey"===itemType)&&navigator.clipboard&&navigator.clipboard.writeText&&commands.push({name:globalize.translate("HeaderCopyToClipboard"),id:"copytoclipboard",icon:"content_copy"}),1===items.length&&(!1!==options.openAlbum&&item.AlbumId&&"Photo"!==item.MediaType&&commands.push({name:globalize.translate("HeaderGoToAlbum"),id:"album",icon:this.getDefaultIcon({Type:"MusicAlbum",IsFolder:!0})}),!1!==options.openArtist&&item.ArtistItems&&item.ArtistItems.length&&commands.push({name:globalize.translate("HeaderGoToArtist"),id:"artist",icon:this.getDefaultIcon({Type:"MusicArtist",IsFolder:!0})}),!1!==options.showSeason&&"Episode"===itemType&&item.SeasonId&&commands.push({name:globalize.translate("HeaderGoToSeason"),id:"season",icon:this.getDefaultIcon({Type:"Season",IsFolder:!0})}),!options.showSeries||"Episode"!==itemType&&"Season"!==itemType||commands.push({name:globalize.translate("HeaderGoToSeries"),id:"series",icon:this.getDefaultIcon({Type:"Series",IsFolder:!0})})),appHost.supports("sync")&&filterItemsByMethod(this,items,"canSync",user,1).length?!1!==options.syncLocal&&(needsDivider=!0,commands.push({name:globalize.translate("Download"),id:"synclocal",icon:DownloadIcon,horizontalDragSection:"right"})):filterItemsByMethod(this,items,"canDownload",user,1).length&&(needsDivider=!0,commands.push({name:globalize.translate("Download"),id:"download",icon:DownloadIcon,primaryCommand:"Log"===itemType,horizontalDragSection:"right"})),!1!==options.sync&&filterItemsByMethod(this,items,"canSync",user,1).length&&(needsDivider=!0,commands.push({name:globalize.translate("HeaderDownloadToDots"),id:"sync",icon:DownloadIcon})),!1!==options.convert&&filterItemsByMethod(this,items,"canConvert",user,1).length&&(needsDivider=!0,commands.push({name:globalize.translate("Convert"),id:"convert",icon:"sync"})),needsDivider&&(commands[commands.length-1].dividerAfter=!0,needsDivider=!1),1===items.length&&user&&!1!==options.createRecording&&user.Policy.EnableLiveTvManagement&&"TvChannel"===itemType&&commands.push({name:globalize.translate("HeaderCreateRecording"),id:"record",icon:"&#xe061;"}),this.canEdit(items,user));if(isPlayQueueItem&&!1!==options.edit&&"SeriesTimer"!==itemType&&(needsDivider=!0,commands.push(this.getEditCommand(items))),1===items.length&&(this.canEditImages(item,user)&&!1!==options.editImages&&(needsDivider=!0,commands.push({name:globalize.translate("HeaderEditImages"),id:"editimages",icon:"photo"})),!1!==options.editSubtitles)&&this.canEditSubtitles(item,user)&&!1!==options.editSubtitles&&"Audio"!==item.MediaType&&(needsDivider=!0,commands.push({name:globalize.translate("HeaderEditSubtitles"),id:"editsubtitles",icon:defaultIconsByStreamType.Subtitle})),!1!==options.deleteItem&&filterItemsByMethod(this,items,"canDelete",user,1).length&&"Plugin"!==itemType&&"VirtualFolder"!==itemType&&"Timer"!==itemType&&"SeriesTimer"!==itemType&&(isPlayQueueItem=this.getDeleteCommand(items))&&(needsDivider=!0,commands.push(isPlayQueueItem)),1<filterItemsByMethod(this,items,"canManageMultiVersionGrouping",user,2).length&&(needsDivider=!0,commands.push({name:globalize.translate("HeaderGroupVersions"),id:"mergeversions",icon:"call_merge"})),!1!==options.identify&&filterItemsByMethod(this,items,"canIdentify",user,1).length&&(1===items.length&&(needsDivider=!0,commands.push({name:globalize.translate("Identify"),id:"identify",icon:"&#xe85d;"})),apiClient)&&apiClient.isMinServerVersion("4.8.0.30")&&(needsDivider=!0,commands.push({name:globalize.translate("HeaderRemoveIdentification"),id:"resetmetadata",icon:"&#xe0b8;"})),1===items.length&&(item.CanLeaveContent&&commands.push({name:getLeaveSharedItemTitle(item),id:"leaveshareditems",icon:"person_remove"}),item.CanManageAccess)&&commands.push({name:"Playlist"===itemType?globalize.translate("HeaderManageCollaboration"):globalize.translate("HeaderManageAccess"),id:"manageaccess",icon:"person_add"}),!1!==options.refreshMetadata&&filterItemsByMethod(this,items,"canRefreshMetadata",user,1).length&&(needsDivider=!0,commands.push({name:globalize.translate("HeaderRefreshMetadata"),id:"refresh",icon:"refresh"})),!1!==options.refreshMetadata&&filterItemsByMethod(this,items,"canScanLibraryFiles",user,1).length)switch(itemType){case"Playlist":case"Genre":case"MusicGenre":case"GameGenre":case"Channel":case"MusicArtist":break;default:needsDivider=!0,commands.push({name:globalize.translate("HeaderScanLibraryFiles"),id:"scan",icon:"refresh"})}return needsDivider&&(commands[commands.length-1].dividerAfter=!0,needsDivider=!1),!1!==options.removeFromPlaylist&&filterItemsByMethod(this,items,"canRemoveFromPlaylist",user,1).length&&commands.push({name:globalize.translate("HeaderRemoveFromPlaylist"),id:"removefromplaylist",icon:"remove_circle_outline",primaryCommand:!0,horizontalDragSection:"right"}),filterItemsByMethod(this,items,"canRemoveFromCollection",user,1).length&&commands.push({name:globalize.translate("HeaderRemoveFromCollection"),id:"removefromcollection",icon:"remove_circle_outline",primaryCommand:!0,horizontalDragSection:"right"}),user&&(!1!==options.deleteItem&&filterItemsByMethod(this,items,"canDelete",user,1).length&&"VirtualFolder"===itemType&&commands.push({name:globalize.translate("Remove"),id:"delete",icon:"remove_circle_outline"}),"VirtualFolder"===itemType)&&user.Policy.IsAdministrator&&"boxsets"!==item.CollectionType&&1===items.length&&commands.push({name:globalize.translate("Rename"),id:"renamelibrary",icon:"edit"}),1===items.length&&(options.removeFromNextUp&&commands.push({name:globalize.translate("HeaderRemoveFromContinueWatching"),id:"removefromnextup",icon:"remove_circle_outline"}),options.removeFromResume)&&commands.push({name:"Audio"===item.MediaType?globalize.translate("HeaderRemoveFromContinueListening"):globalize.translate("HeaderRemoveFromContinueWatching"),id:"removefromresume",icon:"remove_circle_outline"}),1===items.length&&(filterItemsByMethod(this,items,"canMoveUp",user,1).length&&commands.push({name:globalize.translate("HeaderMoveUpInOrder"),id:"moveupinorder",icon:"&#xe5d8;"}),filterItemsByMethod(this,items,"canMoveDown",user,1).length&&commands.push({name:globalize.translate("HeaderDownUpInOrder"),id:"movedowninorder",icon:"&#xe5db;"}),"ItemImage"===itemType&&(item.ImageTag||commands.push({name:globalize.translate("HeaderAddImageFromUrl"),id:"addimagefromurl",icon:"link"}),("Backdrop"!==item.ImageType||apiClient?.isMinServerVersion("4.9.0.13"))&&(item.Providers.length&&(isPlayQueueItem=item.ImageTag?globalize.translate("HeaderSearchNewImage"):globalize.translate("HeaderSearchForAnImage"),commands.push({name:isPlayQueueItem,id:"searchimageproviders",icon:"search"})),appHost.supports("fileinput"))&&commands.push({name:globalize.translate("HeaderSelectImageFile"),id:"addimage",icon:"add_circle_outline"}),item.ImageTag)&&commands.push({name:globalize.translate("HeaderSetImageFromUrl"),id:"addimagefromurl",icon:"link"}),"Plugin"===itemType&&user.Policy.IsAdministrator&&item.ConfigPageUrl&&commands.push({name:globalize.translate("Settings"),id:"open",icon:"settings"}),!1!==options.share&&this.canShare(item,user)&&commands.push({name:globalize.translate("Share"),id:"share",icon:"share"}),"Recording"===itemType)&&"InProgress"===item.Status&&user.Policy.EnableLiveTvManagement&&!1!==options.cancelTimer&&commands.push({name:globalize.translate("HeaderStopRecording"),id:"canceltimer",icon:"&#xe061;"}),"Plugin"===itemType&&filterItemsByMethod(this,items,"canDelete",user,1).length&&commands.push({name:globalize.translate("Uninstall"),id:"delete",icon:"delete",primaryCommand:!0,horizontalDragSection:"right"}),1===items.length&&("Audio"===itemType&&hasLyrics(item)&&commands.push({name:globalize.translate("HeaderViewLyrics"),id:"lyrics",icon:"lyrics"}),"Server"===itemType&&commands.push({name:globalize.translate("HeaderViewServerInfo"),id:"serverinfo",icon:"&#xe63E;"}),"Server"===itemType&&apiClient&&apiClient.supportsWakeOnLan()&&commands.push({name:globalize.translate("HeaderWakeServer"),id:"wakeserver",icon:"&#xe63E;",primaryCommand:!0}),"Series"===itemType&&apiClient?.isMinServerVersion("4.8.0.59")&&commands.push({name:globalize.translate("HeaderViewMissingEpisodes"),id:"showmissingepisodes",icon:"format_list_bulleted"}),"Season"===itemType)&&apiClient?.isMinServerVersion("4.8.0.60")&&commands.push({name:globalize.translate("HeaderViewMissingEpisodes"),id:"showmissingepisodes",icon:"format_list_bulleted"}),commands},BaseItemController.prototype.isDeletePrimaryCommand=function(itemType){return"Plugin"===itemType},BaseItemController.prototype.scanLibraryFiles=function(items,options){let apiClient=connectionManager.getApiClient(items[0]),instance=this;return apiClient.getCurrentUser().then(function(user){return(items=filterItemsByMethod(instance,items,"canScanLibraryFiles",user)).length?apiClient.refreshItems(items,{Recursive:!0,ImageRefreshMode:"Default",MetadataRefreshMode:"Default",ReplaceAllImages:!1,ReplaceAllMetadata:!1}).then(function(){return showToast(globalize.translate("ScanningLibraryFilesDots"))}):rejectNoItems()})},BaseItemController.prototype.refreshMetadata=function(items,options){var apiClient=connectionManager.getApiClient(items[0]);let instance=this;return apiClient.getCurrentUser().then(function(user){return(items=filterItemsByMethod(instance,items,"canRefreshMetadata",user)).length?Emby.importModule("./modules/refreshdialog/refreshdialog.js").then(function(RefreshDialog){return new RefreshDialog({items:items}).show()}):rejectNoItems()})},BaseItemController.prototype.addToPlaylist=function(items,options){var apiClient=connectionManager.getApiClient(items[0]);let instance=this;return apiClient.getCurrentUser().then(function(user){return(items=filterItemsByMethod(instance,items,"canAddToPlaylist",user)).length?addToList(items,"Playlist"):rejectNoItems()})},BaseItemController.prototype.addToCollection=function(items,options){var apiClient=connectionManager.getApiClient(items[0]);let instance=this;return apiClient.getCurrentUser().then(function(user){return(items=filterItemsByMethod(instance,items,"canAddToCollection",user)).length?addToList(items,"Collection"):rejectNoItems()})},BaseItemController.prototype.groupVersions=function(items,options){let apiClient=connectionManager.getApiClient(items[0]),instance=this;return apiClient.getCurrentUser().then(function(user){return(items=filterItemsByMethod(instance,items,"canManageMultiVersionGrouping",user)).length?items.length<2?showAlertAndReject(globalize.translate("PleaseSelectTwoItems")):(loading.show(),apiClient.mergeVersions(items).then(function(response){return loading.hide(),Promise.resolve(response)},function(response){return loading.hide(),Promise.reject(response)})):rejectNoItems()})},BaseItemController.prototype.getAvailableFields=function(options){var fields=[],itemType=options.itemType||"",apiClient=options.apiClient;switch("User"===itemType&&fields.push({id:"IsAdministrator",name:globalize.translate("Admin"),gridDisplayName:'<i title="'+globalize.translate("Admin")+'" class="md-icon dataGridItemCell-icon">&#xef3d;</i>',size:getColumnSize("Icon"),sortBy:null,gridColumnType:"icon",viewTypes:"datagrid",defaultVisible:"datagrid"}),itemType){case"":case"Episode":fields.push({id:"SeriesName",name:globalize.translate("Series"),size:getColumnSize("SeriesName"),sortBy:getSeriesSortOption(itemType)?.value,viewTypes:"datagrid",defaultVisible:"datagrid"}),fields.push({id:"EpisodeNumber",name:globalize.translate("Number"),size:getColumnSize("EpisodeNumber"),sortBy:null,viewTypes:"datagrid",defaultVisible:"datagrid"})}switch(itemType){case"Photo":case"PhotoAlbum":fields.push({id:"Name",name:globalize.translate("Title"),size:getColumnSize("Name"),sortBy:this.getNameSortOption(itemType,apiClient)?.value,defaultVisible:"datagrid"});break;case"ApiKey":break;default:fields.push({id:"Name",name:globalize.translate("Title"),size:getColumnSize("Name"),sortBy:this.getNameSortOption(itemType,apiClient)?.value,defaultVisible:"*"})}switch("User"===itemType&&fields.push({id:"ConnectUserName",name:"Emby Connect",size:getColumnSize("Email"),sortBy:null}),"ApiKey"===itemType&&fields.push({id:"AppName",name:globalize.translate("AppName"),size:getColumnSize("Name"),sortBy:null,defaultVisible:"*"}),"Device"===itemType&&fields.push({id:"AppNameVersion",name:globalize.translate("AppName"),size:getColumnSize("Name"),sortBy:null,defaultVisible:"*"}),"ApiKey"===itemType&&fields.push({id:"AccessToken",name:globalize.translate("HeaderApiKey"),size:getColumnSize("Name"),sortBy:null,defaultVisible:"*"}),"User"===itemType&&fields.push({id:"LastActivityDateRelative",name:globalize.translate("DateLastActive"),size:getColumnSize("Name"),sortBy:getDateLastActiveSortOption(itemType,apiClient)?.value,viewTypes:"cards",defaultVisible:"cards,list"}),itemType){case"Device":case"User":fields.push({id:"LastActivityDate",name:globalize.translate("DateLastActive"),size:getColumnSize("DateTime"),sortBy:getDateLastActiveSortOption(itemType,apiClient)?.value,viewTypes:"datagrid",defaultVisible:"datagrid"})}switch("Device"===itemType&&fields.push({id:"LastUser",name:globalize.translate("User"),size:getColumnSize("Name"),sortBy:null,viewTypes:"datagrid",defaultVisible:"datagrid"}),itemType){case"":case"Audio":case"TvChannel":fields.push({id:"Number",name:globalize.translate("Number"),size:getColumnSize("Number"),sortBy:getNumberSortOption(itemType)?.value,viewTypes:"datagrid"})}switch("Program"===itemType&&fields.push({id:"StartDate",name:globalize.translate("AirDate"),size:getColumnSize("StartDate"),sortBy:getStartDateSortOption(itemType)?.value,viewTypes:"datagrid",defaultVisible:"datagrid"}),itemType){case"":case"Movie":case"Video":case"Trailer":case"MusicVideo":case"Series":case"Game":fields.push({id:"OriginalTitle",name:globalize.translate("OriginalTitle"),size:getColumnSize("OriginalTitle"),sortBy:getOriginalTitleSortOption()?.value,viewTypes:"datagrid"})}switch(itemType){case"":case"Folder":case"Movie":case"Series":case"Season":case"Episode":case"BoxSet":case"Trailer":case"Audio":case"MusicAlbum":case"MusicArtist":case"MusicGenre":case"MusicVideo":case"Playlist":case"Video":case"Game":case"Book":case"Genre":case"GameGenre":case"Person":case"GameSystem":case"Photo":case"PhotoAlbum":case"TvChannel":case"Studio":case"Channel":case"UserView":case"Tag":fields.push({id:"SortName",name:globalize.translate("SortName"),size:getColumnSize("SortName"),sortBy:this.getNameSortOption(itemType,apiClient)?.value,viewTypes:"datagrid"})}switch(itemType){case"":case"Movie":case"Episode":case"Trailer":case"Audio":case"MusicVideo":case"Video":case"Game":case"Photo":case"Book":case"Playlist":fields.push({id:"Filename",name:globalize.translate("FileName"),size:getColumnSize("Filename"),sortBy:getFileSortOption()?.value}),fields.push({id:"Path",name:globalize.translate("Path"),size:getColumnSize("Path"),sortBy:getFileSortOption()?.value,viewTypes:"datagrid"})}switch(itemType){case"":case"Audio":case"MusicAlbum":case"MusicVideo":fields.push({id:"Artist",name:globalize.translate("Artist"),size:getColumnSize("Artist"),sortBy:getArtistSortOption()?.value,viewTypes:"datagrid",defaultVisible:"datagrid"}),fields.push({id:"AlbumArtist",name:globalize.translate("AlbumArtist"),size:getColumnSize("AlbumArtist"),sortBy:getAlbumArtistSortOption()?.value,viewTypes:"datagrid",defaultVisible:"datagrid"}),fields.push({id:"Composer",name:globalize.translate("Composer"),size:getColumnSize("Composer"),sortBy:getComposerSortOption()?.value,viewTypes:"datagrid",defaultVisible:"datagrid"})}switch(itemType){case"":case"Audio":fields.push({id:"Album",name:globalize.translate("Album"),size:getColumnSize("Album"),sortBy:getAlbumSortOption()?.value,viewTypes:"datagrid",defaultVisible:"datagrid"})}switch(itemType){case"":case"Movie":case"Series":case"Season":case"Episode":case"BoxSet":case"Trailer":case"Audio":case"MusicAlbum":case"MusicVideo":case"Video":case"Game":case"Book":case"Photo":case"Program":case"TvChannel":fields.push({id:"CommunityRating",name:getCommunityRatingOptionName(itemType),size:getColumnSize("CommunityRating"),sortBy:getCommunityRatingSortOption(itemType)?.value,defaultVisible:"datagrid"})}switch(itemType){case"":case"Movie":case"Series":case"Season":case"Episode":case"BoxSet":case"Trailer":case"MusicAlbum":case"MusicVideo":case"Video":case"Game":case"Book":case"Photo":case"Program":case"TvChannel":fields.push({id:"CriticRating",name:globalize.translate("CriticRating"),size:getColumnSize("CriticRating"),sortBy:getCriticRatingSortOption()?.value,defaultVisible:"datagrid"})}switch(itemType){case"":case"Movie":case"Series":case"Season":case"Episode":case"BoxSet":case"Trailer":case"Audio":case"MusicAlbum":case"MusicVideo":case"Playlist":case"Video":case"Game":case"Book":case"Photo":case"Program":case"TvChannel":fields.push({id:"OfficialRating",name:globalize.translate("ParentalRating"),size:getColumnSize("OfficialRating"),sortBy:getParentalRatingSortOption()?.value,defaultVisible:"datagrid"})}switch(itemType){case"":case"Movie":case"Series":case"Season":case"Episode":case"BoxSet":case"Trailer":case"Audio":case"MusicAlbum":case"MusicVideo":case"Video":case"Game":case"Book":case"Person":case"Photo":case"Program":{let defaultVisible;switch(itemType){case"Season":case"Episode":case"Audio":case"MusicAlbum":case"MusicVideo":case"Video":case"Game":case"Book":case"Person":case"Photo":defaultVisible="datagrid";break;case"BoxSet":case"Playlist":break;default:defaultVisible="*"}fields.push({id:"ProductionYear",name:globalize.translate("Year"),size:getColumnSize("ProductionYear"),sortBy:getProductionYearSortOption()?.value,defaultVisible:defaultVisible});break}}switch(itemType){case"":case"Movie":case"Series":case"Season":case"Episode":case"Trailer":case"Audio":case"MusicAlbum":case"MusicVideo":case"Video":case"Game":case"Book":case"Person":case"Photo":case"Program":fields.push({id:"PremiereDate",name:globalize.translate("ReleaseDate"),size:getColumnSize("Date"),sortBy:getReleaseDateSortOption()?.value,viewTypes:"datagrid",defaultVisible:"datagrid"})}switch(itemType){case"":case"Movie":case"Episode":case"Trailer":case"MusicVideo":case"Video":case"Audio":case"MusicAlbum":case"Playlist":case"Series":case"Season":fields.push({id:"Runtime",name:globalize.translate("Runtime"),size:getColumnSize("Runtime"),sortBy:getRuntimeSortOption()?.value,defaultVisible:"datagrid"})}switch(itemType){case"":case"Folder":case"Movie":case"Series":case"Season":case"Episode":case"Trailer":case"Audio":case"MusicAlbum":case"MusicArtist":case"MusicVideo":case"Playlist":case"Video":case"Game":case"Book":case"Person":case"GameSystem":case"Photo":case"Program":fields.push({id:"Genres",name:globalize.translate("Genres"),size:getColumnSize("Genres"),sortBy:null})}switch(itemType){case"":case"Folder":case"Movie":case"Series":case"Season":case"Episode":case"Trailer":case"Audio":case"MusicAlbum":case"MusicArtist":case"MusicVideo":case"Playlist":case"Video":case"Game":case"Book":case"Person":case"GameSystem":case"Photo":case"Program":case"TvChannel":fields.push({id:"Tags",name:globalize.translate("Tags"),size:getColumnSize("Tags"),sortBy:null}),fields.push({id:"Studios",name:globalize.translate("Studios"),size:getColumnSize("Studios"),sortBy:null})}switch(itemType){case"":case"Movie":case"Trailer":case"Series":case"MusicVideo":case"Video":fields.push({id:"Tagline",name:globalize.translate("Tagline"),size:getColumnSize("Path"),sortBy:null})}switch(itemType){case"":case"Folder":case"Movie":case"Series":case"Season":case"Episode":case"Trailer":case"Audio":case"MusicAlbum":case"MusicArtist":case"MusicVideo":case"Playlist":case"Video":case"Game":case"Book":case"Person":case"GameSystem":case"Photo":case"Program":fields.push({id:"Overview",name:globalize.translate("Overview"),size:getColumnSize("Path"),sortBy:null})}switch(itemType){case"":case"Movie":case"Episode":case"Trailer":case"Audio":case"MusicVideo":case"Video":case"Game":case"Photo":case"Book":fields.push({id:"Container",name:globalize.translate("Container"),size:getColumnSize("Container"),sortBy:getContainerSortOption()?.value})}switch(itemType){case"":case"Movie":case"Episode":case"Trailer":case"MusicVideo":case"Video":case"TvChannel":case"Program":case"Photo":fields.push({id:"Resolution",name:globalize.translate("Resolution"),size:getColumnSize("Resolution"),sortBy:getResolutionSortOption()?.value})}switch(itemType){case"":case"Movie":case"Episode":case"Trailer":case"Audio":case"MusicVideo":case"Video":fields.push({id:"Bitrate",name:globalize.translate("Bitrate"),size:getColumnSize("Bitrate"),sortBy:getBitrateSortOption()?.value})}switch(itemType){case"":case"Movie":case"Episode":case"Trailer":case"Audio":case"MusicVideo":case"Video":case"Game":case"Photo":case"Book":fields.push({id:"Size",name:globalize.translate("Size"),size:getColumnSize("Size"),sortBy:getSizeSortOption(itemType)?.value})}switch(itemType){case"":case"Movie":case"Episode":case"Trailer":case"MusicVideo":case"Video":fields.push({id:"Video3DFormat",name:"3D",size:getColumnSize("Video3DFormat"),sortBy:null,viewTypes:"datagrid"})}switch(itemType){case"":case"Movie":case"Episode":case"Trailer":case"Audio":case"MusicVideo":case"Video":case"Game":case"Book":case"TvChannel":case"Series":fields.push({id:"DatePlayed",name:globalize.translate("DatePlayed"),size:getColumnSize("Date"),sortBy:getDatePlayedSortOption(itemType)?.value,viewTypes:"datagrid"})}switch(itemType){case"":case"Movie":case"Episode":case"Trailer":case"Audio":case"MusicVideo":case"Video":case"Game":case"Book":case"TvChannel":fields.push({id:"PlayCount",name:globalize.translate("Plays"),size:getColumnSize("PlayCount"),sortBy:getPlayCountSortOption()?.value,viewTypes:"datagrid"})}switch(itemType){case"":case"Movie":case"Series":case"Season":case"Episode":case"Trailer":case"Audio":case"MusicVideo":case"Video":case"Game":case"Book":case"TvChannel":case"MusicAlbum":"MusicAlbum"===itemType&&"audiobooks"!==options.parentItem?.CollectionType||fields.push({id:"Played",name:globalize.translate("Played"),gridDisplayName:'<i title="'+globalize.translate("Played")+'" class="md-icon dataGridItemCell-icon">&#xe86c;</i>',size:getColumnSize("Icon"),sortBy:null,gridColumnType:"button",viewTypes:"datagrid",defaultVisible:"datagrid",center:!0})}switch(itemType){case"":case"Folder":case"Movie":case"Series":case"Season":case"Episode":case"BoxSet":case"Trailer":case"Audio":case"MusicAlbum":case"MusicArtist":case"MusicVideo":case"Playlist":case"Video":case"Game":case"Book":case"Person":case"Photo":case"TvChannel":fields.push({id:"IsFavorite",name:globalize.translate("Favorite"),gridDisplayName:'<i title="'+globalize.translate("Favorite")+'" class="md-icon dataGridItemCell-icon autortl">&#xe87d;</i>',size:getColumnSize("Icon"),sortBy:null,gridColumnType:"button",viewTypes:"datagrid",defaultVisible:"datagrid",center:!0})}switch("User"===itemType&&fields.push({id:"HasPassword",name:globalize.translate("Password"),size:getColumnSize("Icon"),sortBy:null,gridColumnType:"button",viewTypes:"datagrid",defaultVisible:"datagrid"}),apiClient?.isMinServerVersion("4.8.0.50")&&"User"===itemType&&fields.push({id:"HasProfilePin",name:globalize.translate("TitleProfilePin"),size:getColumnSize("Icon"),sortBy:null,gridColumnType:"button",viewTypes:"datagrid",defaultVisible:"datagrid"}),"User"===itemType&&fields.push({id:"EnableRemoteAccess",name:globalize.translate("RemoteAccess"),size:getColumnSize("Icon"),sortBy:null,gridColumnType:"icon",viewTypes:"datagrid",defaultVisible:"datagrid"}),"User"===itemType&&fields.push({id:"IsDisabled",name:globalize.translate("Disabled"),size:getColumnSize("Icon"),sortBy:null,gridColumnType:"icon",viewTypes:"datagrid",defaultVisible:"datagrid"}),itemType){case"":case"Movie":case"Series":case"Season":case"Episode":case"BoxSet":case"Trailer":case"Audio":case"MusicAlbum":case"MusicArtist":case"MusicVideo":case"Video":case"Game":case"Book":case"Person":case"Photo":case"TvChannel":case"Playlist":case"User":fields.push({id:"DateCreated",name:globalize.translate("DateAdded"),size:getColumnSize("Date"),sortBy:getDateAddedSortOption(itemType,apiClient)?.value,viewTypes:"datagrid"});break;case"ApiKey":fields.push({id:"DateCreated",name:globalize.translate("DateAdded"),size:getColumnSize("Date"),sortBy:getDateAddedSortOption(itemType,apiClient)?.value,defaultVisible:"*"})}"Device"===itemType&&apiClient?.isMinServerVersion("4.8.0.47")&&fields.push({id:"IpAddress",name:globalize.translate("IpAddress"),size:getColumnSize("IpAddress"),sortBy:getIpAddressSortOption(itemType,apiClient)?.value,defaultVisible:"datagrid"}),"Log"===itemType&&fields.push({id:"DateModified",name:globalize.translate("DateModified"),size:getColumnSize("DateTime"),sortBy:null,defaultVisible:"*"}),"Log"===itemType&&fields.push({id:"Size",name:globalize.translate("Size"),size:getColumnSize("Size"),sortBy:getSizeSortOption(itemType)?.value,defaultVisible:"datagrid"}),"Plugin"===itemType&&fields.push({id:"Version",name:globalize.translate("Version"),size:getColumnSize("Version"),sortBy:null,defaultVisible:"*"});for(let i=0,length=fields.length;i<length;i++){var field=fields[i];field.gridDisplayName||field.name&&field.size&&field.name.length>field.size&&(field.size=Math.max(field.name.length,field.size))}return fields},BaseItemController.prototype.getNameSortOption=function(itemType,apiClient){switch(itemType){case"ApiKey":case"Log":case"Plugin":case"ActivityLogEntry":return null;case"Device":return apiClient?.isMinServerVersion("4.8.0.47")?{name:globalize.translate("Title"),value:"SortName,DateLastActivity",defaultSortOrder:"Ascending"}:null;case"User":return apiClient?.isMinServerVersion("4.8.0.47")?{name:globalize.translate("Title"),value:"SortName",defaultSortOrder:"Ascending"}:null;default:return{name:globalize.translate("Title"),value:"SortName",defaultSortOrder:"Ascending"}}},BaseItemController.prototype.getDefaultSorting=function(options){var itemType=options.itemType||"",apiClient=options.apiClient;let field;switch(itemType){case"Episode":field=getSeriesSortOption(itemType);break;case"Program":field=getStartDateSortOption(itemType);break;case"Device":field=getDateLastActiveSortOption(itemType,apiClient)}return(field=field||this.getNameSortOption(itemType,apiClient))?{sortBy:field.value,sortOrder:field.defaultSortOrder}:null},BaseItemController.prototype.getSortMenuOptions=function(options){var sortBy=[],itemType=options.itemType||"",apiClient=options.apiClient,options=options.availableFieldIds;switch(itemType){case"PlaylistItem":return getPlaylistOrCollectionSortMenuOptions("Playlist");case"BoxSetItem":return apiClient.isMinServerVersion("4.8.0.16")?getPlaylistOrCollectionSortMenuOptions("BoxSet"):[]}if((options.Name||options.SortName)&&(option=this.getNameSortOption(itemType,apiClient))&&sortBy.push(option),options.Album){let option=getAlbumSortOption();option&&sortBy.push(option)}if(options.AlbumArtist){let option=getAlbumArtistSortOption();option&&sortBy.push(option)}if(options.Artist){let option=getArtistSortOption();option&&sortBy.push(option)}if(options.StartDate){let option=getStartDateSortOption(itemType);option&&sortBy.push(option)}if(options.Filename||options.Path){let option=getFileSortOption();option&&sortBy.push(option)}if(options.Bitrate){let option=getBitrateSortOption();option&&sortBy.push(option)}if(options.CommunityRating){let option=getCommunityRatingSortOption(itemType);option&&sortBy.push(option)}if(options.Composer){let option=getComposerSortOption();option&&sortBy.push(option)}if(options.Container){let option=getContainerSortOption();option&&sortBy.push(option)}if(options.CriticRating){let option=getCriticRatingSortOption();option&&sortBy.push(option)}if(options.DateCreated){let option=getDateAddedSortOption(itemType,apiClient);option&&sortBy.push(option)}if(options.LastActivityDate||options.LastActivityDateRelative){let option=getDateLastActiveSortOption(itemType,apiClient);option&&sortBy.push(option)}if(options.IpAddress){let option=getIpAddressSortOption(itemType,apiClient);option&&sortBy.push(option)}var option=getDateLastEpisodeAddedSortOption(itemType);if(option&&sortBy.push(option),(option=getDateLastEpisodeAiredSortOption(itemType,apiClient))&&sortBy.push(option),options.DatePlayed){let option=getDatePlayedSortOption(itemType);option&&sortBy.push(option)}if((option=getFavoritesSortOption(itemType))&&sortBy.push(option),options.OfficialRating){let option=getParentalRatingSortOption();option&&sortBy.push(option)}if(options.PlayCount){let option=getPlayCountSortOption();option&&sortBy.push(option)}if(options.ProductionYear){let option=getProductionYearSortOption();option&&sortBy.push(option)}if(options.PremiereDate){let option=getReleaseDateSortOption();option&&sortBy.push(option)}if(options.Resolution){let option=getResolutionSortOption();option&&sortBy.push(option)}if(options.Runtime){let option=getRuntimeSortOption();option&&sortBy.push(option)}if(options.SeriesName){let option=getSeriesSortOption(itemType);option&&sortBy.push(option)}if(options.Size){let option=getSizeSortOption(itemType);option&&sortBy.push(option)}if(options.Number){let option=getNumberSortOption(itemType);option&&sortBy.push(option)}return(option=getRandomSortOption(itemType,apiClient))&&sortBy.push(option),sortBy.sort(compareByName),sortBy},BaseItemController.prototype.createListHelper=function(apiClient,type,name,itemIds){return loading.show(),apiClient.createList(apiClient.getCurrentUserId(),type,name,itemIds).then(function(result){loading.hide();var newListName=result.Name||name;return onAddedToList(type,result.Id),notifyAddedToList(newListName,type,result.ItemAddedCount),Promise.resolve()})},BaseItemController.prototype.addToListHelper=function(list,itemIds){let apiClient=connectionManager.getApiClient(list.ServerId),userId=apiClient.getCurrentUserId();return confirmDuplicatesIfNeeded(apiClient,userId,list.Type,list.Id,itemIds).then(function(result){loading.show();result="skip"===result;return apiClient.addToList(userId,list.Type,list.Id,itemIds,result).then(function(result){loading.hide();var type="BoxSet"===list.Type?"Collection":"Playlist";onAddedToList(type,list.Id),result.ItemAddedCount&&notifyAddedToList(list.Name,type,result.ItemAddedCount)})})},BaseItemController.prototype.executeCommand=function(command,items,options){return rejectNoSupportedCommands()};export default BaseItemController;