mirror of
https://github.com/Stirling-Tools/Stirling-PDF.git
synced 2025-06-17 21:15:03 +00:00
75 lines
1.7 KiB
JavaScript
75 lines
1.7 KiB
JavaScript
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();
|
|
}
|
|
}
|