jodit
Version:
Jodit is an awesome and useful wysiwyg editor with filebrowser
64 lines (63 loc) • 1.68 kB
JavaScript
/*!
* Jodit Editor (https://xdsoft.net/jodit/)
* Released under MIT see LICENSE.txt in the project root for license information.
* Copyright (c) 2013-2025 Valeriy Chupurnov. All rights reserved. https://xdsoft.net
*/
export class Stack {
constructor(size) {
this.size = size;
this.commands = [];
this.stackPosition = -1;
}
get length() {
return this.commands.length;
}
clearRedo() {
this.commands.length = this.stackPosition + 1;
}
clear() {
this.commands.length = 0;
this.stackPosition = -1;
}
push(command) {
this.clearRedo();
this.commands.push(command);
this.stackPosition += 1;
if (this.commands.length > this.size) {
this.commands.shift();
this.stackPosition -= 1;
}
}
replace(command) {
this.commands[this.stackPosition] = command;
}
current() {
return this.commands[this.stackPosition];
}
undo() {
if (this.canUndo()) {
if (this.commands[this.stackPosition]) {
this.commands[this.stackPosition].undo();
}
this.stackPosition -= 1;
return true;
}
return false;
}
redo() {
if (this.canRedo()) {
this.stackPosition += 1;
if (this.commands[this.stackPosition]) {
this.commands[this.stackPosition].redo();
}
return true;
}
return false;
}
canUndo() {
return this.stackPosition >= 0;
}
canRedo() {
return this.stackPosition < this.commands.length - 1;
}
}