|
|
|
window.addEventListener("load", () => {
|
|
|
|
// Enlarged floating figures
|
|
|
|
for (let figure of document.getElementsByTagName("figure")) {
|
|
|
|
if (
|
|
|
|
figure.classList.contains("post-cover") ||
|
|
|
|
figure.classList.contains("portfolio-cover")
|
|
|
|
)
|
|
|
|
continue;
|
|
|
|
|
|
|
|
figure.addEventListener("click", () => {
|
|
|
|
figure.classList.toggle("floated-focus");
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
document.addEventListener("keydown", (e) => {
|
|
|
|
if (e.keyCode !== 27) return;
|
|
|
|
|
|
|
|
for (let figure of document.getElementsByClassName("floated-focus")) {
|
|
|
|
figure.classList.remove("floated-focus");
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
// Add anchors to article headings
|
|
|
|
for (let article of document.getElementsByTagName("article")) {
|
|
|
|
for (let heading of article.querySelectorAll(
|
|
|
|
"h1, h2, h3, h4, h5, h6"
|
|
|
|
)) {
|
|
|
|
if (!heading.id) continue;
|
|
|
|
|
|
|
|
let anchor = document.createElement("a");
|
|
|
|
anchor.innerHTML = heading.innerHTML;
|
|
|
|
anchor.href = "#" + heading.id;
|
|
|
|
heading.innerHTML = "";
|
|
|
|
heading.appendChild(anchor);
|
|
|
|
heading.classList.add("article-heading");
|
|
|
|
|
|
|
|
anchor.addEventListener("click", (e) => {
|
|
|
|
e.preventDefault();
|
|
|
|
|
|
|
|
window.history.replaceState({}, "", anchor.href);
|
|
|
|
navigator.clipboard.writeText(anchor.href);
|
|
|
|
|
|
|
|
document
|
|
|
|
.querySelectorAll(".current-heading")
|
|
|
|
.forEach((elem) =>
|
|
|
|
elem.classList.remove("current-heading")
|
|
|
|
);
|
|
|
|
|
|
|
|
anchor.classList.add("current-heading");
|
|
|
|
});
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// Code copy button
|
|
|
|
for (let codeblock of document.querySelectorAll(".highlight pre")) {
|
|
|
|
if (codeblock.querySelector(".lnt")) continue; // skip line numbers
|
|
|
|
|
|
|
|
let button = document.createElement("button");
|
|
|
|
button.classList.add("codeblock-copy");
|
|
|
|
codeblock.appendChild(button);
|
|
|
|
|
|
|
|
button.addEventListener("click", (e) => {
|
|
|
|
e.preventDefault();
|
|
|
|
|
|
|
|
navigator.clipboard.writeText(codeblock.innerText);
|
|
|
|
|
|
|
|
document
|
|
|
|
.querySelectorAll(".current-code")
|
|
|
|
.forEach((elem) => elem.classList.remove("current-code"));
|
|
|
|
|
|
|
|
button.classList.add("current-code");
|
|
|
|
});
|
|
|
|
console.log(codeblock);
|
|
|
|
}
|
|
|
|
});
|