Files
Futontime_UI/modules/cardbuilder/cardbuilder.js
2026-02-09 10:48:21 +01:00

1 line
63 KiB
JavaScript

define(["exports","./../emby-apiclient/connectionmanager.js","./../emby-apiclient/events.js","./../common/textencoding.js","./../common/globalize.js","./../common/datetime.js","./../common/itemmanager/itemmanager.js","./../common/playback/playbackmanager.js","./../common/appsettings.js","./../dom.js","./../browser.js","./../focusmanager.js","./../layoutmanager.js","./../mediainfo/mediainfo.js","./../common/dataformatter.js","./../indicators/indicators.js","./../shortcuts.js","./../common/servicelocator.js","./../common/imagehelper.js","./../lazyloader/lazyimageloader.js","./../emby-elements/userdatabuttons/emby-playstatebutton.js","./../emby-elements/userdatabuttons/emby-ratingbutton.js","./../emby-elements/sync/emby-downloadbutton.js","./../emby-elements/emby-button/paper-icon-button-light.js","./../common/usersettings/usersettings.js"],function(_exports,_connectionmanager,_events,_textencoding,_globalize,_datetime,_itemmanager,_playbackmanager,_appsettings,_dom,_browser,_focusmanager,_layoutmanager,_mediainfo,_dataformatter,_indicators,_shortcuts,_servicelocator,_imagehelper,_lazyimageloader,_embyPlaystatebutton,_embyRatingbutton,_embyDownloadbutton,_paperIconButtonLight,_usersettings){Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.default=void 0;CSS.supports("aspect-ratio","16 / 9");require(["cardStyle","programStyles"]);var CurrentPlayingItemId,refreshIndicatorLoaded,embyCheckboxLoaded,decodingAttribute=_dom.default.supportsAsyncDecodedImages()?' decoding="async"':"",supportsObjectFit=CSS.supports("object-fit","contain"),supportsCssVariables=CSS.supports("color","var(--fake-var)"),supportsCalc=CSS.supports("width","min(45.2%,calc(100% - .65em))"),supportsMin=CSS.supports("width","min(10em, 5vw)"),EnableFocusTransfrom=_dom.default.allowFocusScaling(),supportsNativeLazyLoading="loading"in HTMLImageElement.prototype,SupportsContainerQueries="undefined"!=typeof CSS&&CSS.supports("width","1cqw"),SupportsPositionTry="undefined"!=typeof CSS&&CSS.supports("position-try-fallbacks: top"),SupportsHorizontalRenderingWithoutCardColumns=SupportsContainerQueries&&SupportsPositionTry&&_browser.default.chrome;function onPlaybackStart(e,player,state){state=state.NowPlayingItem,state="Audio"===(null==state?void 0:state.MediaType)?state.Id:null;CurrentPlayingItemId=state}_events.default.on(_playbackmanager.default,"playbackstart",onPlaybackStart),_events.default.on(_playbackmanager.default,"statechange",onPlaybackStart),_events.default.on(_playbackmanager.default,"playbackstop",function(){CurrentPlayingItemId=null});var cachedWidths={};function setListOptions(items,options){null==options.isBoundListItem&&(options.isBoundListItem=!0),null==options.hideEpisodeSpoilerInfo&&(options.hideEpisodeSpoilerInfo=_usersettings.default.hideEpisodeSpoilerInfo()),options.rtl="rtl"===document.dir,options.loadingLazyAttribute=' loading="lazy"',options.cardSize&&"default"!==options.cardSize||(options.cardSize=_appsettings.default.cardSize()),options.itemSelector=".card",options.playAction||(options.playAction="playallfromhere"===options.action?"playallfromhere":"play"),options.imageFallback=!1!==options.imageFallback;for(var shape=options.shape||"auto",fieldMap=(options.sideFooter&&(options.textLinks=!(shape="banner")),options.fields||(options.fields=[]),{}),i=0,length=options.fields.length;i<length;i++)fieldMap[options.fields[i]]=!0;options.fieldMap=fieldMap,options.fieldMapWithForceName=Object.assign(Object.assign({},fieldMap),{ParentNameOrName:!0});var tagName,templateLines=function(options){var options=options.fieldMap,lines=[];return options.Name&&lines.push(""),options.ParentNameOrName&&lines.push(""),(options.ProductionYear||options.OfficialRating||options.Runtime)&&lines.push(""),(options.CommunityRating||options.CriticRating)&&lines.push('<div class="mediaInfoItems cardMediaInfoItems"><div class="mediaInfoItem mediaInfoCriticRating cardMediaInfoItem"><div class="mediaInfoCriticRatingImage mediaInfoCriticRatingFresh" style="visibility:hidden;"></div>91%</div></div>'),options.PersonRole&&lines.push(""),options.ChapterTime&&lines.push(""),options.ChapterWatching&&lines.push(""),options.ChannelName&&lines.push(""),options.LastServerAddress&&lines.push(""),options.Tagline&&lines.push(getTaglineText("")),options.Overview&&lines.push(getOverviewText("")),options.MediaInfo&&lines.push(""),options.Album&&lines.push(""),options.Director&&lines.push(""),options.Type&&lines.push(""),options.LastActivityDateRelative&&lines.push(""),options.DateCreated&&lines.push(""),options.DateModified&&lines.push(""),options.DatePlayed&&lines.push(""),options.Version&&lines.push(""),options.Url&&lines.push(""),options.InstalledVersion&&lines.push(""),options.ItemImageName&&lines.push(""),options.Filename&&lines.push(""),options.FilenameOrName&&lines.push(""),(options.Size||options.Container||options.Bitrate)&&lines.push(""),options.VideoCodec&&lines.push(""),options.AudioCodec&&lines.push(""),(options.Resolution||options.Framerate)&&lines.push(""),options.ParentName&&lines.push(""),options.CollectionType&&lines.push(""),options.LibraryFolders&&lines.push(""),options.AppNameVersion&&lines.push(""),options.AppName&&lines.push(""),options.DeviceUserInfo&&lines.push(""),options.CurrentProgramTime&&lines.push(""),options.CurrentProgramParentName&&lines.push(""),options.CurrentProgramParentNameOrName&&lines.push(""),options.CurrentProgramName&&lines.push(""),options.SeriesTimerChannel&&lines.push(""),options.SeriesTimerTime&&lines.push(""),options.ImageEditorStandardButtons&&lines.push(""),options.ImageEditorBackdropButtons&&lines.push(""),options.IpAddress&&lines.push(""),options.TunerName&&lines.push(""),options.Genres&&lines.push(""),options.Tags&&lines.push(""),options.Studios&&lines.push(""),options.SessionNowPlayingInfo&&(lines.push(""),lines.push(""),lines.push("")),options.AirTime&&lines.push(""),options.AccessToken&&lines.push(""),options.DownloadableImageInfo&&(lines.push(""),lines.push("")),lines}(options),autoShape=(options.lines||options.overlayText||(options.lines=templateLines.length),"auto"===shape||"autooverflow"===shape),items=shape=autoShape?_imagehelper.default.getShape(items,options):shape,autoShape=(options.sideFooter&&(items="square"),"auto"===options.preferThumb&&(options.preferThumb="square"===items?null:"backdrop"===items||"fourThree"===items),!0===options.preferThumb&&autoShape&&(items="backdrop",options.sideFooter||(shape="backdrop")),!0===options.preferLogo&&autoShape&&(items="backdrop",options.sideFooter||(shape="backdrop")),options.uiAspect=_imagehelper.default.getAspectFromShape(items,options).aspect,!options.width&&options.widths&&(options.width=options.widths[items]),options.horizontalGrid&&!SupportsHorizontalRenderingWithoutCardColumns&&(options.rows={portrait:2,square:3,backdrop:3,fourThree:3,banner:3}),options.rows&&"number"!=typeof options.rowCount&&(options.smallSideFooter?options.rowCount=5:options.rowCount=options.rows[items]),"card"),isLayoutTV=(shape&&(autoShape+=" "+shape+"Card"),options.horizontal&&(autoShape+=" card-horiz "+shape+"Card-horiz"),options.horizontalGrid&&(autoShape+=" "+shape+"Card-xGrid",options.isVirtualList||(autoShape+=" staticCard-xGrid")),options.cardClass&&(autoShape+=" "+options.cardClass),options.autoWidth&&(autoShape+=" autoWidthCard"),_layoutmanager.default.tv),isSingleClickElement=(isLayoutTV||(autoShape+=" card-hoverable"),options.enableFocusScaling=!1!==options.enableFocusScaling&&isLayoutTV&&EnableFocusTransfrom,options.enableCardBox=options.enableFocusScaling||options.cardLayout||options.sideFooter||!isLayoutTV||!options.isVirtualList,options.hoverMenu=!_layoutmanager.default.tv&&!1!==options.hoverMenu,isLayoutTV&&!options.staticElement||!1===options.hoverMenu&&"none"!==options.action),lineContents=(options.enableFocusScaling&&(autoShape+=" card-focustransform"),options.sideFooter&&(autoShape+=" sideFooterCard",options.horizontal)&&(autoShape+=" sideFooterCard-horiz"),options.smallSideFooter&&(autoShape+=" smallSideFooterCard",options.horizontal)&&(autoShape+=" smallSideFooterCard-horiz"),options.contextMenu=!1!==options.contextMenu,isSingleClickElement?(tagName="button",autoShape+=" itemAction card-itemAction",options.contextMenu&&(autoShape+=" longpress")):(tagName="div",options.staticElement||(options.addTabIndex=!0)),null==options.reOrder&&(options.reOrder=options.dragReorder&&options.draggable),isLayoutTV?(options.draggable=!1,options.anyDraggable=options.draggable,options.dropTarget=!1,options.dragReorder=!1):(options.draggable=!1!==options.draggable,options.anyDraggable=options.draggable,options.dragReorder&&options.draggable?autoShape+=" drop-target ordered-drop-target-x":options.dropTarget&&(autoShape+=" drop-target full-drop-target")),[]);for(options.lines&&(lineContents.length=options.lines),i=0,length=lineContents.length;i<length;i++)lineContents[i]=templateLines[i]||"&nbsp;";var cardBoxClass=((options.cardBoxClass||"")+" cardBox").trim(),cardContentClass=((options.cardContentClass||"")+" cardContent cardImageContainer").trim(),cardImageClass=((options.cardImageClass||"")+" cardImage").trim(),cardTextFirstClass=(options.sideFooter&&(cardBoxClass+=" cardBox-sideFooter",isLayoutTV&&(cardBoxClass+=" cardBox-sideFooter-f",cardContentClass+=" cardContent-sideFooter-f"),!0!==options.centerText)&&(options.centerText=!1),options.autoWidth&&(cardBoxClass+=" autoWidthCardBox"),options.horizontalGrid&&(cardBoxClass+=" cardBox-horizontalgrid"),null==options.centerText&&(options.centerText=!options.overlayText),options.cardTextCssClass=((options.cardTextCssClass||"")+" cardText").trim(),options.centerText||(options.cardTextCssClass+=" text-align-start"),"cardText-first"),cardTextFirstClass=(options.sideFooter||(cardTextFirstClass+=" cardText-first-padded"),options.cardTextFirstClass=cardTextFirstClass,lineContents.length?getCardTextLines({},lineContents,options.cardTextCssClass,!options.overlayText,!0,lineContents.length,options):""),cardDefaultTextClass=((options.cardDefaultTextClass||"")+" cardText cardDefaultText").trim(),cardDefaultTextClass=(options.cardDefaultTextClass=cardDefaultTextClass,(options.cardLayout||options.sideFooter)&&(cardBoxClass+=" visualCardBox",cardContentClass+=" cardContent-nobr",options.vibrant)&&(cardBoxClass+=" visualCardBox-vibrant","large"===options.vibrantMode)&&(cardBoxClass+=" visualCardBox-vibrant-lg"),isLayoutTV&&options.enableFocusScaling&&(cardBoxClass+=" cardBox-focustransform",!options.focusTransformTitleAdjust||"portrait"!==shape&&"square"!==shape&&"fourThree"!==shape||(cardBoxClass+=" cardBox-focustransform-titleadjust")),isSingleClickElement||!1===options.moreButton||options.staticElement||(cardBoxClass+=" cardBox-touchzoom",_browser.default.iOS)||_browser.default.osx||(autoShape+=" card-autoactive"),!lineContents.length||options.overlayText||options.cardLayout||options.sideFooter||!1===options.allowBottomPadding||options.horizontal||(options.enableCardBox?cardBoxClass+=" cardBox-bottompadded":autoShape+=" card-bottompadded"),options.enableCardBox||(autoShape+=" card-padded"),[]),innerCardFooterClass=(options.sideFooter||cardDefaultTextClass.push("cardPadder-"+shape),options.cardPadderClass&&cardDefaultTextClass.push(options.cardPadderClass),["innerCardFooter"]),screen=(options.innerCardFooterClass&&innerCardFooterClass.push(options.innerCardFooterClass),options.round=options.round&&"square"===shape,options.cardLayout||options.sideFooter||(cardContentClass+=" cardContent-background","black"===options.background&&(cardContentClass+=" cardContent-bg-black")),options.preferLogo&&null==options.paddedImage&&(options.paddedImage=!0),options.paddedImage&&(cardContentClass+=" paddedImage"),options.defaultBackground&&!options.cardLayout&&(cardContentClass+=" defaultCardBackground"),options.imageClass&&(cardContentClass+=" "+options.imageClass),options.sideFooter&&(cardContentClass+=" cardImageContainer-sideFooter",options.smallSideFooter)&&(cardContentClass+=" cardImageContainer-smallSideFooter"),options.round&&(cardContentClass+=" cardContent-round"),options.enableFocusScaling||options.sideFooter||(isSingleClickElement||options.action,isLayoutTV?(options.cardLayout?cardBoxClass+=" cardContent-bxsborder":cardContentClass+=" cardContent-bxsborder",cardImageClass+=" cardImage-bxsborder"):(cardContentClass+=" cardContent-bxsborder-fv",cardImageClass+=" cardImage-bxsborder-fv")),options.cardImageClass=cardImageClass,options.width||(cardImageClass=_dom.default.getWindowSize().innerWidth,options.width=function(cardClass,cardBoxClass,cardContentClass,options,screenWidth){options.sideFooter&&(cardClass+=" withsidefooter"),options.imageWidthTestClass&&(cardClass+=" "+options.imageWidthTestClass);var card,elemToRemove,cardSize=options.cardSize,key=cardClass+screenWidth+cardSize;switch(cardSize){case"":case"normal":case"default":break;default:key+="-"+cardSize}return _layoutmanager.default.tv&&(key+="-tv"),(screenWidth=cachedWidths[key])||(console.log("getImageWidth: "+key),(card=document.createElement("div")).className=cardClass+" imageSizeTestCard",options.sideFooter?card.innerHTML='<div class="'+cardBoxClass+'"><div class="'+cardContentClass+'"></div></div>':card.innerHTML='<div class="'+cardBoxClass+' cardScalable"></div>',options.useItemsContainerForImageSize&&options.itemsContainer?(card.style.position="absolute",card.style.visibility="hidden",options.itemsContainer.appendChild(card),elemToRemove=card):((cardClass=document.createElement("div")).className="itemsContainer padded-left padded-right",options.cardSize&&setUserPreferredSize(cardClass,options.cardSize),cardClass.style.visibility="hidden",cardClass.appendChild(card),elemToRemove=cardClass,document.body.appendChild(cardClass)),screenWidth=options.sideFooter?cachedWidths[key]=card.querySelector(".cardImageContainer").offsetWidth||400:cachedWidths[key]=card.querySelector(".cardScalable").offsetWidth||400,elemToRemove.remove(),console.log("card width: "+screenWidth+" - "+key)),screenWidth}(autoShape,cardBoxClass,cardContentClass,options,cardImageClass),cardImageClass=cardImageClass,(screen=window.screen)&&20<screen.availWidth-cardImageClass&&(options.width=50*Math.ceil(options.width/50))),options.enableCardBox?'<div class="'+cardBoxClass+'">':""),cardDefaultTextClass=cardDefaultTextClass.join(" "),innerCardFooterClass=innerCardFooterClass.join(" "),cardImageClass=(isSingleClickElement||"none"===options.action?screen+='<div class="'+cardContentClass+" "+cardDefaultTextClass+'"></div>':screen+='<button type="button" tabindex="-1" class="cardContent-button '+cardContentClass+" "+cardDefaultTextClass+'"></button>',"cardFooter"),cardImageClass=(options.vibrant&&(cardImageClass+=" cardFooter-vibrant"),options.outerFooterClass=cardImageClass,options.cardLayout&&(screen+='<div class="'+cardImageClass+'">'),screen+=cardTextFirstClass,options.cardLayout&&(screen+="</div>"),options.enableCardBox&&(screen+="</div>"),null==options.defaultIcon&&(options.sideFooter||options.lines||fieldMap.Name?options.defaultIcon=!0:options.defaultIcon=!1),options.moreTitle=_globalize.default.translate("More"),options.multiSelectTitle=_globalize.default.translate("MultiSelect"),options.multiSelect=!1!==options.multiSelect&&!isLayoutTV,!options.multiSelect||embyCheckboxLoaded||(embyCheckboxLoaded=!0,Emby.importModule("./modules/emby-elements/emby-checkbox/emby-checkbox.js")),options.enableUserData=!1!==options.enableUserData,"");options.addTabIndex&&(cardImageClass+=' tabindex="0"'),options.anyDraggable&&(cardImageClass+=' draggable="true"'),"button"===tagName&&(cardImageClass+=' type="button"'),options.fixedAttributes=cardImageClass.trim(),options.templateInnerHTML=screen,options.cardPadderClass=cardDefaultTextClass,options.innerCardFooterClass=innerCardFooterClass,options.tagName=tagName,options.shape=shape,options.imageShape=items,options.className=autoShape,options.isSingleClickElement=isSingleClickElement,options.cardContentClass=cardContentClass,options.cardBoxClass=cardBoxClass}function buildCardsHtmlInternal(items,options){setListOptions(items,options);for(var hasOpenRow,html="",itemsInRow=0,rows=options.rowCount,i=0,length=items.length;i<length;i++)rows&&0===itemsInRow&&(hasOpenRow&&(html+="</div>",hasOpenRow=!1),html+='<div class="cardColumn">',hasOpenRow=!0),html+=getCardHtml(items[i],i,options),itemsInRow++,rows&&rows<=itemsInRow&&(html+="</div>",hasOpenRow=!1,itemsInRow=0);return hasOpenRow&&(html+="</div>"),html}function getCardTextLines(item,lines,cssClass,forceLines,isOuterFooter,maxLines,options){for(var html="",valid=0,currentCssClass=(isOuterFooter||(cssClass+=" innerFooter-cardText"),cssClass),i=0,length=lines.length;i<length;i++){var currentPlayingItemId,currentCssClass=cssClass,text=lines[i];if(text&&text.html)valid++,html+=text.html;else if(0<valid&&isOuterFooter?currentCssClass+=" cardText-secondary":0===valid&&isOuterFooter&&(currentCssClass+=" "+options.cardTextFirstClass,!1===options.playQueueIndicator||!(currentPlayingItemId=CurrentPlayingItemId)||currentPlayingItemId!==item.PlaylistItemId&&currentPlayingItemId!==item.Id||_layoutmanager.default.tv&&!_playbackmanager.default.paused()&&(currentCssClass+=" itemelement-nowplaying cardText-nowplaying")),text&&(html=(html+='<div class="'+currentCssClass+'">')+text+"</div>",valid++,maxLines)&&maxLines<=valid)break}if(forceLines)for(length=maxLines||Math.min(lines.length,maxLines||lines.length);valid<length;)currentCssClass=cssClass,0<valid&&isOuterFooter?currentCssClass+=" cardText-secondary":0===valid&&isOuterFooter&&(currentCssClass+=" "+options.cardTextFirstClass),html+='<div class="'+currentCssClass+'">&nbsp;</div>',valid++;return html}function isUsingLiveTvNaming(itemType){return"Program"===itemType||"Timer"===itemType||"Recording"===itemType}function getTaglineText(text){var html='<div class="cardText cardText-secondary cardText-tagline"><div class="cardText-tagline-text">';return{html:html+_textencoding.default.htmlEncode(text||"")+"</div></div>"}}function getOverviewText(text){var html='<div class="cardText cardText-secondary cardText-overview"><div class="cardText-overview-text">';return{html:html+_textencoding.default.htmlEncode(text||"")+"</div></div>"}}function getTextLinksLine(options,item,linkItems,linkItemType,limit){linkItems=linkItems||[];for(var html="",i=0,length=limit=Math.min(linkItems.length,limit);i<length;i++){var linkItem=linkItems[i],text=linkItem.Name;i<limit-1&&(text+=","),html+=getTextActionButton(options,{Id:linkItem.Id,Name:linkItem.Name,ServerId:item.ServerId,Type:linkItemType},text,item.ServerId,null,!1)}return'<div class="cardTextLinksLine">'+html+"</div>"}function getCardFooterText(item,itemController,options,fieldMap,imgUrl,footerClass,progressHtml,logoUrl,isOuterFooter){var parentTitleUnderneath,itemType=item.Type,html="",lines=(logoUrl&&(html+='<div class="lazy cardFooterLogo" loading="lazy" style="background-image:url('+logoUrl+');"></div>'),[]);switch(itemType){case"MusicAlbum":case"Audio":case"MusicVideo":case"Game":case"Photo":parentTitleUnderneath=!0}var serverId=item.ServerId||options.serverId,parentTitle=(fieldMap.Album&&options.albumFirst&&(isOuterFooter&&item.AlbumId&&item.Album?lines.push(getTextActionButton(options,{Id:item.AlbumId,ServerId:serverId,Name:item.Album,Type:"MusicAlbum",IsFolder:!0})):lines.push(item.Album||"")),!fieldMap.ParentName&&!fieldMap.ParentNameOrName||parentTitleUnderneath||(isOuterFooter&&"Episode"===itemType&&item.SeriesName?item.SeriesId?lines.push(getTextActionButton(options,{Id:item.SeriesId,ServerId:serverId,Name:item.SeriesName,Type:"Series",IsFolder:!0})):lines.push(_textencoding.default.htmlEncode(item.SeriesName)):isUsingLiveTvNaming(itemType)?(lines.push(_textencoding.default.htmlEncode(item.Name)),item.EpisodeTitle||(titleAdded=!0)):((parentTitle=item.SeriesName||item.Series||item.Album||(item.AlbumArtist?item.AlbumArtist.Name||item.AlbumArtist:null)||item.GameSystem||"")||fieldMap.Name)&&lines.push(_textencoding.default.htmlEncode(parentTitle))),fieldMap.Name&&!titleAdded||fieldMap.ParentNameOrName&&!lines.length);if((parentTitle=parentTitle||titleAdded||!fieldMap.Name?parentTitle:!0)&&(titleAdded=itemController.getDisplayName(item,{includeParentInfo:options.includeParentInfoInTitle,channelNumberFirst:options.channelNumberFirst,enableSpecialEpisodePrefix:options.enableSpecialEpisodePrefix,includeIndexNumber:options.includeIndexNumber,hideEpisodeSpoilerInfo:options.hideEpisodeSpoilerInfo}))&&(isOuterFooter?lines.push(getTextActionButton(options,item,titleAdded,serverId,options.parentId,!0)):lines.push(_textencoding.default.htmlEncode(titleAdded))),fieldMap.Type&&lines.push(itemController.getItemTypeName(item)),fieldMap.ParentName&&parentTitleUnderneath&&(isOuterFooter&&item.AlbumArtists&&item.AlbumArtists.length&&"MusicAlbum"===itemType?(item.AlbumArtists[0].Type="MusicArtist",item.AlbumArtists[0].IsFolder=!0,lines.push(getTextActionButton(options,item.AlbumArtists[0],null,serverId))):isOuterFooter&&item.ArtistItems&&item.ArtistItems.length?(item.ArtistItems[0].Type="MusicArtist",item.ArtistItems[0].IsFolder=!0,lines.push(getTextActionButton(options,item.ArtistItems[0],null,serverId))):isOuterFooter&&item.AlbumArtists&&item.AlbumArtists.length?(item.AlbumArtists[0].Type="MusicArtist",item.AlbumArtists[0].IsFolder=!0,lines.push(getTextActionButton(options,item.AlbumArtists[0],null,serverId))):isOuterFooter&&item.GameSystem&&item.GameSystemId?lines.push(getTextActionButton(options,{Id:item.GameSystemId,ServerId:serverId,Name:item.GameSystem,Type:"GameSystem",IsFolder:!0})):lines.push(_textencoding.default.htmlEncode(isUsingLiveTvNaming(itemType)?item.Name:item.SeriesName||item.Series||item.Album||(item.AlbumArtist?item.AlbumArtist.Name||item.AlbumArtist:null)||item.GameSystem||""))),options.textLines)for(var additionalLines=options.textLines(item),i=0,length=additionalLines.length;i<length;i++)lines.push(additionalLines[i]);fieldMap.ItemImageName&&(item.ImageTag?lines.push(item.Name):lines.push("&nbsp;")),fieldMap.Filename&&lines.push(item.FileName||item.Filename),fieldMap.FilenameOrName&&lines.push(_textencoding.default.htmlEncode(item.FileName||item.Filename||item.Name||"")),fieldMap.Album&&!options.albumFirst&&(isOuterFooter&&item.AlbumId&&item.Album?lines.push(getTextActionButton(options,{Id:item.AlbumId,ServerId:serverId,Name:item.Album,Type:"MusicAlbum",IsFolder:!0})):lines.push(item.Album||""));var genreType,_lineParts,parentTitle=fieldMap.CommunityRating,titleAdded=fieldMap.CriticRating,emptyLines=[],parentTitle=((parentTitle||titleAdded)&&(lineParts=[],parentTitle&&item.CommunityRating&&lineParts.push(_mediainfo.default.getCommunityRating(item,{outerClass:"cardMediaInfoItem"})),titleAdded&&item.CriticRating&&lineParts.push(_mediainfo.default.getCriticRating(item,{outerClass:"cardMediaInfoItem"})),(lineParts.length?lines:(lineParts.push("&nbsp;"),emptyLines)).push('<div class="mediaInfoItems cardMediaInfoItems">'+lineParts.join("")+"</div>")),fieldMap.ProductionYear),titleAdded=fieldMap.OfficialRating,lineParts=fieldMap.Runtime;if((parentTitle||titleAdded||lineParts)&&(_lineParts=[],parentTitle&&("Series"===itemType?"Continuing"===item.Status?item.ProductionYear&&_lineParts.push(_globalize.default.translate("SeriesYearToPresent",item.ProductionYear||"")):(parentTitle=item.EndDate?new Date(Date.parse(item.EndDate)).getFullYear():null)&&item.ProductionYear&&parentTitle!==item.ProductionYear?_lineParts.push(item.ProductionYear+" &ndash; "+parentTitle):item.ProductionYear&&_lineParts.push(item.ProductionYear):item.ProductionYear&&_lineParts.push(item.ProductionYear)),lineParts&&item.RunTimeTicks&&_lineParts.push(_datetime.default.getHumanReadableRuntime(item.RunTimeTicks)),titleAdded&&item.OfficialRating&&_lineParts.push(item.OfficialRating),lines.push(_lineParts.join("&nbsp; "))),fieldMap.Director&&lines.push(function(options,item,people,personType,limit){return getTextLinksLine(options,item,people=people.filter(function(i){return i.Type===personType}),"Person",limit)}(options,item,item.People||[],"Director",2)),fieldMap.Genres)if(null!=(parentTitle=item.GenreItems)&&parentTitle.length){switch(itemType){case"Audio":case"MusicAlbum":case"MusicArtist":case"MusicVideo":genreType="MusiGenre";break;case"Game":case"GameSystem":genreType="GameGenre";break;default:genreType="Genre"}lines.push(getTextLinksLine(options,item,item.GenreItems,genreType,2))}else emptyLines.push('<div class="mediaInfoItems cardMediaInfoItems">&nbsp;</div>');if(fieldMap.Studios&&(null!=(lineParts=item.Studios)&&lineParts.length?lines.push(getTextLinksLine(options,item,item.Studios,"Studio",1)):emptyLines.push('<div class="mediaInfoItems cardMediaInfoItems">&nbsp;</div>')),fieldMap.Tags&&(null!=(titleAdded=item.TagItems)&&titleAdded.length?lines.push(getTextLinksLine(options,item,item.TagItems,"Tag",2)):emptyLines.push('<div class="mediaInfoItems cardMediaInfoItems">&nbsp;</div>')),fieldMap.AirTime&&lines.push(_mediainfo.default.getAirTimeText(item,options.showAirDateTime,options.showAirEndTime)||""),fieldMap.ChannelName&&(item.ChannelId?lines.push(getTextActionButton(options,{Id:item.ChannelId,ServerId:serverId,Name:item.ChannelName,ChannelNumber:item.ChannelNumber,Type:"TvChannel",MediaType:item.MediaType,IsFolder:!1})):lines.push(item.ChannelName||"&nbsp;")),fieldMap.CurrentProgramParentName&&lines.push((null==(_lineParts=item.CurrentProgram)?void 0:_lineParts.Name)||""),fieldMap.CurrentProgramParentNameOrName&&(lineParts=(null==(parentTitle=item.CurrentProgram)?void 0:parentTitle.Name)||itemController.getDisplayName(item,{includeParentInfo:options.includeParentInfoInTitle,channelNumberFirst:options.channelNumberFirst,enableSpecialEpisodePrefix:options.enableSpecialEpisodePrefix,includeIndexNumber:options.includeIndexNumber}),lines.push(_textencoding.default.htmlEncode(lineParts||""))),fieldMap.CurrentProgramName&&lines.push((null==(titleAdded=item.CurrentProgram)?void 0:titleAdded.EpisodeTitle)||""),fieldMap.CurrentProgramTime&&(item.CurrentProgram?lines.push(_mediainfo.default.getAirTimeText(item.CurrentProgram,!1,!0)||""):lines.push("")),fieldMap.SeriesTimerTime&&(item.RecordAnyTime?lines.push(_globalize.default.translate("Anytime")):item.StartDate?lines.push(_datetime.default.getDisplayTime(item.StartDate)):lines.push("")),fieldMap.SeriesTimerChannel&&(item.RecordAnyChannel||null==(_lineParts=item.ChannelIds)||!_lineParts.length?lines.push(_globalize.default.translate("AllChannels")):1<(null==(parentTitle=item.ChannelIds)?void 0:parentTitle.length)?lines.push(_globalize.default.translate("NumberChannelsValue",null==(lineParts=item.ChannelIds)?void 0:lineParts.length)):item.ChannelName?lines.push(_itemmanager.default.getDisplayName({Id:item.ChannelId,ServerId:serverId,Name:item.ChannelName,ChannelNumber:item.ChannelNumber,Type:"TvChannel",MediaType:item.MediaType,IsFolder:!1},{})):lines.push(_globalize.default.translate("OneChannel"))),fieldMap.PersonRole&&(item.Role?lines.push(_globalize.default.translate(item.Role)):item.PersonType?lines.push(_globalize.default.translate(item.PersonType)):lines.push("")),fieldMap.ChapterTime&&(null!=item.StartPositionTicks?lines.push(_datetime.default.getDisplayRunningTime(item.StartPositionTicks)):lines.push("")),fieldMap.ChapterWatching&&(_lineParts=(titleAdded=_playbackmanager.default.currentTime())>=item.StartPositionTicks&&titleAdded<=item.StartPositionTicks+(item.DurationTicks||0),lines.push({html:'<div class="cardText cardText-secondary '+(_lineParts?"cardText-watching cardText-currentwatching":"cardText-watching")+'">'+_globalize.default.translate("Watching")+"</div>"})),fieldMap.LastActivityDateRelative&&lines.push(itemController.resolveField(item,"LastActivityDateRelative")),fieldMap.AppName&&lines.push(itemController.resolveField(item,"AppName")),fieldMap.AccessToken&&lines.push(itemController.resolveField(item,"AccessToken")),fieldMap.DateCreated){var parentTitle=item.DateCreated,dateText=parentTitle?_datetime.default.toLocaleDateString(new Date(Date.parse(parentTitle))):null;switch(itemType){case"User":case"ApiKey":lines.push(dateText?_globalize.default.translate("CreatedOnValue",dateText):"");break;default:lines.push(dateText?_globalize.default.translate("AddedOnValue",dateText):"")}}return fieldMap.DatePlayed&&(_lineParts=(titleAdded=null==(lineParts=item.UserData)?void 0:lineParts.LastPlayedDate)?_datetime.default.toLocaleDateString(new Date(Date.parse(titleAdded))):null,lines.push(_lineParts?_globalize.default.translate("PlayedOnValue",_lineParts):"")),fieldMap.Url&&lines.push(item.Url||""),fieldMap.Version&&lines.push(_textencoding.default.htmlEncode(item.Version||"")),fieldMap.CollectionType&&(item.Id?lines.push(_itemmanager.default.getContentTypeName(item.CollectionType)):lines.push("")),fieldMap.LibraryFolders&&(item.Locations&&"boxsets"!==item.CollectionType?1===item.Locations.length?lines.push(item.Locations[0]):lines.push(_globalize.default.translate("NumLocationsValue",item.Locations.length)):lines.push("")),fieldMap.AppNameVersion&&lines.push(itemController.resolveField(item,"AppNameVersion")),fieldMap.InstalledVersion&&(item.InstalledVersion?lines.push(_globalize.default.translate("LabelVersionInstalled",item.InstalledVersion)):lines.push("")),fieldMap.InstalledVersion&&lines.push(_textencoding.default.htmlEncode(item.Version||"")),fieldMap.MediaInfo&&lines.push({html:'<div class="cardText cardText-secondary mediaInfoItems cardText-mediaInfo">'+_mediainfo.default.getPrimaryMediaInfoHtml(item,{episodeTitle:!1,subtitles:!1,endsAt:!1})+"</div>"}),fieldMap.Tagline&&lines.push(getTaglineText(item.Taglines?item.Taglines[0]:null)),fieldMap.Overview&&(options.hideEpisodeSpoilerInfo&&"Episode"===itemType&&!1===(null==(parentTitle=item.UserData)?void 0:parentTitle.Played)?lines.push(getOverviewText(null)):lines.push(getOverviewText(item.Overview))),(fieldMap.Container||fieldMap.Size||fieldMap.Bitrate)&&(lineParts=[],fieldMap.Container&&item.Container&&lineParts.push(item.Container.toUpperCase()),fieldMap.Size&&item.Size&&(titleAdded=_dataformatter.default.sizeToString(item.Size))&&lineParts.push(titleAdded),fieldMap.Bitrate&&item.Bitrate&&lineParts.push(_dataformatter.default.bitrateToString(item.Bitrate)),lines.push(lineParts.join("&nbsp; ")||"&nbsp;")),fieldMap.VideoCodec&&lines.push((null==(_lineParts=item.VideoCodec)?void 0:_lineParts.toUpperCase())||"&nbsp;"),(fieldMap.Resolution||fieldMap.Framerate)&&(parentTitle=[],fieldMap.Resolution&&item.Width&&item.Height&&(titleAdded=_dataformatter.default.getResolutionText(item))&&parentTitle.push(titleAdded),fieldMap.Framerate&&(lineParts=item.AverageFrameRate||item.RealFrameRate)&&(_lineParts=_dataformatter.default.numberToString(lineParts,3))&&parentTitle.push(_lineParts+"fps"),lines.push(parentTitle.join("&nbsp; ")||"&nbsp;")),fieldMap.AudioCodec&&lines.push((null==(titleAdded=item.AudioCodec)?void 0:titleAdded.toUpperCase())||"&nbsp;"),fieldMap.DownloadableImageInfo&&(lines.push(function(item){var text="",lang=item.DisplayLanguage||item.Language;return item.Width&&item.Height?(text+=item.Width+"x"+item.Height,lang&&(text+=" - "+lang)):lang&&(text+=lang),text}(item)||""),lines.push(function(item){var text;return"Likes"===item.RatingType?text=1===item.CommunityRating?_globalize.default.translate("OneLike"):_globalize.default.translate("LikeCountValue",item.CommunityRating):item.CommunityRating?(text=_dataformatter.default.numberToString(item.CommunityRating,1),item.VoteCount&&(text+=" - "+(1===item.VoteCount?_globalize.default.translate("OneVote"):_globalize.default.translate("VoteCountValue",item.VoteCount)))):text=_globalize.default.translate("Unrated"),text}(item)||"")),fieldMap.DateModified&&(lineParts=item.DateModified,_lineParts="Log"===itemType?lineParts?_datetime.default.toLocaleString(new Date(Date.parse(lineParts))):null:lineParts?_datetime.default.toLocaleDateString(new Date(Date.parse(lineParts))):null,lines.push(_lineParts?_globalize.default.translate("UpdatedOnValue",_lineParts):"")),fieldMap.DeviceUserInfo&&(parentTitle="",item.LastUserName&&(item.LastUserId?parentTitle+=getTextActionButton(options,{Id:item.LastUserId,Name:item.LastUserName,ServerId:serverId,Type:"User"},item.LastUserName+", "+_dataformatter.default.formatRelativeTime(item.DateLastActivity),null,null):item.LastUserName&&(parentTitle+=item.LastUserName+", "+_dataformatter.default.formatRelativeTime(item.DateLastActivity))),lines.push(parentTitle)),fieldMap.IpAddress&&lines.push(item.IpAddress||""),fieldMap.TunerName&&lines.push(item.TunerName||""),fieldMap.MediaStreamInfo&&_mediainfo.default.pushMediaStreamLines(item,options,lines,itemController.getDefaultIcon(item)),fieldMap.ImageEditorStandardButtons&&lines.push(function(item){var searchText,html="";return item.Providers.length&&(html+='<button type="button" is="paper-icon-button-light" class="itemAction" data-action="searchimageproviders" title="'+(searchText=item.ImageTag?_globalize.default.translate("HeaderSearchNewImage"):_globalize.default.translate("HeaderSearchForAnImage"))+'" aria-label="'+searchText+'"><i class="md-icon autortl">search</i></button>'),item.ImageTag||_servicelocator.appHost.supports("fileinput")&&(html+='<button type="button" is="paper-icon-button-light" class="itemAction" data-action="addimage" title="'+_globalize.default.translate("HeaderSelectImageFile")+'" aria-label="'+_globalize.default.translate("HeaderSelectImageFile")+'"><i class="md-icon autortl">add_circle_outline</i></button>'),item.ImageTag&&(html+='<button type="button" is="paper-icon-button-light" class="itemAction" data-action="delete" title="'+_globalize.default.translate("Delete")+'" aria-label="'+_globalize.default.translate("Delete")+'"><i class="md-icon autortl">delete</i></button>'),html}(item)),fieldMap.ImageEditorBackdropButtons&&lines.push(function(){var html="";return html+='<button type="button" is="paper-icon-button-light" class="itemAction" data-action="delete" title="'+_globalize.default.translate("Delete")+'" aria-label="'+_globalize.default.translate("Delete")+'"><i class="md-icon autortl">delete</i></button>'}()),fieldMap.SessionNowPlayingInfo&&function(lines,item){var playstate=item.PlayState,item=item.NowPlayingItem||{};lines.push(item.SeriesName||item.Name),"Episode"===item.Type?lines.push(_itemmanager.default.getDisplayName(item,{includeParentInfo:!0})):item.ArtistItems&&item.ArtistItems.length?lines.push(item.ArtistItems[0].Name):item.ProductionYear&&lines.push(item.ProductionYear),item.RunTimeTicks&&lines.push(_datetime.default.getDisplayRunningTime(playstate.PositionTicks||0)+" / "+_datetime.default.getDisplayRunningTime(item.RunTimeTicks))}(lines,item),fieldMap.LastServerAddress&&("Server"===item.Type&&(itemType=(null==(titleAdded=_connectionmanager.default.getApiClient(item))?void 0:titleAdded.serverAddress())||"")?lines.push(_globalize.default.translate("LastUsedAddressValue",itemType)):lines.push("")),html+=getCardTextLines(item,lines=lines.concat(emptyLines),options.cardTextCssClass,isOuterFooter,isOuterFooter,options.lines,options),progressHtml&&(html+=progressHtml),html&&(!isOuterFooter||logoUrl||options.cardLayout)&&(html='<div class="'+footerClass+'">'+html,html+="</div>"),html}function getTextActionButton(options,item,text,serverId,parentId,isSameItemAsCard){var dataAttributes;return text=text||_itemmanager.default.getDisplayName(item,{hideEpisodeSpoilerInfo:options.hideEpisodeSpoilerInfo}),!_layoutmanager.default.tv&&!1!==options.textLinks&&item.Id?(text=_textencoding.default.htmlEncode(text),item=isSameItemAsCard?(dataAttributes="",options.linkButtonAction||options.action||"link"):(dataAttributes=_shortcuts.default.getShortcutAttributesHtml(item,{serverId:serverId,parentId:parentId,isBoundListItem:options.isBoundListItem&&isSameItemAsCard}),"link"),'<button tabindex="-1" title="'+text+'" '+dataAttributes+' type="button"'+(!options.anyDraggable||isSameItemAsCard?"":' draggable="true"')+' class="cardMediaInfoItem itemAction textActionButton cardTextActionButton emby-button button-link" data-action="'+item+'">'+text+"</button>"):_textencoding.default.htmlEncode(text)}function getActiveSessionFooterHtml(options,item,apiClient){var html="";return(html+='<div class="cardSideFooter-bottomsections activeSession-bottomsections">')+function(item){var imgClass,imageUrl,html="";return item.NowPlayingItem&&(html+='<div class="cardSideFooter-bottomsection activeSession-bottomsection activeSession-deviceSection itemAction" data-action="link" '+_shortcuts.default.getShortcutAttributesHtml({Type:"Device",ServerId:item.ServerId,Id:item.DeviceId},{})+">",imgClass="secondaryText activeSession-deviceimage",html=(imageUrl=item.AppIconUrl)?html+('<div class="'+(imgClass=(imgClass+=" activeSession-deviceimage-bg")+(" activeSession-deviceimage-bg-"+_imagehelper.default.getShapeFromAspect(1))))+'" style="aspect-ratio:1;background-image:url('+imageUrl+');"></div>':(html=html+'<div class="'+imgClass+'"><i class="activeSession-deviceimage-icon md-icon autortl">')+_itemmanager.default.getDefaultIcon(item)+"</i></div>",html+="<div>",item.Client&&(html=(html+="<div>")+_textencoding.default.htmlEncode(item.Client+" "+item.ApplicationVersion)+"</div>"),item.DeviceName&&(html=(html+='<div class="secondaryText">')+_textencoding.default.htmlEncode(item.DeviceName)+"</div>"),item.RemoteEndPoint&&(html=html+'<div class="secondaryText flex align-items-center">'+item.RemoteEndPoint,(imageUrl=(item.Protocol||"").toLowerCase())&&(html+=" "+imageUrl),imageUrl.includes("https")&&(html+='<i class="md-icon button-icon button-icon-right autortl" style="font-size:inherit;" title="HTTPS">https</i>'),html+="</div>"),html+="</div></div>"),html}(item)+function(item){for(var html="",playstate=item.PlayState||{},nowplayingItem=item.NowPlayingItem||{},item=item.TranscodingInfo||{},transcodeReasons=(html=(html=(html=html+'<div class="cardSideFooter-bottomsection activeSession-bottomsection">'+'<div class="secondaryText activeSession-bottomsection-title">')+_globalize.default.translate("Stream"))+"</div>"+"<div>",nowplayingItem.Container&&(html=(html+="<div>")+nowplayingItem.Container.toUpperCase(),nowplayingItem.Bitrate&&(html+=" ("+_dataformatter.default.bitrateToString(nowplayingItem.Bitrate)+")"),html+="</div>"),html=html+"<div>"+'<i class="md-icon activeSessionStreamIcon autortl">&#xe941;</i>',"Transcode"===playstate.PlayMethod?(nowplayingItem=[],item.SubProtocol&&"progressive"!==item.SubProtocol?nowplayingItem.push(item.SubProtocol.toUpperCase()):item.Container&&nowplayingItem.push(item.Container.toUpperCase()),item.Bitrate&&(playstate="(",item.Bitrate&&(playstate+=_dataformatter.default.bitrateToString(item.Bitrate)),item.Framerate&&(playstate+=" "+_dataformatter.default.numberToString(item.Framerate,3)+" fps"),nowplayingItem.push(playstate+=")")),item.CurrentThrottle&&nowplayingItem.push('<span class="secondaryText">Throttling</span>'),html+=nowplayingItem.join(" ")):html+=_globalize.default.translate("HeaderDirectPlay"),html+="</div>",item.TranscodeReasons||[]),i=0,length=transcodeReasons.length;i<length;i++)html=(html+="<div>")+_globalize.default.translate(transcodeReasons[i])+"</div>";return html=html+"</div>"+"</div>"}(item)+function(item){for(var mediaStream,html="",playstate=item.PlayState||{},mediaStreams=(item.NowPlayingItem||{}).MediaStreams||[],videoStreamIndex=playstate.VideoStreamIndex,playstate=item.TranscodingInfo||{},i=0,length=mediaStreams.length;i<length;i++)if("Video"===mediaStreams[i].Type&&(null==videoStreamIndex||videoStreamIndex===mediaStreams[i].Index)){mediaStream=mediaStreams[i];break}if(mediaStream){if(html=(html=(html=html+'<div class="cardSideFooter-bottomsection activeSession-bottomsection">'+'<div class="secondaryText activeSession-bottomsection-title">')+_globalize.default.translate("Video"))+"</div>"+"<div>",mediaStream.DisplayTitle&&(html=(html+='<div class="flex align-items-center flex-wrap-wrap">')+_textencoding.default.htmlEncode(mediaStream.DisplayTitle),playstate.VideoDecoderHwAccel&&(html+='<i class="md-icon activeSession-hwaccelIcon autortl" title="'+_globalize.default.translate("HeaderHardwareAcceleratedDecoding")+" ("+(playstate.VideoDecoderHwAccel||_globalize.default.translate("Software"))+')">&#xe30d;</i>'),html+="</div>"),html=html+'<div class="flex align-items-center flex-wrap-wrap">'+'<i class="md-icon activeSessionStreamIcon autortl">&#xe941;</i>',!1===playstate.IsVideoDirect?(html=(html=html+_globalize.default.translate("Transcode")+" (")+(playstate.VideoCodec||"").toUpperCase()+" ",playstate.VideoBitrate&&(html+=_dataformatter.default.bitrateToString(playstate.VideoBitrate)),html+=")",playstate.VideoEncoderHwAccel&&(html+='<i class="md-icon activeSession-hwaccelIcon autortl" title="'+_globalize.default.translate("HeaderHardwareAcceleratedEncoding")+" ("+(playstate.VideoEncoderHwAccel||_globalize.default.translate("Software"))+')">&#xe30d;</i>')):html+=_globalize.default.translate("HeaderDirectPlay"),html+="</div>",!1===playstate.IsVideoDirect)for(var pipeline=playstate.VideoPipelineInfo||[],_i=0,_length=pipeline.length;_i<_length;_i++){var extra,step=pipeline[_i];"ToneMapping"!==step.StepType&&"Deinterlace"!==step.StepType&&"SubTitleBurnIn"!==step.StepType&&"SubtitleOverlay"!==step.StepType||(html+='<div><i class="md-icon activeSessionStreamIcon autortl">&#xe941;</i>',"ToneMapping"===step.StepType?html+=_globalize.default.translate("HeaderToneMapping"):"Deinterlace"===step.StepType?html+=_globalize.default.translate("Deinterlacing"):"SubTitleBurnIn"!==step.StepType&&"SubtitleOverlay"!==step.StepType||(html+=_globalize.default.translate("HeaderBurningInSubtitles")),extra=[],step.ParamShort?extra.push(step.ParamShort):step.Param?"Subtitles"!==step.Param&&extra.push(step.Param):step.FfmpegOptions&&extra.push(step.FfmpegOptions),extra.length&&(html+=' <span class="secondaryText">('+extra.join(" ")+")</span>"),html+="</div>")}html=html+"</div>"+"</div>"}return html}(item)+function(item){for(var mediaStream,html="",playstate=item.PlayState||{},mediaStreams=(item.NowPlayingItem||{}).MediaStreams||[],audioStreamIndex=playstate.AudioStreamIndex,playstate=item.TranscodingInfo||{},i=0,length=mediaStreams.length;i<length;i++)if("Audio"===mediaStreams[i].Type&&(null==audioStreamIndex||audioStreamIndex===mediaStreams[i].Index)){mediaStream=mediaStreams[i];break}return mediaStream&&(html=(html+='<div class="cardSideFooter-bottomsection activeSession-bottomsection"><div class="secondaryText activeSession-bottomsection-title">')+_globalize.default.translate("Audio")+"</div><div>",html=(mediaStream.DisplayTitle?(html+="<div>")+_textencoding.default.htmlEncode(mediaStream.DisplayTitle)+"</div>":html)+'<div><i class="md-icon activeSessionStreamIcon autortl">&#xe941;</i>',!1===playstate.IsAudioDirect?(html=(html=html+_globalize.default.translate("Transcode")+" (")+(playstate.AudioCodec||"").toUpperCase()+" ",playstate.AudioBitrate&&(html+=_dataformatter.default.bitrateToString(playstate.AudioBitrate)),html+=")"):html+=_globalize.default.translate("HeaderDirectPlay"),html+="</div></div></div>"),html}(item)+function(item,apiClient){var html="";if(item.UserId){html+='<div class="cardSideFooter-bottomsection activeSession-bottomsection activeSession-usersection align-items-center justify-content-center itemAction" data-action="link" '+_shortcuts.default.getShortcutAttributesHtml({Type:"User",ServerId:item.ServerId,Id:item.UserId},{})+">";var names=[];item.UserId&&names.push(item.UserName);for(var i=0,length=item.AdditionalUsers.length;i<length;i++)names.push(item.AdditionalUsers[i].UserName);apiClient=item.UserId&&item.UserPrimaryImageTag?apiClient.getUserImageUrl(item.UserId,{tag:item.UserPrimaryImageTag,height:24,type:"Primary"}):null;apiClient&&(html+='<img draggable="false" loading="lazy"'+decodingAttribute+' class="activeSessionUserImage" src="'+apiClient+'" />'),html=html+("<div>"+names.join(", ")+"</div>")+"</div>"}return html}(item,apiClient)+function(options,item){var html="";return options.isSingleClickElement||item.DeviceId===_connectionmanager.default.deviceId()||(item.ServerId&&item.NowPlayingItem&&item.SupportsRemoteControl&&(html=(html+='<button is="paper-icon-button-light" class="sessionCardButton btnSessionPlayPause paper-icon-button-light md-icon md-icon-fill autortl itemAction" data-action="session_playpause">'+(item.PlayState&&item.PlayState.IsPaused?"&#xe037;":"&#xe034;")+"</button>")+'<button is="paper-icon-button-light" class="sessionCardButton btnSessionStop paper-icon-button-light md-icon md-icon-fill autortl itemAction" data-action="session_stop" title="'+_globalize.default.translate("Stop")+'" aria-label="'+_globalize.default.translate("Stop")+'">&#xe047;</button>'),item.ServerId&&item.SupportedCommands.includes("DisplayMessage")&&item.DeviceId!==_connectionmanager.default.deviceId()&&(html+='<button is="paper-icon-button-light" class="sessionCardButton btnSessionSendMessage paper-icon-button-light md-icon autortl itemAction" data-action="session_sendmessage" title="'+_globalize.default.translate("SendMessage")+'" aria-label="'+_globalize.default.translate("SendMessage")+'">&#xe0b7;</button>'),html&&(html='<div class="cardSideFooter-bottomsection activeSession-bottomsection activeSession-commandsection align-items-center">'+html,html+="</div>")),html}(options,item)+"</div>"}function getCardHtml(item,index,options){var itemType=item.Type,isPhoto="Photo"===item.MediaType,action=function(itemType,isFolder,options){var action=options.action||"link";switch(action){case"play":isFolder&&(action="playallfromhere");break;case"none":break;default:switch(itemType){case"Photo":action="playallfromhere";break;case"AddServer":case"EmbyConnect":case"Downloads":action="link"}}return action}(itemType,item.IsFolder,options),shape=options.shape,imageShape=options.imageShape,isSingleClickElement=options.isSingleClickElement,serverId=item.ServerId||options.serverId,serverId=serverId?_connectionmanager.default.getApiClient(serverId):null,imageItem=options.showCurrentProgramImage?item.CurrentProgram||item:"ActiveSession"===itemType?item.NowPlayingItem:item.ProgramInfo||item,blurImageOptions=(!1!==options.image&&imageItem?(imgInfo=_imagehelper.default.getImageUrl(imageItem,serverId,options,imageShape),blurImageOptions="large"===options.vibrantMode?{width:12,blur:2,adjustForPixelRatio:!1}:{width:1,adjustForPixelRatio:!1},vibrantImgInfo=options.vibrant?_imagehelper.default.getImageUrl(imageItem,serverId,blurImageOptions,imageShape):null,imgInfo.imgUrl||imageItem===item||(imgInfo=_imagehelper.default.getImageUrl(imageItem=item,serverId,options,imageShape),vibrantImgInfo=options.vibrant?_imagehelper.default.getImageUrl(imageItem,serverId,blurImageOptions,imageShape):null)):imgInfo={},imgInfo.imgUrl),imageShape=(vibrantImgInfo||imgInfo).imgUrl,vibrantImgInfo=imgInfo.forceName&&!isPhoto,overlayText=options.overlayText,fieldMap=options.fieldMap,cardContentClass=options.cardContentClass,cardImageClass=options.cardImageClass,imageItem=!1===options.coverImage?null:_imagehelper.default.getCoveredImageClass(imageItem,serverId,imgInfo,options.uiAspect,options.coverImage);(imageItem=isPhoto&&options.ignoreUIAspect?" coveredImage coveredImage-contain":imageItem)&&(cardContentClass+=imageItem,cardImageClass+=imageItem),options.paddedImage&&(cardImageClass+=" cardImage-padded"),item.Policy&&item.Policy.IsDisabled&&(cardContentClass+=" grayscaleImage"),options.defaultBackground||blurImageOptions||options.cardLayout||(cardContentClass+=" defaultCardBackground");options.round||("MusicArtist"!==itemType||"square"!==shape)||(cardContentClass+=" cardContent-round"),!1===options.playQueueIndicator||!(imgInfo=CurrentPlayingItemId)||imgInfo!==item.PlaylistItemId&&imgInfo!==item.Id||_layoutmanager.default.tv||_playbackmanager.default.paused()||(cardContentClass+=" itemelement-nowplaying cardImageContainer-nowplaying");var cardImageContainerOpen,footerCssClass,logoUrl,isPhoto=options.cardBoxClass,imageItem=(options.playQueueIndicator&&item.PlaylistItemId&&(_playbackmanager.default.currentItem()||{}).PlaylistItemId===item.PlaylistItemId&&(isPhoto+=" activePlaylistCardBox"),!1===options.progress?null:_indicators.default.getProgressBarHtml(item,{containerClass:"cardProgressBarContainer",animated:!1})),shape="",imgInfo=(options.showChannelLogo&&item.ChannelPrimaryImageTag&&(logoUrl=serverId.getImageUrl(item.ChannelId,{type:"Primary",height:40,tag:item.ChannelPrimaryImageTag})),!1===options.programIndicators||"Program"!==itemType&&"Timer"!==itemType&&"TvChannel"!==itemType||(imageItem=function(item){var html="";return(item=item.CurrentProgram||item).IsLive?html+='<div class="cardProgramIndicator liveTvProgram">'+_globalize.default.translate("Live")+"</div>":item.IsPremiere?html+='<div class="cardProgramIndicator premiereTvProgram">'+_globalize.default.translate("Premiere")+"</div>":item.IsNew&&(html+='<div class="cardProgramIndicator newTvProgram">'+_globalize.default.translate("New")+"</div>"),html}(item)+(imageItem||"")),_itemmanager.default.getItemController(itemType)),vibrantImgInfo=(overlayText||vibrantImgInfo?(footerCssClass=options.innerCardFooterClass,shape+=getCardFooterText(item,imgInfo,options,function(options,fieldMap,overlayText,forceName){return overlayText?!forceName||fieldMap.Name||fieldMap.ParentNameOrName||fieldMap.ParentName?fieldMap:options.fieldMapWithForceName:!forceName||fieldMap.Name||fieldMap.ParentNameOrName||fieldMap.ParentName?{}:{ParentNameOrName:!0}}(options,fieldMap,overlayText,vibrantImgInfo),0,footerCssClass,imageItem,logoUrl=null,!1),imageItem=""):imageItem&&(shape=(shape+='<div class="'+options.innerCardFooterClass+'">')+imageItem+"</div>",imageItem=""),""),fieldMap=(overlayText||(footerCssClass=options.cardLayout?options.outerFooterClass:"cardFooter cardFooter-transparent",options.sideFooter&&(footerCssClass+=" cardFooter-side"),logoUrl&&(footerCssClass+=" cardFooter-withlogo"),options.vibrant&&imageShape&&"large"!==options.vibrantMode&&(footerCssClass+=" darkContentContainer"),vibrantImgInfo=getCardFooterText(item,imgInfo,options,fieldMap,0,footerCssClass,imageItem,logoUrl=options.cardLayout?logoUrl:null,!0),options.sideFooter&&(overlayText="cardFooterContent",options.centerText||(overlayText+=" cardFooterContent-start"),vibrantImgInfo='<div class="'+overlayText+' itemAction" data-action="'+action+'">'+vibrantImgInfo+"</div>","ActiveSession"===itemType)&&(vibrantImgInfo+=getActiveSessionFooterHtml(options,item,serverId))),"");return options.sideFooter||(cardContentClass+=" "+options.cardPadderClass),fieldMap=isSingleClickElement?(cardImageContainerOpen=blurImageOptions?2===options.lazy?supportsObjectFit?'<div class="'+cardContentClass+'"><img draggable="false" alt=" " class="'+cardImageClass+'"'+options.loadingLazyAttribute+decodingAttribute+' src="'+blurImageOptions+'" />':'<div class="'+cardContentClass+'" style="background-image:url('+blurImageOptions+');">':supportsNativeLazyLoading?'<div class="'+cardContentClass+'"><img draggable="false" alt=" " class="'+cardImageClass+'" loading="lazy"'+decodingAttribute+' src="'+blurImageOptions+'" />':'<div class="'+cardContentClass+' lazy" style="background-image:url('+blurImageOptions+');">':'<div class="'+cardContentClass+'">',"</div>"):"none"===action?(cardImageContainerOpen=blurImageOptions?2===options.lazy?supportsObjectFit?'<div data-action="'+action+'" class="itemAction '+cardContentClass+'"><img draggable="false" alt=" " class="'+cardImageClass+'"'+options.loadingLazyAttribute+decodingAttribute+' src="'+blurImageOptions+'" />':'<div data-action="'+action+'" class="itemAction '+cardContentClass+'" style="background-image:url('+blurImageOptions+');">':supportsNativeLazyLoading?'<div data-action="'+action+'" class="itemAction '+cardContentClass+'"><img draggable="false" alt=" " class="'+cardImageClass+'" loading="lazy"'+decodingAttribute+' src="'+blurImageOptions+'" />':'<div data-action="'+action+'" class="itemAction lazy '+cardContentClass+'" style="background-image:url('+blurImageOptions+');">':'<div data-action="'+action+'" class="'+cardContentClass+' itemAction">',"</div>"):(cardImageContainerOpen=blurImageOptions?2===options.lazy?supportsObjectFit?'<button type="button" data-action="'+action+'" tabindex="-1" class="itemAction cardContent-button '+cardContentClass+'"><img draggable="false" alt=" " class="'+cardImageClass+'"'+options.loadingLazyAttribute+decodingAttribute+' src="'+blurImageOptions+'" />':'<button type="button" data-action="'+action+'" tabindex="-1" class="itemAction cardContent-button '+cardContentClass+'" style="background-image:url('+blurImageOptions+');">':supportsNativeLazyLoading?'<button type="button" data-action="'+action+'" tabindex="-1" class="itemAction cardContent-button '+cardContentClass+'"><img draggable="false" alt=" " class="'+cardImageClass+'" loading="lazy"'+decodingAttribute+' src="'+blurImageOptions+'" />':'<button type="button" data-action="'+action+'" tabindex="-1" class="itemAction cardContent-button lazy '+cardContentClass+'" style="background-image:url('+blurImageOptions+');">':'<button type="button" data-action="'+action+'" tabindex="-1" class="cardContent-button '+cardContentClass+' itemAction">',"</button>"),!1===options.image&&!1===options.imageContainer&&(cardImageContainerOpen=fieldMap=""),options.vibrant&&imageShape?("large"===options.vibrantMode&&(isPhoto+=" darkContentContainer"),cardImageContainerOpen='<div style="background-image:url('+imageShape+');" class="'+isPhoto+'">'+cardImageContainerOpen):options.enableCardBox&&(cardImageContainerOpen='<div class="'+isPhoto+'">'+cardImageContainerOpen),options.typeIndicator&&(footerCssClass=_itemmanager.default.getDefaultIcon(item,options))&&(cardImageContainerOpen+='<i class="md-icon autortl cardIndicator cardIndicatorIcon">'+footerCssClass+"</i>"),!1!==options.playedIndicator&&(cardImageContainerOpen+=_indicators.default.getPlayedIndicatorHtml(item,"cardIndicator card")),!1!==options.timerIndicator&&(cardImageContainerOpen+=_indicators.default.getTimerIndicator(item,"cardIndicator card")),null!=(imageItem=item.Policy)&&imageItem.IsDisabled&&(cardImageContainerOpen+='<i class="md-icon cardIndicator cardUserDisabledIcon indicatorIcon" title="'+_globalize.default.translate("Disabled")+'">person_off</i>'),"CollectionFolder"===itemType||item.CollectionType?(logoUrl=item.RefreshProgress?"":"hide",options.sideFooter&&(logoUrl+=" cardRefreshIndicator-sideFooter"),_layoutmanager.default.tv||(cardImageContainerOpen+='<div is="emby-itemrefreshindicator" class="'+logoUrl.trim()+'" data-progress="'+(item.RefreshProgress||0)+'"></div>',refreshIndicatorLoaded)||(refreshIndicatorLoaded=!0,Emby.importModule("./modules/emby-elements/emby-itemrefreshindicator/emby-itemrefreshindicator.js"))):"User"===itemType&&item.ConnectLinkType&&(cardImageContainerOpen+='<i class="md-icon cardPlayedIndicator cardIndicator playedIndicator" title="'+_globalize.default.translate("LinkedToEmbyConnect")+'">cloud</i>'),!blurImageOptions&&options.imageFallback&&(cardImageContainerOpen+=function(item,options){if(null!=options.defaultTextContent)return'<div class="'+options.cardDefaultTextClass+'">'+options.defaultTextContent+"</div>";if("ItemImage"===item.Type)return function(item,options){return'<h2 class="'+options.cardDefaultTextClass+' secondaryText">'+item.Name+"</h2>"}(item,options);var icon=item.Icon||(!1===options.defaultIcon?null:_itemmanager.default.getDefaultIcon(item,options));if(icon)return options.smallSideFooter?'<i class="cardImageIcon cardImageIcon-sideFooter cardImageIcon-smallSideFooter md-icon autortl">'+icon+"</i>":options.sideFooter?'<i class="cardImageIcon cardImageIcon-sideFooter md-icon autortl">'+icon+"</i>":'<i class="cardImageIcon cardImageIcon-center md-icon autortl">'+icon+"</i>";icon=isUsingLiveTvNaming(item.Type)?item.Name:_itemmanager.default.getDisplayName(item,{includeParentInfo:options.includeParentInfoInTitle,channelNumberFirst:options.channelNumberFirst,enableSpecialEpisodePrefix:options.enableSpecialEpisodePrefix,includeIndexNumber:options.includeIndexNumber,hideEpisodeSpoilerInfo:options.hideEpisodeSpoilerInfo});return'<div class="'+options.cardDefaultTextClass+'">'+icon+"</div>"}(item,options)),overlayText=_layoutmanager.default.tv||!1===options.hoverMenu?"":function(item,itemController,action,options,menuClass){var html="",hasContent=!1;html+='<div class="cardOverlayContainer itemAction '+menuClass+'" data-action="'+action+'">';menuClass="fab cardOverlayButton-fab buttonItems-item itemAction",action=item.Type;options.multiSelect&&(hasContent=!0,html+='<label tabindex="-1" title="'+options.multiSelectTitle+'" aria-label="'+options.multiSelectTitle+'" data-action="multiselect" class="chkItemSelectContainer chkCardSelectContainer cardOverlayButton itemAction emby-checkbox-label"><input tabindex="-1" class="chkItemSelect chkCardSelect emby-checkbox emby-checkbox-notext" is="emby-checkbox" type="checkbox" data-classes="true" /><span class="checkboxLabel chkCardSelect-checkboxLabel"></span></label>');var overlayFabClass=menuClass+" cardOverlayFab-primary button-hoveraccent";!1!==options.hoverPlayButton&&_playbackmanager.default.canPlay(item)&&(hasContent=!0,playButtonAction=function(item,options){return item.IsFolder?"resume":"Photo"===item.MediaType?"playallfromhere":options.playAction}(item,options),html+='<button tabindex="-1" type="button" is="emby-button" class="'+overlayFabClass+' md-icon md-icon-fill autortl" data-action="'+playButtonAction+'">&#xe037;</button>');options.hoverDownloadButton&&(hasContent=!0,html+='<button tabindex="-1" type="button" is="emby-button" class="'+overlayFabClass+'" data-action="custom"><i class="md-icon">&#xf090;</i></button>');html+='<div class="cardOverlayButton-br buttonItems">';var playButtonAction=item.UserData||{};supportsSync&&!1!==options.downloadButton&&_itemmanager.default.canSync(item)&&(hasContent=!0,html+=_embyDownloadbutton.default.getHtml(item,menuClass,null,"fab"));!1!==options.playedButton&&_itemmanager.default.canMarkPlayed(item)&&"CollectionFolder"!==action&&(hasContent=!0,html+=_embyPlaystatebutton.default.getHtml(playButtonAction.Played,menuClass,null,"fab"));!1!==options.ratingButton&&_itemmanager.default.canRate(item)&&(hasContent=!0,html+=_embyRatingbutton.default.getHtml(playButtonAction.IsFavorite,menuClass,null,"fab"));options.contextMenu&&itemController.supportsContextMenu(item)&&(hasContent=!0,html+='<button type="button" title="'+options.moreTitle+'" aria-label="'+options.moreTitle+'" is="emby-button" class="md-icon '+menuClass+'" data-action="menu">&#xe5D3;</button>');options.previewImageButton&&supportsTargetBlank&&(hasContent=!0,html+='<a href="'+item.OriginalImageUrl+'" target="_blank" tabindex="-1" type="button" title="'+_globalize.default.translate("HeaderOpenInNewWindow")+'" aria-label="'+_globalize.default.translate("HeaderOpenInNewWindow")+'" is="emby-linkbutton" class="md-icon '+menuClass+'" data-action="openlink">&#xe89e;</a>');return hasContent?html+="</div></div>":""}(item,imgInfo,action,options,options.cardPadderClass),options.dragReorder&&(overlayText+='<i title="'+_globalize.default.translate("DragDropToReorder")+'" class="md-icon cardIndicator cardIndicatorIcon cardIndicatorIcon-dragHandle dragHandle">&#xe25D;</i>'),options.cardParts?(serverId=_shortcuts.default.getShortcutAttributes(item,options),options.isSingleClickElement&&serverId.push({name:"data-action",value:action}),options.isVirtualList||serverId.push({name:"data-index",value:index}),options.sideFooter?fieldMap+=shape:fieldMap=shape+fieldMap,isSingleClickElement=cardImageContainerOpen+fieldMap+overlayText+vibrantImgInfo,options.enableCardBox&&(isSingleClickElement+="</div>"),{attributes:serverId,html:isSingleClickElement}):(cardImageClass=_shortcuts.default.getShortcutAttributesHtml(item,options),options.isSingleClickElement&&(cardImageClass+=' data-action="'+action+'"'),options.isVirtualList||(cardImageClass+=' data-index="'+index+'"'),cardContentClass=options.tagName,options.sideFooter?fieldMap+=shape:fieldMap=shape+fieldMap,(imageShape=options.fixedAttributes)&&(cardImageClass+=" "+imageShape),isPhoto="<"+cardContentClass+cardImageClass+' class="'+options.className+'">'+cardImageContainerOpen+fieldMap+overlayText+vibrantImgInfo,options.enableCardBox&&(isPhoto+="</div>"),isPhoto+"</"+cardContentClass+">")}var supportsTargetBlank=_servicelocator.appHost.supports("targetblank"),supportsSync=_servicelocator.appHost.supports("sync");function setUserPreferredSize(element,cardSize){if(supportsCalc&&supportsMin&&supportsCssVariables){var value,offset=0;switch(element&&(offset=parseInt(element.getAttribute("data-cardsizeoffset")||"0")),value=null!=(value=element?cardSize:value)||element&&!offset?value:_appsettings.default.cardSize()){case"extrasmall":value=3;break;case"smaller":value=2;break;case"small":value=1;break;case"large":value=-1;break;case"larger":value=-2;break;case"extralarge":value=-3;break;case"normal":value=0;break;default:value=element&&!offset?"null":0}"number"==typeof value&&(offset&&(value+=-1*offset,value=Math.min(3,value),value=Math.max(-3,value)),value=value.toString());try{element&&"null"===value?element.style.removeProperty("--user-cards-size-adjust"):(element||document.documentElement).style.setProperty("--user-cards-size-adjust",value)}catch(err){console.log("error in setUserPreferredSize: "+err)}}}_events.default.on(_connectionmanager.default,"localusersignedin",function(){setUserPreferredSize()}),_events.default.on(_usersettings.default,"change",function(e,name,value){"cardSize"===name&&setUserPreferredSize()});_exports.default={setListOptions:setListOptions,getItemsHtml:function(items,options){return buildCardsHtmlInternal(items=1===arguments.length?(options=arguments[0]).items:items,options)},getItemParts:function(item,index,options){return options.cardParts=!0,getCardHtml(item,index,options)},buildCards: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=buildCardsHtmlInternal(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&&_lazyimageloader.default.lazyChildren(itemsContainer),options.autoFocus&&_focusmanager.default.autoFocus(itemsContainer)}},virtualChunkSize:50,setListClasses:function(elem,listOptions){var _listOptions$options,classList=elem.classList;null!=(_listOptions$options=listOptions.options)&&_listOptions$options.horizontalGrid?classList.add("itemsContainer-horizontalgrid"):classList.remove("itemsContainer-horizontalgrid"),listOptions.options&&null!=(_listOptions$options=listOptions.options)&&_listOptions$options.horizontalGrid&&!listOptions.virtualScrollLayout&&(listOptions.options.itemsContainer=elem,listOptions.options.useItemsContainerForImageSize=!0),null!=(_listOptions$options=listOptions.options)&&_listOptions$options.horizontalGrid&&!SupportsHorizontalRenderingWithoutCardColumns?classList.add("itemsContainer-horizontalgrid-withcolumns"):classList.remove("itemsContainer-horizontalgrid-withcolumns"),null!=(elem=listOptions.options)&&elem.horizontalGrid||(listOptions.virtualScrollLayout||"").includes("horizontal")?classList.remove("vertical-wrap"):classList.add("vertical-wrap"),classList.remove("vertical-list")},setUserPreferredSize:setUserPreferredSize,removeNowPlayingIndicator:function(indicator){indicator.classList.remove("itemelement-nowplaying","cardImageContainer-nowplaying","cardText-nowplaying")},addNowPlayingIndicator:function(itemElement){var cardText;_layoutmanager.default.tv?(cardText=itemElement.querySelector(".cardText-first"))&&cardText.classList.add("itemelement-nowplaying","cardText-nowplaying"):(cardText=itemElement.querySelector(".cardImageContainer"))&&cardText.classList.add("itemelement-nowplaying","cardImageContainer-nowplaying")}}});