2024-03-18 15:04:04 +00:00
|
|
|
import "./header.js";
|
2024-04-16 16:53:24 +00:00
|
|
|
import "./config.js";
|
2024-03-18 10:34:43 +00:00
|
|
|
|
|
|
|
function type_out(e) {
|
|
|
|
const text = e.innerText;
|
|
|
|
const original = e.innerHTML;
|
|
|
|
e.innerText = "";
|
|
|
|
const delay = 25;
|
|
|
|
let chars = 0;
|
|
|
|
|
|
|
|
function insert_char(character, parent) {
|
|
|
|
const c = document.createElement("span");
|
|
|
|
c.innerText = character;
|
|
|
|
parent.appendChild(c);
|
|
|
|
c.classList.add("newchar");
|
|
|
|
}
|
|
|
|
|
|
|
|
function normalize() {
|
|
|
|
e.innerHTML = original;
|
|
|
|
}
|
|
|
|
|
|
|
|
function increment_char() {
|
|
|
|
const newchar = text.substring(chars - 1, chars);
|
|
|
|
insert_char(newchar, e);
|
|
|
|
chars++;
|
|
|
|
if (chars <= text.length) {
|
|
|
|
setTimeout(increment_char, delay);
|
|
|
|
} else {
|
|
|
|
setTimeout(normalize, 250);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
increment_char();
|
|
|
|
}
|
|
|
|
|
|
|
|
function fill_list(list) {
|
2024-04-16 16:53:24 +00:00
|
|
|
const items = list.querySelectorAll("li a, li span");
|
|
|
|
items.innerText = "";
|
|
|
|
const delay = 100;
|
2024-03-18 10:34:43 +00:00
|
|
|
|
2024-04-16 16:53:24 +00:00
|
|
|
items.forEach((item, iter) => {
|
|
|
|
item.style.animationDelay = `${iter * delay}ms`;
|
|
|
|
item.style.animationPlayState = "playing";
|
|
|
|
});
|
2024-03-18 10:34:43 +00:00
|
|
|
}
|
|
|
|
|
2024-04-16 16:53:24 +00:00
|
|
|
function start() {
|
|
|
|
[...document.querySelectorAll("h1, h2, h3, h4, h5, h6")]
|
|
|
|
.filter((e) => e.innerText != "")
|
|
|
|
.forEach((e) => {
|
|
|
|
type_out(e);
|
|
|
|
});
|
|
|
|
[...document.querySelectorAll("ol, ul")]
|
|
|
|
.filter((e) => e.innerText != "")
|
|
|
|
.forEach((e) => {
|
|
|
|
fill_list(e);
|
|
|
|
});
|
2024-03-18 10:34:43 +00:00
|
|
|
|
2024-04-16 16:53:24 +00:00
|
|
|
document.addEventListener("htmx:afterSwap", async event => {
|
|
|
|
const res = await event.detail.xhr.response;
|
|
|
|
var new_head = res.substring(res.indexOf("<head>")+1, res.indexOf("</head>"));
|
|
|
|
if (new_head) {
|
|
|
|
document.head.innerHTML = new_head;
|
|
|
|
}
|
|
|
|
window.scrollY = 0;
|
|
|
|
});
|
2024-03-22 07:30:22 +00:00
|
|
|
|
2024-04-16 16:53:24 +00:00
|
|
|
const top_button = document.getElementById("backtotop");
|
|
|
|
window.onscroll = () => {
|
|
|
|
if (!top_button) return;
|
|
|
|
const btt_threshold = 100;
|
|
|
|
if (
|
|
|
|
document.body.scrollTop > btt_threshold ||
|
2024-03-22 07:30:22 +00:00
|
|
|
document.documentElement.scrollTop > btt_threshold
|
2024-04-16 16:53:24 +00:00
|
|
|
) {
|
|
|
|
top_button.classList.add("active");
|
|
|
|
} else {
|
|
|
|
top_button.classList.remove("active");
|
|
|
|
}
|
2024-03-22 07:30:22 +00:00
|
|
|
}
|
|
|
|
}
|
2024-04-16 16:53:24 +00:00
|
|
|
|
2024-04-16 20:24:05 +00:00
|
|
|
document.addEventListener("swap", () => {
|
|
|
|
start();
|
|
|
|
});
|