decor-6-site/assets/js/plugins/decor-num-pages.js
2026-03-24 02:34:20 +01:00

55 lines
1.7 KiB
JavaScript

class numPagesDecor extends Paged.Handler {
constructor(chunker, polisher, caller) {
super(chunker, polisher, caller);
}
afterRendered(pages){
let totalPages = pages.length;
let symbol = "/";
pages.forEach(function(page){
let pageElement = page.element;
const numPage = parseInt(pageElement.dataset.pageNumber);
const area = pageElement.querySelector(".pagedjs_area");
if (area) {
const container = document.createElement("div");
container.className = "running-page_container";
const progress = (numPage / totalPages) * 100;
const symbols = document.createElement("div");
symbols.className = "symbols";
symbols.style.width = `${progress}%`;
symbols.style.wordBreak = "break-all";
symbols.style.overflowWrap = "anywhere";
const dots = document.createElement("div");
dots.className = "dots";
dots.textContent = ".".repeat(100);
const runningPage = document.createElement("div");
runningPage.className = "running-page";
runningPage.appendChild(symbols);
runningPage.appendChild(dots);
container.appendChild(runningPage);
area.after(container);
symbols.textContent = symbol;
const baseHeight = symbols.offsetHeight;
let count = 1;
while (count < 2000) {
count++;
symbols.textContent = symbol.repeat(count);
if (symbols.offsetHeight > baseHeight) {
symbols.textContent = symbol.repeat(count - 1);
break;
}
}
}
});
}
}
Paged.registerHandlers(numPagesDecor);