1 line
No EOL
112 KiB
JavaScript
1 line
No EOL
112 KiB
JavaScript
import loading from"./../modules/loading/loading.js";import connectionManager from"./../modules/emby-apiclient/connectionmanager.js";import ApiClient from"./../modules/emby-apiclient/apiclient.js";import events from"./../modules/emby-apiclient/events.js";import globalize from"./../modules/common/globalize.js";import playbackManager from"./../modules/common/playback/playbackmanager.js";import playbackActions from"./../modules/common/playback/playbackactions.js";import appHeader from"./../modules/appheader/appheader.js";import backdrop from"./../modules/backdrop/backdrop.js";import itemHelper from"./../modules/common/itemhelper.js";import dataFormatter from"./../modules/common/dataformatter.js";import itemManager from"./../modules/common/itemmanager/itemmanager.js";import layoutManager from"./../modules/layoutmanager.js";import userSettings from"./../modules/common/usersettings/usersettings.js";import BaseView from"./../modules/viewmanager/baseview.js";import"./../modules/emby-elements/emby-scroller/emby-scroller.js";import"./../modules/emby-elements/emby-tabs/emby-tabs.js";import"./../modules/emby-elements/emby-itemscontainer/emby-itemscontainer.js";import"./../modules/emby-elements/emby-button/emby-button.js";import"./../modules/emby-elements/sync/emby-downloadbutton.js";import"./../modules/emby-elements/emby-select/emby-select.js";import"./../modules/emby-elements/emby-dialogclosebutton/emby-dialogclosebutton.js";import listView from"./../modules/listview/listview.js";import cardBuilder from"./../modules/cardbuilder/cardbuilder.js";import itemContextMenu from"./../modules/itemcontextmenu.js";import indicators from"./../modules/indicators/indicators.js";import navDrawer from"./../modules/navdrawer/navdrawer.js";import textEncoding from"./../modules/common/textencoding.js";import dom from"./../modules/dom.js";import appRouter from"./../modules/approuter.js";import datetime from"./../modules/common/datetime.js";import mediaInfo from"./../modules/mediainfo/mediainfo.js";import{appHost}from"./../modules/common/servicelocator.js";import focusManager from"./../modules/focusmanager.js";import imageLoader from"./../modules/common/imagehelper.js";import skinManager from"./../modules/skinmanager.js";import serverNotifications from"./../modules/common/input/api.js";import LinkedItemsView from"./linkeditems.js";require(["flexStyles","css!item/item.css"]);let backdropContainer=document.querySelector(".backdropContainer"),backgroundContainer=document.querySelector(".backgroundContainer"),skinHeader=document.querySelector(".skinHeader"),supportsAsyncDecodedImages=dom.supportsAsyncDecodedImages(),decodingAttribute=supportsAsyncDecodedImages?' decoding="async"':"";function getResponseHelper(){return Emby.importModule("./modules/common/responsehelper.js")}function showActionSheet(options){return Emby.importModule("./modules/actionsheet/actionsheet.js").then(function(ActionSheet){return ActionSheet.show(options)})}function showConfirm(options){return Emby.importModule("./modules/common/dialogs/confirm.js").then(function(confirm){return confirm(options)})}function showAlert(options){return Emby.importModule("./modules/common/dialogs/alert.js").then(function(alert){return alert(options)})}function loadMultiSelect(){return layoutManager.tv?Promise.resolve(null):Emby.importModule("./modules/multiselect/multiselect.js")}function renderTrackSelectionsWithoutUser(page,instance,item,forceReload){connectionManager.getApiClient(item.ServerId).getCurrentUser().then(function(user){renderTrackSelections(page,instance,item,user,forceReload)})}function isMediaStreamDisplayed(stream){return"Data"!==stream.Type}function isMediaSourceDisplayed(version,renderAdminFields){for(let i=0,length=version.MediaStreams.length;i<length;i++)if(isMediaStreamDisplayed(version.MediaStreams[i]))return!0;return!!(version.Container||version.Formats&&version.Formats.length||version.Path&&"Http"!==version.Protocol&&renderAdminFields||version.Size)}function renderMediaSource(parentElem,renderAdminFields,item,mediaSource,scrollX){var elem=document.createElement("div");elem.classList.add("mediaSource");let html="";html+=scrollX?'<div class="sectionTitle sectionTitle-cards secondaryText" style="display:block;padding: 0 0 .5em;margin-top:0;">':'<div style="display:block;">',mediaSource.Path&&("Http"!==mediaSource.Protocol||"Trailer"!==item.Type)&&renderAdminFields&&(html+="<div>"+mediaSource.Path+"</div>"),html+='<div class="mediaInfoItems">',mediaSource.Container&&(html+=mediaSource.Container.toUpperCase()),mediaSource.Size&&(html+='<span class="mediaInfoItem">'+dataFormatter.sizeToString(mediaSource.Size)+"</span>");renderAdminFields=new Date(Date.parse(item.DateCreated));html=(html=(html+='<span class="mediaInfoItem">'+globalize.translate("AddedOnValue",datetime.toLocaleDateString(renderAdminFields)+" "+datetime.getDisplayTime(renderAdminFields))+"</span>")+"</div>"+"</div>")&&'<div class="padded-left padded-left-page padded-right">'+html+"</div>",elem.innerHTML=html;let sectionHtml;sectionHtml=scrollX?'<div is="emby-scroller" class="emby-scroller padded-top-focusscale padded-bottom-focusscale padded-left padded-left-page padded-right" data-mousewheel="false" data-focusscroll="true" data-horizontal="true"><div is="emby-itemscontainer" class="detailMediaStreamsItemsContainer itemsContainer-defaultCardSize scrollSlider itemsContainer focusable focuscontainer-x" data-focusabletype="nearest"></div></div>':'<div is="emby-itemscontainer" class="vertical-list itemsContainer padded-left padded-left-page padded-right itemsContainer-defaultCardSize"></div>',elem.insertAdjacentHTML("beforeend",sectionHtml),parentElem.appendChild(elem);renderAdminFields=mediaSource.MediaStreams.filter(isMediaStreamDisplayed).map(function(s){return itemHelper.normalizeMediaStreamForDisplay(item,mediaSource,s)});scrollX?cardBuilder.buildCards(renderAdminFields,{shape:"backdrop",overlayText:!0,fields:["MediaStreamInfo"],itemsContainer:elem.querySelector(".itemsContainer"),action:"none",multiSelect:!1,ratingButton:!1,playedButton:!1,defaultIcon:!1,typeIndicator:!1,playedIndicator:!1,syncIndicator:!1,timerIndicator:!1,randomDefaultBackground:!1,imageFallback:!1,cardPadderClass:layoutManager.tv?"mediaStreamPadder-tv":"mediaStreamPadder",innerCardFooterClass:"mediaStreamInnerCardFooter",cardTextCssClass:"mediaStreamInnerCardFooter-cardText",enableUserData:!1,draggable:!1,enableFocusScaling:!1,horizontal:!0}):listView.buildItems(renderAdminFields,{image:!1,fields:["MediaStreamInfo"],itemsContainer:elem.querySelector(".itemsContainer"),action:"none",multiSelect:!1,ratingButton:!1,playedButton:!1,defaultIcon:!1,typeIndicator:!1,playedIndicator:!1,syncIndicator:!1,timerIndicator:!1,randomDefaultBackground:!1,imageFallback:!1,innerCardFooterClass:"mediaStreamInnerCardFooter",enableUserDataButtons:!1,draggable:!1})}function renderMediaSources(page,renderAdminFields,item,mediaSources){var groupedVersions=mediaSources.filter(function(g){return"Grouping"===g.Type}),parentElem=(renderAdminFields&&groupedVersions.length?page.querySelector(".splitVersionContainer").classList.remove("hide"):page.querySelector(".splitVersionContainer").classList.add("hide"),page.querySelector(".mediaSources"));let anyDisplayed=!1;parentElem.innerHTML="";for(let i=0,length=mediaSources.length;i<length;i++){var mediaSource=mediaSources[i];isMediaSourceDisplayed(mediaSource,renderAdminFields)&&renderMediaSource(parentElem,renderAdminFields,item,mediaSource,anyDisplayed=!0)}anyDisplayed&&userSettings.showFullMediaInfoOnDetailScreen()?page.querySelector(".audioVideoMediaInfo").classList.remove("hide"):page.querySelector(".audioVideoMediaInfo").classList.add("hide")}function isRenderingTrackSelections(item){return!(!itemHelper.supportsMediaSourceSelection(item)||-1===playbackManager.getSupportedCommands().indexOf("PlayMediaSource")||!playbackManager.canPlay(item))}function setTrackSelectionFieldDisabled(elem,disabled){disabled?elem.setAttribute("disabled","disabled"):elem.removeAttribute("disabled");let parent=elem.closest(".selectContainer");(parent=parent&&parent.querySelector(".emby-select-wrapper-inline"))&&(disabled?parent.classList.add("emby-select-wrapper-inline-disabled"):parent.classList.remove("emby-select-wrapper-inline-disabled"))}function refreshChapters(view){let elem=view.querySelector(".chaptersItemsContainer");elem.waitForCustomElementUpgrade().then(function(){elem.refreshItems()})}function resumeChaptersItemsContainer(view){let elem=view.querySelector(".chaptersItemsContainer");elem.waitForCustomElementUpgrade().then(function(){elem.resume({})})}function renderTrackSelections(view,instance,item,user,forceReload,mediaSources){let select=view.querySelector(".selectSource"),apiClient=connectionManager.getApiClient(item);isRenderingTrackSelections(item)?(mediaSources?Promise.resolve(mediaSources):playbackManager.getPlaybackMediaSources(item)).then(function(mediaSources){var renderAdminFields=user.Policy.IsAdministrator,renderAdminFields=(renderMediaSources(view,renderAdminFields,item,mediaSources),instance._currentPlaybackMediaSources=mediaSources,"TvChannel"!==item.Type&&instance.trackSelectionsContainer.classList.remove("hide"),select.value);let selectedId=renderAdminFields||mediaSources[0].Id;select.innerHTML=mediaSources.map(function(v){var selected=v.Id===selectedId?" selected":"";return'<option value="'+v.Id+'"'+selected+">"+textEncoding.htmlEncode(v.Name)+"</option>"}).join(""),1<mediaSources.length?(setTrackSelectionFieldDisabled(select,!1),view.querySelector(".selectSourceContainer").classList.remove("hide")):(view.querySelector(".selectSourceContainer").classList.add("hide"),setTrackSelectionFieldDisabled(select,!0)),select.value===renderAdminFields&&!forceReload||(renderMediaInfo(instance,view,item,mediaSources,apiClient),renderVideoSelections(view,mediaSources),renderAudioSelections(view,mediaSources),renderSubtitleSelections(view,mediaSources),updateTrackSelectionsFocusState(instance,view),refreshChapters(view)),"TvChannel"===item.Type&&updateTrackSelectionsFocusState(instance,view)}):(renderMediaInfo(instance,view,item,item.MediaSources||[],apiClient),renderMediaSources(view,user.Policy.IsAdministrator,item,item.MediaSources||[]),instance._currentPlaybackMediaSources=[],instance.trackSelectionsContainer.classList.add("hide"),select.innerHTML="",view.querySelector(".selectVideo").innerHTML="",view.querySelector(".selectAudio").innerHTML="",view.querySelector(".selectSubtitles").innerHTML="",setTrackSelectionFieldDisabled(select,!0),updateTrackSelectionsFocusState(instance,view),refreshChapters(view))}function renderVideoSelections(page,mediaSources){let mediaSourceId=page.querySelector(".selectSource").value;var mediaSources=mediaSources.filter(function(m){return m.Id===mediaSourceId})[0].MediaStreams.filter(function(m){return"Video"===m.Type&&(-1!==m.Index||null!=m.DisplayTitle||null!=m.Codec)}),select=page.querySelector(".selectVideo");let selectedId=mediaSources.length?mediaSources[0].Index:-1;select.innerHTML=mediaSources.map(function(v){var selected=v.Index===selectedId?" selected":"";return'<option value="'+v.Index+'" '+selected+">"+textEncoding.htmlEncode(v.DisplayTitle||v.Codec?.toUpperCase()||"")+"</option>"}).join(""),setTrackSelectionFieldDisabled(select,!0),mediaSources.length?page.querySelector(".selectVideoContainer").classList.remove("hide"):page.querySelector(".selectVideoContainer").classList.add("hide")}function renderAudioSelections(page,mediaSources){let mediaSourceId=page.querySelector(".selectSource").value;var mediaSources=mediaSources.filter(function(m){return m.Id===mediaSourceId})[0],tracks=mediaSources.MediaStreams.filter(function(m){return"Audio"===m.Type&&(-1!==m.Index||null!=m.DisplayTitle||null!=m.Codec)}),select=page.querySelector(".selectAudio");let selectedId=mediaSources.DefaultAudioStreamIndex;select.innerHTML=tracks.map(function(v){var selected=v.Index===selectedId?" selected":"",embeddedTitle=v.Title&&!(v.DisplayTitle||"").includes(v.Title)?v.Title:null;return"<option"+(embeddedTitle?' title="'+embeddedTitle+'"':"")+' value="'+v.Index+'" '+selected+">"+textEncoding.htmlEncode(v.DisplayTitle||v.Codec?.toUpperCase()||"")+"</option>"}).join(""),1<tracks.length?setTrackSelectionFieldDisabled(select,!1):setTrackSelectionFieldDisabled(select,!0),tracks.length?page.querySelector(".selectAudioContainer").classList.remove("hide"):page.querySelector(".selectAudioContainer").classList.add("hide")}function renderSubtitleSelections(page,mediaSources){let mediaSourceId=page.querySelector(".selectSource").value;var mediaSources=mediaSources.filter(function(m){return m.Id===mediaSourceId})[0],tracks=mediaSources.MediaStreams.filter(function(m){return"Subtitle"===m.Type}),select=page.querySelector(".selectSubtitles");let selectedId=null==mediaSources.DefaultSubtitleStreamIndex?-1:mediaSources.DefaultSubtitleStreamIndex;if(tracks.length){selectedId;let selected;select.innerHTML='<option value="-1">'+globalize.translate("Off")+"</option>"+tracks.map(function(v){selected=v.Index===selectedId?" selected":"";var embeddedTitle=v.Title&&!(v.DisplayTitle||"").includes(v.Title)?v.Title:null;return"<option"+(embeddedTitle?' title="'+embeddedTitle+'"':"")+' value="'+v.Index+'" '+selected+">"+textEncoding.htmlEncode(v.DisplayTitle)+"</option>"}).join(""),page.querySelector(".selectSubtitlesContainer").classList.remove("hide")}else select.innerHTML="",page.querySelector(".selectSubtitlesContainer").classList.add("hide")}function setButtonText(page,query,html){var elems=page.querySelectorAll(query);for(let i=0,length=elems.length;i<length;i++){elems[i].innerHTML=html;var btn=elems[i].closest("button");btn&&(btn.title=html,btn.setAttribute("aria-label",html))}}function setResumeProgress(resumeInfoElement,item){var ticksLeft,resumeInfoElement=resumeInfoElement.querySelector(".resumeProgress");item.UserData&&0<item.UserData.PlaybackPositionTicks&&item.RunTimeTicks?(ticksLeft=item.RunTimeTicks-item.UserData.PlaybackPositionTicks,ticksLeft='<div class="resumeTimeRemaining secondaryText">'+globalize.translate("TimeRemainingValue",datetime.getHumanReadableRuntime(ticksLeft))+"</div>",resumeInfoElement.innerHTML=indicators.getProgressBarHtml(item,{containerClass:"resumeInfoProgressBar",animated:!0})+ticksLeft,resumeInfoElement.classList.remove("hide")):resumeInfoElement.classList.add("hide")}function setNextUpButtonText(instance,page){return getNextUpItems.call(instance,{Limit:1,EnableTotalRecordCount:!1}).then(function(result){var result=result.Items[0],resumeInfo=page.querySelector(".detailResumeInfo");if(result){var href,resumeNameElement=resumeInfo.querySelector(".resumeName");let resumeName=itemManager.getDisplayName(result);layoutManager.tv||(href=appRouter.getRouteUrl(result,{}),resumeName='<a is="emby-linkbutton" class="button-link button-link-color-inherit" href="'+href+'">'+resumeName+"</a>"),resumeNameElement.innerHTML=resumeName,resumeNameElement.classList.remove("hide"),setResumeProgress(resumeInfo,result),result.UserData&&0<result.UserData.PlaybackPositionTicks?setButtonText(page,".resumeButtonText",globalize.translate("Resume")):setButtonText(page,".resumeButtonText",globalize.translate("Play")),resumeInfo.classList.remove("hide")}else setButtonText(page,".resumeButtonText",globalize.translate("Play")),resumeInfo.classList.add("hide")})}function reloadPlayButtons(instance,page,item,isUserDataChangeEvent){let canPlay=!1;var playButtons=page.querySelectorAll(".btnPlay");if("Program"===item.Type){var now=new Date;now>=new Date(Date.parse(item.StartDate))&&now<new Date(Date.parse(item.EndDate))?(hideAll(page,playButtons,!0),canPlay=!0):hideAll(page,playButtons),hideAll(page,"btnResume"),hideAll(page,"detailResumeInfo"),hideAll(page,"btnShuffle"),hideAll(page,"btnQueue"),setButtonText(page,".playButtonText",globalize.translate("Play"))}else if(playbackManager.canPlay(item)){hideAll(page,"btnPlay",!0);let enableShuffle=item.IsFolder||-1!==["MusicAlbum","MusicGenre","MusicArtist"].indexOf(item.Type);"MusicAlbum"===item.Type&&item.SupportsResume&&(enableShuffle=!1),hideAll(page,"btnShuffle",enableShuffle="Season"!==item.Type&&"Series"!==item.Type?enableShuffle:!1),canPlay=!0;var now=document.activeElement,isPlayFocused=now&&now.classList&&(now.classList.contains("btnResume")||now.classList.contains("btnMainPlay")),btnPlay=page.querySelector(".btnPlay"),btnResume=page.querySelector(".btnResume"),btnPlayTrailer=page.querySelector(".btnPlayTrailer-main"),btnShuffle=(btnPlayTrailer.querySelector("i").innerHTML=itemManager.getDefaultIcon({Type:"Trailer",MediaType:"Video"}),page.querySelector(".btnShuffle"));"Series"===item.Type||"MusicAlbum"===item.Type&&item.SupportsResume?(btnResume.classList.add("detailButton-primary"),btnPlay.classList.remove("detailButton-primary","detailButton-highres3"),setNextUpButtonText(instance,page),setButtonText(page,".playButtonText",globalize.translate("FromBeginning")),btnPlay.classList.remove("detailButton-stacked"),btnShuffle.classList.remove("detailButton-stacked"),isTrailerButtonVisible(item)?(btnPlayTrailer.classList.add("detailButton-stacked"),btnResume.classList.add("detailButton-stacked")):(btnPlayTrailer.classList.remove("detailButton-stacked"),btnResume.classList.remove("detailButton-stacked")),hideAll(page,"detailResumeInfo",!0),hideAll(page,"btnResume",!0),hideAll(page,"btnPlay",enableShuffle)):((instance=item.UserData&&0<item.UserData.PlaybackPositionTicks)?(btnResume.classList.add("detailButton-primary","detailButton-stacked"),btnPlay.classList.remove("detailButton-primary","detailButton-stacked"),layoutManager.tv?btnPlay.classList.remove("detailButton-highres3"):btnPlay.classList.add("detailButton-highres3"),btnPlayTrailer.classList.add("detailButton-stacked"),btnShuffle.classList.remove("detailButton-stacked"),setButtonText(page,".playButtonText",globalize.translate("FromBeginning")),hideAll(page,"detailResumeInfo",!0),hideAll(page,"resumeName"),setResumeProgress(page.querySelector(".detailResumeInfo"),item)):(btnPlay.classList.add("detailButton-primary"),btnPlay.classList.remove("detailButton-highres3"),enableShuffle?(btnPlayTrailer.classList.remove("detailButton-stacked"),btnResume.classList.remove("detailButton-stacked"),btnShuffle.classList.add("detailButton-stacked"),btnPlay.classList.add("detailButton-stacked")):(isTrailerButtonVisible(item)?(btnPlay.classList.add("detailButton-stacked"),btnResume.classList.remove("detailButton-stacked"),btnPlayTrailer.classList.add("detailButton-stacked")):(btnPlay.classList.remove("detailButton-stacked"),btnResume.classList.remove("detailButton-stacked"),btnPlayTrailer.classList.remove("detailButton-stacked")),btnShuffle.classList.remove("detailButton-stacked")),setButtonText(page,".playButtonText",globalize.translate("Play"))),hideAll(page,"detailResumeInfo",instance),hideAll(page,"btnResume",instance)),isUserDataChangeEvent||hideAll(page,"btnQueue",playbackManager.canQueue(item)),isPlayFocused&&focusMainSection.call(now.parentNode)}else hideAll(page,playButtons),hideAll(page,"btnQueue"),hideAll(page,"btnResume"),hideAll(page,"detailResumeInfo"),hideAll(page,"btnShuffle");return canPlay}function reloadUserDataButtons(page,item){let i,length;var btnPlaystates=page.querySelectorAll(".btnPlaystate");for(i=0,length=btnPlaystates.length;i<length;i++){var btnPlaystate=btnPlaystates[i];itemManager.canMarkPlayed(item)?(btnPlaystate.classList.remove("hide"),btnPlaystate.setItem(item)):(btnPlaystate.classList.add("hide"),btnPlaystate.setItem(null))}var btnUserRatings=page.querySelectorAll(".btnUserRating");for(i=0,length=btnUserRatings.length;i<length;i++){var btnUserRating=btnUserRatings[i];itemManager.canRate(item)?(btnUserRating.classList.remove("hide"),btnUserRating.setItem(item)):(btnUserRating.classList.add("hide"),btnUserRating.setItem(null))}}function focusMainSection(){var btns=this.querySelectorAll(".detailButton");for(let i=0,length=btns.length;i<length;i++){var btn=btns[i];if(focusManager.isCurrentlyFocusable(btn))try{return void focusManager.focus(btn)}catch(err){}}focusManager.autoFocus(this,{skipIfNotEnabled:!0})}function updateMainDetailButtonsFocusState(elem){var btns=elem.querySelectorAll(".detailButton");for(let i=0,length=btns.length;i<length;i++){var btn=btns[i];if(focusManager.isCurrentlyFocusable(btn))return void setScopedFocus(null,elem,!0,"autofocus")}setScopedFocus(null,elem,!1,"autofocus")}function setTitle(item,apiClient,enableLogo){(enableLogo="TvChannel"===item.Type?!1:enableLogo)?appHeader.setLogoTitle({items:[item],titleText:"",preferredLogoImageTypes:skinManager.getPreferredLogoImageTypes()}):appHeader.setTitle("")}function getLogoPlacement(item){return"TvChannel"===item.Type?null:("MusicAlbum"!==item.Type&&"Audio"!==item.Type&&"MusicVideo"!==item.Type||item.ImageTags&&item.ImageTags.Logo)&&userSettings.getEnableLogoAsTitle(globalize.getCurrentLocale())?"title":"float"}function getArtistLinksHtml(artists,serverId){let html=[];for(let i=0,length=artists.length;i<length;i++){var artist=artists[i],href=appRouter.getRouteUrl(artist,{itemType:"MusicArtist",serverId:serverId});html.push('<a style="font-weight:inherit;" class="button-link" is="emby-linkbutton" href="'+href+'">'+textEncoding.htmlEncode(artist.Name)+"</a>")}return html=html.join(" / ")}function inferContext(item){switch(item.Type){case"Series":case"Season":case"Episode":return"tvshows";case"Movie":return"movies";case"Game":case"GameSystem":return"games";case"MusicArtist":case"MusicAlbum":case"Audio":case"AudioBook":case"MusicVideo":case"MusicGenre":return"music";case"Program":case"TvChannel":case"Timer":case"SeriesTimer":return"livetv";default:return null}}function renderName(instance,item,apiClient,user,containers){var itemForTitle="Timer"===item.Type&&item.ProgramInfo||item,context=inferContext(itemForTitle),parentNameHtml=[];let parentRoute,parentNameLast=!1,hasFocusableButton=!1;var fontSize=parseFloat(window.getComputedStyle(document.body,null).getPropertyValue("font-size")),fontSize=Math.round(2*fontSize*2.4)+Math.round(.2*fontSize),apiClient="title"!==getLogoPlacement(itemForTitle)?null:apiClient.getLogoImageUrl(itemForTitle,{maxHeight:Math.max(fontSize,260)},skinManager.getPreferredLogoImageTypes());let itemNamePrimaryClass="itemName-primary",itemPrimaryNameContainerClass="itemPrimaryNameContainer";if(itemForTitle.AlbumArtists&&itemForTitle.AlbumArtists.length)parentNameHtml.push(getArtistLinksHtml(itemForTitle.AlbumArtists,itemForTitle.ServerId,context)),parentNameLast=!0;else if(itemForTitle.ArtistItems&&itemForTitle.ArtistItems.length&&"MusicVideo"===itemForTitle.Type)parentNameHtml.push(getArtistLinksHtml(itemForTitle.ArtistItems,itemForTitle.ServerId,context)),parentNameLast=!0;else if(itemForTitle.GameSystem&&itemForTitle.GameSystemId)parentNameLast=!0,parentRoute=appRouter.getRouteUrl({Id:itemForTitle.GameSystemId,Name:itemForTitle.GameSystem,Type:"GameSystem",IsFolder:!0,ServerId:itemForTitle.ServerId},{context:context}),hasFocusableButton=!0,parentNameHtml.push('<a style="font-weight:inherit;" class="button-link button-link-color-inherit" is="emby-linkbutton" href="'+parentRoute+'">'+textEncoding.htmlEncode(itemForTitle.GameSystem)+"</a>");else if(itemForTitle.SeriesName&&itemForTitle.SeriesId){parentRoute=appRouter.getRouteUrl({Id:itemForTitle.SeriesId,Name:itemForTitle.SeriesName,Type:"Series",IsFolder:!0,ServerId:itemForTitle.ServerId},{context:context});let seriesName=textEncoding.htmlEncode(itemForTitle.SeriesName);apiClient?(seriesName='<img draggable="false" loading="lazy"'+decodingAttribute+' class="itemLogoAsTitle" alt="'+seriesName+'" src="'+apiClient+'" />',itemNamePrimaryClass+=" itemName-primary-logo",layoutManager.tv&&(itemNamePrimaryClass+=" itemName-primary-logo-tv"),itemPrimaryNameContainerClass+=" itemPrimaryNameContainer-logo",hasFocusableButton=!0,parentNameHtml.push('<a style="font-weight:inherit;height:100%;width:100%;" class="button-link button-link-color-inherit" is="emby-linkbutton" href="'+parentRoute+'">'+seriesName+"</a>")):(hasFocusableButton=!0,parentNameHtml.push('<a style="font-weight:inherit;" class="button-link button-link-color-inherit" is="emby-linkbutton" href="'+parentRoute+'">'+seriesName+"</a>"))}else itemForTitle.SeriesName?parentNameHtml.push(textEncoding.htmlEncode(itemForTitle.SeriesName)):(itemForTitle.IsSeries||itemForTitle.EpisodeTitle)&&parentNameHtml.push(textEncoding.htmlEncode(itemForTitle.Name));itemForTitle.Album&&itemForTitle.AlbumId&&("MusicVideo"===itemForTitle.Type||"Audio"===itemForTitle.Type)?(parentRoute=appRouter.getRouteUrl({Id:itemForTitle.AlbumId,Name:itemForTitle.Album,Type:"MusicAlbum",IsFolder:!0,ServerId:itemForTitle.ServerId},{context:context}),hasFocusableButton=!0,parentNameHtml.push('<a style="font-weight:inherit;" class="button-link button-link-color-inherit" is="emby-linkbutton" href="'+parentRoute+'">'+textEncoding.htmlEncode(itemForTitle.Album)+"</a>")):itemForTitle.Album&&parentNameHtml.push(textEncoding.htmlEncode(itemForTitle.Album));let html="",editorButtonsHtml="",name=(layoutManager.tv||(itemManager.canEdit([item],user)&&(hasFocusableButton=!0,editorButtonsHtml+='<button is="paper-icon-button-light" class="btnDetailEdit btnEditMetadata secondaryText flex-shrink-zero" title="'+globalize.translate("HeaderEditMetadata")+'" aria-label="'+globalize.translate("HeaderEditMetadata")+'"><i class="md-icon autortl"></i></button>'),itemManager.canEditImages(item,user)&&(hasFocusableButton=!0,editorButtonsHtml+='<button is="paper-icon-button-light" class="btnDetailEdit btnEditImages secondaryText flex-shrink-zero" title="'+globalize.translate("HeaderEditImages")+'" aria-label="'+globalize.translate("HeaderEditImages")+'"><i class="md-icon">photo</i></button>')),enableItemBackdropAsTopImage(itemForTitle)||(itemPrimaryNameContainerClass+=" itemPrimaryNameContainer-centered"),parentNameHtml.length&&(html=parentNameLast?'<div class="verticalFieldItem itemSecondaryNameContainer"><h3 class="itemName-secondary itemSecondaryNameContainer-condense">'+parentNameHtml.join(" - ")+"</h3></div>":'<div class="verticalFieldItem '+itemPrimaryNameContainerClass+'"><h1 class="'+itemNamePrimaryClass+'">'+parentNameHtml.join(" - ")+"</h1></div>"),itemManager.getDisplayName(itemForTitle,{includeParentInfo:!0}));name=name&&textEncoding.htmlEncode(name),html&&name&&!parentNameLast?html+='<div class="verticalFieldItem flex align-items-center flex-wrap-wrap itemSecondaryNameContainer"><h3 class="itemName-secondary">'+name+"</h3>"+editorButtonsHtml+"</div>":(parentNameLast||(apiClient&&(name='<img draggable="false" loading="lazy"'+decodingAttribute+' class="itemLogoAsTitle" alt="'+name+'" src="'+apiClient+'" />',itemNamePrimaryClass+=" itemName-primary-logo",itemPrimaryNameContainerClass+=" itemPrimaryNameContainer-logo",layoutManager.tv)&&(itemNamePrimaryClass+=" itemName-primary-logo-tv"),name)||editorButtonsHtml)&&(html='<div class="verticalFieldItem flex align-items-center flex-wrap-wrap '+itemPrimaryNameContainerClass+'"><h1 class="'+itemNamePrimaryClass+'">'+name+"</h1>"+editorButtonsHtml+"</div>"+html);for(let i=0,length=containers.length;i<length;i++){var container=containers[i],btnEditMetadata=(enableItemBackdropAsTopImage(itemForTitle)?container.classList.remove("nameContainer-centered"):container.classList.add("nameContainer-centered"),container.innerHTML=html,setScopedFocus(null,container,hasFocusableButton),html.length?container.classList.remove("hide"):container.classList.add("hide"),container.querySelector(".btnEditMetadata")),btnEditMetadata=(btnEditMetadata&&btnEditMetadata.addEventListener("click",onEditMetadataClick.bind(instance)),container.querySelector(".btnEditImages"));btnEditMetadata&&btnEditMetadata.addEventListener("click",onEditImagesClick.bind(instance))}}function isTrailerButtonVisible(item){if(playbackManager.getSupportedCommands().includes("PlayTrailers")){if(item.LocalTrailerCount)return!0;if(item.RemoteTrailers&&item.RemoteTrailers.length)return!0}return!1}function setTrailerButtonVisibility(page,item){isTrailerButtonVisible(item)?hideAll(page,"btnPlayTrailer",!0):hideAll(page,"btnPlayTrailer")}function renderDetailPageBackdrop(view,item,apiClient){var screenWidth=screen.availWidth;let imgUrl;var usePrimaryImage,itemBackdropContainerElement=view.querySelector(".itemBackdropContainer"),itemBackdropElement=itemBackdropContainerElement.querySelector(".itemBackdrop");enableItemBackdropAsTopImage(item)?(itemBackdropContainerElement.classList.remove("hide"),usePrimaryImage="Video"===item.MediaType&&"Movie"!==item.Type&&"Trailer"!==item.Type||item.MediaType&&"Video"!==item.MediaType||"MusicAlbum"===item.Type||"Playlist"===item.Type,"Program"===item.Type&&item.ImageTags&&item.ImageTags.Thumb?imgUrl=apiClient.getImageUrl(item.Id,{type:"Thumb",index:0,maxWidth:screenWidth,tag:item.ImageTags.Thumb,EnableImageEnhancers:!1}):usePrimaryImage&&item.ImageTags&&item.ImageTags.Primary?imgUrl=apiClient.getImageUrl(item.Id,{type:"Primary",index:0,maxWidth:screenWidth,tag:item.ImageTags.Primary,EnableImageEnhancers:!1}):item.BackdropImageTags&&item.BackdropImageTags.length?imgUrl=apiClient.getImageUrl(item.Id,{type:"Backdrop",index:0,maxWidth:screenWidth,tag:item.BackdropImageTags[0]}):item.ParentBackdropItemId&&item.ParentBackdropImageTags&&item.ParentBackdropImageTags.length?imgUrl=apiClient.getImageUrl(item.ParentBackdropItemId,{type:"Backdrop",index:0,tag:item.ParentBackdropImageTags[0],maxWidth:screenWidth}):item.ImageTags&&item.ImageTags.Thumb?imgUrl=apiClient.getImageUrl(item.Id,{type:"Thumb",index:0,maxWidth:screenWidth,tag:item.ImageTags.Thumb,EnableImageEnhancers:!1}):item.ImageTags&&item.ImageTags.Primary&&(imgUrl=apiClient.getImageUrl(item.Id,{type:"Primary",index:0,maxWidth:screenWidth,tag:item.ImageTags.Primary,EnableImageEnhancers:!1})),"TvChannel"===item.Type&&itemBackdropContainerElement.classList.add("itemBackdropContainer-small"),usePrimaryImage=view.querySelector(".itemMainScrollSlider"),layoutManager.tv?usePrimaryImage.classList.remove("itemMainScrollSlider-moveup","itemMainScrollSlider-nopaddingtop"):"TvChannel"!==item.Type&&enableItemBackdropAsTopImage(item)&&usePrimaryImage.classList.add("itemMainScrollSlider-nopaddingtop"),"TvChannel"!==item.Type&&"Person"!==item.Type||itemBackdropElement.classList.add("itemBackdrop-contain"),imgUrl?itemBackdropElement.style.backgroundImage="url('"+imgUrl+"')":itemBackdropElement.style.backgroundImage=""):itemBackdropContainerElement.classList.add("hide")}function getDetailImageContainer(view,item){var sideImageContainer=view.querySelector(".detailImageContainer-side"),view=view.querySelector(".detailImageContainer-main");return enableTrackList(item)?(view.classList.add("hide"),sideImageContainer.classList.remove("hide"),sideImageContainer):(view.classList.remove("hide"),sideImageContainer.classList.add("hide"),view)}function enableTrackList(item){return!!layoutManager.tv&&("Playlist"===item.Type||"MusicAlbum"===item.Type&&!item.SupportsResume)}function enableItemBackdropAsTopImage(item){return"Playlist"!==item.Type&&"MusicAlbum"!==item.Type&&"TvChannel"!==item.Type&&"Audio"!==item.Type}function renderDirector(view,item,apiClient,isStatic){let directors=(item.People||[]).filter(function(p){return"Director"===p.Type});var html=(directors=layoutManager.tv?[]:directors).map(function(p){return layoutManager.tv?"<span>"+textEncoding.htmlEncode(p.Name)+"</span>":'<a class="button-link button-link-color-inherit" is="emby-linkbutton" href="'+appRouter.getRouteUrl({Name:p.Name,Type:"Person",ServerId:item.ServerId,Id:p.Id},{})+'">'+textEncoding.htmlEncode(p.Name)+"</a>"}).join(", "),elem=view.querySelector(".directors");elem.innerHTML=1<directors.length?globalize.translate("DirectorsValue",html):globalize.translate("DirectorValue",html),setScopedFocus(view,elem,directors.length&&!layoutManager.tv),directors.length?elem.classList.remove("hide"):elem.classList.add("hide")}function hideAll(page,className,show){let i,length;var elems="string"==typeof className?page.querySelectorAll("."+className):className;for(i=0,length=elems.length;i<length;i++)show?elems[i].classList.remove("hide"):elems[i].classList.add("hide")}function getCommandOptions(instance,item,user,button){var selectSource=instance.view.querySelector(".selectSource"),instance="true"===instance.params.asDialog,item={items:[item],open:!1,play:!1,playFromBeginning:!0,playAllFromHere:!1,positionTo:button,cancelTimer:!1,record:!1,deleteItem:!0,shuffle:!0,instantMix:!0,user:user,share:!0,mediaSourceId:selectSource?.value||null,positionY:"center",positionX:"after",transformOrigin:"left top",navigateOnDelete:"back",showSeries:!!layoutManager.tv,showSeason:!0,createRecording:!instance,edit:!instance,editImages:!instance,favorites:!instance};return appHost.supports("sync")&&!layoutManager.tv&&(item.syncLocal=!1),item}function fillOverview(elem,overview){var scrollHeight,textButton,textElement=elem.querySelector(".overview-text"),btnReadMore=elem.querySelector(".btnReadMore");btnReadMore.innerHTML=globalize.translate("More"),overview?(textElement.innerHTML=overview,elem.classList.remove("hide"),overview=textElement.offsetHeight,scrollHeight=textElement.scrollHeight,textButton=textElement.closest("button"),overview&&scrollHeight&&overview<scrollHeight?(layoutManager.tv?(textButton.removeAttribute("disabled"),btnReadMore.classList.add("hide")):(textButton.setAttribute("disabled","disabled"),btnReadMore.classList.remove("hide")),setScopedFocus(null,elem,!0)):(textButton.setAttribute("disabled","disabled"),btnReadMore.classList.add("hide"),setScopedFocus(null,elem,!1))):(elem.classList.add("hide"),textElement.innerHTML="")}function renderMediaInfo(instance,view,item,mediaSources,apiClient){let mediaSourceId=view.querySelector(".selectSource").value;var itemType=item.Type,mediaSources=mediaSources.filter(function(m){return m.Id===mediaSourceId})[0];let mediaInfoElem=view.querySelector(".mediaInfoPrimary");layoutManager.tv?mediaInfoElem.classList.add("detail-mediaInfoPrimary-tv"):mediaInfoElem.classList.add("detail-mediaInfoPrimary-autocondense");let hasFocusElements;if("Season"===itemType||"SeriesTimer"===itemType)mediaInfoElem.classList.add("hide"),mediaInfoElem.classList.remove("focuscontainer-x");else{let genreLimit;switch(itemType){case"Playlist":case"BoxSet":case"MusicArtist":genreLimit=userSettings.genreLimitForListsOnDetails();break;default:genreLimit=userSettings.genreLimitOnDetails()}mediaInfo.fillPrimaryMediaInfo(mediaInfoElem,item,{interactive:!0,episodeTitle:!1,subtitles:!1,dateAdded:!1,genres:!0,genreLimit:genreLimit,context:inferContext(item),endsAt:userSettings.showEndsAtOnDetails(),endsAtClass:"detailEndsAt",bitrate:"Audio"===item.MediaType,runtime:"Timer"!==itemType,mediaSource:mediaSources,mediaInfoIcons:!1}),hasFocusElements=null!=mediaInfoElem.querySelector("a,button"),setScopedFocus(null,mediaInfoElem,hasFocusElements),hasFocusElements?mediaInfoElem.classList.add("focuscontainer-x"):mediaInfoElem.classList.remove("focuscontainer-x")}enableItemBackdropAsTopImage(item)?mediaInfoElem.classList.remove("mediaInfo-centered","secondaryText"):mediaInfoElem.classList.add("mediaInfo-centered","secondaryText"),mediaInfoElem=view.querySelector(".mediaInfoSecondary"),mediaInfo.fillSecondaryMediaInfo(mediaInfoElem,item,{interactive:!0,mediaSource:mediaSources}),hasFocusElements=null!=mediaInfoElem.querySelector("a,button"),setScopedFocus(null,mediaInfoElem,hasFocusElements),hasFocusElements?mediaInfoElem.classList.add("focuscontainer-x"):mediaInfoElem.classList.remove("focuscontainer-x"),mediaInfoElem.innerHTML.trim()?mediaInfoElem.classList.remove("hide"):mediaInfoElem.classList.add("hide")}function renderDetails(instance,view,item,apiClient,user){var promises=[],overviewElem=view.querySelector(".overview-container"),overviewTextElem=overviewElem.querySelector(".overview-text"),itemForDetails=(enableTrackList(item)?overviewTextElem.classList.add("overview-text-tracklist"):overviewTextElem.classList.remove("overview-text-tracklist"),"Timer"===item.Type&&item.ProgramInfo||item),overview=itemForDetails.Overview,overview=(overview?(fillOverview(overviewElem,overview?dom.stripScripts(overview):""),"MusicAlbum"===itemForDetails.Type||"Playlist"===itemForDetails.Type?overviewTextElem.classList.add("overview-twoline"):overviewTextElem.classList.remove("overview-twoline")):overviewElem.classList.add("hide"),renderDirector(view,itemForDetails,apiClient,!1),reloadPlayButtons(instance,view,item),reloadUserDataButtons(view,item),setTrailerButtonVisibility(view,item),"TvChannel"===item.Type?hideAll(view,"btnManualRecording",!0):hideAll(view,"btnManualRecording"),item.CanDelete&&!item.IsFolder&&"MusicArtist"!==item.Type?hideAll(view,"btnDeleteItem",!0):hideAll(view,"btnDeleteItem"),promises.push(reloadRecordingFields(instance,view,item,user)),itemManager.getCommands(getCommandOptions(instance,item,user))),overviewTextElem=(overview.length?hideAll(view,"btnMoreCommands",!0):hideAll(view,"btnMoreCommands"),0<getSortMenuOptions(item).length?hideAll(view,"btnSortItems",!0):hideAll(view,"btnSortItems"),"BoxSet"===item.Type?hideAll(view,"btnGroupBy",!0):hideAll(view,"btnGroupBy"),view.querySelector(".tagline"));if(itemForDetails.Taglines&&itemForDetails.Taglines.length?(overviewTextElem.classList.remove("hide"),overviewTextElem.innerHTML=dom.stripScripts(itemForDetails.Taglines[0])):overviewTextElem.classList.add("hide"),layoutManager.tv?overviewTextElem.classList.remove("tagline-margin"):overviewTextElem.classList.add("tagline-margin"),"Person"===itemForDetails.Type){overviewElem=view.querySelector(".birthDate");if(itemForDetails.PremiereDate){let birthDateString=datetime.toLocaleDateString(new Date(Date.parse(itemForDetails.PremiereDate)),{year:"numeric",month:"long",day:"numeric"});birthDateString=itemForDetails.ProductionLocations&&itemForDetails.ProductionLocations.length?globalize.translate("BornValueWithPlace",birthDateString,itemForDetails.ProductionLocations[0]):globalize.translate("BornValue",birthDateString),overviewElem.innerHTML=birthDateString,overviewElem.classList.remove("hide")}else overviewElem.classList.add("hide");apiClient=view.querySelector(".deathDate");itemForDetails.EndDate?(instance=datetime.toLocaleDateString(new Date(Date.parse(itemForDetails.EndDate)),{year:"numeric",month:"long",day:"numeric"}),instance=globalize.translate("DiedValue",instance),apiClient.innerHTML=instance,apiClient.classList.remove("hide")):apiClient.classList.add("hide")}renderGenres(view,item,inferContext(item)),renderTags(view,item),renderStudios(view,item),renderLinks(view,item);var aboutSection=view.querySelector(".aboutSection");switch(item.Type){case"TvChannel":case"Playlist":case"Tag":case"Studio":case"Genre":case"GameGenre":case"MusicGenre":case"Season":case"Timer":case"SeriesTimer":case"Program":aboutSection.classList.add("hide");break;default:aboutSection.querySelector("a,button:not(.btnSplitVersions)")||isRenderingTrackSelections(item)?aboutSection.classList.remove("hide"):aboutSection.classList.add("hide")}return Promise.all(promises)}function onRecordingChanged(){reloadItem(this,!0)}function reloadRecordingFields(instance,page,item,user){return instance.currentRecordingFields?(instance.currentRecordingFields.refresh(item),Promise.resolve()):"Program"===item.Type&&user.Policy.EnableLiveTvManagement?require(["recordingFields"]).then(function(responses){var responses=responses[0],recordingFieldsElement=page.querySelector(".mainDetailButtons");instance.currentRecordingFields=new responses({parent:recordingFieldsElement,program:item}),events.on(instance.currentRecordingFields,"recordingchanged",onRecordingChanged.bind(instance)),events.on(instance.currentRecordingFields,"seriesrecordingchanged",onRecordingChanged.bind(instance))}):Promise.resolve()}function onManageRecordingClick(e){var item=this.currentItem;item.TimerId&&appRouter.showItem({Type:"Timer",Id:item.TimerId,ServerId:item.ServerId})}function onManageSeriesRecordingClick(e){var item=this.currentItem;item.SeriesTimerId&&appRouter.showItem({Type:"SeriesTimer",Id:item.SeriesTimerId,ServerId:item.ServerId})}function renderTimerEditor(instance,view,item,user,apiClient){("Timer"===item.Type||"Recording"===item.Type&&item.TimerId&&"InProgress"===item.Status)&&user.Policy.EnableLiveTvManagement?(hideAll(view,"btnCancelTimer",!0),require(["recordingEditor"],function(RecordingEditor){RecordingEditor=new RecordingEditor;(instance.recordingEditor=RecordingEditor).embed(item,apiClient.serverId(),{context:view.querySelector(".recordingEditor")})})):hideAll(view,"btnCancelTimer")}function renderSeriesTimerEditor(view,item,user,apiClient){"SeriesTimer"===item.Type&&(user.Policy.EnableLiveTvManagement?(require(["seriesRecordingEditor"],function(seriesRecordingEditor){seriesRecordingEditor.embed(item,apiClient.serverId(),{context:view.querySelector(".recordingEditor")})}),view.querySelector(".seriesTimerScheduleSection").classList.remove("hide"),view.querySelector(".btnCancelSeriesTimer").classList.remove("hide")):(view.querySelector(".seriesTimerScheduleSection").classList.add("hide"),view.querySelector(".btnCancelSeriesTimer").classList.add("hide")))}function renderLinks(page,item){var page=page.querySelector(".linksSection"),links=[];if(item.ExternalUrls&&appHost.supports("externallinks")&&appHost.supports("targetblank")&&!layoutManager.tv)for(let i=0,length=item.ExternalUrls.length;i<length;i++){var url=item.ExternalUrls[i];let text=textEncoding.htmlEncode(url.Name);i<length-1&&(text+=","),links.push('<a is="emby-linkbutton" class="button-link button-link-color-inherit button-link-fontweight-inherit nobackdropfilter" href="'+url.Url+'" target="_blank">'+text+"</a>")}page.querySelector(".itemLinks").innerHTML=links.join(""),links.length?page.classList.remove("hide"):page.classList.add("hide")}function renderGenres(page,item,context){var itemGenres=page.querySelector(".itemGenres"),genreElements=[],genres=item.GenreItems||[];let type;switch(context){case"games":type="GameGenre";break;case"music":type="MusicGenre";break;default:type="Genre"}for(let i=0,length=genres.length;i<length;i++){var href=appRouter.getRouteUrl({Name:genres[i].Name,Type:type,ServerId:item.ServerId,Id:genres[i].Id},{context:context});let text=textEncoding.htmlEncode(genres[i].Name);i<length-1&&(text+=","),genreElements.push('<a is="emby-linkbutton" class="button-link button-link-color-inherit button-link-fontweight-inherit nobackdropfilter" href="'+href+'">'+text+"</a>")}itemGenres.innerHTML=genreElements.join(""),genreElements.length?page.querySelector(".genresSection").classList.remove("hide"):page.querySelector(".genresSection").classList.add("hide")}function renderStudios(page,item){var itemStudios=page.querySelector(".itemStudios"),studioElements=[],studios=item.Studios||[];for(let i=0,length=studios.length;i<length;i++){var href=appRouter.getRouteUrl({Name:studios[i].Name,Type:"Studio",ServerId:item.ServerId,Id:studios[i].Id},{itemTypes:"Person"===item.Type||"MusicArtist"===item.Type?item.Type:null});let text=textEncoding.htmlEncode(studios[i].Name);i<length-1&&(text+=","),studioElements.push('<a is="emby-linkbutton" class="button-link button-link-color-inherit button-link-fontweight-inherit nobackdropfilter" href="'+href+'">'+text+"</a>")}itemStudios.innerHTML=studioElements.join(""),studioElements.length?page.querySelector(".studiosSection").classList.remove("hide"):page.querySelector(".studiosSection").classList.add("hide")}function renderTags(page,item){var itemTags=page.querySelector(".itemTags"),tagElements=[],tags=item.TagItems||[];for(let i=0,length=tags.length;i<length;i++){var href=appRouter.getRouteUrl({Name:tags[i].Name,Type:"Tag",ServerId:item.ServerId,Id:tags[i].Id},{itemTypes:"Person"===item.Type||"MusicArtist"===item.Type?item.Type:null});let text=textEncoding.htmlEncode(tags[i].Name);i<length-1&&(text+=","),tagElements.push('<a is="emby-linkbutton" class="button-link button-link-color-inherit button-link-fontweight-inherit nobackdropfilter" href="'+href+'">'+text+"</a>")}itemTags.innerHTML=tagElements.join(""),tagElements.length?page.querySelector(".tagsSection").classList.remove("hide"):page.querySelector(".tagsSection").classList.add("hide")}function onTrackSelectionsSubmit(e){return e.preventDefault(),!1}function bindAll(view,selector,eventName,fn){var elems=view.querySelectorAll(selector);let i,length;for(i=0,length=elems.length;i<length;i++)elems[i].addEventListener(eventName,fn)}function renderSyncLocalContainer(view,user,item){if(appHost.supports("sync")){var canSync=itemManager.canSync(item,user),buttons=view.querySelectorAll(".btnSyncDownload");for(let i=0,length=buttons.length;i<length;i++)buttons[i].setItem(item),canSync&&!layoutManager.tv?buttons[i].classList.remove("hide"):buttons[i].classList.add("hide")}}function onLibraryChanged(e,apiClient,data){var currentItem=this.currentItem;currentItem&&data.ItemsUpdated?.includes(currentItem.Id)&&(this.paused?this._fullReloadOnResume=!0:reloadItem(this,!0))}function onUserDataChanged(e,apiClient,userData){var currentItem=this.currentItem,view=this.view;currentItem&¤tItem.Id===userData.ItemId&&(currentItem.UserData=userData,this.paused||reloadPlayButtons(this,view,currentItem,!0))}function onTimerCancelled(e,apiClient,data){var currentItem=this.currentItem;currentItem&¤tItem.Id===data.Id&&!this.paused&&appRouter.back()}function executeCommandWithCommandProcessor(command,item,options){return require(["commandProcessor"]).then(function(responses){return responses[0].executeCommand(command,[item],options)})}function getItemPromise(instance,apiClient){var options,fields,instance=instance.params;return instance.seriesTimerId?apiClient.getLiveTvSeriesTimer(instance.seriesTimerId):instance.timerId?apiClient.getLiveTvTimer(instance.timerId):(options={},fields=[],"true"===instance.asSeries?options.AsSeries=!0:fields.push("ShareLevel"),fields.push("SyncStatus"),fields.push("ContainerSyncStatus"),fields.length&&(options.fields=fields.join(",")),options.ExcludeFields="VideoChapters,VideoMediaSources,MediaStreams",apiClient.getItem(apiClient.getCurrentUserId(),instance.id,options))}function onDataFetched(responses){var itemInfo=responses[0];let item=itemInfo.item;itemInfo=itemInfo.mediaSources;let user=responses[1];var responses=connectionManager.getApiClient(item.ServerId),view=this.view;let willHaveBackdrop=backdrop.hasBackdrop(),setNewBackdrop;var backdropOptions={enableAnimation:!0,enablePrimaryImageBeforeInherited:enableTvDetailImageLayout(this,item)&&!enableDetailPoster(this,item)&&"Season"!==item.Type&&"Episode"!==item.Type,allowPrimaryImage:enableTvDetailImageLayout(this,item)&&!enableDetailPoster(this,item)},itemMainScrollSlider=("Person"===item.Type&&backdrop.hasBackdrop()||"true"!==this.params.asDialog&&(willHaveBackdrop=0<backdrop.getBackdropsFromOptions([item],backdropOptions).length,setNewBackdrop=!0),this.updateDrawerState(),view.querySelector(".itemMainScrollSlider")),detailMainContainerParent=view.querySelector(".detailMainContainerParent"),asDialog="true"===this.params.asDialog,itemMainScrollSlider=(willHaveBackdrop&&!asDialog?(skinHeader.classList.add("darkContentContainer"),enableTvDetailImageLayout(this,item)?(layoutManager.tv?(itemMainScrollSlider.classList.add("itemMainScrollSlider-fade"),playbackManager.isPlayingLocally(["Video"])?backgroundContainer.classList.remove("itemBackgroundContainer-transparent"):backgroundContainer.classList.add("itemBackgroundContainer-transparent")):(itemMainScrollSlider.classList.remove("itemMainScrollSlider-fade"),backgroundContainer.classList.remove("itemBackgroundContainer-transparent")),detailMainContainerParent.classList.add("detailMainContainerParent-fade"),view.classList.add("darkContentContainer-tv","darkContentContainer-item")):(itemMainScrollSlider.classList.remove("itemMainScrollSlider-fade"),detailMainContainerParent.classList.remove("detailMainContainerParent-fade"),layoutManager.tv?view.classList.add("darkContentContainer-tv","darkContentContainer-item"):view.classList.add("darkContentContainer-item"),backgroundContainer.classList.remove("itemBackgroundContainer-transparent")),enableItemBackdropAsTopImage(item)?(backdropContainer.classList.add("backdropContainer-preventbackdrop"),backgroundContainer.classList.add("itemBackgroundContainer","itemBackgroundContainer-preventbackdrop")):(backdropContainer.classList.remove("backdropContainer-preventbackdrop"),backgroundContainer.classList.add("itemBackgroundContainer"),backgroundContainer.classList.remove("itemBackgroundContainer-preventbackdrop"))):(view.classList.remove("darkContentContainer-item","darkContentContainer-tv"),itemMainScrollSlider.classList.remove("itemMainScrollSlider-fade"),detailMainContainerParent.classList.remove("detailMainContainerParent-fade"),asDialog||(skinHeader.classList.remove("darkContentContainer"),backgroundContainer.classList.remove("itemBackgroundContainer","itemBackgroundContainer-transparent","itemBackgroundContainer-preventbackdrop"),backdropContainer.classList.remove("backdropContainer-preventbackdrop"))),setNewBackdrop&&(backdrop.setBackdrops([item],backdropOptions),this.updateDrawerState()),this.currentItem=item,[]),detailMainContainerParent=(this.sectionsInitialized||(this.sectionsInitialized=!0,initMoreFromSeasonSection(this,view,item,responses),initMoreFromArtistSection(this,view,item,responses),itemMainScrollSlider.push(initSeriesItemsSection(this,item,responses)),initArtistSongsSection(this,view,item,responses),initArtistAlbumsSection(this,item,responses),initTrackList(this,item,responses),initAppearsOnListSection(this,view,item,responses,user),initPeopleSection(this,view,item,responses),initMoreLikeThisSection(this,view,item,responses),initMoreLikeThisOnLiveTVSection(this,view,item,responses),initUpcomingOnTVSection(this,view,item,responses),initExtrasSection(this,view,item,responses),initLinkedItemsSection(this,view,item,responses),initChaptersSection(this,view,item,responses),initAdditionalPartsSection(this,view,item,responses),initProgramGuideSection(this,view,item,responses),initSeriesTimerScheduleSection(this,view,item,responses),initDetailImage(this,view,item,responses)),resumeChaptersItemsContainer(this.view),view.querySelector(".details-additionalContent")),asDialog=("TvChannel"===item.Type||"Playlist"===item.Type||"Season"===item.Type?detailMainContainerParent.classList.remove("padded-bottom-page"):detailMainContainerParent.classList.add("padded-bottom-page"),this.mainSection),backdropOptions=(willHaveBackdrop?(detailMainContainerParent.classList.add("details-additionalContent-withbackdrop"),asDialog.classList.add("detailMainContainer-withbackdrop")):(detailMainContainerParent.classList.remove("details-additionalContent-withbackdrop"),asDialog.classList.remove("detailMainContainer-withbackdrop")),enableTrackList(item)?("Season"===item.Type?setTitle(item,responses):setTitle(item,responses,layoutManager.tv),view.querySelector(".detailTextContainer").classList.add("detailTextContainer-tracklist")):(setTitle(item,responses,"float"===getLogoPlacement(item)&&"MusicAlbum"!==item.Type),view.querySelector(".detailTextContainer").classList.remove("detailTextContainer-tracklist")),view.querySelector(".topDetailsMain")),detailMainContainerParent=view.querySelector(".item-fixed-side");let mainDetailButtons=view.querySelector(".mainDetailButtons");return layoutManager.tv||mainDetailButtons.classList.add("detailButtons-margin"),enableTrackList(item)?(backdropOptions.classList.remove("topDetailsMain-graphic","topDetailsMain-graphic-tv"),asDialog.classList.remove("detailMainContainer-withitembackdrop","detailMainContainer-vertical"),detailMainContainerParent.classList.remove("hide"),layoutManager.tv&&"Season"!==item.Type?backdropOptions.classList.add("padded-left","padded-left-page","padded-right"):backdropOptions.classList.remove("padded-left","padded-left-page","padded-right")):(enableItemBackdropAsTopImage(item)?(asDialog.classList.add("detailMainContainer-withitembackdrop"),asDialog.classList.remove("detailMainContainer-vertical")):(asDialog.classList.remove("detailMainContainer-withitembackdrop"),asDialog.classList.add("detailMainContainer-vertical")),enableTvDetailImageLayout(this,item)?layoutManager.tv?backdropOptions.classList.add("topDetailsMain-graphic","topDetailsMain-graphic-tv"):(backdropOptions.classList.add("topDetailsMain-graphic"),backdropOptions.classList.remove("topDetailsMain-graphic-tv")):backdropOptions.classList.remove("topDetailsMain-graphic","topDetailsMain-graphic-tv"),detailMainContainerParent.classList.add("hide"),backdropOptions.classList.remove("padded-left","padded-left-page","padded-right")),renderName(this,item,responses,user,view.querySelectorAll(".nameContainer")),renderDetailPageBackdrop(view,item,responses),renderTrackSelections(view,this,item,user,!0,itemInfo),itemMainScrollSlider.push(renderDetails(this,view,item,responses,user)),renderSyncLocalContainer(view,user,item),Promise.all(itemMainScrollSlider).then(function(){return enableTrackList(item)||updateMainDetailButtonsFocusState(mainDetailButtons),[item,user]})}function onItemFetchError(instance,errorResponse,apiClient){return getResponseHelper().then(function(responseHelper){return responseHelper.getErrorInfo(errorResponse).then(function(errorInfo){var view=instance.view;view.querySelector(".details-additionalContent").classList.add("hide");let html="";html+="<div><p>",apiClient.isMinServerVersion("4.8.4")?html+=errorInfo.text:html+="Content no longer available.",html+="</p>";errorInfo=appRouter.getRouteUrl("home",{serverId:apiClient.serverId()});return html=(html=(html+='<a href="'+errorInfo+'" is="emby-linkbutton" class="raised btnHomeItemNotFound" style="margin:0;">')+globalize.translate("Home"))+"</a>"+"</div>",view.querySelector(".detailMainContainer").innerHTML=html,focusManager.focus(view.querySelector(".btnHomeItemNotFound")),Promise.reject(errorResponse)})})}function getItemWithMediaSource(instance,apiClient){return getItemPromise(instance,apiClient).then(function(item){let playbackMediaSourcesPromise;return(playbackMediaSourcesPromise=isRenderingTrackSelections(item)?playbackManager.getPlaybackMediaSources(item):Promise.resolve([])).then(function(mediaSources){return{item:item,mediaSources:mediaSources}})})}function startDataLoad(instance){var params=instance.params;let apiClient=connectionManager.getApiClient(params.serverId);params=Promise.all([getItemWithMediaSource(instance,apiClient),apiClient.getCurrentUser()]).then(onDataFetched.bind(instance),function(err){return console.log("error loading item: "+err),onItemFetchError(instance,err,apiClient)});return instance.dataPromise=params}function onPlaybackStop(e,stopInfo){var state=stopInfo.state||{};state.NextMediaType||state.IsBackgroundPlayback||stopInfo.player?.isLocalPlayer&&!userSettings.enableVideoUnderUI()&&(this.currentItem||{}).MediaType===(stopInfo=state.NowPlayingItem||{}).MediaType&&stopInfo.MediaType&&"Episode"===stopInfo.Type&&(this.showItemOnResume=stopInfo)}function onPlayerChange(){var view=this.view,item=this.currentItem;view&&item&&renderTrackSelectionsWithoutUser(view,this,item)}function getPlayOptions(view,params,startPositionTicks){var audioStreamIndex=view.querySelector(".selectAudio").value||null;return{startPositionTicks:startPositionTicks,mediaSourceId:view.querySelector(".selectSource").value,audioStreamIndex:audioStreamIndex,subtitleStreamIndex:view.querySelector(".selectSubtitles").value,parentId:params.parentId}}function playCurrentItem(instance,mode){return loadMultiSelect().then(function(MultiSelect){var startPositionTicks;MultiSelect?.canPlay()?"shuffle"===mode?MultiSelect.shuffle():MultiSelect.play():(startPositionTicks=(MultiSelect=instance.currentItem).UserData&&"resume"===mode?null:0,startPositionTicks=getPlayOptions(instance.view,instance.params,startPositionTicks),"shuffle"===mode&&(startPositionTicks.shuffle=!0),startPositionTicks.items=[MultiSelect],playbackActions.play(startPositionTicks))})}function onPlayClick(e){playCurrentItem(this,e.currentTarget.getAttribute("data-mode"))}function onShuffleClick(){playCurrentItem(this,"shuffle")}function onEdited(){reloadItem(this,!0)}function onEditCancel(){}function onEditMetadataClick(){let currentItem=this.currentItem,instance=this;require(["metadataEditor"]).then(function(responses){return(new responses[0]).show(currentItem.Id,currentItem.ServerId).then(onEdited.bind(instance),onEditCancel)})}function onEditImagesClick(){let currentItem=this.currentItem,instance=this;require(["imageEditor"],function(imageEditor){imageEditor.show({itemId:currentItem.Id,serverId:currentItem.ServerId}).then(onEdited.bind(instance),onEditCancel)})}function onDeleteClick(){var currentItem=this.currentItem;itemManager.deleteItems({items:[currentItem],navigate:"back"})}function onCancelSeriesTimerClick(){onDeleteClick.call(this)}function onCancelTimerClick(){let instance=this;var item=this.currentItem,type=item.Type;let serverId=item.ServerId,timerId="Timer"===type?item.Id:item.TimerId;require(["recordingHelper"],function(recordingHelper){recordingHelper.cancelTimer(connectionManager.getApiClient(serverId),timerId,!0).then(function(){reloadItem(instance,!0)})})}function onPlayTrailerClick(){var currentItem=this.currentItem;playbackManager.playTrailers(currentItem)}function onDownloadChange(){reloadItem(this,!0)}function splitVersions(instance,page,apiClient,params){showConfirm("Are you sure you wish to split the media sources into separate items?","Split Media Apart").then(function(){loading.show(),apiClient.ungroupVersions(params.id).then(function(){loading.hide(),reloadItem(instance,!0)})})}function onReadMoreClick(e){showAlert({html:e.currentTarget.closest(".overview-container").querySelector(".overview-text").innerHTML,confirmButton:!1,title:itemManager.getDisplayName(this.currentItem)||this.currentItem.Name,centerText:!1,item:this.currentItem})}function onSplitVersionsClick(){var params=this.params,apiClient=connectionManager.getApiClient(params.serverId);splitVersions(this,this.view,apiClient,params)}function onPromiseRejected(e){console.log("itemContextMenu close: "+e)}function getSortMenuOptions(item){switch(item.Type){case"Playlist":return itemManager.getSortMenuOptions({apiClient:connectionManager.getApiClient(item),itemType:"PlaylistItem"});case"BoxSet":return itemManager.getSortMenuOptions({apiClient:connectionManager.getApiClient(item),itemType:"BoxSetItem"});default:return[]}}function setSelectedSortOption(options,currentValues){for(let i=0,length=options.length;i<length;i++){var opt=options[i];if(opt.selected=opt.value===(currentValues.sortBy||"default"),opt.selected){var icon="Descending"===currentValues.sortOrder?"":"";opt.asideIcon=icon;break}}}function getSortMenuOption(sortMenuOptions,sortBy){for(let i=0,length=sortMenuOptions.length;i<length;i++){var option=sortMenuOptions[i];if(option.value===sortBy)return option}return null}function getDefaultSortOrder(sortMenuOptions,sortBy){if(sortBy){sortMenuOptions=getSortMenuOption(sortMenuOptions,sortBy);if(sortMenuOptions&&sortMenuOptions.value===sortBy&&sortMenuOptions.defaultSortOrder)return sortMenuOptions.defaultSortOrder}return"Descending"}function setSortLabelText(){var item=this.currentItem,sortItems=getSortMenuOptions(item),view=this.view,sortItems=getSortMenuOption(sortItems,userSettings.itemSortBy(item.Id)||"default"),item=view.querySelector(".btnSortItems");item.setAttribute("title",globalize.translate("SortByValue",sortItems?.name||"")),item.setAttribute("aria-label",globalize.translate("SortByValue",sortItems?.name||"")),item.querySelector(".btnSortText").innerHTML=globalize.translate("HeaderSortBy")}function sortItem(instance,item,options){let currentValues={sortBy:userSettings.itemSortBy(item.Id),sortOrder:userSettings.itemSortOrder(item.Id)},sortItems=getSortMenuOptions(item);return setSelectedSortOption(sortItems,currentValues),showActionSheet({items:sortItems,positionTo:options.positionTo,positionY:options.positionY,positionX:options.positionX,positionClientY:options.positionClientY,positionClientX:options.positionClientX,transformOrigin:options.transformOrigin,title:globalize.translate("HeaderSortBy"),offsetTop:2,hasItemAsideIcon:!0,hasItemSelectionState:!0}).then(function(value){let sortOrder;sortOrder||(sortOrder=currentValues.sortOrder,sortOrder=currentValues.sortBy===value?"Ascending"===sortOrder?"Descending":"Ascending":getDefaultSortOrder(sortItems,value)),userSettings.itemSortBy(item.Id,value),userSettings.itemSortOrder(item.Id,sortOrder)})}function showGroupByMenu(instance,item,options){var currentValue=userSettings.groupCollectionItems();return showActionSheet({items:[{name:globalize.translate("HeaderMediaType"),value:"mediatype",Selected:currentValue},{name:globalize.translate("None"),value:"",Selected:!currentValue}],positionTo:options.positionTo,positionY:options.positionY,positionX:options.positionX,positionClientY:options.positionClientY,positionClientX:options.positionClientX,transformOrigin:options.transformOrigin,title:globalize.translate("HeaderGroupBy"),offsetTop:2,hasItemSelectionState:!0}).then(function(groupBy){userSettings.groupCollectionItems("mediatype"===groupBy)})}function onSortItemsClick(e){e=e.currentTarget;let instance=this;sortItem(instance,instance.currentItem,{positionTo:e,positionY:"bottom"}).then(function(){reloadItem(instance,!0)})}function onGroupByClick(e){e=e.currentTarget;let instance=this;showGroupByMenu(instance,instance.currentItem,{positionTo:e,positionY:"bottom"}).then(function(){reloadItem(instance,!0)})}function onMoreCommandsClick(e){let button=e.currentTarget,instance=this;e=this.params,e=connectionManager.getApiClient(e.serverId);let currentItem=this.currentItem;currentItem.MediaSources=instance._currentPlaybackMediaSources,e.getCurrentUser().then(function(user){itemContextMenu.show(getCommandOptions(instance,currentItem,user,button)).then(function(result){"addtoplaylist"!==result.command&&"addtocollection"!==result.command||reloadItem(instance,!0)},onPromiseRejected)})}function getSeriesChildrenListOptions(items){var fields=["Name"];let includeParentInfoInTitle,centerText=(this.renderAllEpisodes&&!this.hasMultipleSeasons&&(includeParentInfoInTitle=!1),!0);return this.renderAllEpisodes&&(fields.push("Overview"),fields.push("MediaInfo"),centerText=!1),{renderer:cardBuilder,options:{shape:"auto",scalable:!0,centerText:centerText,fields:fields,overlayText:!1,focusTransformTitleAdjust:!0,includeParentInfoInTitle:includeParentInfoInTitle},virtualScrollLayout:"horizontal-grid"}}function getMusicArtistChildrenListOptions(items){return{renderer:cardBuilder,options:{shape:"auto",scalable:!0,centerText:!0,fields:["Name","ProductionYear"],overlayText:!1,focusTransformTitleAdjust:!0},virtualScrollLayout:"horizontal-grid"}}function getSeasons(query){var item=this.currentItem,apiClient=connectionManager.getApiClient(item),fields=this.getRequestedItemFields()+",PrimaryImageAspectRatio,Overview";return apiClient.getSeasons(item.Id,Object.assign({UserId:apiClient.getCurrentUserId(),Fields:fields},query))}function getSeriesChildrenItems(query){var item=this.currentItem,apiClient=connectionManager.getApiClient(item);let fields=this.getRequestedItemFields()+",PrimaryImageAspectRatio";return this.renderAllEpisodes?(fields+=",Overview,PremiereDate,ProductionYear,RunTimeTicks,SpecialEpisodeNumbers",query=Object.assign({UserId:apiClient.getCurrentUserId(),Fields:fields,Recursive:!0,IsFolder:!1,ParentId:item.Id},query),apiClient.isMinServerVersion("4.8")||(query.IncludeItemTypes="Episode"),apiClient.getItems(apiClient.getCurrentUserId(),query)):apiClient.getSeasons(item.Id,Object.assign({UserId:apiClient.getCurrentUserId(),Fields:fields},query))}function selectFirst(select){select.getItems({StartIndex:0,Limit:1}).then(function(result){result.Items.length&&select.setValues([result.Items[0].Id],!1,[result.Items[0]])})}function afterAllEpisodesRefreshed(totalResult){if(totalResult.Items.length){let item=this.currentItem;if(item){let view=this.view;if(view){let instance=this,itemsContainer=view.querySelector(".childrenItemsContainer");if(itemsContainer){let apiClient=connectionManager.getApiClient(item);return getNextUpItems.call(this,{Limit:1}).then(function(nextUpResult){var nextUpResult=nextUpResult.Items[0],detailSelectSeason=view.querySelector(".detailSelectSeason");if(nextUpResult){onSeriesEpisodeFocusedOrScrolled(instance,nextUpResult);let index=itemsContainer.indexOfItemId(nextUpResult.Id);if(-1===index)return nextUpResult={UserId:apiClient.getCurrentUserId(),Limit:0,StartItemId:nextUpResult.Id},apiClient.getEpisodes(item.SeriesId||item.Id,nextUpResult).then(function(result){index=Math.max(totalResult.TotalRecordCount-result.TotalRecordCount,0),itemsContainer.scrollToIndex(Math.min(index,totalResult.TotalRecordCount-1),{behavior:"instant",offset:"-padding-inline-start"},!1)});itemsContainer.scrollToIndex(index,{behavior:"instant",offset:"-padding-inline-start"},!1)}else itemsContainer.scrollToIndex(0,{behavior:"instant",offset:"-padding-inline-start"},!1),detailSelectSeason&&selectFirst(detailSelectSeason)})}}}}}function getMusicArtistChildrenItems(query){var apiClient,item=this.currentItem;return"MusicArtist"!==item.Type?Promise.resolve({Items:[],TotalRecordCount:0}):(apiClient=connectionManager.getApiClient(item),(query=Object.assign({IncludeItemTypes:"MusicAlbum",Recursive:!0,SortBy:"ProductionYear,SortName",SortOrder:"Descending,Ascending",ImageTypeLimit:1,Fields:this.getRequestedItemFields()+",PrimaryImageAspectRatio,ProductionYear"},query)).AlbumArtistIds=item.Id,apiClient.getItems(apiClient.getCurrentUserId(),query))}function getSeasonItemsFn(instance,serverId,seriesId,seasonId){return function(query){var apiClient=connectionManager.getApiClient(serverId);return apiClient.getEpisodes(seriesId,Object.assign({SeasonId:seasonId,ImageTypeLimit:1,UserId:apiClient.getCurrentUserId(),Fields:"Overview,PrimaryImageAspectRatio,PremiereDate,ProductionYear,SyncStatus"},query))}}function getMusicAlbumItems(query){var item=this.currentItem,apiClient=connectionManager.getApiClient(item),includeOverview=!0===item.SupportsResume;let fields=this.getRequestedItemFields()+",PrimaryImageAspectRatio,SyncStatus";return includeOverview&&(fields+=",Overview"),apiClient.getItems(apiClient.getCurrentUserId(),Object.assign({ParentId:item.Id,Fields:fields,ImageTypeLimit:1,SortBy:null,EnableTotalRecordCount:!1}))}function getPlaylistItems(query){var currentItem=this.currentItem,apiClient=connectionManager.getApiClient(currentItem);let itemId=currentItem.Id,sortBy=userSettings.itemSortBy(itemId)||"default";currentItem=(sortBy="default"===sortBy?"ListItemOrder":sortBy)?userSettings.itemSortOrder(itemId):null;return apiClient.getItems(apiClient.getCurrentUserId(),Object.assign({ParentId:itemId,Fields:"PrimaryImageAspectRatio,Overview,PremiereDate,ProductionYear,OfficialRating,CommunityRating,SyncStatus",ImageTypeLimit:1,SortBy:sortBy,SortOrder:currentItem},query)).then(function(result){for(let i=0,length=result.Items.length;i<length;i++)result.Items[i].PlaylistId=itemId;return result})}function anyIsNonMusic(items){for(let i=0,length=items.length;i<length;i++){var item=items[i];if(item.Overview){if(item.SupportsResume)return!0;if("Audio"!==item.Type)return!0}}return!1}function anyHasOverview(items){for(let i=0,length=items.length;i<length;i++){var item=items[i];if("Audio"!==item.MediaType||item.SupportsResume)return!0}return!1}function getPlaylistListOptionsFn(item){return function(items){var fields=[],items=(fields.push("ParentName"),fields.push("Name"),anyIsNonMusic(items));let enableSideMediaInfo=!0,sortBy=(items&&(fields.push("Overview"),enableSideMediaInfo=!1),userSettings.itemSortBy(item.Id)||"default");var sortOrder=(sortBy="default"===sortBy?"ListItemOrder":sortBy)?userSettings.itemSortOrder(item.Id):null;return{renderer:listView,options:{showIndexNumberLeft:"MusicAlbum"===item.Type,action:"playallfromhere",dragReorder:"Playlist"===item.Type&&!1!==item.CanEditItems&&!layoutManager.tv&&"ListItemOrder"===sortBy&&"Ascending"===sortOrder,playlistId:"Playlist"===item.Type?item.Id:null,image:"Playlist"===item.Type,artist:"auto",showIndex:"MusicAlbum"===item.Type,autoHideArtist:"MusicAlbum"===item.Type,index:"disc",containerAlbumArtists:"MusicAlbum"===item.Type?item.AlbumArtists:null,fields:fields,playAction:"playallfromhere",enableSideMediaInfo:enableSideMediaInfo,imageSize:items?"medium":null,autoMoveParentName:!0},virtualScrollLayout:"vertical-list",commandOptions:{openAlbum:"MusicAlbum"!==item.Type,gotoItem:!0,removeFromPlaylist:!1!==item.CanEditItems}}}}function hasMultipleDiscs(items){var discs={};let numDiscs=0;for(let i=0,length=items.length;i<length;i++){var item=items[i];null==item.ParentIndexNumber||discs[item.ParentIndexNumber]||(discs[item.ParentIndexNumber]=!0,numDiscs++)}return 1<numDiscs}function getAudioBookListOptionsFn(item){return function(items){var fields=[];return anyHasOverview(items)&&fields.push("Overview"),"Playlist"===item.Type&&fields.push("ParentName"),fields.push("Name"),{renderer:listView,options:{showIndexNumberLeft:!1,highlight:!1,action:"link",dragReorder:!1,image:!0,imageSize:"medium",showIndexNumber:!0,artist:"auto",imagePlayButton:!layoutManager.tv,showIndex:"MusicAlbum"===item.Type,fields:fields,index:hasMultipleDiscs(items)?"disc":null,containerAlbumArtists:"MusicAlbum"===item.Type?item.AlbumArtists:null,playAction:"playallfromhere",includeParentInfoInTitle:!1,autoHideMediaInfo:!1,enableSideMediaInfo:!0},virtualScrollLayout:"vertical-list",commandOptions:{openAlbum:!1}}}}function getSeasonListOptionsFn(item){return function(){return{renderer:listView,options:{showIndexNumber:!1,imageSize:"large",highlight:!1,action:"link",imagePlayButton:!layoutManager.tv,includeParentInfoInTitle:!1,enableSpecialEpisodePrefix:0!==item.IndexNumber,fields:["Name","Overview"]},virtualScrollLayout:"vertical-list"}}}function initTrackList(instance,item,apiClient){var trackList=instance.view.querySelector(".trackList");trackList.parentContainer=trackList,"Season"===item.Type?(trackList.fetchData=getSeasonItemsFn(instance,apiClient.serverId(),item.SeriesId,item.Id),trackList.getListOptions=getSeasonListOptionsFn(item),trackList.setAttribute("data-virtualscrolllayout","vertical-grid"),trackList.classList.add("padded-bottom-page")):"MusicAlbum"===item.Type?(trackList.fetchData=getMusicAlbumItems.bind(instance),trackList.getListOptions=(!0===item.SupportsResume?getAudioBookListOptionsFn:getPlaylistListOptionsFn)(item),trackList.classList.add("generalItemsContainer")):"Playlist"===item.Type&&(trackList.fetchData=getPlaylistItems.bind(instance),trackList.getListOptions=getPlaylistListOptionsFn(item),trackList.setAttribute("data-monitor","PlaylistItems"),trackList.setAttribute("data-monitorids",item.Id),trackList.setAttribute("data-virtualscrolllayout","vertical-grid"),trackList.classList.add("padded-bottom-page"),trackList.afterRefresh=setSortLabelText.bind(instance),trackList.classList.add("generalItemsContainer")),"Playlist"===item.Type||"MusicAlbum"===item.Type?trackList.classList.add("tracklist-topmargin"):trackList.classList.remove("tracklist-topmargin"),layoutManager.tv&&"Season"===item.Type?trackList.classList.add("tracklist-sidemargin"):trackList.classList.remove("tracklist-sidemargin"),"Season"===item.Type||"MusicAlbum"===item.Type&&!layoutManager.tv||"Playlist"===item.Type&&!layoutManager.tv?trackList.classList.add("trackList-marginleftcards"):trackList.classList.remove("trackList-marginleftcards")}function scrollEpisodesToSeason(instance,seasonId){let itemsContainer=instance.view.querySelector(".childrenItemsContainer");if(itemsContainer){instance=instance.currentItem;let apiClient=connectionManager.getApiClient(instance),seriesId=instance.Id;apiClient.getEpisodes(seriesId,{SeasonId:seasonId,UserId:apiClient.getCurrentUserId(),EnableImages:!1,EnableUserData:!1,Limit:1,TotalRecordCount:!1}).then(function(result){let startItem=result.Items[0];startItem&&(-1!==(result=itemsContainer.indexOfItemId(startItem.Id))?itemsContainer.scrollToIndex(result,{offset:"-padding-inline-start"},!1):apiClient.getEpisodes(seriesId,{UserId:apiClient.getCurrentUserId(),EnableTotalRecordCount:!1,EnableImages:!1,EnableUserData:!1}).then(function(totalResult){for(let i=0,length=totalResult.Items.length;i<length;i++)if(totalResult.Items[i].Id===startItem.Id){itemsContainer.scrollToIndex(i,{offset:"-padding-inline-start"},!1);break}}))})}}function onDetailSelectSeasonChange(e){e=e.target.value;e&&scrollEpisodesToSeason(this,e)}function getSeasonToSelect(instance,item){instance=instance.seasonItems||[];if(item.SeasonId&&0!==item.ParentIndexNumber){var season=instance.filter(function(s){return s.Id===item.SeasonId})[0];if(season)return season}let seasonNumber=null==item.SortParentIndexNumber?item.ParentIndexNumber:item.SortParentIndexNumber;if(null!=seasonNumber){let season=instance.filter(function(s){return s.IndexNumber===seasonNumber})[0];if(season)return season}if(item.SeasonId){let season=instance.filter(function(s){return s.Id===item.SeasonId})[0];if(season)return season}return null}function onSeriesEpisodeFocusedOrScrolled(instance,item){var detailSelectSeason,item=getSeasonToSelect(instance,item);item&&((detailSelectSeason=instance.detailSelectSeason)&&detailSelectSeason.setValues([item.Id],!1,[item]),detailSelectSeason=instance.seasonTabs)&&(instance=detailSelectSeason.querySelector('.detailSeasonTab[data-id="'+item.Id+'"]'))&&detailSelectSeason.selectedIndex(parseInt(instance.getAttribute("data-index")),!1)}function onSeriesEpisodesHorizontalScroll(e){var scrollSize,padding;layoutManager.tv||(padding=(e=e.currentTarget).getPadding(),padding=e.getScrollLeft()+padding.inlineStart+padding.inlineEnd,scrollSize=e.getScrollWidth(),padding=Math.min(1,padding/scrollSize),e=(scrollSize=e.querySelector(".childrenItemsContainer")).getItems(),(padding=Math.floor(padding*e.length))<e.length&&(e=scrollSize.getItem(padding))&&onSeriesEpisodeFocusedOrScrolled(this,e))}function onSeriesEpisodesFocus(e){var itemsContainer=e.currentTarget.querySelector(".childrenItemsContainer"),e=e.target.closest(itemsContainer.getItemSelector()),itemsContainer=itemsContainer.getItemFromElement(e);itemsContainer&&onSeriesEpisodeFocusedOrScrolled(this,itemsContainer)}function renderSeasonTabs(instance,seasonTabsParent,items){if(items.length){let index=0;items='<div is="emby-tabs" data-index="-1" class="emby-tabs seasonTabs-emby-tabs padded-left padded-left-page padded-right"><div class="emby-tabs-slider scrollSliderX">'+items.map(function(item){let tabClass="emby-button emby-tab-button secondaryText detailSeasonTab";layoutManager.tv&&(tabClass+=" emby-button-tv");item='<button type="button" is="emby-button" class="'+tabClass+'" data-seasonnumber="'+(null==item.IndexNumber?1:item.IndexNumber)+'" data-id="'+item.Id+'" data-index="'+index+'">'+textEncoding.htmlEncode(item.Name)+"</button>";return index++,item}).join("")+"</div></div>";seasonTabsParent.innerHTML=items,seasonTabsParent.classList.remove("hide")}else seasonTabsParent.classList.add("hide"),seasonTabsParent.innerHTML=""}function onSeasonTabChange(e){var seasonTabs=this.seasonTabs;if(seasonTabs){e=e.detail.selectedTabIndex,seasonTabs=seasonTabs.querySelector('.detailSeasonTab[data-index="'+e+'"]');if(seasonTabs){let id=seasonTabs.getAttribute("data-id");e=(this.seasonItems||[]).filter(function(s){return s.Id===id})[0];e&&scrollEpisodesToSeason(this,e.Id)}}}function initSeriesItemsSection(instance,item,apiClient){let section=instance.view.querySelector(".seriesItemsSection");return"Series"!==item.Type?(section.classList.add("hide"),Promise.resolve()):getSeasons.call(instance,{EnableUserData:!1,EnableTotalRecordCount:!1,EnableImages:!1}).then(function(result){instance.seasonItems=result.Items,setScopedFocus(instance.view,section.querySelector(".focusable"),!0);var itemsContainer=section.querySelector(".itemsContainer");itemsContainer.parentContainer=section;let seriesDisplay=userSettings.seriesDisplay();ApiClient.isLocalItem(item)&&(seriesDisplay="");var hasMultipleSeasons=instance.hasMultipleSeasons=2<=result.Items.length,renderAllEpisodes=instance.renderAllEpisodes="episodes"===seriesDisplay||"episodessingleseason"===seriesDisplay&&!hasMultipleSeasons,renderSeasonsWithTabs=renderAllEpisodes&&hasMultipleSeasons&&layoutManager.tv,sectionTitleElement=section.querySelector(".sectionTitle"),detailSelectSeason=(sectionTitleElement.innerHTML=renderAllEpisodes?1===result.Items.length?result.Items[0].Name:globalize.translate("Episodes"):globalize.translate("Seasons"),renderAllEpisodes&&hasMultipleSeasons?sectionTitleElement.classList.add("hide"):sectionTitleElement.classList.remove("hide"),renderAllEpisodes?itemsContainer.setAttribute("data-focusabletype","nearest"):itemsContainer.setAttribute("data-focusabletype","autofocus"),section.querySelector(".detailSelectSeason")),detailSelectSeasonContainer=section.querySelector(".detailSelectSeasonContainer"),hasMultipleSeasons=(renderAllEpisodes&&hasMultipleSeasons&&!renderSeasonsWithTabs?detailSelectSeasonContainer.classList.remove("hide"):detailSelectSeasonContainer.classList.add("hide"),section.querySelector(".seasonTabs"));renderAllEpisodes?(itemsContainer.classList.add("allEpisodesItemsContainer"),renderSeasonsWithTabs?(sectionTitleElement.closest(".sectionTitleContainer").classList.add("hide"),renderSeasonTabs(instance,hasMultipleSeasons,result.Items),instance.seasonTabs=section.querySelector(".seasonTabs-emby-tabs"),instance.seasonTabs.addEventListener("tabchange",onSeasonTabChange.bind(instance))):(sectionTitleElement.closest(".sectionTitleContainer").classList.remove("hide"),hasMultipleSeasons.classList.add("hide"),hasMultipleSeasons.innerHTML="",instance.seasonTabs=null)):(sectionTitleElement.closest(".sectionTitleContainer").classList.remove("hide"),hasMultipleSeasons.innerHTML="",hasMultipleSeasons.classList.add("hide"),instance.seasonTabs=null),(instance.detailSelectSeason=detailSelectSeason)&&(detailSelectSeason.getItems=getSeasons.bind(instance),detailSelectSeason.addEventListener("change",onDetailSelectSeasonChange.bind(instance))),itemsContainer.fetchData=getSeriesChildrenItems.bind(instance),itemsContainer.getListOptions=getSeriesChildrenListOptions.bind(instance),renderAllEpisodes&&(itemsContainer.afterRefresh=afterAllEpisodesRefreshed.bind(instance),(detailSelectSeasonContainer=instance.view.querySelector(".childrenItemsScroller")).addScrollEventListener(onSeriesEpisodesHorizontalScroll.bind(instance),{}),detailSelectSeasonContainer.addEventListener("focus",onSeriesEpisodesFocus.bind(instance),!0))})}function initArtistAlbumsSection(instance,item,apiClient){var section=instance.view.querySelector(".artistAlbumsSection"),itemsContainer=section.querySelector(".itemsContainer"),apiClient=(itemsContainer.parentContainer=section,appRouter.getRouteUrl("list",{serverId:apiClient.serverId(),itemTypes:"MusicAlbum",albumArtistId:item.Id}));section.querySelector(".sectionTitleTextButton").href=apiClient,itemsContainer.setAttribute("data-virtualscrolllayout","horizontal-grid"),itemsContainer.fetchData=getMusicArtistChildrenItems.bind(instance),itemsContainer.getListOptions=getMusicArtistChildrenListOptions}function getAppearsOnListsListOptions(items){return{renderer:cardBuilder,options:{shape:"autooverflow",centerText:!0,fields:["Name"],overlayText:!1,focusTransformTitleAdjust:!0},virtualScrollLayout:"horizontal-grid"}}function getAppearsOnListsItems(query){var item=this.currentItem,apiClient=connectionManager.getApiClient(item);return query=Object.assign({fields:this.getRequestedItemFields()+",PrimaryImageAspectRatio",IncludeItemTypes:"Playlist,BoxSet",Recursive:!0,SortBy:"SortName",ListItemIds:item.Id},query),apiClient.getItems(apiClient.getCurrentUserId(),query)}function getArtistSongsItems(query){var item=this.currentItem,item=connectionManager.getApiClient(item);return item.getItems(item.getCurrentUserId(),Object.assign({Recursive:!0,IncludeItemTypes:"Audio",ArtistIds:this.currentItem.Id,SortBy:"PlayCount,SortName",SortOrder:"Descending,Ascending",ImageTypeLimit:1,Fields:this.getRequestedItemFields()+",PrimaryImageAspectRatio"},query))}function getArtistSongsListOptions(items){return layoutManager.tv?{renderer:cardBuilder,options:{shape:"auto",lines:2,centerText:!1,fields:["Name","Album"],overlayPlayButton:!0,overlayText:!1,sideFooter:!0,action:"play"},virtualScrollLayout:"horizontal-grid",commandOptions:{openArtist:!1}}:{renderer:listView,options:{action:"playallfromhere",overlayPlayButton:!1,verticalWrap:!0,mediaInfo:!1,enableSideMediaInfo:!1,enableUserDataButtons:!1,fields:["Name","ParentName"]},virtualScrollLayout:"horizontal-grid"}}function initArtistSongsSection(instance,view,item,apiClient){var headerText,headerHtml;"MusicArtist"!==item.Type||(headerText=view.querySelector(".artistSongsItemsHeader"),headerHtml="",headerHtml='<a is="emby-sectiontitle" href="'+appRouter.getRouteUrl("list",{serverId:apiClient.serverId(),itemTypes:"Audio",artistId:item.Id})+'" class="button-link button-link-color-inherit sectionTitleTextButton">',headerHtml=(headerHtml+='<h2 class="sectionTitle sectionTitle-cards">')+globalize.translate("Songs"),headerText.innerHTML=headerHtml=headerHtml+"</h2>"+"</a>",(apiClient=view.querySelector(".artistSongsItemsContainer")).classList.add("generalItemsContainer"),apiClient.fetchData=getArtistSongsItems.bind(instance),apiClient.getListOptions=getArtistSongsListOptions,apiClient.parentContainer=apiClient.closest(".verticalSection"),layoutManager.tv)||((item=apiClient.parentContainer.querySelector(".sectionTitleContainer")).classList.remove("sectionTitleContainer-cards"),item.classList.add("sectionTitleContainer-wrappedlistview"))}function getPeopleListOptions(items){return{renderer:cardBuilder,options:{cardLayout:!1,centerText:!0,fields:["Name","PersonRole"],cardFooterAside:!1,showPersonRoleOrType:!0,multiSelect:!1,coverImage:!0,shape:"portrait",draggable:!1,focusTransformTitleAdjust:!0},virtualScrollLayout:"horizontal-grid"}}function getPeopleItemsFn(instance){return function(query){let serverId=instance.currentItem.ServerId,people=(instance.currentItem.People||[]).map(function(p){return(p=Object.assign({},p)).ServerId=serverId,"Person"!==p.Type&&(p.PersonType=p.Type,p.Type="Person"),p});var totalRecordCount=people.length;return query&&(people=people.slice(query.StartIndex||0),query.Limit)&&people.length>query.Limit&&(people.length=query.Limit),Promise.resolve({Items:people,TotalRecordCount:totalRecordCount})}}function getMoreLikeThisListOptionsFn(item){return function(items){var fields=["Name"];return"Movie"!==item.Type&&"Trailer"!==item.Type&&"Program"!==item.Type&&"Game"!==item.Type&&"Series"!==item.Type||fields.push("ProductionYear"),"MusicAlbum"!==item.Type&&"Game"!==item.Type||fields.push("ParentName"),"Program"===item.Type&&fields.unshift("ParentName"),{renderer:cardBuilder,options:{shape:"auto",lines:"Game"===item.Type?3:"Program"===item.Type?2:null,centerText:!0,fields:fields,overlayPlayButton:!0,overlayText:!1,multiSelect:"Program"!==item.Type&&"Timer"!==item.Type,contextMenu:"Program"!==item.Type&&"Timer"!==item.Type,draggable:"Program"!==item.Type&&"Timer"!==item.Type,focusTransformTitleAdjust:!0},virtualScrollLayout:"horizontal-grid"}}}function getMoreLikeThisItems(){var item=this.currentItem,apiClient=connectionManager.getApiClient(item),options={Limit:12,UserId:apiClient.getCurrentUserId(),ImageTypeLimit:1,Fields:this.getRequestedItemFields()+",PrimaryImageAspectRatio,ProductionYear,Status,EndDate",EnableTotalRecordCount:!1},item=(("Program"===item.Type||"Timer"===item.Type&&item.ProgramId&&!item.IsSports)&&(options.GroupProgramsBySeries=!0),"MusicAlbum"===item.Type&&item.AlbumArtists&&item.AlbumArtists.length&&(options.ExcludeArtistIds=item.AlbumArtists[0].Id),"Timer"===item.Type?item.ProgramId:item.Id);return apiClient.getSimilarItems(item,options)}function initMoreLikeThisSection(instance,view,item,apiClient){itemHelper.supportsSimilarItems(item)&&((view=view.querySelector(".similarItemsContainer")).fetchData=getMoreLikeThisItems.bind(instance),view.parentContainer=view.closest(".verticalSection"),view.getListOptions=getMoreLikeThisListOptionsFn(item),view.classList.add("generalItemsContainer"))}function getMoreLikeThisOnLiveTVListOptions(items){return{renderer:cardBuilder,options:{shape:"auto",fields:["ParentName","Name","ProductionYear"],centerText:!0,showDetailsMenu:!0,overlayPlayButton:!0,overlayText:!1,lines:2,draggable:!1,multiSelect:!1,focusTransformTitleAdjust:!0},virtualScrollLayout:"horizontal-grid"}}function getMoreLikeThisOnLiveTVItems(){var item=this.currentItem,apiClient=connectionManager.getApiClient(item);return apiClient.getSimilarItems(item.Id,{userId:apiClient.getCurrentUserId(),limit:12,fields:this.getRequestedItemFields()+",PrimaryImageAspectRatio,ProductionYear",IncludeItemTypes:"Program",EnableTotalRecordCount:!1,GroupProgramsBySeries:!0})}function initMoreLikeThisOnLiveTVSection(instance,view,item,apiClient){itemHelper.supportsSimilarItemsOnLiveTV(item,apiClient)&&((item=view.querySelector(".similarOnLiveTVItemsContainer")).fetchData=getMoreLikeThisOnLiveTVItems.bind(instance),item.parentContainer=item.closest(".verticalSection"),item.getListOptions=getMoreLikeThisOnLiveTVListOptions,item.classList.add("generalItemsContainer"))}function initPeopleSection(instance,view,item,apiClient){view=view.querySelector(".peopleItemsContainer");view.fetchData=getPeopleItemsFn(instance),view.parentContainer=view.closest(".verticalSection"),view.getListOptions=getPeopleListOptions,view.classList.add("generalItemsContainer")}function initAppearsOnListSection(instance,view,item,apiClient,user){if(itemManager.canAddToCollection(item,user)||itemManager.canAddToPlaylist(item)){switch(item.Type){case"Season":case"Person":case"Genre":case"MusicGenre":case"GameGenre":case"BoxSet":case"Playlist":case"Folder":case"CollectionFolder":case"UserView":case"GameSystem":case"Studio":case"PhotoAlbum":case"Program":case"Channel":case"TvChannel":return}user=view.querySelector(".appearsOnListsItemsContainer");user.fetchData=getAppearsOnListsItems.bind(instance),user.getListOptions=getAppearsOnListsListOptions,user.parentContainer=user.closest(".verticalSection"),user.classList.add("generalItemsContainer")}}function getUpcomingOnTVItemsFn(query){var item=this.currentItem,apiClient=connectionManager.getApiClient(item);return query=Object.assign({UserId:apiClient.getCurrentUserId(),HasAired:!1,SortBy:"StartDate",ImageTypeLimit:1,EnableImageTypes:"Primary,Thumb,Backdrop",EnableUserData:!1,Fields:"PrimaryImageAspectRatio,ChannelInfo"},query),"Program"===item.Type||"Timer"===item.Type&&item.ProgramId?item.AsSeries?query.SeriesFromProgramId=item.Id:(query.ShowingsFromProgramId=item.ProgramId||item.Id,query.ExcludeItemIds=item.ProgramId||item.Id):query.LibrarySeriesId=item.Id,apiClient.getLiveTvPrograms(query)}function getUpcomingOnTVListOptions(items){return{renderer:cardBuilder,options:{preferThumb:"auto",shape:"autooverflow",fields:["Name","ChannelName","AirTime"],centerText:!0,overlayText:!1,overlayPlayButton:!1,showAirDateTime:!0,multiSelect:!1,draggable:!1,focusTransformTitleAdjust:!0},virtualScrollLayout:"horizontal-grid"}}function initUpcomingOnTVSection(instance,view,item,apiClient){("Series"===item.Type||"Program"===item.Type||"Timer"===item.Type&&item.ProgramId)&&((view=view.querySelector(".seriesScheduleItemsContainer")).fetchData=getUpcomingOnTVItemsFn.bind(instance),view.parentContainer=view.closest(".verticalSection"),view.getListOptions=getUpcomingOnTVListOptions.bind(instance),view.classList.add("generalItemsContainer"),"Program"!==item.Type&&"Timer"!==item.Type||(item.AsSeries?view.parentContainer.querySelector(".sectionTitle").innerHTML=globalize.translate("Showings"):view.parentContainer.querySelector(".sectionTitle").innerHTML=globalize.translate("HeaderOtherShowings")))}function getNextUpItems(query){var item=this.currentItem,apiClient=connectionManager.getApiClient(item);return"MusicAlbum"===item.Type?apiClient.getNextUpAudioBookItems(Object.assign({AlbumId:item.Id,Fields:this.getRequestedItemFields()+",PrimaryImageAspectRatio",ImageTypeLimit:1,UserId:apiClient.getCurrentUserId()},query)):apiClient.getNextUpEpisodes(Object.assign({SeriesId:item.Id,Fields:this.getRequestedItemFields()+",PrimaryImageAspectRatio",ImageTypeLimit:1,UserId:apiClient.getCurrentUserId()},query))}function getAdditionalPartsItems(){var apiClient,item=this.currentItem;return(item.PartCount||1)<2?Promise.resolve({TotalRecordCount:0,Items:[]}):(apiClient=connectionManager.getApiClient(item)).getAdditionalVideoParts(apiClient.getCurrentUserId(),item.Id)}function getAdditionalPartsListOptions(items){return{renderer:cardBuilder,options:{shape:"autooverflow",scalable:!0,fields:["Name","Runtime"],action:"playallfromhere",centerText:!0,overlayText:!1,draggable:!1,focusTransformTitleAdjust:!0},virtualScrollLayout:"horizontal-grid"}}function initAdditionalPartsSection(instance,view,item,apiClient){view=view.querySelector(".additionalPartsItemsContainer");view.fetchData=getAdditionalPartsItems.bind(instance),view.parentContainer=view.closest(".verticalSection"),view.getListOptions=getAdditionalPartsListOptions,view.classList.add("generalItemsContainer")}function getExtrasItems(query){var item=this.currentItem,apiClient=connectionManager.getApiClient(item);return apiClient.getSpecialFeatures(apiClient.getCurrentUserId(),item.Id,{Fields:this.getRequestedItemFields()+",PrimaryImageAspectRatio"}).then(function(items){var totalRecordCount=items.length;return query&&(items=items.slice(query.StartIndex||0),query.Limit)&&items.length>query.Limit&&(items.length=query.Limit),{Items:items,TotalRecordCount:totalRecordCount}})}function getExtrasListOptions(items){return{renderer:cardBuilder,options:{shape:"autooverflow",scalable:!0,fields:["Name","Runtime"],centerText:!0,overlayText:!1,draggable:!1,focusTransformTitleAdjust:!0},virtualScrollLayout:"horizontal-grid"}}function initExtrasSection(instance,view,item,apiClient){itemHelper.supportsExtras(item)&&((item=view.querySelector(".extrasItemsContainer")).fetchData=getExtrasItems.bind(instance),item.parentContainer=item.closest(".verticalSection"),item.getListOptions=getExtrasListOptions,item.classList.add("generalItemsContainer"))}function initLinkedItemsSection(instance,view,item,apiClient){switch(item.Type){case"Genre":case"MusicGenre":case"GameGenre":case"Person":case"Studio":case"MusicArtist":case"Tag":case"BoxSet":break;default:return}instance._linkedItemsView||(instance._linkedItemsView=new LinkedItemsView({view:view.querySelector(".linkedItems"),params:instance.params,item:item,apiClient:apiClient,requestedItemFields:instance.getRequestedItemFields()}))}function getProgramGuideItems(query){var item=this.currentItem,apiClient=connectionManager.getApiClient(item);return apiClient.getLiveTvPrograms(Object.assign({ChannelIds:item.Id,UserId:apiClient.getCurrentUserId(),HasAired:!1,SortBy:"StartDate",ImageTypeLimit:1,EnableUserData:!1,Fields:"PrimaryImageAspectRatio,Overview"},query))}function getProgramGuideListOptions(items){var smallerLayout="true"===this.params.asDialog&&layoutManager.tv,fields=["ParentName","Name","StartToEndDateTime"];return smallerLayout||fields.push("Overview"),{renderer:listView,options:{imageSize:smallerLayout?"medium":"large",enableUserDataButtons:!1,mediaInfo:!1,mediaInfoWithTitle:!0,draggable:!1,multiSelect:!1,defaultShape:"portrait",fields:fields},virtualScrollLayout:"vertical-grid"}}function initProgramGuideSection(instance,view,item,apiClient){"TvChannel"===item.Type&&((item=view.querySelector(".programGuideItemsContainer")).fetchData=getProgramGuideItems.bind(instance),item.parentContainer=item.closest(".programGuideSection"),item.getListOptions=getProgramGuideListOptions.bind(instance),item.classList.add("generalItemsContainer"))}function getSeriesTimerScheduleItems(){var item=this.currentItem,apiClient=connectionManager.getApiClient(item);return apiClient.getLiveTvTimers({UserId:apiClient.getCurrentUserId(),ImageTypeLimit:1,EnableImageTypes:"Primary,Backdrop,Thumb",SortBy:"StartDate",EnableTotalRecordCount:!1,EnableUserData:!1,SeriesTimerId:item.Id,Fields:"ChannelInfo,ChannelImage"})}function getSeriesTimerListOptions(items){return{renderer:listView,options:{enableUserDataButtons:!1,image:!0,mediaInfo:!1,imageSize:"large",moreButton:!1,recordButton:!1,draggable:!1,multiSelect:!1,fields:["ParentName","Name","StartToEndDateTime","ChannelName","Overview"],highlight:!1},virtualScrollLayout:"vertical-grid"}}function initSeriesTimerScheduleSection(instance,view,item,apiClient){"SeriesTimer"===item.Type&&((item=view.querySelector(".seriesTimerScheduleItemsContainer")).fetchData=getSeriesTimerScheduleItems.bind(instance),item.parentContainer=item.closest(".verticalSection"),item.getListOptions=getSeriesTimerListOptions,item.classList.add("generalItemsContainer"))}function enableDetailPoster(instance,item){return"true"===instance.params.asDialog||!enableTvDetailImageLayout(instance,item)||userSettings.showDetailPoster(layoutManager.tv)}function getDetailImageItems(){var item=this.currentItem,items=[];return item&&enableDetailPoster(this,item)&&items.push(item),Promise.resolve({Items:items,TotalRecordCount:items.length})}function getDetailImageListOptionsFn(itemType,cardClass,imageContainerClassName){imageContainerClassName=imageContainerClassName.split(" ").filter(function(c){return c.includes("detailImage")}).join(" ");let cardBoxClass="detailImageContainerCard-cardBox";return imageContainerClassName.includes("detailImageContainer-side")&&(imageContainerClassName+=" item-fixed-side",cardBoxClass+=" detailImageContainerCard-side-cardBox"),imageContainerClassName+=" imageWidthTest",function(items){return{renderer:cardBuilder,options:{overlayText:!0,fields:[],action:"none",imageClass:"detailImage",imageWidthTestClass:imageContainerClassName,multiSelect:!1,contextMenu:!1,ratingButton:!1,playedButton:!1,cardClass:cardClass,cardBoxClass:cardBoxClass,defaultIcon:!0,typeIndicator:!1,playedIndicator:!1,syncIndicator:!1,timerIndicator:!1,randomDefaultBackground:!1,staticElement:!0,progress:"Program"===itemType||"Timer"===itemType,enableUserData:!1,draggable:!1,moreButton:!1,programIndicators:!1,keepImageAnimation:!0},virtualScrollLayout:"vertical-grid"}}}function enableTvDetailImageLayout(instance,item){if("true"!==instance.params.asDialog){switch(item.Type){case"Series":case"Season":case"Audio":case"Program":return!0;case"BoxSet":case"TvChannel":case"Playlist":case"MusicAlbum":case"MusicArtist":case"MusicGenre":return!1}switch(item.MediaType){case"Video":case"Photo":case"Game":case"Book":return!0}}return!1}function afterDetailImageRefreshed(){var detailImageElement=this.querySelector(".detailImage");detailImageElement&&(this.querySelector(".cardImageIcon")?detailImageElement.classList.remove("detailImage-transparent"):detailImageElement.classList.add("detailImage-transparent"))}function initDetailImage(instance,view,item,apiClient){var itemsContainer=getDetailImageContainer(view,item),detailImage=itemsContainer,view=view.querySelector(".detailImageContainer-main"),view=(enableTrackList(item)||"Person"!==item.Type&&"BoxSet"!==item.Type&&"Season"!==item.Type&&"TvChannel"!==item.Type&&"Playlist"!==item.Type&&"MusicGenre"!==item.Type||detailImage.classList.add("detailImageContainer-small"),"Season"!==item.Type&&("Playlist"!==item.Type&&"MusicAlbum"!==item.Type||enableTrackList(item))||view.classList.add("detailImageContainer-main-extrabottommargin"),layoutManager.tv?view.classList.add("detailImageContainer-main-tv"):view.classList.remove("detailImageContainer-main-tv"),enableItemBackdropAsTopImage(item)?view.classList.add("detailImageContainer-hidemobile"):view.classList.remove("detailImageContainer-hidemobile"),imageLoader.getShape([item],{}));detailImage.classList.remove("detailImageContainer-backdrop","detailImageContainer-square","detailImageContainer-portrait","detailImageContainer-fourThree","detailImageContainer-banner"),view&&detailImage.classList.add("detailImageContainer-"+view),itemsContainer.fetchData=getDetailImageItems.bind(instance),(itemsContainer.parentContainer=itemsContainer).getListOptions=getDetailImageListOptionsFn(item.Type,"detailImageContainerCard",detailImage.className),itemsContainer.afterRefresh=afterDetailImageRefreshed,itemsContainer.classList.add("generalItemsContainer"),enableDetailPoster(instance,item)||itemsContainer.classList.add("hide")}function getChaptersFromMarkerList(chapters){return chapters}function getChaptersForDisplay(chapters){var list=[];for(let i=0,length=chapters.length;i<length;i++){var chapter=chapters[i];chapter.MarkerType&&"Chapter"!==chapter.MarkerType||list.push(chapter)}return list}function getChapterItems(query){var item=this.currentItem;let mediaSourceId=this.view.querySelector(".selectSource").value;var mediaSource=(this._currentPlaybackMediaSources||[]).filter(function(m){return m.Id===mediaSourceId})[0]||{};let chapters=getChaptersFromMarkerList(mediaSource?.Chapters||item.Chapters||[]);chapters.length&&"Video"===item.MediaType&&!chapters[0].ImageTag&&(chapters=[]);var videoStream=(mediaSource.MediaStreams||[]).filter(function(i){return"Video"===i.Type})[0]||{};let aspect=null;videoStream.Width&&videoStream.Height&&(aspect=videoStream.Width/videoStream.Height);for(let i=0,length=chapters.length;i<length;i++){var chapter=chapters[i];chapter.ServerId=item.ServerId,chapter.MediaType=item.MediaType,chapter.PrimaryImageAspectRatio=aspect,null==chapter.ItemId&&(chapter.ItemId=item.Id),chapter.MediaSourceId=mediaSource.Id,chapter.Type="Chapter",chapter.Id="chapter_"+chapter.ItemId+"_"+chapter.StartPositionTicks,null==chapter.ChapterIndex&&(chapter.ChapterIndex=i)}videoStream=(chapters=getChaptersForDisplay(chapters)).length;return query&&(chapters=chapters.slice(query.StartIndex||0),query.Limit)&&chapters.length>query.Limit&&(chapters.length=query.Limit),Promise.resolve({Items:chapters,TotalRecordCount:videoStream})}function getChaptersCardOptions(items){return{renderer:cardBuilder,options:{shape:"autooverflow",centerText:!0,overlayText:!1,fields:["Name","ChapterTime"],multiSelect:!1,contextMenu:!1,action:"play",draggable:!1,background:"black",focusTransformTitleAdjust:!0},virtualScrollLayout:"horizontal-grid"}}function getChaptersListViewOptions(items){return{renderer:listView,options:{action:"play",multiSelect:!1,contextMenu:!1,imagePlayButton:!layoutManager.tv,mediaInfo:!1,enableSideMediaInfo:!1,enableUserDataButtons:!1,fields:["Name","ChapterTime"]}}}function initChaptersSection(instance,view,item,apiClient){var section=view.querySelector(".chaptersSection");let html="";"Audio"===item.MediaType?(html+='<div is="emby-itemscontainer" class="focuscontainer-x trackList-marginleftcards itemsContainer chaptersItemsContainer vertical-list padded-left padded-left-page padded-right"></div>',section.classList.remove("verticalSection-cards"),section.classList.add("verticalSection-extrabottompadding"),(sectionTitleContainer=section.querySelector(".sectionTitleContainer")).classList.add("trackList-marginleftcards"),sectionTitleContainer.classList.remove("sectionTitleContainer-cards"),section.querySelector(".sectionTitle").classList.remove("sectionTitle-cards")):html=(html+='<div is="emby-scroller" class="emby-scroller padded-top-focusscale padded-bottom-focusscale padded-left padded-left-page padded-right" data-mousewheel="false" data-focusscroll="true" data-horizontal="true">')+'<div is="emby-itemscontainer" class="scrollSlider focuscontainer-x itemsContainer chaptersItemsContainer focusable" data-focusabletype="nearest" data-virtualscrolllayout="horizontal-grid"></div></div>',section.insertAdjacentHTML("beforeend",html);var sectionTitleContainer=view.querySelector(".chaptersItemsContainer");sectionTitleContainer.fetchData=getChapterItems.bind(instance),sectionTitleContainer.parentContainer=sectionTitleContainer.closest(".verticalSection"),"Audio"===item.MediaType?sectionTitleContainer.getListOptions=getChaptersListViewOptions:sectionTitleContainer.getListOptions=getChaptersCardOptions}function getMoreFromSeasonItems(query){var apiClient,item=this.currentItem;return item.SeasonId&&item.SeriesId?(apiClient=connectionManager.getApiClient(item),query=Object.assign({SeasonId:item.SeasonId,UserId:apiClient.getCurrentUserId(),Fields:this.getRequestedItemFields()+",PrimaryImageAspectRatio"},query),apiClient.getEpisodes(item.SeriesId,query).then(function(result){return!query.StartIndex&&result.Items.length<2?Promise.resolve({TotalRecordCount:0,Items:[]}):result})):Promise.resolve({TotalRecordCount:0,Items:[]})}function getMoreFromSeasonListOptions(items){return{renderer:cardBuilder,options:{shape:"auto",scalable:!0,fields:["Name"],overlayText:!1,centerText:!0,includeParentInfoInTitle:!1,focusTransformTitleAdjust:!0},virtualScrollLayout:"horizontal-grid"}}function afterMoreFromSeasonRefreshed(totalResult){if(totalResult.Items.length){var item=this.currentItem;if(item){var query,view=this.view;if(view){let itemsContainer=view.querySelector(".moreFromSeasonItemsContainer");if(itemsContainer){let index=itemsContainer.indexOfItemId(item.Id);if(-1===index)return view=connectionManager.getApiClient(item),query={SeasonId:item.SeasonId,UserId:view.getCurrentUserId(),Fields:this.getRequestedItemFields()+",PrimaryImageAspectRatio",Limit:0,StartItemId:item.Id},view.getEpisodes(item.SeriesId,query).then(function(result){index=Math.max(totalResult.TotalRecordCount-result.TotalRecordCount,0),itemsContainer.scrollToIndex(Math.min(index+1,totalResult.TotalRecordCount-1),{behavior:"instant",offset:"-padding-inline-start"},!1)});itemsContainer.scrollToIndex(Math.min(index+1,totalResult.TotalRecordCount-1),{behavior:"instant",offset:"-padding-inline-start"},!1)}}}}}function initMoreFromSeasonSection(instance,view,item,apiClient){var section;"Episode"===item.Type&&((section=(view=view.querySelector(".moreFromSeasonItemsContainer")).closest(".verticalSection")).querySelector("h2").innerHTML=globalize.translate("MoreFromValue",item.SeasonName),view.fetchData=getMoreFromSeasonItems.bind(instance),view.parentContainer=section,view.getListOptions=getMoreFromSeasonListOptions,view.afterRefresh=afterMoreFromSeasonRefreshed.bind(instance),view.classList.add("generalItemsContainer"))}function getMoreFromArtistItems(query){var item=this.currentItem;if("MusicAlbum"===item.Type&&!item.AlbumArtists&&!item.AlbumArtists.length)return Promise.resolve({TotalRecordCount:0,Items:[]});query=Object.assign({IncludeItemTypes:"MusicAlbum",Recursive:!0,SortBy:"ProductionYear,SortName",SortOrder:"Descending",Fields:this.getRequestedItemFields()+",PrimaryImageAspectRatio,ProductionYear"},query);var apiClient=connectionManager.getApiClient(item);return"MusicArtist"===item.Type?query.ContributingArtistIds=item.Id:(query.AlbumArtistIds=item.AlbumArtists[0].Id,query.ExcludeItemIds=item.Id),apiClient.getItems(apiClient.getCurrentUserId(),query)}function getMoreFromArtistListOptions(items){return{renderer:cardBuilder,options:{shape:"auto",scalable:!0,fields:["Name","ProductionYear"],centerText:!0,overlayText:!1,overlayPlayButton:!0,focusTransformTitleAdjust:!0},virtualScrollLayout:"horizontal-grid"}}function initMoreFromArtistSection(instance,view,item,apiClient){var section;"MusicArtist"!==item.Type&&"MusicAlbum"!==item.Type||(section=(view=view.querySelector(".moreFromArtistItemsContainer")).closest(".verticalSection"),"MusicArtist"===item.Type?section.querySelector(".sectionTitle").innerHTML=globalize.translate("HeaderAppearsOn"):section.querySelector(".sectionTitle").innerHTML=globalize.translate("MoreFromValue",textEncoding.htmlEncode(item.AlbumArtists[0].Name)),view.fetchData=getMoreFromArtistItems.bind(instance),view.parentContainer=section,view.getListOptions=getMoreFromArtistListOptions,view.classList.add("generalItemsContainer"))}function focusFirstUnWatched(element){var items=element.getItems();let focusItem=items.filter(function(i){return!i.UserData||!i.UserData.Played})[0];if(focusItem=focusItem||items[0]){items=element.indexOfItemId(focusItem.Id);if(-1!==items)return element.scrollToIndex(items,{},!0),!0}return!1}function pauseContainers(view){var containers=view.querySelectorAll(".generalItemsContainer");for(let i=0,length=containers.length;i<length;i++)containers[i].pause();view.querySelector(".chaptersItemsContainer").pause()}function resumeContainers(view,refreshData){var containers=view.querySelectorAll(".generalItemsContainer");for(let i=0,length=containers.length;i<length;i++)containers[i].resume({refresh:refreshData})}function onPromiseFailure(){}function reloadItem(instance,reloadAllData,restartDataLoad){!reloadAllData||instance.dataPromise&&!1===restartDataLoad||startDataLoad(instance),instance.dataPromise.then(function(responses){var item=responses[0],responses=responses[1],apiClient=connectionManager.getApiClient(item.ServerId);let view=instance.view;if(resumeContainers(view,reloadAllData),instance._linkedItemsView&&instance._linkedItemsView.resume({refresh:reloadAllData,item:item}),"Season"===item.Type){let trackList=view.querySelector(".trackList");trackList&&trackList.resume({refresh:reloadAllData}).then(function(){focusFirstUnWatched(trackList)||focusManager.autoFocus(view,{skipIfNotEnabled:!0})})}reloadAllData&&(renderSeriesTimerEditor(view,item,responses,apiClient),renderTimerEditor(instance,view,item,responses,apiClient),view.querySelector(".audioVideoMediaInfo").classList.remove("mediainfo-forcehide"),view.querySelector(".details-additionalContent").classList.remove("hide"),focusMainSection.call(instance.mainSection)),"true"!==instance.params.asDialog&&dispatchItemShowEvent(instance,"itemshow",item),loading.hide()},onPromiseFailure)}function onBeforeHide(e){"true"===this.params.asDialog||e.detail?.newViewInfo?.view.classList.contains("itemView")||(backgroundContainer.classList.remove("itemBackgroundContainer","itemBackgroundContainer-transparent","itemBackgroundContainer-preventbackdrop"),backdropContainer.classList.remove("backdropContainer-preventbackdrop"),skinHeader.classList.remove("detailHeader-noIcons"))}function addClass(elems,className){for(let i=0,length=elems.length;i<length;i++)elems[i].classList.add(className)}function setScopedFocus(view,query,enabled,type){view="string"==typeof query?view.querySelector(query):query;enabled?(view.classList.add("focusable"),view.setAttribute("data-focusabletype",type||"autofocus")):(view.classList.remove("focusable"),view.removeAttribute("data-focusabletype"))}function updateTrackSelectionsFocusState(instance,view){var instance=instance.trackSelectionsContainer,isFocusable=(instance.querySelector(".selectContainer:not(.hide)")?instance.classList.remove("hide"):instance.classList.add("hide"),instance.querySelector(".selectContainer:not(.hide) select:not([disabled])"));setScopedFocus(view,instance,isFocusable)}function onDetailMainContainerFocus(e){layoutManager.tv&&!e.target.closest(".btnReadMore,.recordingEditor,.btnOverviewText")&&this.view.scrollToBeginning()}function onManualRecordingClicked(e){executeCommandWithCommandProcessor("record",this.currentItem,{positionTo:e.target})}let drawerElement=document.querySelector(".mainDrawer");function onNavDrawerStateChange(e,drawerState){"true"!==this.params.asDialog&&(2<=drawerState&&backdrop.hasBackdrop()?drawerElement.classList.add("darkContentContainer"):drawerElement.classList.remove("darkContentContainer"))}function ItemPage(view,params){BaseView.apply(this,arguments),this.params=params,this.playerChangeFn=onPlayerChange.bind(this),this.playbackStopFn=onPlaybackStop.bind(this),this.onNavDrawerStateChangeFn=onNavDrawerStateChange.bind(this),this.topDetailsContainer=view.querySelector(".topDetailsContainer"),this.mainSection=view.querySelector(".detailMainContainer"),this.trackSelectionsContainer=view.querySelector(".trackSelections"),layoutManager.tv?addClass(view.querySelectorAll(".reduce-font-size-tv"),"reduce-font-size"):(addClass(view.querySelectorAll(".detailTextContainer"),"details-largefont"),addClass(view.querySelectorAll(".reduce-font-size-tv"),"reduce-font-size-mobile")),this.trackSelectionsContainer.addEventListener("submit",onTrackSelectionsSubmit),bindAll(view,".btnPlay","click",onPlayClick.bind(this)),bindAll(view,".btnResume","click",onPlayClick.bind(this)),bindAll(view,".btnShuffle","click",onShuffleClick.bind(this)),bindAll(view,".btnPlayTrailer","click",onPlayTrailerClick.bind(this)),bindAll(view,".btnCancelSeriesTimer","click",onCancelSeriesTimerClick.bind(this)),bindAll(view,".btnCancelTimer","click",onCancelTimerClick.bind(this)),bindAll(view,".btnDeleteItem","click",onDeleteClick.bind(this)),bindAll(view,".btnSyncDownload","download",onDownloadChange.bind(this)),bindAll(view,".btnSyncDownload","download-cancel",onDownloadChange.bind(this)),bindAll(view,".btnMoreCommands","click",onMoreCommandsClick.bind(this)),bindAll(view,".btnSortItems","click",onSortItemsClick.bind(this)),bindAll(view,".btnGroupBy","click",onGroupByClick.bind(this)),bindAll(view,".btnManageSeriesRecording","click",onManageSeriesRecordingClick.bind(this)),bindAll(view,".btnManageRecording","click",onManageRecordingClick.bind(this)),this.mainSection.addEventListener("focus",onDetailMainContainerFocus.bind(this),!0),bindAll(view,".btnSplitVersions","click",onSplitVersionsClick.bind(this)),bindAll(view,".btnReadMore","click",onReadMoreClick.bind(this)),bindAll(view,".btnOverviewText","click",onReadMoreClick.bind(this));let instance=this;view.querySelector(".selectSource").addEventListener("change",function(){renderMediaInfo(instance,view,instance.currentItem,instance._currentPlaybackMediaSources,connectionManager.getApiClient(instance.currentItem)),renderVideoSelections(view,instance._currentPlaybackMediaSources),renderAudioSelections(view,instance._currentPlaybackMediaSources),renderSubtitleSelections(view,instance._currentPlaybackMediaSources),updateTrackSelectionsFocusState(instance,view),refreshChapters(view)}),view.querySelector(".btnManualRecording").addEventListener("click",onManualRecordingClicked.bind(this)),view.addEventListener("viewbeforehide",onBeforeHide.bind(this)),this.onUserDataChangedFn=onUserDataChanged.bind(this),this.onLibraryChangedFn=onLibraryChanged.bind(this),this.onTimerCancelledFn=onTimerCancelled.bind(this),events.on(navDrawer,"drawer-state-change",this.onNavDrawerStateChangeFn);var onLibraryChangedFn=this.onLibraryChangedFn,onLibraryChangedFn=(onLibraryChangedFn&&events.on(serverNotifications,"LibraryChanged",onLibraryChangedFn),this.onUserDataChangedFn),onLibraryChangedFn=(onLibraryChangedFn&&events.on(serverNotifications,"UserDataChanged",onLibraryChangedFn),this.onTimerCancelledFn);onLibraryChangedFn&&events.on(serverNotifications,"TimerCancelled",onLibraryChangedFn),"true"===params.asDialog&&(view.querySelector(".padded-top-page").classList.add("padded-top-page-item-dialog"),onLibraryChangedFn=layoutManager.tv?"":' data-blur="true"',view.querySelector(".scrollSlider").insertAdjacentHTML("afterbegin",'<button type="button"'+onLibraryChangedFn+' is="emby-dialogclosebutton" class="dialogCloseButton-positionstart" style="top:1em;z-index:1;"></button>'))}function dispatchItemShowEvent(instance,eventName,item){instance.itemShowDispatched||(instance.itemShowDispatched=!0,instance.view.dispatchEvent(new CustomEvent(eventName,{detail:{item:item},bubbles:!0,cancelable:!1})))}Object.assign(ItemPage.prototype,BaseView.prototype),ItemPage.prototype.onInputCommand=function(e){var command=e.detail.command;switch(command){case"play":return playCurrentItem(this,"resume"),e.preventDefault(),void e.stopPropagation();case"delete":return onDeleteClick.call(this),e.preventDefault(),void e.stopPropagation();case"record":return executeCommandWithCommandProcessor(command,this.currentItem,{positionTo:e.target}),e.preventDefault(),void e.stopPropagation()}BaseView.prototype.onInputCommand.apply(this,arguments)},ItemPage.prototype.onBeginResume=function(options){BaseView.prototype.onBeginResume.apply(this,arguments),"true"!==this.params.asDialog&&(layoutManager.tv?skinHeader.classList.add("detailHeader-noIcons"):skinHeader.classList.remove("detailHeader-noIcons")),startDataLoad(this)},ItemPage.prototype.onResume=function(options){this.showItemOnResume&&(newItem=this.showItemOnResume,appRouter.replaceState(appRouter.getRouteUrl(newItem,{}),!0),this.showItemOnResume=null),BaseView.prototype.onResume.apply(this,arguments),this.itemShowDispatched=null;var newItem=this.view,onPlayerChangeFn=this.playerChangeFn,onPlayerChangeFn=(onPlayerChangeFn&&events.on(playbackManager,"playerchange",onPlayerChangeFn),this.playbackStopFn),onPlayerChangeFn=(onPlayerChangeFn&&events.on(playbackManager,"playbackstop",onPlayerChangeFn),options.refresh||this._fullReloadOnResume);this._fullReloadOnResume=!1,reloadItem(this,onPlayerChangeFn,!1),onPlayerChangeFn||(renderTrackSelectionsWithoutUser(newItem,this,options=this.currentItem,!0),setTrailerButtonVisibility(newItem,options)),this._fullReloadOnResume=!1,this.updateDrawerState()},ItemPage.prototype.updateDrawerState=function(){onNavDrawerStateChange.call(this,{},navDrawer.drawerState)},ItemPage.prototype.onPause=function(options){BaseView.prototype.onPause.apply(this,arguments);var onPlayerChangeFn=this.playerChangeFn,onPlayerChangeFn=(onPlayerChangeFn&&events.off(playbackManager,"playerchange",onPlayerChangeFn),this.playbackStopFn),onPlayerChangeFn=(onPlayerChangeFn&&events.off(playbackManager,"playbackstopped",onPlayerChangeFn),this.onNavDrawerStateChangeFn);onPlayerChangeFn&&events.off(navDrawer,"drawer-state-change",this.onNavDrawerStateChangeFn),pauseContainers(this.view),"true"===this.params.asDialog||options.newViewInfo?.view.classList.contains("itemView")||drawerElement.classList.remove("darkContentContainer"),this._linkedItemsView&&this._linkedItemsView.pause(),this.recordingEditor&&this.recordingEditor.pause()},ItemPage.prototype.enableTransitions=function(){return!0},ItemPage.prototype.destroy=function(){var onLibraryChangedFn=this.onLibraryChangedFn,onLibraryChangedFn=(onLibraryChangedFn&&events.off(serverNotifications,"LibraryChanged",onLibraryChangedFn),this.onLibraryChangedFn=null,this.onUserDataChangedFn),onLibraryChangedFn=(onLibraryChangedFn&&events.off(serverNotifications,"UserDataChanged",onLibraryChangedFn),this.onUserDataChangedFn=null,this.onTimerCancelledFn);onLibraryChangedFn&&events.off(serverNotifications,"TimerCancelled",onLibraryChangedFn),this.onTimerCancelledFn=null,BaseView.prototype.destroy.apply(this,arguments),this.onNavDrawerStateChangeFn=null,this.playerChangeFn=null,this.playbackStopFn=null,this.currentItem=null,this._currentPlaybackMediaSources=null,this.currentRecordingFields&&(this.currentRecordingFields.destroy(),this.currentRecordingFields=null),this.recordingEditor&&(this.recordingEditor.destroy(),this.recordingEditor=null),this._linkedItemsView&&(this._linkedItemsView.destroy(),this._linkedItemsView=null),this.topDetailsContainer=null,this.mainSection=null,this.trackSelectionsContainer=null,this.detailSelectSeason=null,this.seasonTabs=null,this.seasonItems=null,this.params=null,this.dataPromise=null};export default ItemPage; |