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

1 line
36 KiB
JavaScript

define(["exports","./../dom.js","./../browser.js","./../layoutmanager.js","./../common/globalize.js","./../common/datetime.js","./../common/textencoding.js","./../mediainfo/mediainfo.js","./../indicators/indicators.js","./../focusmanager.js","./../common/itemmanager/itemmanager.js","./../emby-apiclient/connectionmanager.js","./../common/servicelocator.js","./../imageloader/imageloader.js","./../shortcuts.js","./../common/playback/playbackmanager.js","./../emby-elements/userdatabuttons/emby-ratingbutton.js","./../emby-elements/userdatabuttons/emby-playstatebutton.js","./../common/dataformatter.js","./../emby-elements/emby-button/emby-button.js"],function(_exports,_dom,_browser,_layoutmanager,_globalize,_datetime,_textencoding,_mediainfo,_indicators,_focusmanager,_itemmanager,_connectionmanager,_servicelocator,_imageloader,_shortcuts,_playbackmanager,_embyRatingbutton,_embyPlaystatebutton,_dataformatter,_embyButton){Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.default=void 0,require(["css!modules/listview/listview.css","embyProgressBarStyle"]);var supportsNativeLazyLoading="loading"in HTMLImageElement.prototype,decodingAttribute=_dom.default.supportsAsyncDecodedImages()?' decoding="async"':"",supportsObjectFit=CSS.supports("object-fit","contain")&&!_browser.default.edge,enableFocusTransfrom=_dom.default.allowFocusScaling(),secondaryTextClass=CSS.supports("color","var(--fake-var)")?"secondaryText":"";function getTextLinesHtml(textlines,options){var html="",isFirst=!0,largeHeading=options.isLargeStyle,cssClass="listItemBodyText listItemBodyText-nowrap",firstTextCssClass=cssClass;options.largeFont&&(cssClass+=" listItemBodyText-lf",largeHeading||(firstTextCssClass+=" listItemBodyText-lf"));for(var i=0,length=textlines.length;i<length;i++){var text=textlines[i];text&&(html=(html+=isFirst?largeHeading?'<h3 class="'+firstTextCssClass+'">':'<div class="'+firstTextCssClass+'">':'<div class="'+cssClass+" "+options.listItemBodyTextSecondaryClass+'">')+text+(isFirst&&largeHeading?"</h3>":"</div>"),isFirst=!1)}return html}function getId(item){return item.Id}function getTextActionButton(options,item,text,serverId,parentId,isSameItemAsCard){return text=text||_itemmanager.default.getDisplayName(item),!_layoutmanager.default.tv&&!1!==options.textLinks&&(item.Id||isSameItemAsCard)?'<button title="'+(text=_textencoding.default.htmlEncode(text))+'" title="'+text+'" '+(isSameItemAsCard?"":_shortcuts.default.getShortcutAttributesHtml(item,{serverId:serverId,parentId:parentId}))+' type="button"'+(!options.draggable||isSameItemAsCard?"":' draggable="true"')+' class="itemAction textActionButton listItem-textActionButton emby-button button-link" data-action="link">'+text+"</button>":_textencoding.default.htmlEncode(text)}function isUsingLiveTvNaming(itemType){return"Program"===itemType||"Timer"===itemType||"Recording"===itemType}function mapArtistsToTextButtons(item,artistItems,options){return artistItems.map(function(a){return a.Type="MusicArtist",a.IsFolder=!0,getTextActionButton(options,a,null,item.ServerId)}).join(", ")}function getListItemHtml(item,index,options){var fields,enableSideMediaInfo=options.enableSideMediaInfo,tagName=options.tagName,action=options.action,html="",downloadWidth=options.imageDownloadWidth,hoverPlayButtonRequested=!_layoutmanager.default.tv&&!1!==options.hoverPlayButton,enableHoverPlayButton=hoverPlayButtonRequested&&_playbackmanager.default.canPlay(item),itemType=item.Type,itemController=_itemmanager.default.getItemController(itemType),serverId=(html+="<div"+(options.tooltip?' title="'+_textencoding.default.htmlEncode(itemController.getDisplayName(item,{}))+'"':"")+' class="'+options.contentWrapperClass+'">',options.enableBottomOverview&&(html+='<div class="listItem-innerwrapper">'),item.ServerId),apiClient=serverId?_connectionmanager.default.getApiClient(serverId):null,fieldMap=(options.multiSelect&&(html+='<label title="'+options.multiSelectTitle+'" data-action="multiselect" class="chkListItemSelectContainer chkItemSelectContainer itemAction emby-checkbox-label"><input tabindex="-1" class="chkListItemSelect chkItemSelect emby-checkbox emby-checkbox-notext" is="emby-checkbox" type="checkbox" data-classes="true" /><span class="checkboxLabel chkListItemSelect-checkboxLabel"></span></label>'),options.fieldMap),listItemBodyTextTagName=(fieldMap.ItemCheckbox&&(checkbox=options.itemCheckbox,html+=checkbox=!item.Selected&&!1!==item.Disabled?checkbox:checkbox.replace('type="checkbox"','type="checkbox" checked')),options.treeButton&&(item.IsFolder?html+=options.treeButtonHtml:html+=options.disabledTreeButtonHtml),!1!==options.image&&(checkbox=options.showCurrentProgramImage?item.CurrentProgram||item:item.ProgramInfo||item,downloadWidth=_imageloader.default.getImageUrl(checkbox,apiClient,{width:downloadWidth,showChannelLogo:"channel"===options.imageSource,uiAspect:options.aspectInfo.aspect}),imgUrl=options.preferIcon?null:downloadWidth.imgUrl,imageContainerClass=options.imageContainerClass,imageClass="listItemImage",options.imageSize&&(imageClass+=" listItemImage-"+options.imageSize),options.roundImage&&(imageClass+=" listItemImage-round",imgUrl||(imageContainerClass+=" listItemImageContainer-round")),playOnImageClick=options.imagePlayButton&&!_layoutmanager.default.tv,options.playQueueIndicator&&item.PlaylistItemId&&(_playbackmanager.default.currentItem()||{}).PlaylistItemId===item.PlaylistItemId&&(imageContainerClass+=" playlistIndexIndicatorImage"),imageAction=playOnImageClick?"resume":action,(imgUrl||options.preferIcon||!1===options.defaultBackground)&&!options.defaultBackground||(imageContainerClass+=" defaultCardBackground"),styleRules=[],(color="Error"===item.Severity||"Fatal"===item.Severity||"Warn"===item.Severity?"background-color:#cc0000;color:#fff;":"")&&styleRules.push(color),styleRules.push("aspect-ratio:"+options.aspectInfo.aspectCss),html+='<div data-action="'+imageAction+'" class="'+imageContainerClass+'"'+(styleRules.length?' style="'+styleRules.join(";")+'"':"")+">",color=_indicators.default.getProgressBarHtml(item,{containerClass:"listItemProgressBar"}),imgUrl?(imageAction=downloadWidth.aspect?_imageloader.default.getShapeFromAspect(downloadWidth.aspect):_imageloader.default.getShape([item],options)||"square",imageContainerClass=_imageloader.default.getAspectFromShape(imageAction,options),imageClass+=" listItemImage-"+imageAction,(styleRules=_imageloader.default.getCoveredImageClass(checkbox,downloadWidth.aspect,imageContainerClass.aspect))&&(imageClass+=styleRules),2===options.lazy?supportsObjectFit?(html+='<img draggable="false" class="'+imageClass+'"'+decodingAttribute+' style="aspect-ratio:'+imageContainerClass.aspectCss+';" src="'+imgUrl+'" />',isImg=!0):html+='<div class="'+imageClass+'" style="aspect-ratio:'+imageContainerClass.aspectCss+";background-image:url("+imgUrl+');">':supportsNativeLazyLoading&&supportsObjectFit?(html+='<img draggable="false" class="'+imageClass+'" loading="lazy"'+decodingAttribute+' style="aspect-ratio:'+imageContainerClass.aspectCss+';" src="'+imgUrl+'" />',isImg=!0):html+='<div class="'+imageClass+' lazy" style="aspect-ratio:'+imageContainerClass.aspectCss+";background-image:url("+imgUrl+');">',color&&(html+=color),isImg||(html+="</div>")):((imageAction=!(imageAction=item.Icon)&&options.enableDefaultIcon?itemController.getDefaultIcon(item):imageAction)&&(checkbox=options.iconClass,item.iconClass&&(checkbox+=" "+item.iconClass),html+='<i class="'+checkbox+'">'+imageAction+"</i>"),color&&(html+=color)),options.iconSpacing||(downloadWidth=_indicators.default.getPlayedIndicatorHtml(item,options.indicatorClass))&&(html+=downloadWidth),enableHoverPlayButton&&(html+='<button tabindex="-1" type="button" is="paper-icon-button-light" class="listItemOverlayButton-hover listItemOverlayButton-imagehover itemAction" data-action="'+(item.IsFolder?"resume":options.playAction||"play")+'"><i class="md-icon listItemOverlayButtonIcon autortl">&#xE037;</i></button>'),playOnImageClick&&(html+='<button title="'+_globalize.default.translate("Play")+'" aria-label="'+_globalize.default.translate("Play")+'"type="button" is="paper-icon-button-light" class="listItemImageButton itemAction" data-action="resume"><i class="md-icon listItemImageButton-icon autortl">&#xE037;</i></button>'),html+="</div>"),options.showIndexNumberLeft&&(styleRules="listItem-indexnumberleft secondaryText",hoverPlayButtonRequested&&(styleRules+=" listItem-indexnumberleft-withhoverbutton"),html+='<div class="'+styleRules+'">',null==item.IndexNumber?html+="&nbsp;":html+=item.IndexNumber,enableHoverPlayButton&&(html+='<button tabindex="-1" type="button" is="paper-icon-button-light" class="listItemOverlayButton-hover itemAction" data-action="'+(item.IsFolder?"resume":options.playAction||"play")+'"><i class="md-icon listItemOverlayButtonIcon autortl">&#xE037;</i></button>'),html+="</div>"),html+="<"+options.listItemBodyTagName+' class="'+options.listItemBodyClassName+'">',options.listItemBodyTextTagName),imageClass=options.listItemBodyTextClass,listItemBodyTextOpen="<"+listItemBodyTextTagName+' class="'+imageClass+'">',listItemBodyTextClose="</"+listItemBodyTextTagName+">",secondaryListItemBodyTextOpen='<div class="'+imageClass+" "+options.listItemBodyTextSecondaryClass+'">',imageContainerClass=item.ProgramInfo||item;switch(itemType){case"MusicAlbum":case"Audio":case"MusicVideo":case"Game":fields=options.fieldsParentNameAfter||options.fields;break;default:fields=options.fields}var displayName=_itemmanager.default.getDisplayName(imageContainerClass,{includeParentInfo:options.includeParentInfoInTitle,includeIndexNumber:options.includeIndexNumberInTitle||(!item.SupportsResume||"Audio"!==item.Type)&&null});options.showIndexNumber&&null!=imageContainerClass.IndexNumber&&(displayName=imageContainerClass.IndexNumber+". "+displayName);for(var i=0,length=fields.length;i<length;i++){var field=fields[i];switch(field){case"Name":options.mediaInfoWithTitle?(html=(html=(html+="<"+listItemBodyTextTagName+' class="listItemBodyText listItemBodyText-withmediainfo mediaInfoItems listItemBodyText-nowrap '+options.listItemBodyTextSecondaryClass+' flex align-items-center flex-direction-row">')+_mediainfo.default.getPrimaryMediaInfoHtml(item,{episodeTitle:!1,originalAirDate:!1,subtitles:!1,endsAt:!1}))+_textencoding.default.htmlEncode(displayName)+listItemBodyTextClose,listItemBodyTextTagName="div",listItemBodyTextOpen=secondaryListItemBodyTextOpen,listItemBodyTextClose="</div>"):displayName&&(html+=listItemBodyTextOpen+_textencoding.default.htmlEncode(displayName)+listItemBodyTextClose,listItemBodyTextTagName="div",listItemBodyTextOpen=secondaryListItemBodyTextOpen,listItemBodyTextClose="</div>");break;case"ParentNameOrName":"Episode"===itemType&&item.SeriesName?item.SeriesId?(html+=listItemBodyTextOpen+getTextActionButton(options,{Id:item.SeriesId,ServerId:serverId,Name:item.SeriesName,Type:"Series",IsFolder:!0})+listItemBodyTextClose,listItemBodyTextTagName="div",listItemBodyTextOpen=secondaryListItemBodyTextOpen,listItemBodyTextClose="</div>"):item.SeriesName&&(html+=listItemBodyTextOpen+_textencoding.default.htmlEncode(item.SeriesName||"")+listItemBodyTextClose,listItemBodyTextTagName="div",listItemBodyTextOpen=secondaryListItemBodyTextOpen,listItemBodyTextClose="</div>"):isUsingLiveTvNaming(itemType)?(html+=listItemBodyTextOpen+_textencoding.default.htmlEncode(item.Name||"")+listItemBodyTextClose,listItemBodyTextTagName="div",listItemBodyTextOpen=secondaryListItemBodyTextOpen,listItemBodyTextClose="</div>"):(parentTitle=item.SeriesName||item.Series||item.Album||(item.AlbumArtist?item.AlbumArtist.Name||item.AlbumArtist:null)||item.GameSystem||"")&&(html+=listItemBodyTextOpen+_textencoding.default.htmlEncode(parentTitle||"")+listItemBodyTextClose,listItemBodyTextTagName="div",listItemBodyTextOpen=secondaryListItemBodyTextOpen,listItemBodyTextClose="</div>");break;case"ParentName":var parentTitle=void 0,containerAlbumArtistIds=options.containerAlbumArtistIds,artistItems="MusicAlbum"===item.Type?item.AlbumArtists:item.ArtistItems;(!artistItems||!artistItems.length||1<artistItems.length||!containerAlbumArtistIds||1!==containerAlbumArtistIds.length||-1===containerAlbumArtistIds.indexOf(artistItems[0].Id))&&(parentTitle=!0),item.AlbumArtists&&item.AlbumArtists.length&&"MusicAlbum"===itemType?html+=listItemBodyTextOpen+mapArtistsToTextButtons(item,artistItems,options)+listItemBodyTextClose:item.ArtistItems&&item.ArtistItems.length||item.AlbumArtists&&item.AlbumArtists.length?parentTitle&&(html+=listItemBodyTextOpen+mapArtistsToTextButtons(item,artistItems,options)+listItemBodyTextClose):item.GameSystem&&item.GameSystemId?html+=listItemBodyTextOpen+getTextActionButton(options,{Id:item.GameSystemId,ServerId:serverId,Name:item.GameSystem,Type:"GameSystem",IsFolder:!0})+listItemBodyTextClose:html+=listItemBodyTextOpen+_textencoding.default.htmlEncode(isUsingLiveTvNaming(itemType)?item.Name:item.SeriesName||item.Series||item.Album||(item.AlbumArtist?item.AlbumArtist.Name||item.AlbumArtist:null)||item.GameSystem||"")+listItemBodyTextClose,listItemBodyTextTagName="div",listItemBodyTextOpen=secondaryListItemBodyTextOpen,listItemBodyTextClose="</div>";break;case"ItemCheckbox":case"ProductionYear":case"Overview":break;case"Type":html+=listItemBodyTextOpen+itemController.getItemTypeName(item.Type)+listItemBodyTextClose,listItemBodyTextTagName="div",listItemBodyTextOpen=secondaryListItemBodyTextOpen,listItemBodyTextClose="</div>";break;case"StartDateTime":html+=listItemBodyTextOpen+_datetime.default.toLocaleString(new Date(Date.parse(item.StartDate)),{weekday:"long",month:"short",day:"numeric",hour:"numeric",minute:"2-digit"})+listItemBodyTextClose,listItemBodyTextTagName="div",listItemBodyTextOpen=secondaryListItemBodyTextOpen,listItemBodyTextClose="</div>";break;case"StartToEndDateTime":html=(html+=listItemBodyTextOpen+_datetime.default.toLocaleString(new Date(Date.parse(item.StartDate)),{weekday:"long",month:"short",day:"numeric",hour:"numeric",minute:"2-digit"}))+(" &ndash; "+_datetime.default.toLocaleString(new Date(Date.parse(item.EndDate)),{hour:"numeric",minute:"2-digit"}))+listItemBodyTextClose,listItemBodyTextTagName="div",listItemBodyTextOpen=secondaryListItemBodyTextOpen,listItemBodyTextClose="</div>";break;case"ChannelName":html=html+listItemBodyTextOpen+'<div class="flex align-items-center">',containerAlbumArtistIds=[];"TvChannel"===item.Type?containerAlbumArtistIds.push(item.Name):item.ChannelName?containerAlbumArtistIds.push(item.ChannelName):item.ProgramInfo&&item.ProgramInfo.ChannelName&&containerAlbumArtistIds.push(item.ProgramInfo.ChannelName),item.ChannelNumber?containerAlbumArtistIds.push(item.ChannelNumber):item.ProgramInfo&&item.ProgramInfo.ChannelNumber&&containerAlbumArtistIds.push(item.ProgramInfo.ChannelNumber),html+=_textencoding.default.htmlEncode(containerAlbumArtistIds.join(" "))+"</div>"+listItemBodyTextClose,listItemBodyTextOpen=secondaryListItemBodyTextOpen,listItemBodyTextClose="</div>";break;case"MappedChannelInfo":html+=listItemBodyTextOpen;artistItems=void 0;item.ListingsChannelName&&(artistItems=item.ListingsChannelName,item.ListingsChannelNumber&&(artistItems=item.ListingsChannelNumber+" "+artistItems),item.AffiliateCallSign&&(artistItems+=" - "+item.AffiliateCallSign),(guideSourceInfo=item.ListingsId||item.ListingsPath)&&(artistItems+=" - "+_textencoding.default.htmlEncode(guideSourceInfo)),artistItems=_globalize.default.translate("MappedToValue",artistItems)),html=html+(artistItems||_globalize.default.translate("NotMappedToGuideData"))+listItemBodyTextClose,listItemBodyTextTagName="div",listItemBodyTextOpen=secondaryListItemBodyTextOpen,listItemBodyTextClose="</div>";break;case"CurrentProgramParentName":item.CurrentProgram&&(html+=listItemBodyTextOpen+item.CurrentProgram.Name+listItemBodyTextClose,listItemBodyTextOpen=secondaryListItemBodyTextOpen,listItemBodyTextClose="</div>");break;case"CurrentProgramName":item.CurrentProgram&&item.CurrentProgram.EpisodeTitle&&(html+=listItemBodyTextOpen+_textencoding.default.htmlEncode(_itemmanager.default.getDisplayName(item.CurrentProgram))+listItemBodyTextClose,listItemBodyTextOpen=secondaryListItemBodyTextOpen,listItemBodyTextClose="</div>");break;case"CurrentProgramTime":item.CurrentProgram&&(html+=listItemBodyTextOpen+function(item,showAirDateTime,showAirEndTime){var airTimeText="";if(item.StartDate)try{var date=new Date(Date.parse(item.StartDate));showAirDateTime&&(airTimeText+=_datetime.default.toLocaleDateString(date,{weekday:"short",month:"short",day:"numeric"})+" "),airTimeText+=_datetime.default.getDisplayTime(date),item.EndDate&&showAirEndTime&&(date=new Date(Date.parse(item.EndDate)),airTimeText+=" &ndash; "+_datetime.default.getDisplayTime(date))}catch(e){console.log("Error parsing date: "+item.StartDate)}return airTimeText}(item.CurrentProgram,!1,!0)+listItemBodyTextClose,listItemBodyTextOpen=secondaryListItemBodyTextOpen,listItemBodyTextClose="</div>");break;case"LogLine":html+=listItemBodyTextOpen+_textencoding.default.htmlEncode(item)+listItemBodyTextClose,listItemBodyTextTagName="div",listItemBodyTextOpen=secondaryListItemBodyTextOpen,listItemBodyTextClose="</div>";break;case"DeviceUserInfo":var guideSourceInfo="";item.LastUserName&&(item.LastUserId?guideSourceInfo+=getTextActionButton(options,{Id:item.LastUserId,Name:item.LastUserName,ServerId:serverId,Type:"User"},item.LastUserName+", "+_dataformatter.default.formatRelativeTime(item.DateLastActivity),null,null):item.LastUserName&&(guideSourceInfo+=item.LastUserName+", "+_dataformatter.default.formatRelativeTime(item.DateLastActivity))),html+=listItemBodyTextOpen+guideSourceInfo+listItemBodyTextClose,listItemBodyTextOpen=secondaryListItemBodyTextOpen,listItemBodyTextClose="</div>";break;case"ChannelNumber":item.ChannelNumber&&(html+=listItemBodyTextOpen+item.ChannelNumber+listItemBodyTextClose,listItemBodyTextOpen=secondaryListItemBodyTextOpen,listItemBodyTextClose="</div>");break;case"ShortOverview":item.ShortOverview&&(html+=listItemBodyTextOpen+(item.ShortOverview?_textencoding.default.htmlEncode(item.ShortOverview):"&nbsp;")+listItemBodyTextClose,listItemBodyTextOpen=secondaryListItemBodyTextOpen,listItemBodyTextClose="</div>");break;case"Date":html+=listItemBodyTextOpen+_datetime.default.toLocaleString(new Date(Date.parse(item.Date)))+listItemBodyTextClose,listItemBodyTextOpen=secondaryListItemBodyTextOpen,listItemBodyTextClose="</div>";break;case"PathOrTitle":html+=listItemBodyTextOpen+(item.Path||item.Title?_textencoding.default.htmlEncode(item.Path||item.Title):"&nbsp;")+listItemBodyTextClose,listItemBodyTextOpen=secondaryListItemBodyTextOpen,listItemBodyTextClose="</div>";break;case"Text":html+=listItemBodyTextOpen+(item.Text?_textencoding.default.htmlEncode(item.Text):"&nbsp;")+listItemBodyTextClose,listItemBodyTextOpen=secondaryListItemBodyTextOpen,listItemBodyTextClose="</div>";break;case"Path":html+=listItemBodyTextOpen+(item.Path?_textencoding.default.htmlEncode(item.Path):"&nbsp;")+listItemBodyTextClose,listItemBodyTextOpen=secondaryListItemBodyTextOpen,listItemBodyTextClose="</div>";break;case"ProviderName":html+=listItemBodyTextOpen+(item.ProviderName?_textencoding.default.htmlEncode(item.ProviderName):"&nbsp;")+listItemBodyTextClose,listItemBodyTextOpen=secondaryListItemBodyTextOpen,listItemBodyTextClose="</div>";break;default:var fieldValue=itemController.resolveField(item,field);html+=listItemBodyTextOpen+(fieldValue=null==fieldValue?"":fieldValue)+listItemBodyTextClose,listItemBodyTextOpen=secondaryListItemBodyTextOpen,listItemBodyTextClose="</div>"}}var isImg,checkbox,imageAction,color,playOnImageClick,styleRules,imgUrl=[];return fieldMap.MediaStreamInfo&&_mediainfo.default.pushMediaStreamLines(item,options,imgUrl,itemController.getDefaultIcon(item)),html+=getTextLinesHtml(imgUrl,options),!1===options.mediaInfo||enableSideMediaInfo||options.mediaInfoWithTitle||(html+='<div class="'+("listItemMediaInfo mediaInfoItems listItemBodyText "+options.listItemBodyTextSecondaryClass+" listItemBodyText-nowrap")+'">'+_mediainfo.default.getPrimaryMediaInfoHtml(item,{episodeTitle:!1,subtitles:!1,endsAt:!1})+"</div>"),fieldMap.Overview&&(html=(html+='<div class="'+options.topOverviewClassName+'">')+(item.Overview?_dom.default.stripScripts(item.Overview):"")+"</div>"),html+="</"+options.listItemBodyTagName+">",!1!==options.mediaInfo&&enableSideMediaInfo&&(isImg=_mediainfo.default.getPrimaryMediaInfoHtml(item,{year:!1,container:!1,episodeTitle:!1,criticRating:!1,endsAt:!1}))&&(!(checkbox="listItemMediaInfo mediaInfoItems secondaryText")!==options.autoHideMediaInfo&&(checkbox+=" listItemMediaInfo-autohide"),html+='<div class="'+checkbox+'">'+isImg+"</div>"),options.recordButton||"Timer"!==itemType&&"Program"!==itemType||(html+=_indicators.default.getTimerIndicator(item).replace("indicatorIcon","indicatorIcon listItemAside")),item.asideText&&(html=(html+='<div class="listItemAside '+(options.asideTextClass||"")+' secondaryText">')+item.asideText+"</div>"),item.asideIcon&&(html=(html+='<div class="listItemAside '+(options.asideIconClass||"")+' secondaryText"><i class="md-icon autortl">')+item.asideIcon+"</i></div>"),options.clickEntireItem||(options.addToListButton&&(html+='<button title="'+_globalize.default.translate("HeaderAddToPlaylist")+'" aria-label="'+_globalize.default.translate("HeaderAddToPlaylist")+'" type="button" is="paper-icon-button-light" class="listItemButton itemAction md-icon autortl" data-action="addtoplaylist">&#xE03B;</button>'),options.openInNewWindowButton&&_servicelocator.appHost.supports("targetblank")&&(html+='<a title="'+_globalize.default.translate("HeaderOpenInNewWindow")+'" aria-label="'+_globalize.default.translate("HeaderOpenInNewWindow")+'" type="button" is="emby-linkbutton" href="'+apiClient.getLogDownloadUrl(item)+'" target="_blank" class="paper-icon-button-light listItemButton itemAction md-icon autortl" data-action="default">&#xe89e;</a>'),options.downloadButton&&(html+='<button title="'+_globalize.default.translate("Download")+'" aria-label="'+_globalize.default.translate("Download")+'" type="button" is="paper-icon-button-light" class="listItemButton itemAction md-icon" data-action="download">download</button>'),options.previewButton&&(html+='<button title="'+_globalize.default.translate("Preview")+'" aria-label="'+_globalize.default.translate("Preview")+'" type="button" is="paper-icon-button-light" class="listItemButton itemAction md-icon" data-action="preview">&#xe89e;</button>'),options.contextMenu&&options.moreButton&&itemController.supportsContextMenu(item)&&(imageAction="listItemContextMenuButton",options.hideMoreButtonOnTouch&&(imageAction+=" listItemContextMenuButton-autohide"),html+='<button title="'+_globalize.default.translate("More")+'" aria-label="'+_globalize.default.translate("More")+'" type="button" is="paper-icon-button-light" class="listItemButton '+imageAction+' itemAction md-icon" data-action="menu">&#xE5D3;</button>'),options.editButton&&(html+='<button title="'+(color=itemController.getEditCommandText(item))+'" aria-label="'+color+'" type="button" is="paper-icon-button-light" class="listItemButton itemAction md-icon" data-action="edit">edit</button>'),options.removeFromPlayQueueButton&&(html+='<button title="'+_globalize.default.translate("HeaderRemoveFromPlayQueue")+'" aria-label="'+_globalize.default.translate("HeaderRemoveFromPlayQueue")+'" type="button" is="paper-icon-button-light" class="listItemButton itemAction md-icon" data-action="removefromplayqueue">remove_circle_outline</button>'),options.deleteButton&&(html+='<button title="'+_globalize.default.translate("Delete")+'" aria-label="'+_globalize.default.translate("Delete")+'" type="button" is="paper-icon-button-light" class="listItemButton itemAction md-icon" data-action="delete">delete</button>'),options.overviewButton&&item.Overview&&(html+='<button title="'+_globalize.default.translate("Overview")+'" aria-label="'+_globalize.default.translate("Overview")+'" type="button" is="paper-icon-button-light" class="listItemButton itemAction md-icon" data-action="overview">&#xE88F;</button>'),options.enableUserDataButtons&&(downloadWidth=item.UserData||{},itemController.canMarkPlayed(item)&&(html+=_embyPlaystatebutton.default.getHtml(downloadWidth.Played,"listViewUserDataButton listItemButton paper-icon-button-light itemAction")),itemController.canRate(item))&&(html+=_embyRatingbutton.default.getHtml(downloadWidth.IsFavorite,"listViewUserDataButton listItemButton paper-icon-button-light itemAction")),options.dragHandle&&(html+='<i class="listViewDragHandle dragHandle md-icon listItemIcon listItemIcon-transparent">&#xE25D;</i>')),options.enableBottomOverview&&(html=(html=html+'</div><div class="'+options.bottomOverviewClassName+'">')+(item.Overview?_dom.default.stripScripts(item.Overview):"")+"</div>"),html+="</div>",options.listItemParts?(playOnImageClick=_shortcuts.default.getShortcutAttributes(item,options),action&&playOnImageClick.push({name:"data-action",value:action}),options.isVirtualList||playOnImageClick.push({name:"data-index",value:index}),{attributes:playOnImageClick,html:html}):(hoverPlayButtonRequested=_shortcuts.default.getShortcutAttributesHtml(item,options),action&&(hoverPlayButtonRequested+=' data-action="'+action+'"'),options.isVirtualList||(hoverPlayButtonRequested+=' data-index="'+index+'"'),(styleRules=options.fixedAttributes)&&(hoverPlayButtonRequested+=" "+styleRules),enableHoverPlayButton=options.className,item.ItemClass&&(enableHoverPlayButton+=" "+item.ItemClass),"<"+tagName+' class="'+enableHoverPlayButton+'"'+hoverPlayButtonRequested+">"+html+"</"+tagName+">")}function setListOptions(items,options){null==options.iconSpacing&&(options.preferIcon||!1===options.image||options.roundImage)&&(options.iconSpacing=!0),null==options.isBoundListItem&&(options.isBoundListItem=!0),options.itemSelector=".listItem",options.enableDefaultIcon=!1!==options.enableDefaultIcon,options.contentWrapperClass="listItem-content",_layoutmanager.default.tv||(options.contentWrapperClass+=" listItemContent-touchzoom"),options.containerAlbumArtistIds=(options.containerAlbumArtists||[]).map(getId),options.contextMenu=!1!==options.contextMenu,options.enableUserDataButtons=!1!==options.enableUserDataButtons,options.moreButton=options.contextMenu&&!1!==options.moreButton,options.fields||(options.fields=[],options.fields.push("Name")),options.fields=Array.from(new Set(options.fields)),options.autoMoveParentName&&(options.fieldsParentNameAfter=options.fields.slice(0),parentNameIndex=options.fieldsParentNameAfter.indexOf("ParentName"),nameIndex=options.fieldsParentNameAfter.indexOf("Name"),-1!==parentNameIndex&&-1!==nameIndex&&parentNameIndex<nameIndex&&(options.fieldsParentNameAfter.splice(parentNameIndex,1),options.fieldsParentNameAfter.splice(nameIndex,0,"ParentName")),-1!==parentNameIndex)&&-1!==nameIndex&&nameIndex<parentNameIndex&&(options.fields.splice(parentNameIndex,1),options.fields.splice(Math.max(nameIndex-1,0),0,"ParentName"));for(var fieldMap={},i=0,length=options.fields.length;i<length;i++)fieldMap[options.fields[i]]=!0;options.fieldMap=fieldMap,options.mediaInfo=!1!==options.mediaInfo,options.shape=_imageloader.default.getShape(items,options)||"square","banner"===options.shape&&(options.shape="backdrop"),"large"===options.imageSize?(options.contentWrapperClass+=" listItem-content-fb",options.imageDownloadWidth=400,options.enableSideMediaInfo=!(isLargeStyle=!0),options.iconSpacing||(options.contentWrapperClass+=" listItem-content-marginx3")):"medium"===options.imageSize?(options.contentWrapperClass+=" listItem-content-fb",options.imageDownloadWidth=200,options.enableSideMediaInfo=!1,options.iconSpacing||(options.contentWrapperClass+=" listItem-content-marginx2")):(options.iconSpacing||(options.contentWrapperClass+=" listItem-content-margin"),options.contentWrapperClass+=" listItem-content-bg",options.imageDownloadWidth=80,options.enableSideMediaInfo=null!=options.enableSideMediaInfo?options.enableSideMediaInfo:"square"===options.shape),options.clickEntireItem=_layoutmanager.default.tv?!fieldMap.ItemCheckbox:!(options.mediaInfo||options.moreButton||options.enableUserDataButtons||options.addToListButton||options.enableSideMediaInfo||options.imagePlayButton||fieldMap.ItemCheckbox||options.treeButton),_layoutmanager.default.tv&&(options.imageDownloadWidth*=1.5),options.isLargeStyle=isLargeStyle,options.action=options.action||"link",options.tagName=options.clickEntireItem?"button":"div",options.listItemBodyTagName="div",options.multiSelectTitle=_globalize.default.translate("MultiSelect"),options.multiSelect=!1!==options.multiSelect&&!_layoutmanager.default.tv,options.enableUserData=!1!==options.enableUserData,options.largeFont=!_layoutmanager.default.tv&&!1!==options.largeFont,options.listItemBodyTextTagName="large"===options.imageSize||options.largeHeading?"h3":"div";for(var parentNameIndex=("listItemBodyText "+(options.listItemBodyTextClass||"")).trim(),nameIndex=((options.isVirtualList||options.noTextWrap)&&(parentNameIndex+=" listItemBodyText-nowrap"),options.largeFont&&(parentNameIndex+=" listItemBodyText-lf"),options.listItemBodyTextClass=parentNameIndex,options.indicatorClass=isLargeStyle?"listItemIndicator listItem":"listItemIndicator listItemIndicator-mini listItem",options.listItemBodyTextSecondaryClass="listItemBodyText-secondary "+secondaryTextClass,"large"!==options.imageSize&&"medium"!==options.imageSize||(options.listItemBodyTextSecondaryClass+=" listItemBodyText-secondary-of"),"listItem"),items=((options.border||!1!==options.highlight&&(!_layoutmanager.default.tv||options.forceBorder))&&(options.contentWrapperClass+=" listItem-border",options.autoHideBorderOnTouch)&&(options.contentWrapperClass+=" listItem-border-autohide"),(options.clickEntireItem||options.action&&"none"!==options.action)&&(nameIndex+=" itemAction"),"div"===options.tagName?options.addTabIndex=!0:"button"===options.tagName&&(nameIndex+=" listItem-button"),"none"===options.action&&!options.clickEntireItem||(nameIndex+=" listItemCursor"),options.enableFocusScaling=_layoutmanager.default.tv&&!1!==options.enableFocusScaling&&enableFocusTransfrom,_layoutmanager.default.tv?(options.enableFocusScaling&&(nameIndex+=" listItem-focusscale"),nameIndex+=" listItem-tv"):nameIndex+=" listItem-hoverable",_layoutmanager.default.tv||(options.draggable=!1!==options.draggable),isLargeStyle&&(nameIndex+=" listItem-largeImage"),!1===options.verticalPadding&&(nameIndex+=" listItem-noverticalpadding"),options.itemClass&&(nameIndex+=" "+options.itemClass),options.dragHandle&&options.draggable?nameIndex+=" drop-target ordered-drop-target-y":options.dropTarget&&!_layoutmanager.default.tv&&(nameIndex+=" drop-target full-drop-target"),options.className=nameIndex,""),nameIndex=(!1!==options.image?(options.aspectInfo=_imageloader.default.getAspectFromShape(options.shape,options),fieldMap.Overview&&"portrait"!==options.shape&&(options.enableBottomOverview=!0)):fieldMap.Overview&&(options.enableBottomOverview=!0),_layoutmanager.default.tv&&(options.enableBottomOverview=!1),options.enableBottomOverview&&(options.contentWrapperClass+=" listItem-content-withwrap"),items+='<div class="'+options.contentWrapperClass+'">',options.enableBottomOverview&&(items+='<div class="listItem-innerwrapper">'),fieldMap.ItemCheckbox&&(parentNameIndex="listItem-checkboxLabel",options.roundCheckbox&&(parentNameIndex+=" listItem-checkboxLabel-round"),options.itemCheckbox='<label data-action="'+options.checkboxAction+'" class="itemAction listItem-emby-checkbox-label emby-checkbox-label secondaryText"><input tabindex="-1" class="chkItemCheckbox emby-checkbox emby-checkbox-notext" is="emby-checkbox" type="checkbox" /><span class="checkboxLabel '+parentNameIndex+'"></span></label>',items+=options.itemCheckbox),options.treeButton&&(options.disabledTreeButtonHtml='<button disabled style="visibility:hidden;" is="paper-icon-button-light" type="button" data-action="toggletreenode" class="secondaryText itemAction md-icon autortl paper-icon-button-light '+(options.treeButtonClass||"")+'">&#xe5cc;</button>',options.treeButtonHtml='<button is="paper-icon-button-light" type="button" data-action="toggletreenode" class="secondaryText itemAction md-icon autortl paper-icon-button-light '+(options.treeButtonClass||"")+'">&#xe5cc;</button>',items+=options.treeButtonHtml),!1!==options.image&&(isLargeStyle=((options.imageContainerClass||"")+" listItemImageContainer").trim(),options.imageSize&&(isLargeStyle+=" listItemImageContainer-"+options.imageSize,_layoutmanager.default.tv)&&(isLargeStyle+=" listItemImageContainer-"+options.imageSize+"-tv"),options.clickEntireItem||(isLargeStyle+=" itemAction"),options.iconSpacing&&(isLargeStyle+=" listItemImageContainer-margin"),isLargeStyle+=" listItemImageContainer-"+options.shape,items+='<div class="'+(options.imageContainerClass=isLargeStyle)+'"></div>'),((options.listItemBodyClassName||"")+" listItemBody").trim()),textlines=(options.clickEntireItem||(nameIndex+=" itemAction"),!1===options.image&&(nameIndex+=" listItemBody-noleftpadding"),!1===options.verticalPadding&&(nameIndex+=" listItemBody-noverticalpadding"),options.code&&(nameIndex+=" listItemBody-code"),options.dragHandle&&(nameIndex+=" listItemBody-draghandle"),options.iconSpacing||(nameIndex+=" listItemBody-reduceypadding"),options.iconClass?options.iconClass+=" listItemIcon md-icon autortl":options.iconClass="listItemIcon md-icon autortl",[]),_i=0,_length=options.fields.length;_i<_length;_i++)switch(options.fields[_i]){case"ItemCheckbox":case"ProductionYear":break;default:textlines.push("&nbsp;")}fieldMap.Overview&&(options.isLargeStyle?options.overviewLines=options.overviewLines||3:options.overviewLines=options.overviewLines||2,options.overviewClass="listItem-overview-"+options.overviewLines+"-lines");var parentNameIndex=textlines.length,isLargeStyle=(fieldMap.Overview&&(parentNameIndex+=options.overviewLines-1),options.mediaInfo&&!options.enableSideMediaInfo&&parentNameIndex++,options.listItemBodyClassName=nameIndex+=" listItemBody-"+parentNameIndex+"-lines",items=(items+="<"+options.listItemBodyTagName+' class="'+options.listItemBodyClassName+'">')+getTextLinesHtml(textlines,options),fieldMap.Overview&&(!options.mediaInfo||options.enableSideMediaInfo||options.mediaInfoWithTitle||(items+='<div class="listItemMediaInfo listItemBodyText '+options.listItemBodyTextSecondaryClass+' listItemBodyText-nowrap"></div>'),options.topOverviewClassName="listItem-overview listItem-topoverview listItemBodyText "+options.listItemBodyTextSecondaryClass,options.enableBottomOverview&&(options.topOverviewClassName+=" listItem-overview-autohide"),options.topOverviewClassName+=" "+options.overviewClass,items+='<div class="'+options.topOverviewClassName+'"></div>'),items+="</"+options.listItemBodyTagName+">",options.dragHandle&&(items+='<i class="listViewDragHandle dragHandle md-icon listItemIcon listItemIcon-transparent">&#xE25D;</i>'),options.enableBottomOverview&&(items+="</div>",options.bottomOverviewClassName="listItem-bottomoverview secondaryText",options.bottomOverviewClassName+=" "+options.overviewClass,items+='<div class="'+options.bottomOverviewClassName+'">&nbsp;</div>'),items+="</div>","");options.addTabIndex&&(isLargeStyle+=' tabindex="0"'),options.draggable&&(isLargeStyle+=' draggable="true"'),"button"===options.tagName&&(isLargeStyle+=' type="button"'),options.clickEntireItem,options.fixedAttributes=isLargeStyle.trim(),options.templateInnerHTML=items}function getItemsHtml(items,options){setListOptions(items,options);for(var groupTitle="",html="",i=0,length=items.length;i<length;i++){var itemGroupTitle,item=items[i];options.showIndex&&(itemGroupTitle=function(item,options){return"disc"!==options.index||1===(options=item.ParentIndexNumber)||null==options?"":_globalize.default.translate("ValueDiscNumber",options)}(item,options))!==groupTitle&&(html=(html+=0===i?'<h2 class="listGroupHeader listGroupHeader-first">':'<h2 class="listGroupHeader">')+itemGroupTitle+"</h2>",groupTitle=itemGroupTitle),html+=getListItemHtml(item,i,options)}return html}_exports.default={getItemsHtml:getItemsHtml,setListOptions:setListOptions,getItemParts:function(item,index,options){return options.listItemParts=!0,getListItemHtml(item,index,options)},buildItems:function(items,options){var itemsContainer=options.itemsContainer;if(document.body.contains(itemsContainer)){var parentContainer=options.parentContainer;if(parentContainer){if(!items.length)return void parentContainer.classList.add("hide");parentContainer.classList.remove("hide")}parentContainer=getItemsHtml(items,options);itemsContainer.innerHTML=parentContainer,itemsContainer.items=items,options.multiSelect&&(itemsContainer.enableMultiSelect?itemsContainer.enableMultiSelect(!0):itemsContainer.setAttribute("data-multiselect","true")),options.contextMenu&&(itemsContainer.enableContextMenu?itemsContainer.enableContextMenu(!0):itemsContainer.setAttribute("data-contextmenu","true")),parentContainer&&_imageloader.default.lazyChildren(itemsContainer),options.autoFocus&&_focusmanager.default.autoFocus(itemsContainer)}},virtualChunkSize:30,setListClasses:function(elem){(elem=elem.classList).remove("vertical-wrap"),elem.add("vertical-list")}}});