define(["userSettings"], function(userSettings) { "use strict"; var libraryBrowser = { getSavedQueryKey: function(modifier) { return window.location.href.split("#")[0] + (modifier || "") }, loadSavedQueryValues: function(key, query) { var values = userSettings.get(key); return values ? (values = JSON.parse(values), Object.assign(query, values)) : query }, saveQueryValues: function(key, query) { var values = {}; query.SortBy && (values.SortBy = query.SortBy), query.SortOrder && (values.SortOrder = query.SortOrder), userSettings.set(key, JSON.stringify(values)) }, saveViewSetting: function(key, value) { userSettings.set(key + "-_view", value) }, getSavedView: function(key) { return userSettings.get(key + "-_view") }, showLayoutMenu: function(button, currentLayout, views) { var dispatchEvent = !0; views || (dispatchEvent = !1, views = button.getAttribute("data-layouts"), views = views ? views.split(",") : ["List", "Poster", "PosterCard", "Thumb", "ThumbCard"]); var menuItems = views.map(function(v) { return { name: Globalize.translate("Option" + v), id: v, selected: currentLayout == v } }); require(["actionsheet"], function(actionsheet) { actionsheet.show({ items: menuItems, positionTo: button, callback: function(id) { button.dispatchEvent(new CustomEvent("layoutchange", { detail: { viewStyle: id }, bubbles: !0, cancelable: !1 })), dispatchEvent || window.$ && $(button).trigger("layoutchange", [id]) } }) }) }, getQueryPagingHtml: function(options) { var startIndex = options.startIndex, limit = options.limit, totalRecordCount = options.totalRecordCount, html = "", recordsEnd = Math.min(startIndex + limit, totalRecordCount), showControls = limit < totalRecordCount; if (html += '
', showControls) { html += ''; html += (totalRecordCount ? startIndex + 1 : 0) + "-" + recordsEnd + " of " + totalRecordCount, html += "" } return (showControls || options.viewButton || options.filterButton || options.sortButton || options.addLayoutButton) && (html += '
', showControls && (html += '', html += ''), options.addLayoutButton && (html += ''), options.sortButton && (html += ''), options.filterButton && (html += ''), html += "
"), html += "
" }, showSortMenu: function(options) { require(["dialogHelper", "emby-radio"], function(dialogHelper) { function onSortByChange() { var newValue = this.value; if (this.checked) { var changed = options.query.SortBy != newValue; options.query.SortBy = newValue.replace("_", ","), options.query.StartIndex = 0, options.callback && changed && options.callback() } } function onSortOrderChange() { var newValue = this.value; if (this.checked) { var changed = options.query.SortOrder != newValue; options.query.SortOrder = newValue, options.query.StartIndex = 0, options.callback && changed && options.callback() } } var dlg = dialogHelper.createDialog({ removeOnClose: !0, modal: !1, entryAnimationDuration: 160, exitAnimationDuration: 200 }); dlg.classList.add("ui-body-a"), dlg.classList.add("background-theme-a"), dlg.classList.add("formDialog"); var html = ""; html += '
', html += '

', html += Globalize.translate("HeaderSortBy"), html += "

"; var i, length, isChecked; for (html += "
", i = 0, length = options.items.length; i < length; i++) { var option = options.items[i], radioValue = option.id.replace(",", "_"); isChecked = (options.query.SortBy || "").replace(",", "_") == radioValue ? " checked" : "", html += '" } html += "
", html += '

', html += Globalize.translate("HeaderSortOrder"), html += "

", html += "
", isChecked = "Ascending" == options.query.SortOrder ? " checked" : "", html += '", isChecked = "Descending" == options.query.SortOrder ? " checked" : "", html += '", html += "
", html += "
", dlg.innerHTML = html, dialogHelper.open(dlg); var sortBys = dlg.querySelectorAll(".menuSortBy"); for (i = 0, length = sortBys.length; i < length; i++) sortBys[i].addEventListener("change", onSortByChange); var sortOrders = dlg.querySelectorAll(".menuSortOrder"); for (i = 0, length = sortOrders.length; i < length; i++) sortOrders[i].addEventListener("change", onSortOrderChange) }) } }; return window.LibraryBrowser = libraryBrowser, libraryBrowser });