define([ "exports", "./../modules/emby-elements/emby-scroller/emby-scroller.js", "./../modules/emby-elements/emby-button/emby-button.js", "./../modules/emby-apiclient/connectionmanager.js", "./../modules/common/globalize.js", "./../modules/loading/loading.js", "./../modules/emby-elements/emby-itemscontainer/emby-itemscontainer.js", "./../modules/layoutmanager.js", "./../modules/cardbuilder/cardbuilder.js", "./../modules/common/itemmanager/itemmanager.js", ], function ( _exports, _embyScroller, _embyButton, _connectionmanager, _globalize, _loading, _embyItemscontainer, _layoutmanager, _cardbuilder, _itemmanager, ) { function getCardOptionsForType(type, items) { var options; return "BoxSet" === type || "Playlist" === type || "Game" === type || "Book" === type || "PhotoAlbum" === type || "MusicArtist" === type || "Person" === type ? { shape: "autooverflow", fields: ["Name"], focusTransformTitleAdjust: !0, } : "Movie" === type || "Trailer" === type || "Series" === type ? { shape: "autooverflow", fields: ["Name", "ProductionYear"], focusTransformTitleAdjust: !0, } : "Photo" === type ? { shape: "autooverflow", fields: ["Name"], focusTransformTitleAdjust: !0, } : "Audio" === type ? { shape: "autooverflow", preferArtistTitle: !0, fields: ["ParentName", "Name"], action: "play", sideFooter: !0, focusTransformTitleAdjust: !0, } : "TvChannel" === type ? { shape: "autooverflow", fields: ["Name", "CurrentProgramParentName", "CurrentProgramTime"], defaultBackground: !0, focusTransformTitleAdjust: !0, } : "Program" === type ? ((function (options, type, items) { "Program" === type && items.length && items[0].AsSeries && ((options.progress = !1), (options.showAirDateTime = !1), (options.fields = options.fields .filter(isNotName) .filter(isNotParentName) .filter(isNotAirTime)), options.fields.push("ParentNameOrName")); })( (options = { shape: "autooverflow", fields: ["ParentName", "Name", "AirTime"], showAirDateTime: !0, focusTransformTitleAdjust: !0, }), type, items, ), options) : "Tag" === type ? { shape: "autooverflow", fields: ["Name"], defaultBackground: !0, multiSelect: !1, focusTransformTitleAdjust: !0, } : { shape: "autooverflow", fields: ["ParentName", "Name"], focusTransformTitleAdjust: !0, }; } function isNotName(n) { return "Name" !== n; } function isNotParentName(n) { return "ParentName" !== n; } function isNotAirTime(n) { return "AirTime" !== n; } function renderSearchTypes(instance, apiClient, context, value, types) { for ( var searchCategories = context.querySelector(".searchCategories"), promises = ((searchCategories.innerHTML = ""), []), i = 0, length = types.length; i < length; i++ ) { var type = (type = types[i]).Name || type, elem = document.createElement("div"), innerHTML = ((elem.className = "hide verticalSection albumResults focusable"), "Audio" === type && elem.classList.add("verticalSection-extrabottompadding"), '

' + _itemmanager.default.getPluralItemTypeName(type) + "

"), itemsContainerClass = "focuscontainer-x itemsContainer scrollSlider"; "Audio" === type && (itemsContainerClass += " itemsContainer-sideFooters"), (innerHTML = (innerHTML += '
') + ('
') + "
"), (elem.innerHTML = innerHTML), elem.setAttribute("data-focusabletype", "nearest"), searchCategories.appendChild(elem), promises.push( (function (instance, apiClient, query, context, section) { return ( (query.Limit = 16), (query.ParentId = instance.options.parentId), (function (instance, apiClient, query) { (query.Recursive = !0), (query.EnableTotalRecordCount = !1), (query.ImageTypeLimit = 1), (query.Fields = getSearchFields( instance, query.IncludeItemTypes, )), "Program" === query.IncludeItemTypes && (query.GroupProgramsBySeries = !0); "Program" === query.IncludeItemTypes && (query.HasAired = !1); return apiClient.getItems(apiClient.getCurrentUserId(), query); })(instance, apiClient, query).then(function (result) { var items = result.Items || result.SearchHints, items = getCardOptionsForType(query.IncludeItemTypes, items); return populateResults(result, context, section, items); }) ); })( instance, apiClient, { searchTerm: value, IncludeItemTypes: type }, context, elem, ), ); } return Promise.all(promises); } function getSearchFields(instance, type) { instance = instance.options.requestedItemFields + ",PrimaryImageAspectRatio,ProductionYear"; return ( (type && "Series" !== type) || (instance += ",Status,EndDate"), instance ); } function populateResults(result, context, section, cardOptions) { (result = result.Items || result.SearchHints), (context = (section = "string" == typeof section ? context.querySelector(section) : section).querySelector(".itemsContainer")); return ( _cardbuilder.default.buildCards( result, Object.assign( { itemsContainer: context, parentContainer: section, shape: "autooverflow", scalable: !0, focusTransformTitleAdjust: !0, }, cardOptions || {}, ), ), section .querySelector(".emby-scroller") .scrollToBeginning({ behavior: "instant" }), result ); } function SearchResults(options) { var elem, instance; (this.options = options), (elem = options.element), (instance = this), elem.classList.add("searchResults"), instance.search(""); } Object.defineProperty(_exports, "__esModule", { value: !0 }), (_exports.default = void 0), (SearchResults.prototype.search = function (value) { _loading.default.show(); var apiClient = _connectionmanager.default.getApiClient( this.options.serverId, ), elem = this.options.element, searchInfo = (elem.querySelector(".noResults").classList.add("hide"), { instance: this, searchTerm: value }); return (function (instance, apiClient, context, value) { (value || _layoutmanager.default.tv) && context.querySelector(".searchSuggestions").classList.add("hide"); var query = { SearchTerm: value, Recursive: !0, EnableTotalRecordCount: !1, ImageTypeLimit: 1, Limit: 16, ParentId: instance.options.parentId, Fields: getSearchFields(instance), GroupProgramsBySeries: !0, }; return apiClient.getSearchResults(query).then(function (result) { var subPromises = []; return ( subPromises.push( populateResults( result, context, context.querySelector(".globalResults"), { shape: "autooverflow", fields: [ "ParentName", "Name", "Type", "CurrentProgramParentName", "AirTime", ], showAirDateTime: !0, lines: 4, }, ), ), subPromises.push( renderSearchTypes( instance, apiClient, context, value, result.ItemTypes, ), ), Promise.all(subPromises) ); }); })(this, apiClient, elem, value).then( function (itemsResponses) { _loading.default.hide(); var hasResults, i, length, options = this.instance.options; if (options) { if ( (itemsResponses[0].length && (hasResults = !0), (itemsResponses = itemsResponses[1]).length) ) for (i = 0, length = itemsResponses.length; i < length; i++) if (itemsResponses[i].length) { hasResults = !0; break; } options = options.element.querySelector(".noResults"); hasResults || !this.searchTerm ? options.classList.add("hide") : (this.searchTerm.length < 2 ? (options.innerHTML = _globalize.default.translate( "TwoSearchCharsRequired", )) : (options.innerHTML = _globalize.default.translate( "NoItemsMatchingFound", )), options.classList.remove("hide")); } }.bind(searchInfo), function () { _loading.default.hide(); var options = this.options; options && options.element .querySelector(".noResults") .classList.remove("hide"); }.bind(this), ); }), (SearchResults.prototype.destroy = function () { var options = this.options; options && options.element.classList.remove("searchFields"), (this.options = null); }), (_exports.default = SearchResults); });