(function () { "use strict"; function param(name) { return new URLSearchParams(window.location.search).get(name) || ""; } function selectedTypes(root) { return Array.from(root.querySelectorAll(".ctx-catalog-filters input:checked")).map( function (input) { return input.value; } ); } function searchableText(card) { return ( card.getAttribute("data-type") + " " + card.getAttribute("data-search") + " " + card.textContent ).toLowerCase(); } function render(root) { var queryInput = root.querySelector("#ctx-catalog-query"); var count = root.querySelector("#ctx-catalog-count"); var cards = Array.from(root.querySelectorAll(".ctx-catalog-card")); var selected = new Set(selectedTypes(root)); var query = (queryInput ? queryInput.value : "").trim().toLowerCase(); var visible = 0; cards.forEach(function (card) { var matchesType = selected.has(card.getAttribute("data-type")); var matchesQuery = !query || searchableText(card).indexOf(query) !== -1; var show = matchesType && matchesQuery; card.hidden = !show; if (show) visible += 1; }); if (count) { count.textContent = visible + " tile" + (visible === 1 ? "" : "s") + " shown"; } } function initCatalog() { var root = document.querySelector(".ctx-catalog-app"); if (!root || root.getAttribute("data-catalog-ready") === "true") { return; } root.setAttribute("data-catalog-ready", "true"); var queryInput = root.querySelector("#ctx-catalog-query"); var initialType = param("type"); var initialQuery = param("q"); if (queryInput && initialQuery) { queryInput.value = initialQuery; } if (initialType) { root.querySelectorAll(".ctx-catalog-filters input").forEach(function (input) { input.checked = input.value === initialType; }); } if (queryInput) { queryInput.addEventListener("input", function () { render(root); }); } root.querySelectorAll(".ctx-catalog-filters input").forEach(function (input) { input.addEventListener("change", function () { render(root); }); }); render(root); } if (document.readyState === "loading") { document.addEventListener("DOMContentLoaded", initCatalog, { once: true }); } else { initCatalog(); } if (window.document$ && typeof window.document$.subscribe === "function") { window.document$.subscribe(initCatalog); } })();