class PdfActionsManager { callbacks; pageDirection; constructor(id, { movePageTo, addPdfs, rotateElement }) { this.pageDirection = document.documentElement.getAttribute("lang-direction"); const moveUpButtonCallback = e => { var imgContainer = e.target; while (!imgContainer.classList.contains(id)) { imgContainer = imgContainer.parentNode; } const sibling = imgContainer.previousSibling; if (sibling) { movePageTo(imgContainer, sibling, true); } }; const moveDownButtonCallback = e => { var imgContainer = e.target; while (!imgContainer.classList.contains(id)) { imgContainer = imgContainer.parentNode; } const sibling = imgContainer.nextSibling; if (sibling) { movePageTo(imgContainer, sibling.nextSibling, true); } }; const rotateCCWButtonCallback = e => { var imgContainer = e.target; while (!imgContainer.classList.contains(id)) { imgContainer = imgContainer.parentNode; } const img = imgContainer.querySelector("img"); rotateElement(img, -90) }; const rotateCWButtonCallback = e => { var imgContainer = e.target; while (!imgContainer.classList.contains(id)) { imgContainer = imgContainer.parentNode; } const img = imgContainer.querySelector("img"); rotateElement(img, 90) }; const deletePageButtonCallback = e => { var imgContainer = e.target; while (!imgContainer.classList.contains(id)) { imgContainer = imgContainer.parentNode; } pagesContainer.removeChild(imgContainer); }; const insertFileButtonCallback = e => { var imgContainer = e.target; while (!imgContainer.classList.contains(id)) { imgContainer = imgContainer.parentNode; } addPdfs(imgContainer) }; this.callbacks = { moveUpButtonCallback, moveDownButtonCallback, rotateCCWButtonCallback, rotateCWButtonCallback, deletePageButtonCallback, insertFileButtonCallback } } attachPDFActions(div) { const leftDirection = this.pageDirection === 'rtl' ? 'right' : 'left' const rightDirection = this.pageDirection === 'rtl' ? 'left' : 'right' const buttonContainer = document.createElement('div'); buttonContainer.classList.add("button-container"); const moveUp = document.createElement('button'); moveUp.classList.add("move-left-button","btn", "btn-secondary"); moveUp.innerHTML = ``; moveUp.onclick = this.callbacks.moveUpButtonCallback; buttonContainer.appendChild(moveUp); const moveDown = document.createElement('button'); moveDown.classList.add("move-right-button","btn", "btn-secondary"); moveDown.innerHTML = ``; moveDown.onclick = this.callbacks.moveDownButtonCallback; buttonContainer.appendChild(moveDown); const rotateCCW = document.createElement('button'); rotateCCW.classList.add("btn", "btn-secondary"); rotateCCW.innerHTML = ` `; rotateCCW.onclick = this.callbacks.rotateCCWButtonCallback; buttonContainer.appendChild(rotateCCW); const rotateCW = document.createElement('button'); rotateCW.classList.add("btn", "btn-secondary"); rotateCW.innerHTML = ` `; rotateCW.onclick = this.callbacks.rotateCWButtonCallback; buttonContainer.appendChild(rotateCW); const deletePage = document.createElement('button'); deletePage.classList.add("btn", "btn-danger"); deletePage.innerHTML = ` `; deletePage.onclick = this.callbacks.deletePageButtonCallback; buttonContainer.appendChild(deletePage); div.appendChild(buttonContainer); const insertFileButtonContainer = document.createElement('div'); insertFileButtonContainer.classList.add( "insert-file-button-container", leftDirection, `align-center-${leftDirection}`); const insertFileButton = document.createElement('button'); insertFileButton.classList.add("btn", "btn-primary", "insert-file-button"); insertFileButton.innerHTML = ` `; insertFileButton.onclick = this.callbacks.insertFileButtonCallback; insertFileButtonContainer.appendChild(insertFileButton); div.appendChild(insertFileButtonContainer); // add this button to every element, but only show it on the last one :D const insertFileButtonRightContainer = document.createElement('div'); insertFileButtonRightContainer.classList.add( "insert-file-button-container", rightDirection, `align-center-${rightDirection}`); const insertFileButtonRight = document.createElement('button'); insertFileButtonRight.classList.add("btn", "btn-primary", "insert-file-button"); insertFileButtonRight.innerHTML = ` insertFileButtonRight`; insertFileButtonRight.onclick = () => addPdfs(); insertFileButtonRightContainer.appendChild(insertFileButtonRight); div.appendChild(insertFileButtonRightContainer); } } export default PdfActionsManager;