"use strict";
{
    const toggleNavSidebar = document.getElementById("toggle-nav-sidebar");
    if (toggleNavSidebar !== null) {
        const navSidebar = document.getElementById("nav-sidebar");
        const main = document.getElementById("main");
        let navSidebarIsOpen = localStorage.getItem(
            "django.admin.navSidebarIsOpen",
        );
        if (navSidebarIsOpen === null) {
            navSidebarIsOpen = "true";
        }
        main.classList.toggle("shifted", navSidebarIsOpen === "true");
        navSidebar.setAttribute("aria-expanded", navSidebarIsOpen);

        toggleNavSidebar.addEventListener("click", function () {
            if (navSidebarIsOpen === "true") {
                navSidebarIsOpen = "false";
            } else {
                navSidebarIsOpen = "true";
            }
            localStorage.setItem(
                "django.admin.navSidebarIsOpen",
                navSidebarIsOpen,
            );
            main.classList.toggle("shifted");
            navSidebar.setAttribute("aria-expanded", navSidebarIsOpen);
        });
    }

    function initSidebarQuickFilter() {
        const options = [];
        const navSidebar = document.getElementById("nav-sidebar");
        if (!navSidebar) {
            return;
        }
        navSidebar.querySelectorAll("th[scope=row] a").forEach((container) => {
            options.push({ title: container.innerHTML, node: container });
        });

        function checkValue(event) {
            let filterValue = event.target.value;
            if (filterValue) {
                filterValue = filterValue.toLowerCase();
            }
            if (event.key === "Escape") {
                filterValue = "";
                event.target.value = ""; // clear input
            }
            let matches = false;
            for (const o of options) {
                let displayValue = "";
                if (filterValue) {
                    if (o.title.toLowerCase().indexOf(filterValue) === -1) {
                        displayValue = "none";
                    } else {
                        matches = true;
                    }
                }
                // show/hide parent <TR>
                o.node.parentNode.parentNode.style.display = displayValue;
            }
            if (!filterValue || matches) {
                event.target.classList.remove("no-results");
            } else {
                event.target.classList.add("no-results");
            }
            sessionStorage.setItem(
                "django.admin.navSidebarFilterValue",
                filterValue,
            );
        }

        const nav = document.getElementById("nav-filter");
        nav.addEventListener("change", checkValue, false);
        nav.addEventListener("input", checkValue, false);
        nav.addEventListener("keyup", checkValue, false);

        const storedValue = sessionStorage.getItem(
            "django.admin.navSidebarFilterValue",
        );
        if (storedValue) {
            nav.value = storedValue;
            checkValue({ target: nav, key: "" });
        }
    }
    window.initSidebarQuickFilter = initSidebarQuickFilter;
    initSidebarQuickFilter();
}
