EmbyCrackedClient/web/modules/homesections/homesections.js
2025-06-25 11:46:04 +08:00

1 line
No EOL
33 KiB
JavaScript

import{appHost}from"./../common/servicelocator.js";import layoutManager from"./../layoutmanager.js";import globalize from"./../common/globalize.js";import cardBuilder from"./../cardbuilder/cardbuilder.js";import userSettings from"./../common/usersettings/usersettings.js";import connectionManager from"./../emby-apiclient/connectionmanager.js";import appSettings from"./../common/appsettings.js";import registrationServices from"./../registrationservices/registrationservices.js";import appRouter from"./../approuter.js";import"./../emby-elements/emby-button/emby-button.js";import"./../emby-elements/emby-button/paper-icon-button-light.js";import"./../emby-elements/emby-itemscontainer/emby-itemscontainer.js";import"./../emby-elements/emby-scroller/emby-scroller.js";function loadSections(options){let elem=options.element;var apiClient=options.apiClient,user=options.user,requestedItemFields=options.requestedItemFields,enableFocusPreview=options.enableFocusPreview,requestedImageTypes=options.requestedImageTypes;let i,length;var sections=userSettings.getHomeScreenSections();let html="";for(i=0,length=sections.length;i<length;i++)html+='<div class="verticalSection verticalSection-cards hide section'+i+'"></div>',0===i&&(html+='<div class="verticalSection verticalSection-cards section-downloads hide"></div><div class="verticalSection verticalSection-cards section-appinfo hide"></div>');html+='<div class="padded-bottom-page"></div>',elem.innerHTML=html,elem.classList.add("homeSectionsContainer");var promises=[];for(i=0,length=sections.length;i<length;i++)promises.push(loadSection(elem,apiClient,user,requestedItemFields,enableFocusPreview,requestedImageTypes,sections,i)),0===i&&(promises.push(loadDownloadsSection(elem.querySelector(".section-downloads"),apiClient,enableFocusPreview)),promises.push(loadAppInfoSection(elem.querySelector(".section-appinfo"),apiClient,enableFocusPreview)));return Promise.all(promises).then(function(){return resume(elem,{refresh:!0,returnPromise:!1})})}function pause(elem){var elems=elem.querySelectorAll(".itemsContainer");let i,length;for(i=0,length=elems.length;i<length;i++)elems[i].pause()}function resume(elem,options){var elems=elem.querySelectorAll(".itemsContainer");let i,length;var promises=[];for(i=0,length=elems.length;i<length;i++)promises.push(elems[i].resume(options));elem=Promise.all(promises);return options&&!1===options.returnPromise?promises[0]:elem}function loadSection(page,apiClient,user,requestedItemFields,enableFocusPreview,requestedImageTypes,allSections,index){var section=allSections[index],userId=apiClient.getCurrentUserId(),elem=page.querySelector(".section"+index);switch(section){case"latestmedia":return loadRecentlyAdded(elem,apiClient,user,requestedItemFields,requestedImageTypes,enableFocusPreview);case"smalllibrarytiles":return loadLibraryTiles(elem,apiClient,index,!1,requestedItemFields,enableFocusPreview);case"librarybuttons":return loadLibraryTiles(elem,apiClient,index,!0,requestedItemFields,enableFocusPreview);case"resume":return loadResumeVideo(elem,apiClient,userId,allSections,requestedItemFields,requestedImageTypes,enableFocusPreview);case"resumeaudio":return loadResumeAudio(elem,apiClient,userId,requestedItemFields,requestedImageTypes,enableFocusPreview);case"latestmoviereleases":return loadLatestMovieReleases(elem,apiClient,userId,requestedItemFields,enableFocusPreview);case"playlists":return loadPlaylists(elem,apiClient,userId,requestedItemFields,enableFocusPreview);case"collections":return loadCollections(elem,apiClient,userId,requestedItemFields,enableFocusPreview);case"activerecordings":return loadLatestLiveTvRecordings(elem,!0,apiClient,userId,requestedItemFields,enableFocusPreview);case"nextup":return loadNextUp(elem,apiClient,userId,requestedItemFields,requestedImageTypes,enableFocusPreview);case"livetv":return loadOnNow(elem,apiClient,user,requestedItemFields,requestedImageTypes,enableFocusPreview);default:return elem.innerHTML="",Promise.resolve()}}function getUserViews(apiClient,userId){return apiClient.getUserViews({},userId||apiClient.getCurrentUserId()).then(function(result){return result.Items})}function getLibraryButtonsListOptions(enableFocusPreview){return function(items){return{renderer:cardBuilder,options:{fields:["Name"],centerText:!1,transition:!1,hoverPlayButton:!1,sideFooter:!0,image:!1,smallSideFooter:!0,multiSelect:!1,focusTransformTitleAdjust:!0,bottomPadding:enableFocusPreview?"focuspreview":null},virtualScrollLayout:"horizontal-grid"}}}function getUserViewsFetchFn(serverId){return function(){var apiClient=connectionManager.getApiClient(serverId);return getUserViews(apiClient,apiClient.getCurrentUserId())}}function getAppInfoItems(apiClient){var items=[];return items.push({Name:"",Id:"PremiereInfo1",ImageUrl:"https://raw.githubusercontent.com/MediaBrowser/Emby.Resources/master/apps/theater1.png",PrimaryImageAspectRatio:16/9,ServerId:apiClient.serverId()}),items.push({Name:"",Id:"PremiereInfo2",ImageUrl:"https://raw.githubusercontent.com/MediaBrowser/Emby.Resources/master/apps/theater2.png",PrimaryImageAspectRatio:16/9,ServerId:apiClient.serverId()}),items.push({Name:"",Id:"PremiereInfo3",ImageUrl:"https://raw.githubusercontent.com/MediaBrowser/Emby.Resources/master/apps/theater3.png",PrimaryImageAspectRatio:16/9,ServerId:apiClient.serverId()}),Promise.resolve({Items:items,TotalRecordCount:items.length})}function getAppInfoListOptions(enableFocusPreview){return function(items){return{renderer:cardBuilder,options:{shape:"autooverflow",fields:["Name"],contextMenu:!1,action:"custom",multiSelect:!1,focusTransformTitleAdjust:!0,bottomPadding:enableFocusPreview?"focuspreview":null},virtualScrollLayout:"horizontal-grid"}}}function loadAppInfoSection(elem,apiClient,enableFocusPreview){elem.classList.add("hide"),elem.innerHTML=getPremiereInfo(),bindAppInfoEvents(elem);var itemsContainer=elem.querySelector(".itemsContainer");return itemsContainer.fetchData=getAppInfo.bind(apiClient),itemsContainer.getListOptions=getAppInfoListOptions(enableFocusPreview),itemsContainer.parentContainer=elem,Promise.resolve()}function bindAppInfoEvents(elem){elem=elem.querySelector(".itemsContainer");elem&&elem.addEventListener("action-null",function(e){e.target.closest(".card")&&registrationServices.showPremiereInfo()})}function getAppInfo(){let apiClient=this;let cacheKey="lastappinfopresent5";var lastDatePresented=parseInt(appSettings.get(cacheKey)||"0");return lastDatePresented?Date.now()-lastDatePresented<1728e5?Promise.resolve([]):registrationServices.validateFeature("dvr",{showDialog:!1,viewOnly:!0}).then(function(){return appSettings.set(cacheKey,Date.now()),[]},function(){return appSettings.set(cacheKey,Date.now()),getAppInfoItems(apiClient)}):(appSettings.set(cacheKey,Date.now()),Promise.resolve([]))}function getHorizontalScrollerStartTag(scrollButtons){return'<div is="emby-scroller" data-mousewheel="false" data-focusscroll="true"'+(!1===scrollButtons?' data-scrollbuttons="false"':"")+' class="padded-top-focusscale padded-bottom-focusscale padded-left padded-left-page padded-right">'}function getPremiereInfo(){var html="";return html+'<div class="sectionTitleContainer sectionTitleContainer-cards">'+'<h2 class="sectionTitle sectionTitle-cards padded-left padded-left-page padded-right">Discover Emby Premiere</h2>'+"</div>"+'<p class="sectionTitle-cards padded-left padded-left-page padded-right">Enjoy Emby DVR, get free access to Emby apps, and more.</p>'+(getHorizontalScrollerStartTag()+'<div is="emby-itemscontainer" data-focusabletype="nearest" class="focusable focuscontainer-x itemsContainer scrollSlider">')+"</div>"+"</div>"}function getFetchLatestItemsFn(serverId,parentId,collectionType,requestedItemFields,requestedImageTypes){return function(query){var apiClient=connectionManager.getApiClient(serverId);let fields=requestedItemFields+",PrimaryImageAspectRatio,ProductionYear";collectionType&&"tvshows"!==collectionType||(fields+=",Status,EndDate");var options={Limit:16,Fields:fields,ImageTypeLimit:1,EnableImageTypes:requestedImageTypes,ParentId:parentId};return apiClient.getLatestItems(options)}}function getLatestListOptionsFn(itemType,viewType,enableTvPosters,enableFocusPreview){return function(items){var fields=[];let lines=null;return enableFocusPreview||("photos"!==viewType&&fields.push("Name"),"movies"!==viewType&&"tvshows"!==viewType&&"musicvideos"!==viewType&&viewType||fields.push("ProductionYear"),"music"!==viewType&&"audiobooks"!==viewType&&"tvshows"!==viewType&&"musicvideos"!==viewType&&viewType||fields.push("ParentName"),lines="musicvideos"!==viewType&&viewType?2:3),{renderer:cardBuilder,options:{shape:"autooverflow",preferThumb:"audiobooks"!==viewType&&"music"!==viewType?null:"auto",showChildCountIndicator:!0,context:"home",overlayPlayButton:"photos"!==viewType,fields:fields,lines:lines,focusTransformTitleAdjust:!0,bottomPadding:enableFocusPreview?"focuspreview":null},virtualScrollLayout:"horizontal-grid"}}}function renderLatestSection(elem,apiClient,parent,requestedItemFields,requestedImageTypes,enableFocusPreview){let html="";html+='<div class="sectionTitleContainer sectionTitleContainer-cards padded-left padded-left-page padded-right">',layoutManager.tv?html+='<h2 class="sectionTitle sectionTitle-cards">'+globalize.translate("LatestFromLibrary",parent.Name)+"</h2>":html=(html=(html=html+('<a is="emby-sectiontitle" href="'+appRouter.getRouteUrl(parent,{section:"latest"}))+'" class="more button-link button-link-color-inherit sectionTitleTextButton"><h2 class="sectionTitle sectionTitle-cards">')+globalize.translate("LatestFromLibrary",parent.Name))+"</h2></a>",html+="</div>";var monitor="music"===parent.CollectionType||"audiobooks"===parent.CollectionType?"markplayed":"videoplayback,markplayed",monitor=(html=(html+=getHorizontalScrollerStartTag()+'<div data-parentid="'+parent.Id+'" is="emby-itemscontainer" data-focusabletype="nearest" class="focusable focuscontainer-x itemsContainer scrollSlider" data-monitor="'+monitor+'" data-virtualscrolllayout="horizontal-grid">')+"</div>"+"</div>",elem.innerHTML=html,elem.querySelector(".itemsContainer"));monitor.fetchData=getFetchLatestItemsFn(apiClient.serverId(),parent.Id,parent.CollectionType,requestedItemFields,requestedImageTypes),monitor.getListOptions=getLatestListOptionsFn(parent.Type,parent.CollectionType,null,enableFocusPreview),monitor.parentContainer=elem}function loadRecentlyAdded(elem,apiClient,user,requestedItemFields,requestedImageTypes,enableFocusPreview){return getUserViews(apiClient,apiClient.getCurrentUserId()).then(function(userViews){elem.classList.remove("verticalSection","verticalSection-cards","hide");var excludeViewTypes=["playlists","livetv","boxsets","channels"];for(let i=0,length=userViews.length;i<length;i++){var frag,item=userViews[i];user.Configuration.LatestItemsExcludes.includes(item.Id)||item.Guid&&user.Configuration.LatestItemsExcludes.includes(item.Guid)||excludeViewTypes.includes(item.CollectionType||[])||((frag=document.createElement("div")).classList.add("hide","verticalSection","verticalSection-cards"),elem.appendChild(frag),renderLatestSection(frag,apiClient,item,requestedItemFields,requestedImageTypes,enableFocusPreview))}})}function getDownloadsFetchFn(serverId){return function(){if(!appHost.supports("sync"))return Promise.resolve([]);let apiClient=connectionManager.getApiClient(serverId);return apiClient.getCurrentUser().then(function(user){return user.Policy.EnableContentDownloading&&apiClient.getLatestOfflineItems?apiClient.getLatestOfflineItems({Limit:20,Filters:"IsNotFolder"}):Promise.resolve([])})}}function getDownloadListOptions(enableFocusPreview){return function(items){var fields=[];return fields.push("Name"),fields.push("ProductionYear"),fields.push("ParentName"),{renderer:cardBuilder,options:{preferThumb:"auto",inheritThumb:!1,shape:"autooverflow",fields:fields,overlayPlayButton:!0,context:"home",lines:2,focusTransformTitleAdjust:!0,bottomPadding:enableFocusPreview?"focuspreview":null},virtualScrollLayout:"horizontal-grid"}}}function getLibraryCardsListOptions(enableFocusPreview){return function(items){var fields=[];return fields.push("Name"),{renderer:cardBuilder,options:{shape:"backdrop",fields:fields,transition:!1,hoverPlayButton:!1,focusTransformTitleAdjust:!0,bottomPadding:enableFocusPreview?"focuspreview":null},virtualScrollLayout:"horizontal-grid"}}}function loadDownloadsSection(elem,apiClient,enableFocusPreview){elem.classList.add("hide");let html="";html=(html=(html=(html+='<div class="sectionTitleContainer sectionTitleContainer-cards padded-left padded-left-page padded-right">')+'<a is="emby-sectiontitle" href="'+appRouter.getRouteUrl("downloads")+'" class="more button-link button-link-color-inherit sectionTitleTextButton"><h2 class="sectionTitle sectionTitle-cards">')+globalize.translate("Downloads"))+"</h2></a>",layoutManager.tv||(html+='<a is="emby-linkbutton" href="'+appRouter.getRouteUrl("managedownloads")+'" class="sectionTitleIconButton"><i class="md-icon">&#xe8B8;</i></a>'),html=(html=(html+="</div>")+getHorizontalScrollerStartTag()+'<div is="emby-itemscontainer" data-focusabletype="nearest" class="focusable focuscontainer-x itemsContainer scrollSlider" data-virtualscrolllayout="horizontal-grid">')+"</div></div>",elem.innerHTML=html;var itemsContainer=elem.querySelector(".itemsContainer");itemsContainer.fetchData=getDownloadsFetchFn(apiClient.serverId()),itemsContainer.getListOptions=getDownloadListOptions(enableFocusPreview),itemsContainer.parentContainer=elem}function loadLibraryTiles(elem,apiClient,index,useSmallButtons,requestedItemFields,enableFocusPreview){var html="",html=(html+='<div class="sectionTitleContainer sectionTitleContainer-cards">')+('<h2 class="sectionTitle sectionTitle-cards padded-left padded-left-page padded-right">'+globalize.translate("HeaderMyMedia")+"</h2>")+"</div>";let itemsContainerClass="itemsContainer scrollSlider focusable focuscontainer-x";!layoutManager.tv&&index<2&&(itemsContainerClass+=" itemsContainer-finepointerwrap"),useSmallButtons&&(itemsContainerClass+=" itemsContainer-sideFooters itemsContainer-smallSideFooters"),html=html+(getHorizontalScrollerStartTag()+'<div data-focusabletype="nearest" is="emby-itemscontainer" class="'+itemsContainerClass)+'"></div></div>',elem.classList.add("hide"),elem.innerHTML=html,useSmallButtons&&(layoutManager.tv?elem.classList.add("padded-bottom"):elem.classList.add("verticalSection-extrabottompadding"));index=elem.querySelector(".itemsContainer");index.fetchData=getUserViewsFetchFn(apiClient.serverId()),index.getListOptions=(useSmallButtons?getLibraryButtonsListOptions:getLibraryCardsListOptions)(enableFocusPreview),index.parentContainer=elem,useSmallButtons?index.removeAttribute("data-cardsizeoffset"):index.setAttribute("data-cardsizeoffset","1")}function getContinueWatchingFetchFn(serverId,allSections,requestedItemFields,requestedImageTypes){return function(query){var apiClient=connectionManager.getApiClient(serverId),query=Object.assign({Recursive:!0,Fields:requestedItemFields+",PrimaryImageAspectRatio,ProductionYear",ImageTypeLimit:1,EnableImageTypes:requestedImageTypes,MediaTypes:"Video",IncludeNextUp:!allSections.includes("nextup")&&null},query);return apiClient.getResumableItems(apiClient.getCurrentUserId(),query)}}function getContinueWatchingListOptions(enableFocusPreview){return function(items){var fields=[];let lines=null;return enableFocusPreview||(fields.push("Name"),fields.push("ProductionYear"),fields.push("ParentName"),lines=2),{renderer:cardBuilder,options:{preferThumb:!0,shape:"backdrop",fields:fields,overlayPlayButton:!0,context:"home",centerText:!0,cardLayout:!1,lines:lines,focusTransformTitleAdjust:!0,animateProgressBar:!0,bottomPadding:enableFocusPreview?"focuspreview":null},virtualScrollLayout:"horizontal-grid",commandOptions:{removeFromResume:!0}}}}function loadResumeVideo(elem,apiClient,userId,allSections,requestedItemFields,requestedImageTypes,enableFocusPreview){var html="",html=(html=(html=(html=(html+='<div class="sectionTitleContainer sectionTitleContainer-cards padded-left padded-left-page padded-right">')+('<h2 class="sectionTitle sectionTitle-cards">'+globalize.translate("HeaderContinueWatching")+"</h2>")+"</div>")+(getHorizontalScrollerStartTag()+'<div is="emby-itemscontainer" data-focusabletype="nearest" class="focusable focuscontainer-x itemsContainer scrollSlider" data-monitor="videoplayback,markplayed" data-virtualscrolllayout="horizontal-grid">'))+"</div>"+"</div>",elem.classList.add("hide"),elem.innerHTML=html,elem.querySelector(".itemsContainer"));html.fetchData=getContinueWatchingFetchFn(apiClient.serverId(),allSections,requestedItemFields,requestedImageTypes),html.getListOptions=getContinueWatchingListOptions(enableFocusPreview),html.parentContainer=elem}function getContinueListeningFetchFn(serverId,requestedItemFields,requestedImageTypes){return function(query){var apiClient=connectionManager.getApiClient(serverId),query=Object.assign({Recursive:!0,Fields:requestedItemFields+",PrimaryImageAspectRatio,ProductionYear",ImageTypeLimit:1,EnableImageTypes:requestedImageTypes,MediaTypes:"Audio"},query);return apiClient.getResumableItems(apiClient.getCurrentUserId(),query)}}function getContinueListeningListOptions(enableFocusPreview){return function(items){var fields=[];return enableFocusPreview||(fields.push("Name"),fields.push("Album"),fields.push("ParentName")),{renderer:cardBuilder,options:{preferThumb:"auto",shape:"auto",fields:fields,overlayPlayButton:!0,context:"home",centerText:!0,cardLayout:!1,albumFirst:!0,focusTransformTitleAdjust:!0,animateProgressBar:!0,bottomPadding:enableFocusPreview?"focuspreview":null},virtualScrollLayout:"horizontal-grid",commandOptions:{removeFromResume:!0}}}}function loadResumeAudio(elem,apiClient,userId,requestedItemFields,requestedImageTypes,enableFocusPreview){var html="",html=(html=(html=(html=(html+='<div class="sectionTitleContainer sectionTitleContainer-cards padded-left padded-left-page padded-right">')+('<h2 class="sectionTitle sectionTitle-cards">'+globalize.translate("HeaderContinueListening")+"</h2>")+"</div>")+(getHorizontalScrollerStartTag()+'<div is="emby-itemscontainer" data-focusabletype="nearest" class="itemsContainer focusable focuscontainer-x scrollSlider" data-monitor="audioplayback,markplayed" data-virtualscrolllayout="horizontal-grid">'))+"</div>"+"</div>",elem.classList.add("hide"),elem.innerHTML=html,elem.querySelector(".itemsContainer"));html.fetchData=getContinueListeningFetchFn(apiClient.serverId(),requestedItemFields,requestedImageTypes),html.getListOptions=getContinueListeningListOptions(enableFocusPreview),html.parentContainer=elem}function bindUnlockClick(elem){var btnUnlock=elem.querySelector(".btnUnlock");btnUnlock&&btnUnlock.addEventListener("click",function(e){registrationServices.validateFeature("livetv",{viewOnly:!0}).then(function(){elem.closest(".homeSectionsContainer").dispatchEvent(new CustomEvent("settingschange",{cancelable:!1}))})})}function getOnNowFetchFn(serverId,requestedItemFields,requestedImageTypes){return function(query){var apiClient=connectionManager.getApiClient(serverId);return query=Object.assign({userId:apiClient.getCurrentUserId(),IsAiring:!0,ImageTypeLimit:1,EnableImageTypes:requestedImageTypes,Fields:requestedItemFields+",ProgramPrimaryImageAspectRatio,PrimaryImageAspectRatio",EnableUserData:!1},query),userSettings.addLiveTvChannelSortingToQuery(query,globalize),apiClient.getLiveTvChannels(query)}}function getOnNowListOptions(enableFocusPreview){return function(items){var fields=[];return enableFocusPreview||(fields.push("CurrentProgramName"),fields.push("CurrentProgramParentNameOrName"),fields.push("CurrentProgramTime")),{renderer:cardBuilder,options:{preferThumb:"auto",inheritThumb:!1,shape:"autooverflow",fields:fields,showCurrentProgramImage:!0,showAirDateTime:!1,overlayPlayButton:!0,defaultShape:"portrait",action:"programlink",multiSelect:!1,focusTransformTitleAdjust:!0,bottomPadding:enableFocusPreview?"focuspreview":null},virtualScrollLayout:"horizontal-grid",commandOptions:{createRecording:!1}}}}function loadOnNow(elem,apiClient,user,requestedItemFields,requestedImageTypes,enableFocusPreview){return user.Policy.EnableLiveTvAccess?((user=[]).push(registrationServices.validateFeature("livetv",{viewOnly:!0,showDialog:!1}).then(function(){return Promise.resolve(!0)},function(){return Promise.resolve(!1)})),Promise.all(user).then(function(responses){let html="";responses[0]?(elem.classList.remove("padded-left","padded-left-page"),elem.classList.remove("padded-right"),elem.classList.remove("padded-bottom"),elem.classList.remove("verticalSection","verticalSection-cards"),html=(html=(html=(html=(html=(html=(html=(html=(html=(html+='<div class="verticalSection verticalSection-cards"><div class="sectionTitleContainer sectionTitleContainer-cards sectionTitleContainer-extrafocuspreviewmargin padded-left padded-left-page padded-right">')+'<h2 class="sectionTitle sectionTitle-cards">'+globalize.translate("LiveTV")+"</h2></div>")+getHorizontalScrollerStartTag(!1)+'<div style="padding-bottom:1.5em;padding-inline-start:.4em;flex-wrap:nowrap;" data-focusabletype="nearest" class="focusable buttonItems focuscontainer-x scrollSlider padded-top padded-bottom flex align-items-center">')+'<a is="emby-linkbutton" href="'+appRouter.getRouteUrl("livetv",{serverId:apiClient.serverId(),section:"programs"})+'" class="raised justify-content-center buttonItems-item"><i class="md-icon button-icon button-icon-left">&#xe639;</i><span>'+globalize.translate("Programs")+"</span></a>")+'<a is="emby-linkbutton" href="'+appRouter.getRouteUrl("livetv",{serverId:apiClient.serverId(),section:"guide"})+'" class="raised justify-content-center buttonItems-item"><i class="md-icon button-icon button-icon-left autortl">&#xe1b2;</i><span>'+globalize.translate("Guide")+"</span></a>")+'<a is="emby-linkbutton" href="'+appRouter.getRouteUrl("recordedtv",{serverId:apiClient.serverId()})+'" class="raised justify-content-center buttonItems-item"><i class="md-icon button-icon button-icon-left">folder</i><span>'+globalize.translate("Recordings")+"</span></a>")+'<a is="emby-linkbutton" href="'+appRouter.getRouteUrl("livetv",{serverId:apiClient.serverId(),section:"dvrschedule"})+'" class="raised justify-content-center buttonItems-item"><i class="md-icon button-icon button-icon-left">&#xe916;</i><span>'+globalize.translate("Schedule")+"</span></a>")+"</div></div>")+"</div></div>")+'<div class="verticalSection verticalSection-cards"><div class="sectionTitleContainer sectionTitleContainer-cards padded-left padded-left-page padded-right">',layoutManager.tv?html+='<h2 class="sectionTitle sectionTitle-cards">'+globalize.translate("HeaderOnNow")+"</h2>":html=(html=(html=html+('<a is="emby-sectiontitle" href="'+appRouter.getRouteUrl("livetv",{serverId:apiClient.serverId(),section:"onnow"}))+'" class="more button-link button-link-color-inherit sectionTitleTextButton"><h2 class="sectionTitle sectionTitle-cards">')+globalize.translate("HeaderOnNow"))+"</h2></a>",html=(html=(html+="</div>")+getHorizontalScrollerStartTag()+'<div is="emby-itemscontainer" data-focusabletype="nearest" class="focusable focuscontainer-x itemsContainer scrollSlider" data-refreshinterval="300000" data-virtualscrolllayout="horizontal-grid"></div>')+"</div></div>",elem.innerHTML=html,(responses=elem.querySelector(".itemsContainer")).parentContainer=elem,responses.fetchData=getOnNowFetchFn(apiClient.serverId(),requestedItemFields,requestedImageTypes),responses.getListOptions=getOnNowListOptions(enableFocusPreview)):(elem.classList.add("hide"),elem.classList.add("padded-left","padded-left-page"),elem.classList.add("padded-right"),elem.classList.add("padded-bottom"),html=(html=(html+='<h2 class="sectionTitle sectionTitle-cards">'+globalize.translate("DvrSubscriptionRequired","","")+"</h2>")+'<button is="emby-button" type="button" class="raised btnUnlock" style="margin: 1em 0;"><i class="md-icon md-icon-fill button-icon button-icon-left">&#xe838;</i>')+"<span>"+globalize.translate("HeaderBecomeProjectSupporter")+"</span></button>",elem.innerHTML=html,showLiveTVUnlockIfNeeded(elem,apiClient)),bindUnlockClick(elem)})):(elem.classList.add("hide"),Promise.resolve())}function showLiveTVUnlockIfNeeded(elem,apiClient){return apiClient.getLiveTvChannels({userId:apiClient.getCurrentUserId(),limit:1,ImageTypeLimit:1,EnableTotalRecordCount:!1,EnableImages:!1,EnableUserData:!1}).then(function(result){result.Items.length?elem.classList.remove("hide"):elem.classList.add("hide")})}function getNextUpFetchFn(serverId,requestedItemFields,requestedImageTypes){return function(query){var apiClient=connectionManager.getApiClient(serverId);return apiClient.getNextUpEpisodes(Object.assign({LegacyNextUp:!0,Fields:requestedItemFields+",PrimaryImageAspectRatio,ProductionYear,SeriesInfo,DateCreated",ImageTypeLimit:1,EnableImageTypes:requestedImageTypes,UserId:apiClient.getCurrentUserId()},query))}}function getNextUpListOptions(enableFocusPreview){return function(){var fields=[];return enableFocusPreview||(fields.push("Name"),fields.push("ParentName")),{renderer:cardBuilder,options:{preferThumb:!0,shape:"backdrop",fields:fields,overlayPlayButton:!0,context:"home",centerText:!0,cardLayout:!1,focusTransformTitleAdjust:!0,bottomPadding:enableFocusPreview?"focuspreview":null},virtualScrollLayout:"horizontal-grid",commandOptions:{removeFromNextUp:!0}}}}function loadNextUp(elem,apiClient,userId,requestedItemFields,requestedImageTypes,enableFocusPreview){let html="";html+='<div class="sectionTitleContainer sectionTitleContainer-cards padded-left padded-left-page padded-right">',layoutManager.tv?html+='<h2 class="sectionTitle sectionTitle-cards">'+globalize.translate("HeaderNextUp")+"</h2>":html=(html=(html=html+('<a is="emby-sectiontitle" href="'+appRouter.getRouteUrl("nextup",{serverId:apiClient.serverId()}))+'" class="button-link button-link-color-inherit sectionTitleTextButton"><h2 class="sectionTitle sectionTitle-cards">')+globalize.translate("HeaderNextUp"))+"</h2></a>",html=(html=(html+="</div>")+getHorizontalScrollerStartTag()+'<div is="emby-itemscontainer" data-focusabletype="nearest" class="focusable focuscontainer-x itemsContainer scrollSlider" data-monitor="videoplayback,markplayed" data-virtualscrolllayout="horizontal-grid">')+"</div></div>",elem.classList.add("hide"),elem.innerHTML=html;var itemsContainer=elem.querySelector(".itemsContainer");itemsContainer.fetchData=getNextUpFetchFn(apiClient.serverId(),requestedItemFields,requestedImageTypes),itemsContainer.getListOptions=getNextUpListOptions(enableFocusPreview),itemsContainer.parentContainer=elem}function getLatestRecordingsFetchFn(serverId,activeRecordingsOnly,requestedItemFields){return function(query){var apiClient=connectionManager.getApiClient(serverId);return apiClient.getLiveTvRecordings(Object.assign({userId:apiClient.getCurrentUserId(),Fields:requestedItemFields+",PrimaryImageAspectRatio,ProductionYear",IsLibraryItem:!!activeRecordingsOnly&&null,IsInProgress:!!activeRecordingsOnly||null},query))}}function getLatestRecordingListOptions(activeRecordingsOnly,enableFocusPreview){return function(items){var fields=[];let lines=null;return enableFocusPreview||(fields.push("Name"),fields.push("ProductionYear"),fields.push("ParentName"),lines=2),{renderer:cardBuilder,options:{shape:"autooverflow",fields:fields,lines:lines,preferThumb:!0,cardLayout:!1,focusTransformTitleAdjust:!0,bottomPadding:enableFocusPreview?"focuspreview":null},virtualScrollLayout:"horizontal-grid"}}}function loadLatestLiveTvRecordings(elem,activeRecordingsOnly,apiClient,userId,requestedItemFields,enableFocusPreview){var html="",html=(html=(html=(html=(html+='<div class="sectionTitleContainer sectionTitleContainer-cards">')+('<h2 class="sectionTitle sectionTitle-cards padded-left padded-left-page padded-right">'+(activeRecordingsOnly?globalize.translate("HeaderActiveRecordings"):globalize.translate("HeaderLatestRecordings"))+"</h2>")+"</div>")+(getHorizontalScrollerStartTag()+'<div is="emby-itemscontainer" data-focusabletype="nearest" class="focusable focuscontainer-x itemsContainer scrollSlider" data-monitor="RecordingStarted,RecordingEnded" data-virtualscrolllayout="horizontal-grid">'))+"</div>"+"</div>",elem.classList.add("hide"),elem.innerHTML=html,elem.querySelector(".itemsContainer"));html.fetchData=getLatestRecordingsFetchFn(apiClient.serverId(),activeRecordingsOnly,requestedItemFields),html.getListOptions=getLatestRecordingListOptions(activeRecordingsOnly,enableFocusPreview),html.parentContainer=elem,html.maxTotalRecordCount=24}function getPlaylistsFetchFn(serverId,requestedItemFields){return function(query){var apiClient=connectionManager.getApiClient(serverId);return apiClient.getItems(apiClient.getCurrentUserId(),Object.assign({Fields:requestedItemFields+",PrimaryImageAspectRatio,ProductionYear",IncludeItemTypes:"Playlist",Recursive:!0},query))}}function getPlaylistListOptions(enableFocusPreview){return function(items){var fields=[];return enableFocusPreview||fields.push("Name"),{renderer:cardBuilder,options:{shape:"autooverflow",fields:fields,cardLayout:!1,focusTransformTitleAdjust:!0,bottomPadding:enableFocusPreview?"focuspreview":null},virtualScrollLayout:"horizontal-grid"}}}function loadPlaylists(elem,apiClient,userId,requestedItemFields,enableFocusPreview){var html="",html=(html=(html=(html=(html+='<div class="sectionTitleContainer sectionTitleContainer-cards">')+('<h2 class="sectionTitle sectionTitle-cards padded-left padded-left-page padded-right">'+globalize.translate("Playlists")+"</h2>")+"</div>")+(getHorizontalScrollerStartTag()+'<div is="emby-itemscontainer" data-focusabletype="nearest" class="focusable focuscontainer-x itemsContainer scrollSlider" data-virtualscrolllayout="horizontal-grid">'))+"</div>"+"</div>",elem.classList.add("hide"),elem.innerHTML=html,elem.querySelector(".itemsContainer"));html.fetchData=getPlaylistsFetchFn(apiClient.serverId(),requestedItemFields),html.getListOptions=getPlaylistListOptions(enableFocusPreview),html.parentContainer=elem}function getLatestMovieReleasesFetchFn(serverId,requestedItemFields){return function(query){var apiClient=connectionManager.getApiClient(serverId),minPremiereDate=new Date(Date.now());return minPremiereDate.setFullYear(minPremiereDate.getFullYear()-1),apiClient.getItems(apiClient.getCurrentUserId(),Object.assign({Fields:requestedItemFields+",PrimaryImageAspectRatio,ProductionYear",IncludeItemTypes:"Movie",Recursive:!0,SortBy:"ProductionYear,PremiereDate,SortName",SortOrder:"Descending",MinPremiereDate:minPremiereDate.toISOString()},query))}}function getLatestMovieReleasesListOptions(enableFocusPreview){return function(items){var fields=[];return enableFocusPreview||(fields.push("Name"),fields.push("ProductionYear")),{renderer:cardBuilder,options:{shape:"autooverflow",fields:fields,cardLayout:!1,focusTransformTitleAdjust:!0,bottomPadding:enableFocusPreview?"focuspreview":null},virtualScrollLayout:"horizontal-grid"}}}function loadLatestMovieReleases(elem,apiClient,userId,requestedItemFields,enableFocusPreview){var html="",html=(html=(html=(html=(html+='<div class="sectionTitleContainer sectionTitleContainer-cards">')+('<h2 class="sectionTitle sectionTitle-cards padded-left padded-left-page padded-right">'+globalize.translate("RecentlyReleasedMovies")+"</h2>")+"</div>")+(getHorizontalScrollerStartTag()+'<div is="emby-itemscontainer" data-focusabletype="nearest" class="focusable focuscontainer-x itemsContainer scrollSlider" data-virtualscrolllayout="horizontal-grid">'))+"</div>"+"</div>",elem.classList.add("hide"),elem.innerHTML=html,elem.querySelector(".itemsContainer"));html.fetchData=getLatestMovieReleasesFetchFn(apiClient.serverId(),requestedItemFields),html.getListOptions=getLatestMovieReleasesListOptions(enableFocusPreview),html.parentContainer=elem}function getCollectionsFetchFn(serverId,requestedItemFields){return function(query){var apiClient=connectionManager.getApiClient(serverId);return apiClient.getItems(apiClient.getCurrentUserId(),Object.assign({Fields:requestedItemFields+",PrimaryImageAspectRatio,ProductionYear",IncludeItemTypes:"BoxSet",Recursive:!0},query))}}function getCollectionsListOptions(enableFocusPreview){return function(items){var fields=[];return enableFocusPreview||fields.push("Name"),{renderer:cardBuilder,options:{shape:"autooverflow",fields:fields,cardLayout:!1,focusTransformTitleAdjust:!0,bottomPadding:enableFocusPreview?"focuspreview":null},virtualScrollLayout:"horizontal-grid"}}}function loadCollections(elem,apiClient,userId,requestedItemFields,enableFocusPreview){var html="",html=(html=(html=(html=(html+='<div class="sectionTitleContainer sectionTitleContainer-cards">')+('<h2 class="sectionTitle sectionTitle-cards padded-left padded-left-page padded-right">'+globalize.translate("Collections")+"</h2>")+"</div>")+(getHorizontalScrollerStartTag()+'<div is="emby-itemscontainer" data-focusabletype="nearest" class="focusable focuscontainer-x itemsContainer scrollSlider" data-virtualscrolllayout="horizontal-grid">'))+"</div>"+"</div>",elem.classList.add("hide"),elem.innerHTML=html,elem.querySelector(".itemsContainer"));html.fetchData=getCollectionsFetchFn(apiClient.serverId(),requestedItemFields),html.getListOptions=getCollectionsListOptions(enableFocusPreview),html.parentContainer=elem}export default{loadSections:loadSections,pause:pause,resume:resume};