define(["loading", "libraryBrowser", "cardBuilder", "dom", "apphost", "imageLoader", "globalize", "layoutManager", "scrollStyles", "emby-itemscontainer"], function(loading, libraryBrowser, cardBuilder, dom, appHost, imageLoader, globalize, layoutManager) { "use strict"; function enableScrollX() { return !layoutManager.desktop } function getThumbShape() { return enableScrollX() ? "overflowBackdrop" : "backdrop" } function getPosterShape() { return enableScrollX() ? "overflowPortrait" : "portrait" } function getSquareShape() { return enableScrollX() ? "overflowSquare" : "square" } function getSections() { return [{ name: "HeaderFavoriteMovies", types: "Movie", id: "favoriteMovies", shape: getPosterShape(), showTitle: !1, overlayPlayButton: !0 }, { name: "HeaderFavoriteShows", types: "Series", id: "favoriteShows", shape: getPosterShape(), showTitle: !1, overlayPlayButton: !0 }, { name: "HeaderFavoriteEpisodes", types: "Episode", id: "favoriteEpisode", shape: getThumbShape(), preferThumb: !1, showTitle: !0, showParentTitle: !0, overlayPlayButton: !0, overlayText: !1, centerText: !0 }, { name: "HeaderFavoriteVideos", types: "Video,MusicVideo", id: "favoriteVideos", shape: getThumbShape(), preferThumb: !0, showTitle: !0, overlayPlayButton: !0, overlayText: !1, centerText: !0 }, { name: "HeaderFavoriteGames", types: "Game", id: "favoriteGames", shape: getSquareShape(), preferThumb: !1, showTitle: !0 }, { name: "HeaderFavoriteArtists", types: "MusicArtist", id: "favoriteArtists", shape: getSquareShape(), preferThumb: !1, showTitle: !0, overlayText: !1, showParentTitle: !1, centerText: !0, overlayPlayButton: !0, coverImage: !0 }, { name: "HeaderFavoriteAlbums", types: "MusicAlbum", id: "favoriteAlbums", shape: getSquareShape(), preferThumb: !1, showTitle: !0, overlayText: !1, showParentTitle: !0, centerText: !0, overlayPlayButton: !0, coverImage: !0 }, { name: "HeaderFavoriteSongs", types: "Audio", id: "favoriteSongs", shape: getSquareShape(), preferThumb: !1, showTitle: !0, overlayText: !1, showParentTitle: !0, centerText: !0, overlayMoreButton: !0, action: "instantmix", coverImage: !0 }] } function loadSection(elem, userId, topParentId, section, isSingleSection) { var screenWidth = dom.getWindowSize().innerWidth, options = { SortBy: "SortName", SortOrder: "Ascending", Filters: "IsFavorite", Recursive: !0, Fields: "PrimaryImageAspectRatio,BasicSyncInfo", CollapseBoxSetItems: !1, ExcludeLocationTypes: "Virtual", EnableTotalRecordCount: !1 }; topParentId && (options.ParentId = topParentId), isSingleSection || (options.Limit = screenWidth >= 1920 ? 10 : screenWidth >= 1440 ? 8 : 6, enableScrollX() && (options.Limit = 20)); var promise; return "MusicArtist" === section.types ? promise = ApiClient.getArtists(userId, options) : (options.IncludeItemTypes = section.types, promise = ApiClient.getItems(userId, options)), promise.then(function(result) { var html = ""; if (result.Items.length) { if (html += '
', !layoutManager.tv && options.Limit && result.Items.length >= options.Limit) { html += '', html += '

', html += globalize.translate(section.name), html += "

", html += '', html += "
" } else html += '

' + globalize.translate(section.name) + "

"; if (html += "
", enableScrollX()) { var scrollXClass = "scrollX hiddenScrollX"; layoutManager.tv && (scrollXClass += " smoothScrollX"), html += '
' } else html += '
'; var supportsImageAnalysis = appHost.supports("imageanalysis"), cardLayout = (appHost.preferVisualCards || supportsImageAnalysis) && section.autoCardLayout && section.showTitle; cardLayout = !1, html += cardBuilder.getCardsHtml(result.Items, { preferThumb: section.preferThumb, shape: section.shape, centerText: section.centerText && !cardLayout, overlayText: !1 !== section.overlayText, showTitle: section.showTitle, showParentTitle: section.showParentTitle, scalable: !0, coverImage: section.coverImage, overlayPlayButton: section.overlayPlayButton, overlayMoreButton: section.overlayMoreButton && !cardLayout, action: section.action, allowBottomPadding: !enableScrollX(), cardLayout: cardLayout, vibrant: supportsImageAnalysis && cardLayout }), html += "
" } elem.innerHTML = html, imageLoader.lazyChildren(elem) }) } function loadSections(page, userId, topParentId, types) { loading.show(); var sections = getSections(), sectionid = getParameterByName("sectionid"); sectionid && (sections = sections.filter(function(s) { return s.id === sectionid })), types && (sections = sections.filter(function(s) { return -1 !== types.indexOf(s.id) })); var i, length, elem = page.querySelector(".favoriteSections"); if (!elem.innerHTML) { var html = ""; for (i = 0, length = sections.length; i < length; i++) html += '
'; elem.innerHTML = html } var promises = []; for (i = 0, length = sections.length; i < length; i++) { var section = sections[i]; elem = page.querySelector(".section" + section.id), promises.push(loadSection(elem, userId, topParentId, section, 1 === sections.length)) } Promise.all(promises).then(function() { loading.hide() }) } return { render: loadSections } });