decor-6-site/assets/js/plugins/fullpage.js
2026-01-05 19:33:15 +01:00

56 lines
No EOL
1.8 KiB
JavaScript

// ---- C O R R E C T P O S I T I O N O F I M A G E S ----
var classElemFullPage = "full-page"; // ← class of full page images
class fullPageStuff extends Paged.Handler {
constructor(chunker, polisher, caller) {
super(chunker, polisher, caller);
this.fullPageEls = new Set();
this.usedPagedEls = new Set();
}
//find from the css the element you wanna have full page
onDeclaration(declaration, dItem, dList, rule) {
if (declaration.property == "position") {
if (declaration.value.children.head.data.name.includes("fullpage")) {
let sel = csstree.generate(rule.ruleNode.prelude);
sel = sel.replace('[data-id="', "#");
sel = sel.replace('"]', "");
this.floatFullPage.push(sel.split(","));
}
}
}
renderNode(clone, node) {
// if you find a full page element, move it in the array
if (node.nodeType == 1 && node.classList.contains(classElemFullPage)) {
// console.log(node);
this.fullPageEls.add(node);
this.usedPagedEls.add(node);
// remove the element from the flow by hiding it.
clone.style.display = "none";
}
}
afterPageLayout(pageElement, page, breakToken, chunker) {
// if there is an element in the fullPageEls Set, (goodbye arrays!)
for (let img of this.fullPageEls) {
let fullPage = chunker.addPage();
fullPage.element
.querySelector(".pagedjs_page_content")
.insertAdjacentElement("afterbegin", img);
fullPage.element.classList.add("addedpage");
fullPage.element.classList.add("pagedjs_named_page");
fullPage.element.classList.add("pagedjs_pagedjs-fullpage_page");
if(img.classList.contains('background-black')){
fullPage.element.classList.add("pagedjs_pagedjs-fullpageblack_page");
}
this.fullPageEls.delete(img);
}
}
}
Paged.registerHandlers(fullPageStuff);