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); });