import Alpine from "alpinejs"; import persist from "@alpinejs/persist"; window.Alpine = Alpine; Alpine.plugin(persist); Alpine.start(); /* Copy button component */ const copyIcon = ``; const checkIcon = ``; const defaultButtonLabel = `Zkopírovat text do schránky`; const copiedButtonLabel = `Text zkopírován`; const revertTimeout = 5_000; const accessibleLabel = (text) => `${text}`; const defaultButtonContent = copyIcon + accessibleLabel(defaultButtonLabel); const copiedButtonContent = checkIcon + accessibleLabel(copiedButtonLabel); navigator.permissions .query({ name: "clipboard-read", }) .then((permission) => { if (permission.state == "denied") { return; } document .querySelectorAll(".prose pre code, .code-block") .forEach((codeBlock) => { const button = document.createElement("button"); button.innerHTML = defaultButtonContent; button.className = "button absolute top-3 right-3 bg-white"; button.addEventListener("click", () => { navigator.clipboard.writeText(codeBlock.innerHTML).then(() => { button.innerHTML = copiedButtonContent; setTimeout(() => { button.innerHTML = defaultButtonContent; }, revertTimeout); }); }); codeBlock.parentElement.insertBefore( button, codeBlock.nextElementSibling ); }); });