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',0===i&&(html+='
');html+='
',elem.innerHTML=html,elem.classList.add("homeSectionsContainer");var promises=[];for(i=0,length=sections.length;i'}function getPremiereInfo(){var html="";return html+'
'+'

Discover Emby Premiere

'+"
"+'

Enjoy Emby DVR, get free access to Emby apps, and more.

'+(getHorizontalScrollerStartTag()+'
')+"
"+""}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+='
',layoutManager.tv?html+='

'+globalize.translate("LatestFromLibrary",parent.Name)+"

":html=(html=(html=html+('

')+globalize.translate("LatestFromLibrary",parent.Name))+"

",html+="
";var monitor="music"===parent.CollectionType||"audiobooks"===parent.CollectionType?"markplayed":"videoplayback,markplayed",monitor=(html=(html+=getHorizontalScrollerStartTag()+'
')+"
"+"",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')+'

')+globalize.translate("Downloads"))+"

",layoutManager.tv||(html+=''),html=(html=(html+="")+getHorizontalScrollerStartTag()+'
')+"
",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+='
')+('

'+globalize.translate("HeaderMyMedia")+"

")+"
";let itemsContainerClass="itemsContainer scrollSlider focusable focuscontainer-x";!layoutManager.tv&&index<2&&(itemsContainerClass+=" itemsContainer-finepointerwrap"),useSmallButtons&&(itemsContainerClass+=" itemsContainer-sideFooters itemsContainer-smallSideFooters"),html=html+(getHorizontalScrollerStartTag()+'
',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+='
')+('

'+globalize.translate("HeaderContinueWatching")+"

")+"
")+(getHorizontalScrollerStartTag()+'
'))+"
"+"",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+='
')+('

'+globalize.translate("HeaderContinueListening")+"

")+"
")+(getHorizontalScrollerStartTag()+'
'))+"
"+"",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+='")+"")+'
',layoutManager.tv?html+='

'+globalize.translate("HeaderOnNow")+"

":html=(html=(html=html+('

')+globalize.translate("HeaderOnNow"))+"

",html=(html=(html+="
")+getHorizontalScrollerStartTag()+'
')+"
",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+='

'+globalize.translate("DvrSubscriptionRequired","","")+"

")+'",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+='
',layoutManager.tv?html+='

'+globalize.translate("HeaderNextUp")+"

":html=(html=(html=html+('

')+globalize.translate("HeaderNextUp"))+"

",html=(html=(html+="
")+getHorizontalScrollerStartTag()+'
')+"
",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+='
')+('

'+(activeRecordingsOnly?globalize.translate("HeaderActiveRecordings"):globalize.translate("HeaderLatestRecordings"))+"

")+"
")+(getHorizontalScrollerStartTag()+'
'))+"
"+"",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+='
')+('

'+globalize.translate("Playlists")+"

")+"
")+(getHorizontalScrollerStartTag()+'
'))+"
"+"",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+='
')+('

'+globalize.translate("RecentlyReleasedMovies")+"

")+"
")+(getHorizontalScrollerStartTag()+'
'))+"
"+"",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+='
')+('

'+globalize.translate("Collections")+"

")+"
")+(getHorizontalScrollerStartTag()+'
'))+"
"+"",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};