import { Command } from "./command.js"; export class RotateElementCommand extends Command { constructor(element, degree) { super(); this.element = element; this.degree = degree; } execute() { let lastTransform = this.element.style.rotate; if (!lastTransform) { lastTransform = "0"; } const lastAngle = parseInt(lastTransform.replace(/[^\d-]/g, "")); const newAngle = lastAngle + parseInt(this.degree); this.element.style.rotate = newAngle + "deg"; } undo() { let lastTransform = this.element.style.rotate; if (!lastTransform) { lastTransform = "0"; } const currentAngle = parseInt(lastTransform.replace(/[^\d-]/g, "")); const undoAngle = currentAngle + -parseInt(this.degree); this.element.style.rotate = undoAngle + "deg"; } redo() { this.execute(); } } export class RotateAllCommand extends Command { constructor(elements, degree) { super(); this.elements = elements; this.degree = degree; } execute() { for (let element of this.elements) { let lastTransform = element.style.rotate; if (!lastTransform) { lastTransform = "0"; } const lastAngle = parseInt(lastTransform.replace(/[^\d-]/g, "")); const newAngle = lastAngle + this.degree; element.style.rotate = newAngle + "deg"; } } undo() { for (let element of this.elements) { let lastTransform = element.style.rotate; if (!lastTransform) { lastTransform = "0"; } const currentAngle = parseInt(lastTransform.replace(/[^\d-]/g, "")); const undoAngle = currentAngle + -this.degree; element.style.rotate = undoAngle + "deg"; } } redo() { this.execute(); } }