define([ "exports", "./../common/servicelocator.js", "./../layoutmanager.js", "./../common/globalize.js", "./../cardbuilder/cardbuilder.js", "./../common/usersettings/usersettings.js", "./../emby-apiclient/connectionmanager.js", "./../common/appsettings.js", "./../registrationservices/registrationservices.js", "./../approuter.js", "./../emby-elements/emby-button/emby-button.js", "./../emby-elements/emby-button/paper-icon-button-light.js", "./../emby-elements/emby-itemscontainer/emby-itemscontainer.js", "./../emby-elements/emby-scroller/emby-scroller.js", ], function ( _exports, _servicelocator, _layoutmanager, _globalize, _cardbuilder, _usersettings, _connectionmanager, _appsettings, _registrationservices, _approuter, _embyButton, _paperIconButtonLight, _embyItemscontainer, _embyScroller, ) { function resume(elem, options) { for ( var elems = elem.querySelectorAll(".itemsContainer"), promises = [], 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 getUserViews(apiClient, userId) { return apiClient .getUserViews({}, userId || apiClient.getCurrentUserId()) .then(function (result) { return result.Items; }); } function getLibraryButtonsListOptions(items) { return { renderer: _cardbuilder.default, options: { fields: ["Name"], centerText: !1, transition: !1, hoverPlayButton: !1, sideFooter: !0, image: !1, smallSideFooter: !0, multiSelect: !1, focusTransformTitleAdjust: !0, }, virtualScrollLayout: "horizontal-grid", }; } function getAppInfoListOptions(items) { return { renderer: _cardbuilder.default, options: { shape: "autooverflow", fields: ["Name"], contextMenu: !1, action: "custom", multiSelect: !1, focusTransformTitleAdjust: !0, }, virtualScrollLayout: "horizontal-grid", }; } function getDownloadListOptions(items) { var fields = []; return ( fields.push("Name"), fields.push("ProductionYear"), fields.push("ParentName"), { renderer: _cardbuilder.default, options: { preferThumb: "auto", inheritThumb: !1, shape: "autooverflow", fields: fields, showDetailsMenu: !0, overlayPlayButton: !0, context: "home", lines: 2, focusTransformTitleAdjust: !0, }, virtualScrollLayout: "horizontal-grid", } ); } function getLibraryCardsListOptions(items) { var fields = []; return ( fields.push("Name"), { renderer: _cardbuilder.default, options: { shape: "backdrop", fields: fields, transition: !1, hoverPlayButton: !1, focusTransformTitleAdjust: !0, }, virtualScrollLayout: "horizontal-grid", } ); } function loadLibraryTiles(elem, apiClient, index, useSmallButtons) { var serverId, html = "", itemsContainerClass = ((html = (html += '
') + ('

' + _globalize.default.translate("HeaderMyMedia") + "

")), "itemsContainer scrollSlider focuscontainer-x"), index = (!_layoutmanager.default.tv && index < 2 && (itemsContainerClass += " itemsContainer-finepointerwrap"), useSmallButtons && (itemsContainerClass += " itemsContainer-sideFooters itemsContainer-smallSideFooters"), (html = (html = html + "
" + ('
')) + "
" + "
"), elem.classList.add("hide"), (elem.innerHTML = html), useSmallButtons && (_layoutmanager.default.tv ? elem.classList.add("padded-bottom") : elem.classList.add("verticalSection-extrabottompadding")), elem.querySelector(".itemsContainer")); (index.fetchData = ((serverId = apiClient.serverId()), function () { var apiClient = _connectionmanager.default.getApiClient(serverId); return getUserViews(apiClient, apiClient.getCurrentUserId()); })), (index.getListOptions = useSmallButtons ? getLibraryButtonsListOptions : getLibraryCardsListOptions), (index.parentContainer = elem), useSmallButtons ? index.classList.remove("cardSizeSmaller") : index.classList.add("cardSizeSmaller"); } Object.defineProperty(_exports, "__esModule", { value: !0 }), (_exports.default = void 0), (_exports.default = { loadSections: function (options) { for ( var elem = options.element, apiClient = options.apiClient, user = options.user, requestedItemFields = options.requestedItemFields, enableFocusPreview = options.enableFocusPreview, requestedImageTypes = options.requestedImageTypes, sections = _usersettings.default.getHomeScreenSections(), html = "", i = 0, length = sections.length; i < length; i++ ) (html += '
'), 0 === i && (html += '
'); (elem.innerHTML = html), elem.classList.add("homeSectionsContainer"); var promises = []; for (i = 0, length = sections.length; i < length; i++) promises.push( (function ( page, apiClient, user, requestedItemFields, enableFocusPreview, requestedImageTypes, allSections, index, ) { var section = allSections[index], elem = (apiClient.getCurrentUserId(), page.querySelector(".section" + index)); switch (section) { case "latestmedia": return (function ( elem, apiClient, user, requestedItemFields, requestedImageTypes, enableFocusPreview, ) { return getUserViews( apiClient, apiClient.getCurrentUserId(), ).then(function (userViews) { elem.classList.remove( "verticalSection", "verticalSection-cards", ), elem.classList.remove("focusable"), elem.removeAttribute("data-focusabletype"); for ( var excludeViewTypes = [ "playlists", "livetv", "boxsets", "channels", ], 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", ), frag.classList.add( "verticalSection", "verticalSection-cards", ), frag.classList.add("focusable"), frag.setAttribute("data-focusabletype", "nearest"), elem.appendChild(frag), (function ( elem, apiClient, parent, requestedItemFields, requestedImageTypes, enableFocusPreview, ) { var html = ""; (html += '
'), _layoutmanager.default.tv ? (html += '

' + _globalize.default.translate( "LatestFromLibrary", parent.Name, ) + "

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

') + _globalize.default.translate( "LatestFromLibrary", parent.Name, )) + "

"); html += "
"; var monitor = "music" === parent.CollectionType || "audiobooks" === parent.CollectionType ? "markplayed" : "videoplayback,markplayed", monitor = ((html = (html += '
') + "
"), (elem.innerHTML = html), elem.querySelector(".itemsContainer")); (monitor.fetchData = (function ( serverId, parentId, collectionType, requestedItemFields, requestedImageTypes, ) { return function (query) { var apiClient = _connectionmanager.default.getApiClient( serverId, ), fields = requestedItemFields + ",PrimaryImageAspectRatio,ProductionYear"; return ( (collectionType && "tvshows" !== collectionType) || (fields += ",Status,EndDate"), apiClient.getLatestItems({ Limit: 16, Fields: fields, ImageTypeLimit: 1, EnableImageTypes: requestedImageTypes, ParentId: parentId, }) ); }; })( apiClient.serverId(), parent.Id, parent.CollectionType, requestedItemFields, requestedImageTypes, )), (monitor.getListOptions = (function ( viewType, enableFocusPreview, ) { return function (items) { var fields = [], 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.default, options: { shape: "autooverflow", preferThumb: "audiobooks" !== viewType && "music" !== viewType ? null : "auto", showUnplayedIndicator: !1, showChildCountIndicator: !0, context: "home", overlayPlayButton: "photos" !== viewType, fields: fields, lines: lines, focusTransformTitleAdjust: !0, }, virtualScrollLayout: "horizontal-grid", } ); }; })( (parent.Type, parent.CollectionType), enableFocusPreview, )), (monitor.parentContainer = elem); })( frag, apiClient, item, requestedItemFields, requestedImageTypes, enableFocusPreview, )); } }); })( elem, apiClient, user, requestedItemFields, requestedImageTypes, enableFocusPreview, ); case "smalllibrarytiles": return loadLibraryTiles(elem, apiClient, index, !1); case "librarybuttons": return loadLibraryTiles(elem, apiClient, index, !0); case "resume": return (function ( elem, apiClient, allSections, requestedItemFields, requestedImageTypes, enableFocusPreview, ) { var html = "", html = ((html = (html = '

' + _globalize.default.translate( "HeaderContinueWatching", ) + '

') + "
"), elem.classList.add("hide"), (elem.innerHTML = html), elem.querySelector(".itemsContainer")); (html.fetchData = (function ( serverId, allSections, requestedItemFields, requestedImageTypes, ) { return function (query) { var apiClient = _connectionmanager.default.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, ); }; })( apiClient.serverId(), allSections, requestedItemFields, requestedImageTypes, )), (html.getListOptions = (function (enableFocusPreview) { return function (items) { var fields = [], lines = null; return ( enableFocusPreview || (fields.push("Name"), fields.push("ProductionYear"), fields.push("ParentName"), (lines = 2)), { renderer: _cardbuilder.default, options: { preferThumb: !0, shape: "backdrop", fields: fields, showDetailsMenu: !0, overlayPlayButton: !0, context: "home", centerText: !0, cardLayout: !1, lines: lines, focusTransformTitleAdjust: !0, animateProgressBar: !0, }, virtualScrollLayout: "horizontal-grid", commandOptions: { removeFromResume: !0 }, } ); }; })(enableFocusPreview)), (html.parentContainer = elem); })( elem, apiClient, allSections, requestedItemFields, requestedImageTypes, enableFocusPreview, ); case "resumeaudio": return (function ( elem, apiClient, requestedItemFields, requestedImageTypes, enableFocusPreview, ) { var html = "", html = ((html = (html = '

' + _globalize.default.translate( "HeaderContinueListening", ) + '

') + "
"), elem.classList.add("hide"), (elem.innerHTML = html), elem.querySelector(".itemsContainer")); (html.fetchData = (function ( serverId, requestedItemFields, requestedImageTypes, ) { return function (query) { var apiClient = _connectionmanager.default.getApiClient(serverId), query = Object.assign( { Recursive: !0, Fields: requestedItemFields + ",PrimaryImageAspectRatio,ProductionYear", ImageTypeLimit: 1, EnableImageTypes: requestedImageTypes, MediaTypes: "Audio", }, query, ); return apiClient.getResumableItems( apiClient.getCurrentUserId(), query, ); }; })( apiClient.serverId(), requestedItemFields, requestedImageTypes, )), (html.getListOptions = (function (enableFocusPreview) { return function (items) { var fields = []; return ( enableFocusPreview || (fields.push("Name"), fields.push("Album"), fields.push("ParentName")), { renderer: _cardbuilder.default, options: { preferThumb: "auto", shape: "auto", fields: fields, showDetailsMenu: !0, overlayPlayButton: !0, context: "home", centerText: !0, cardLayout: !1, albumFirst: !0, focusTransformTitleAdjust: !0, animateProgressBar: !0, }, virtualScrollLayout: "horizontal-grid", commandOptions: { removeFromResume: !0 }, } ); }; })(enableFocusPreview)), (html.parentContainer = elem); })( elem, apiClient, requestedItemFields, requestedImageTypes, enableFocusPreview, ); case "activerecordings": return (function ( elem, activeRecordingsOnly, apiClient, requestedItemFields, enableFocusPreview, ) { var title = activeRecordingsOnly ? _globalize.default.translate("HeaderActiveRecordings") : _globalize.default.translate( "HeaderLatestRecordings", ), html = "", title = ((html = (html = (html = '

' + title + "

") + '
') + "
"), elem.classList.add("hide"), (elem.innerHTML = html), elem.querySelector(".itemsContainer")); (title.fetchData = (function ( serverId, activeRecordingsOnly, requestedItemFields, ) { return function (query) { var apiClient = _connectionmanager.default.getApiClient(serverId); return apiClient.getLiveTvRecordings( Object.assign( { userId: apiClient.getCurrentUserId(), Fields: requestedItemFields + ",PrimaryImageAspectRatio,ProductionYear", IsLibraryItem: !!activeRecordingsOnly && null, IsInProgress: !!activeRecordingsOnly || null, }, query, ), ); }; })( apiClient.serverId(), activeRecordingsOnly, requestedItemFields, )), (title.getListOptions = (function (enableFocusPreview) { return function (items) { var fields = [], lines = null; return ( enableFocusPreview || (fields.push("Name"), fields.push("ProductionYear"), fields.push("ParentName"), (lines = 2)), { renderer: _cardbuilder.default, options: { shape: "autooverflow", fields: fields, showDetailsMenu: !0, lines: lines, preferThumb: !0, cardLayout: !1, focusTransformTitleAdjust: !0, }, virtualScrollLayout: "horizontal-grid", } ); }; })(enableFocusPreview)), (title.parentContainer = elem), (title.maxTotalRecordCount = 24); })( elem, !0, apiClient, requestedItemFields, enableFocusPreview, ); case "nextup": return (function ( elem, apiClient, requestedItemFields, requestedImageTypes, enableFocusPreview, ) { var html = ""; (html += '
'), _layoutmanager.default.tv ? (html += '

' + _globalize.default.translate("HeaderNextUp") + "

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

') + _globalize.default.translate("HeaderNextUp")) + "

"); (html = (html += '
') + "
"), elem.classList.add("hide"), (elem.innerHTML = html); html = elem.querySelector(".itemsContainer"); (html.fetchData = (function ( serverId, requestedItemFields, requestedImageTypes, ) { return function (query) { var apiClient = _connectionmanager.default.getApiClient(serverId); return apiClient.getNextUpEpisodes( Object.assign( { LegacyNextUp: !0, Fields: requestedItemFields + ",PrimaryImageAspectRatio,ProductionYear,SeriesInfo,DateCreated", ImageTypeLimit: 1, EnableImageTypes: requestedImageTypes, UserId: apiClient.getCurrentUserId(), }, query, ), ); }; })( apiClient.serverId(), requestedItemFields, requestedImageTypes, )), (html.getListOptions = (function (enableFocusPreview) { return function () { var fields = []; return ( enableFocusPreview || (fields.push("Name"), fields.push("ParentName")), { renderer: _cardbuilder.default, options: { preferThumb: !0, shape: "backdrop", fields: fields, overlayPlayButton: !0, context: "home", centerText: !0, cardLayout: !1, focusTransformTitleAdjust: !0, }, virtualScrollLayout: "horizontal-grid", commandOptions: { removeFromNextUp: !0 }, } ); }; })(enableFocusPreview)), (html.parentContainer = elem); })( elem, apiClient, requestedItemFields, requestedImageTypes, enableFocusPreview, ); case "livetv": return (function ( elem, apiClient, user, requestedItemFields, requestedImageTypes, enableFocusPreview, ) { return user.Policy.EnableLiveTvAccess ? ((user = []).push( _registrationservices.default .validateFeature("livetv", { viewOnly: !0, showDialog: !1, }) .then( function () { return Promise.resolve(!0); }, function () { return Promise.resolve(!1); }, ), ), Promise.all(user).then(function (responses) { var 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", ), elem.classList.remove("focusable"), elem.removeAttribute("data-focusabletype"), (html = (html = (html = (html = (html = (html += '
') + '

' + _globalize.default.translate("LiveTV") + '

'), _layoutmanager.default.tv ? (html += '

' + _globalize.default.translate( "HeaderOnNow", ) + "

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

') + _globalize.default.translate( "HeaderOnNow", ) + "

"), (elem.innerHTML = html = (html = (html += "
") + '
' + "
") + "
" + "
"), ((responses = elem.querySelector( ".itemsContainer", )).parentContainer = elem), (responses.fetchData = (function ( serverId, requestedItemFields, requestedImageTypes, ) { return function (query) { var apiClient = _connectionmanager.default.getApiClient( serverId, ); return ( (query = Object.assign( { userId: apiClient.getCurrentUserId(), IsAiring: !0, ImageTypeLimit: 1, EnableImageTypes: requestedImageTypes, Fields: requestedItemFields + ",ProgramPrimaryImageAspectRatio", EnableUserData: !1, }, query, )), _usersettings.default.addLiveTvChannelSortingToQuery( query, _globalize.default, ), apiClient.getLiveTvChannels(query) ); }; })( apiClient.serverId(), requestedItemFields, requestedImageTypes, )), (responses.getListOptions = (function ( enableFocusPreview, ) { return function (items) { var fields = []; return ( enableFocusPreview || (fields.push("CurrentProgramName"), fields.push("CurrentProgramParentName"), fields.push("CurrentProgramTime")), { renderer: _cardbuilder.default, options: { preferThumb: "auto", inheritThumb: !1, shape: "autooverflow", fields: fields, showCurrentProgramImage: !0, showAirDateTime: !1, overlayPlayButton: !0, defaultShape: "portrait", action: "programlink", multiSelect: !1, focusTransformTitleAdjust: !0, }, virtualScrollLayout: "horizontal-grid", commandOptions: { createRecording: !1 }, } ); }; })(enableFocusPreview))) : (elem.classList.add("hide"), elem.classList.remove("focusable"), elem.classList.add( "padded-left", "padded-left-page", ), elem.classList.add("padded-right"), elem.classList.add("padded-bottom"), (html = (html = html + ('

' + _globalize.default.translate( "LiveTvRequiresUnlock", )) + '

"), (function (elem, apiClient) { apiClient .getLiveTvChannels({ userId: apiClient.getCurrentUserId(), limit: 1, ImageTypeLimit: 1, EnableTotalRecordCount: !1, EnableImages: !1, EnableUserData: !1, }) .then(function (result) { result.Items.length ? (elem.classList.add("focusable"), elem.classList.remove("hide")) : (elem.classList.add("hide"), elem.classList.remove("focusable")); }); })(elem, apiClient)), (function (elem) { var btnUnlock = elem.querySelector(".btnUnlock"); btnUnlock && btnUnlock.addEventListener( "click", function (e) { _registrationservices.default .validateFeature("livetv", { viewOnly: !0, }) .then(function () { elem .closest(".homeSectionsContainer") .dispatchEvent( new CustomEvent("settingschange", { cancelable: !1, }), ); }); }, ); })(elem); })) : (elem.classList.add("hide"), elem.classList.remove("focusable"), Promise.resolve()); })( elem, apiClient, user, requestedItemFields, requestedImageTypes, enableFocusPreview, ); default: return (elem.innerHTML = ""), Promise.resolve(); } })( elem, apiClient, user, requestedItemFields, enableFocusPreview, requestedImageTypes, sections, i, ), ), 0 === i && (promises.push( (function (elem, apiClient) { elem.classList.add("hide"); var html = ""; (html = (html = (html = (html += '
') + '

') + _globalize.default.translate("Downloads")) + "

"), _layoutmanager.default.tv || (html += ''); (html = (html += '
') + "
"), (elem.innerHTML = html); html = elem.querySelector(".itemsContainer"); (html.fetchData = (function (serverId) { return function () { var apiClient; return _servicelocator.appHost.supports("sync") ? (apiClient = _connectionmanager.default.getApiClient(serverId)) .getCurrentUser() .then(function (user) { return user.Policy.EnableContentDownloading && apiClient.getLatestOfflineItems ? apiClient.getLatestOfflineItems({ Limit: 20, Filters: "IsNotFolder", }) : Promise.resolve([]); }) : Promise.resolve([]); }; })(apiClient.serverId())), (html.getListOptions = getDownloadListOptions), (html.parentContainer = elem); })(elem.querySelector(".section-downloads"), apiClient), ), promises.push( (function (elem, apiClient) { elem.classList.add("hide"), (elem.innerHTML = (function () { var html = ""; return (html = (html = (html = (html += '
') + '

Discover Emby Premiere

') + '

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

') + "
"); })()), (function (elem) { elem = elem.querySelector(".itemsContainer"); elem && elem.addEventListener("action-null", function (e) { e.target.closest(".card") && _registrationservices.default.showPremiereInfo(); }); })(elem); var itemsContainer = elem.querySelector(".itemsContainer"); return ( (itemsContainer.fetchData = function () { var apiClient = this, cacheKey = "lastappinfopresent5", lastDatePresented = parseInt( _appsettings.default.get(cacheKey) || "0", ); if (!lastDatePresented) return ( _appsettings.default.set(cacheKey, Date.now()), Promise.resolve([]) ); if (Date.now() - lastDatePresented < 1728e5) return Promise.resolve([]); return _registrationservices.default .validateFeature("dvr", { showDialog: !1, viewOnly: !0, }) .then( function () { return ( _appsettings.default.set(cacheKey, Date.now()), [] ); }, function () { return ( _appsettings.default.set(cacheKey, Date.now()), (function (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, }) ); })(apiClient) ); }, ); }.bind(apiClient)), (itemsContainer.getListOptions = getAppInfoListOptions), (itemsContainer.parentContainer = elem), Promise.resolve() ); })(elem.querySelector(".section-appinfo"), apiClient), )); return Promise.all(promises).then(function () { return resume(elem, { refresh: !0, returnPromise: !1 }); }); }, pause: function (elem) { for ( var elems = elem.querySelectorAll(".itemsContainer"), i = 0, length = elems.length; i < length; i++ ) elems[i].pause(); }, resume: resume, }); });