/**
 * Check if the element is visible.
 * @param {Element} element Dom element
 * @returns boolean
 */
function isVisible(element) {
  return element.offsetWidth > 0 || element.offsetHeight > 0;
}

document.addEventListener("DOMContentLoaded", function () {
  const buttons = document.querySelectorAll(".hextra-sidebar-collapsible-button");
  buttons.forEach(function (button) {
    button.addEventListener("click", function (e) {
      e.preventDefault();
      const list = button.parentElement.parentElement;
      if (list) {
        list.classList.toggle("open");
      }
    });
  });

  const isCached = "{{- site.Params.page.sidebar.cache | default false -}}" === "true";
  const currentPagePath = window.location.href;

  if (isCached) {
    // find the current page in the sidebar and open the parent lists
    const sidebar = document.querySelector(".hextra-sidebar-container");
    if (sidebar) {
      // find a tags and compare href with current page path
      const links = sidebar.querySelectorAll("a");
      links.forEach(function (link) {
        const linkPath = link.href;

        if (currentPagePath === linkPath) {
          // add active class to the link
          link.classList.add("active");
          link.classList.remove("inactive");

          if (!isVisible(link)) {
            return;
          }
          // recursively open parent lists
          let parent = link.parentElement;
          while (parent && !parent.classList.contains("hextra-sidebar-container")) {
            if (parent.tagName === "LI" && parent.classList.contains("hextra-sidebar-item")) {
              parent.classList.add("open");
            }
            parent = parent.parentElement;
          }
        }
      });
    }
  }
});
