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="";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"+globalize.translate("FollowingFilesWillBeDeleted")+"

";for(let i=0,length=deleteInfo.Paths.length;i'+deleteInfo.Paths[i]+"";msg+='

'+globalize.translate("AreYouSureToContinue")+"

"}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'+lastUserName+"":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',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:'',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:'',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;ifield.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&¬ifyAddedToList(list.Name,type,result.ItemAddedCount)})})},BaseItemController.prototype.executeCommand=function(command,items,options){return rejectNoSupportedCommands()};export default BaseItemController;