define(["loading", "libraryMenu", "globalize", "cardStyle", "emby-button", "emby-checkbox", "emby-select"], function (loading, libraryMenu, globalize) { "use strict"; function reloadList(page) { loading.show(); var promise1 = ApiClient.getAvailablePlugins(query); var promise2 = ApiClient.getInstalledPlugins(); Promise.all([promise1, promise2]).then(function (responses) { populateList({ catalogElement: page.querySelector("#pluginTiles"), noItemsElement: page.querySelector("#noPlugins"), availablePlugins: responses[0], installedPlugins: responses[1] }); }); } function getHeaderText(category) { category = category.replace(" ", ""); if ("Channel" === category) { category = "Channels"; } else if ("Theme" === category) { category = "Themes"; } else if ("LiveTV" === category) { category = "HeaderLiveTV"; } else if ("ScreenSaver" === category) { category = "HeaderScreenSavers"; } return globalize.translate(category); } function populateList(options) { var availablePlugins = options.availablePlugins; var installedPlugins = options.installedPlugins; var allPlugins = availablePlugins.filter(function (plugin) { plugin.category = plugin.category || "General"; plugin.categoryDisplayName = getHeaderText(plugin.category); if (!options.categories || -1 != options.categories.indexOf(plugin.category)) { if (!options.targetSystem || plugin.targetSystem == options.targetSystem) { return "UserInstalled" == plugin.type; } } return false; }); availablePlugins = allPlugins.sort(function (a, b) { if (a.category > b.category) { return 1; } else if (b.category > a.category) { return -1; } if (a.name > b.name) { return 1; } else if (b.name > a.name) { return -1; } return 0; }); var length; var plugin; var currentCategory; var html = ""; var hasOpenTag = false; currentCategory = null; if (options.showCategory === false) { html += '