"use strict"; /* global document, Jets, send, window */



// NOTE:
// We declare `contentTag` and `jets` with `var` here so
// when a visitor toggles the API page version, they are
// not incorrectly declared multiple times via `let || const`

// Initiate search functionality
if (!contentTag)
  var contentTag;

contentTag = window.location.pathname.split("/").pop() === "sdk" ?
  ".api-toc__section" :
  "#toc";

if (!jets)
  var jets;

jets = new Jets({
  contentTag,
  searchTag: "#input-search"
});



//  H E L P E R S

function changeDocumentationVersion(desiredVersion) { // eslint-disable-line no-unused-vars
  send({
    message: "view different documentation version",
    version: desiredVersion
  });
}

function handleApiLanguageToggles(language) {
  if (!document.getElementById(`toggle-${language}`))
    return;

  document.getElementById(`toggle-${language}`).addEventListener("click", () => {
    const codeExamples = document.querySelectorAll(`[data-api-example-type="${language}"]`);
    const examples = document.querySelectorAll("[data-api-example-type]");
    const toggles = document.querySelectorAll("*[id^='toggle-']");

    examples.forEach(example => example.classList.remove("active"));
    codeExamples.forEach(example => example.classList.add("active"));
    toggles.forEach(example => example.classList.remove("active"));

    document.getElementById(`toggle-${language}`).classList.add("active");
  });
}

function initializeApiFunctionality() { // eslint-disable-line no-unused-vars
  // Reset search on page load
  document.getElementById("input-search").value = "";

  // Activate search
  document.getElementById("input-search").addEventListener("keyup", () => {
    if (document.getElementById("input-search").value)
      document.querySelector(".api-toc__search-clear").classList.add("active");
    else
      document.querySelector(".api-toc__search-clear").classList.remove("active");
  });

  // Cancel search
  document.querySelector(".api-toc__search-clear").addEventListener("click", () => {
    document.getElementById("input-search").value = "";
    document.querySelector(".api-toc__search-clear").classList.remove("active");

    jets.destroy();
    reinitJets();
  });

  // Handle menu toggle for mobile
  if (document.getElementById("toggle-menu")) {
    document.getElementById("toggle-menu").addEventListener("click", () => {
      document.querySelector("body").classList.toggle("disable-scrolling");
      document.querySelector(".api-toc").classList.toggle("active");
    });

    // Handle menu toggle when clicking on commands
    document.querySelectorAll(".api-toc__command a").forEach(command => {
      command.addEventListener("click", () => {
        document.querySelector("body").classList.remove("disable-scrolling");
        document.querySelector(".api-toc").classList.remove("active");
      });
    });
  }

  // Code toggles
  handleApiLanguageToggles("cli");
  handleApiLanguageToggles("curl");
  handleApiLanguageToggles("lbrynet");
  handleApiLanguageToggles("python");

  // Ensure version selector shows correct version, even on page reloads
  const currentValue = document.querySelector(".api-content__body h2").textContent.split(/\s/g).pop();
  const { children } = document.querySelector(".api-toc__select");

  for (const child of children) {
    if (currentValue === child.text)
      document.querySelector(".api-toc__select").selectedIndex = child.index;
  }
}

function reinitJets() {
  jets = new Jets({
    contentTag,
    searchTag: "#input-search"
  });

  document.getElementById("input-search").focus();
}
