import { Command } from "./command.js"; export class SplitFileCommand extends Command { constructor(element, splitClass) { super(); this.element = element; this.splitClass = splitClass; } execute() { this.element.classList.toggle(this.splitClass); } undo() { this.element.classList.toggle(this.splitClass); } redo() { this.execute(); } } export class SplitAllCommand extends Command { constructor(elements, isSelectedInWindow, selectedPages, splitClass) { super(); this.elements = elements; this.isSelectedInWindow = isSelectedInWindow; this.selectedPages = selectedPages; this.splitClass = splitClass; } execute() { if (!this.isSelectedInWindow) { const hasSplit = this._hasSplit(this.elements, this.splitClass); if (hasSplit) { this.elements.forEach((page) => { page.classList.remove(this.splitClass); }); } else { this.elements.forEach((page) => { page.classList.add(this.splitClass); }); } return; } this.elements.forEach((page, index) => { const pageIndex = index; if (this.isSelectedInWindow && !this.selectedPages.includes(pageIndex)) return; if (page.classList.contains(this.splitClass)) { page.classList.remove(this.splitClass); } else { page.classList.add(this.splitClass); } }); } _hasSplit() { if (!this.elements || this.elements.length == 0) return false; for (const node of this.elements) { if (node.classList.contains(this.splitClass)) return true; } return false; } undo() { if (!this.isSelectedInWindow) { const hasSplit = this._hasSplit(this.elements, this.splitClass); if (hasSplit) { this.elements.forEach((page) => { page.classList.remove(this.splitClass); }); } else { this.elements.forEach((page) => { page.classList.add(this.splitClass); }); } return; } this.elements.forEach((page, index) => { const pageIndex = index; if (this.isSelectedInWindow && !this.selectedPages.includes(pageIndex)) return; if (page.classList.contains(this.splitClass)) { page.classList.remove(this.splitClass); } else { page.classList.add(this.splitClass); } }); } redo() { this.execute(); } }