import Alpine from "alpinejs";
import * as Turbo from "@hotwired/turbo";
import tippy from "tippy.js";
window.Alpine = Alpine;
Alpine.start();
Turbo.start();
/* Tooltips */
document.querySelectorAll("[data-tooltip]").forEach((el) => {
tippy(el, { content: el.dataset.tooltip });
});
/* 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 button--opaque absolute top-3 right-3";
button.addEventListener("click", () => {
navigator.clipboard.writeText(codeBlock.innerHTML).then(() => {
button.innerHTML = copiedButtonContent;
setTimeout(() => {
button.innerHTML = defaultButtonContent;
}, revertTimeout);
});
});
codeBlock.parentElement.insertBefore(
button,
codeBlock.nextElementSibling
);
});
});