define(["exports","./../globalize.js","./../../emby-apiclient/connectionmanager.js","./../../loading/loading.js","./../dataformatter.js","./../servicelocator.js","./../playback/playbackmanager.js","./../../layoutmanager.js","./../../emby-apiclient/apiclient.js","./../datetime.js"],function(_exports,_globalize,_connectionmanager,_loading,_dataformatter,_servicelocator,_playbackmanager,_layoutmanager,_apiclient,_datetime){function showToast(options){return Emby.importModule("./modules/toast/toast.js").then(function(toast){return toast(options)})}function showConfirm(options){return Emby.importModule("./modules/common/dialogs/confirm.js").then(function(confirm){return confirm(options)})}function showAlertAndReject(options,response){function onDone(){return Promise.reject(response)}return function(options){return Emby.importModule("./modules/common/dialogs/alert.js").then(function(alert){return alert(options)})}(options).then(onDone,onDone)}function rejectNoSupportedCommands(){return Promise.reject("nocommands")}function rejectNoItems(){return Promise.reject("noitems")}function BaseItemController(){}function canEditInternal(item){if(!item.Id)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"Log":case"Timer":case"SeriesTimer":case"Plugin":case"Server":case"ItemImage":case"Recording":case"ActivityLogEntry":case"ActiveSession":return!1;case"ChannelManagementInfo":return item.ManagementId&&item.ManagementId!==item.Id;default:return!_apiclient.default.isLocalItem(item)}}function mapToPlaylistItemId(item){return item.PlaylistItemId}Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.default=void 0,BaseItemController.prototype.getTypeNames=function(){return[]},BaseItemController.prototype.getDisplayName=function(item,options){options=options||{};var number,nameSeparator,name,itemType=item.Type;switch(itemType){case"Timer":name=(item=item.ProgramInfo||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+" "+item.ChannelNumber:name;default:name=item.Name||item.DisplayTitle||""}return!1!==options.enableSpecialEpisodePrefix&&0===item.ParentIndexNumber&&"Episode"===itemType?name=_globalize.default.translate("ValueSpecialEpisodeName",name):null==item.IndexNumber||!1===options.includeIndexNumber||"Episode"!==itemType&&"Program"!==itemType?null!=item.IndexNumber&&!1!==options.includeIndexNumber&&item.SupportsResume&&"Audio"===itemType&&(nameSeparator=" - ",number=item.IndexNumber)&&(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&&(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"].includes(itemType)||_apiclient.default.isLocalItem(item)||"Photo"===item.MediaType||"Device"===itemType||"User"===itemType||"Plugin"===itemType||"Server"===itemType||"ActivityLogEntry"===itemType||"ItemImage"===itemType||"LiveTVTunerDevice"===itemType||"LiveTVGuideSource"===itemType||"ChannelManagementInfo"===itemType||!item.Id)&&(!user||!!user.Policy.IsAdministrator&&canEditInternal(item))},BaseItemController.prototype.removeFromPlayQueue=function(items,options){return _playbackmanager.default.removeFromPlaylist(items.map(mapToPlaylistItemId))},BaseItemController.prototype.canRemoveFromCollection=function(item){return item.CollectionId&&this.canAddToCollection(item)},BaseItemController.prototype.canAddToPlaylist=function(item){var mediaType,itemType=item.Type;return"Program"!==itemType&&"TvChannel"!==itemType&&"Timer"!==itemType&&"SeriesTimer"!==itemType&&"VirtualFolder"!==itemType&&"ActiveSession"!==itemType&&("Recording"!==itemType||"Completed"===item.Status)&&"Photo"!==(mediaType=item.MediaType)&&"Game"!==mediaType&&"livetv"!==(mediaType=item.CollectionType)&&"playlists"!==mediaType&&!_apiclient.default.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.default.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":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":return!1}return!("Virtual"===item.LocationType&&!item.IsFolder||!user.Policy.EnableMediaConversion||_apiclient.default.isLocalItem(item))},BaseItemController.prototype.getEditCommandText=function(item){switch(item.Type){case"Timer":case"SeriesTimer":case"User":case"VirtualFolder":case"LiveTVTunerDevice":case"LiveTVGuideSource":case"ChannelManagementInfo":return _globalize.default.translate("Edit");default:return _globalize.default.translate("HeaderEditMetadata")}},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 function(item,options){var view=(options=options.positionTo).closest(".page"),refreshLibrary=!!options&&"true"===view.getAttribute("data-refreshlibrary");return require(["medialibraryeditor"]).then(function(responses){return(new responses[0]).show({refresh:refreshLibrary,library:item})})}(items[0],options);default:return function(items){return require(["metadataEditor"]).then(function(responses){var responses=new responses[0],item=items[0],apiClient=_connectionmanager.default.getApiClient(item);return responses.show(item.Id,apiClient.serverId())})}(items)}},BaseItemController.prototype.canEdit=function(item,user){return canEditInternal(item)&&user.Policy.IsAdministrator},BaseItemController.prototype.canSync=function(item,user){return!(user&&!user.Policy.EnableContentDownloading||_apiclient.default.isLocalItem(item))&&item.SupportsSync},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.default.isLocalItem(item))},BaseItemController.prototype.canShare=function(item,user){if(!user)return!1;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"Recording":return!1;default:return item.Id?!_apiclient.default.isLocalItem(item)&&user.Policy.EnablePublicSharing&&"Photo"===item.Type&&_servicelocator.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.default.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.Policy.IsAdministrator},BaseItemController.prototype.canEditSubtitles=function(item,user){if(function(item){var itemType=item.Type;return"Video"===item.MediaType&&"TvChannel"!==itemType&&"Program"!==itemType&&"Virtual"!==item.LocationType&&("Recording"!==itemType||"Completed"===item.Status)||"Audio"===item.MediaType}(item)){if(user.Policy.EnableSubtitleDownloading||user.Policy.EnableSubtitleManagement)return canEditInternal(item);if(null==user.Policy.EnableSubtitleDownloading&&null==user.Policy.EnableSubtitleManagement)return canEditInternal(item)&&user.Policy.IsAdministrator}return!1},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":return!1}switch(item.CollectionType){case"livetv":case"boxsets":return!1}return!(!user.Policy.IsAdministrator||"Timer"===itemType||"SeriesTimer"===itemType||"Program"===itemType||"TvChannel"===itemType||"Recording"===itemType&&"Completed"!==item.Status||_apiclient.default.isLocalItem(item))},BaseItemController.prototype.canDelete=function(item,user){if(item.CanDelete)return!0;var itemType=item.Type;switch(itemType){case"Server":case"ItemImage":return!0;case"Timer":case"SeriesTimer":case"Recording":return null==user?void 0: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.default.getApiClient(item).getCurrentUserId())return!0;if(user.Policy.IsAdministrator&&"Device"===item.Type&&item.Id!==_connectionmanager.default.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":return!1;default:return!0}};var defaultIconsByItemType={MusicAlbum:"",MusicArtist:"",Person:"",Channel:"",Device:"",ActiveSession:"",User:"",Server:"",SelectServer:"",ManualLogin:"",Downloads:"",CollectionFolder:"",UserView:"",ForgotPassword:"",AddServer:"",AddVirtualFolder:"",ActivityLogEntry:"",Log:"",ApiKey:"",Tag:"",ItemImage:"",PluginCatalogItem:"",TvChannel:"",ChannelManagementInfo:"",RemoteSubtitle:"",LiveTVTunerDevice:"",LiveTVGuideSource:"",Playlist:""},defaultIconsByCollectionType={movies:"",music:"",audiobooks:"",homevideos:"",photos:"",livetv:"",tvshows:"",games:"",trailers:"",musicvideos:"",books:"",channels:"",playlists:"",boxsets:""},defaultIconsByStreamType={Audio:"",Video:"",Subtitle:"",EmbeddedImage:"",Lyrics:"e0c9;"},defaultIconsByMediaType={Video:"",Audio:"",Photo:"",Book:"",Game:""},DeleteMessages=(BaseItemController.prototype.getDefaultIcon=function(item){var icon,collectionType=item.CollectionType;return collectionType&&(icon=defaultIconsByCollectionType[collectionType])||(collectionType=item.Type)&&(icon=defaultIconsByItemType[collectionType])||(collectionType=item.StreamType)&&("Lyrics"===item.SubtitleType&&(collectionType="Lyrics"),icon=defaultIconsByStreamType[collectionType])||(collectionType=item.MediaType)&&(icon=defaultIconsByMediaType[collectionType])?icon:""},{Item:{single:{text:_globalize.default.translate("ConfirmDeleteItem")+"\n\n"+_globalize.default.translate("AreYouSureToContinue"),title:_globalize.default.translate("HeaderDeleteItem")},plural:{text:_globalize.default.translate("ConfirmDeleteItems")+"\n\n"+_globalize.default.translate("AreYouSureToContinue"),title:_globalize.default.translate("HeaderDeleteItems")}},Device:{single:{text:_globalize.default.translate("DeleteDeviceConfirmation"),title:_globalize.default.translate("HeaderDeleteDevice")},plural:{text:_globalize.default.translate("DeleteDeviceConfirmation"),title:_globalize.default.translate("HeaderDeleteDevice")}},Plugin:{single:{text:_globalize.default.translate("UninstallPluginConfirmation"),title:_globalize.default.translate("HeaderUninstallPlugin"),confirmText:_globalize.default.translate("Uninstall")},plural:{text:_globalize.default.translate("UninstallPluginConfirmation"),title:_globalize.default.translate("HeaderUninstallPlugin"),confirmText:_globalize.default.translate("Uninstall")}},Server:{single:{text:"DeleteServerConfirmation",title:_globalize.default.translate("HeaderDeleteServer")},plural:{text:"DeleteServerConfirmation",title:_globalize.default.translate("HeaderDeleteServer")}},User:{single:{text:"DeleteUserConfirmation",title:_globalize.default.translate("HeaderDeleteUser")},plural:{text:"DeleteUserConfirmation",title:_globalize.default.translate("HeaderDeleteUser")}},LiveTVGuideSource:{single:{text:"MessageConfirmDeleteGuideProvider",title:_globalize.default.translate("HeaderDeleteProvider")},plural:{text:"MessageConfirmDeleteGuideProvider",title:_globalize.default.translate("HeaderDeleteProvider")}},LiveTVTunerDevice:{single:{text:"MessageConfirmDeleteTunerDevice",title:_globalize.default.translate("HeaderDeleteDevice")},plural:{text:"MessageConfirmDeleteTunerDevice",title:_globalize.default.translate("HeaderDeleteDevice")}},ApiKey:{single:{text:"MessageConfirmRevokeApiKey",title:_globalize.default.translate("HeaderConfirmRevokeApiKey")},plural:{text:"MessageConfirmRevokeApiKey",title:_globalize.default.translate("HeaderConfirmRevokeApiKey")}},ItemImage:{single:{text:"ConfirmDeleteImage"},plural:{text:"ConfirmDeleteImage"}},Timer:{single:{text:"MessageConfirmRecordingCancellation",title:_globalize.default.translate("HeaderCancelRecording"),confirmText:_globalize.default.translate("HeaderCancelRecording"),cancelText:_globalize.default.translate("HeaderKeepRecording"),notification:"RecordingCancelled"},plural:{text:"MessageConfirmRecordingCancellation",title:_globalize.default.translate("HeaderCancelRecording"),confirmText:_globalize.default.translate("HeaderCancelRecording"),cancelText:_globalize.default.translate("HeaderKeepRecording"),notification:"RecordingCancelled"}},Recording:{single:{text:"MessageConfirmRecordingCancellation",title:_globalize.default.translate("HeaderCancelRecording"),confirmText:_globalize.default.translate("HeaderCancelRecording"),cancelText:_globalize.default.translate("HeaderKeepRecording"),notification:"RecordingCancelled"},plural:{text:"MessageConfirmRecordingCancellation",title:_globalize.default.translate("HeaderCancelRecording"),confirmText:_globalize.default.translate("HeaderCancelRecording"),cancelText:_globalize.default.translate("HeaderKeepRecording"),notification:"RecordingCancelled"}},SeriesTimer:{single:{text:"MessageConfirmRecordingCancellation",title:_globalize.default.translate("HeaderCancelSeries"),confirmText:_globalize.default.translate("HeaderCancelSeries"),cancelText:_globalize.default.translate("HeaderKeepSeries"),notification:"SeriesCancelled"},plural:{text:"MessageConfirmRecordingCancellation",title:_globalize.default.translate("HeaderCancelSeries"),confirmText:_globalize.default.translate("HeaderCancelSeries"),cancelText:_globalize.default.translate("HeaderKeepSeries"),notification:"SeriesCancelled"}},VirtualFolder:{single:{text:"MessageAreYouSureYouWishToRemoveLibrary",title:_globalize.default.translate("HeaderRemoveLibrary"),confirmText:_globalize.default.translate("Remove")},plural:{text:"MessageAreYouSureYouWishToRemoveLibrary",title:_globalize.default.translate("HeaderRemoveLibrary"),confirmText:_globalize.default.translate("Remove")}}});function filterItemsByMethod(instance,items,method,user,limit){for(var list=[],i=0,length=items.length;i
'+_globalize.default.translate("AreYouSureToContinue")+"
"}else msg=_globalize.default.translate("DeleteItemConfirmation",item.Name);return msg}(deleteInfo,item),confirmText:_globalize.default.translate("Delete"),primary:"cancel",centerText:!1})})},BaseItemController.prototype.onItemsDeleted=function(deleteOptions,deleteResult){return this.showAfterDeleteNotification(deleteOptions,deleteResult),Emby.importModule("./modules/approuter.js").then(function(appRouter){var parentId,item;return"back"===deleteOptions.navigate?appRouter.back():deleteOptions.navigate&&(parentId=(item=deleteOptions.items[0]).SeasonId||item.SeriesId||item.ParentId,item=item.ServerId,parentId?appRouter.showItem(parentId,item):appRouter.goHome()),Promise.resolve(deleteResult)})},BaseItemController.prototype.deleteItems=function(options){var instance=this,optionsClone=Object.assign({},options);return _connectionmanager.default.getApiClient(optionsClone.items[0]).getCurrentUser().then(function(user){user=filterItemsByMethod(instance,optionsClone.items,"canDelete",user);return user.length?(optionsClone.items=user,(!1===(null==options?void 0:options.confirm)?Promise.resolve():instance.showDeleteConfirmation(options)).then(function(deleteConfirmationResult){return instance.deleteItemsInternal(optionsClone,deleteConfirmationResult).then(function(result){return _loading.default.hide(),instance.onItemsDeleted(options,result)})})):rejectNoItems()})},BaseItemController.prototype.getItemTypeName=function(type){if(!type)return null;switch(type){case"Genre":case"MusicGenre":case"GameGenre":return _globalize.default.translate("Genre");case"BoxSet":return _globalize.default.translate("Collection");case"Audio":return _globalize.default.translate("Song");case"MusicArtist":return _globalize.default.translate("Artist");case"MusicAlbum":return _globalize.default.translate("Album");case"MusicVideo":return _globalize.default.translate("HeaderMusicVideo");case"TvChannel":return _globalize.default.translate("Channel");case"LiveTvProgram":return _globalize.default.translate("Program");case"ApiKey":return _globalize.default.translate("HeaderApiKey")}return _globalize.default.translate(type)},BaseItemController.prototype.getPluralItemTypeName=function(type){switch(type){case"Genre":case"MusicGenre":case"GameGenre":return _globalize.default.translate("Genres");case"BoxSet":return _globalize.default.translate("Collections");case"Audio":return _globalize.default.translate("Songs");case"MusicArtist":return _globalize.default.translate("Artists");case"MusicAlbum":return _globalize.default.translate("Albums");case"MusicVideo":return _globalize.default.translate("HeaderMusicVideos");case"Person":return _globalize.default.translate("People");case"TvChannel":return _globalize.default.translate("Channels");case"Series":return _globalize.default.translate("Shows");case"LiveTvProgram":return _globalize.default.translate("Programs");case"ApiKey":return _globalize.default.translate("HeaderApiKeys")}return _globalize.default.translate(type+"s")},BaseItemController.prototype.showAfterDeleteNotification=function(deleteOptions,deleteResult){var deleteOptions=deleteOptions.items,info=this.getDeleteMessages(deleteOptions[0])||DeleteMessages.Item,info=(1