document.querySelectorAll(".copy-link").forEach((element) => {
  element.classList.add("has-js");
});

document.addEventListener("click", async (event) => {
  const link = event.target.closest("[data-copy-text]");
  if (!link) {
    return;
  }

  const original = link.textContent;

  try {
    await navigator.clipboard.writeText(link.dataset.copyText || "");
    link.textContent = "copied";
    link.dataset.copyState = "done";
  } catch {
    link.textContent = "failed";
    link.dataset.copyState = "failed";
  }

  window.setTimeout(() => {
    link.textContent = original;
    delete link.dataset.copyState;
  }, 1200);
});