![JAR search and dependency download from the Maven repository](/logo.png)
web.bower_components.summernote.src.js.editing.History.js Maven / Gradle / Ivy
The newest version!
define(['summernote/core/range'], function (range) {
/**
* History
* @class
*/
var History = function ($editable) {
var stack = [], stackOffset = -1;
var editable = $editable[0];
var makeSnapshot = function () {
var rng = range.create();
var emptyBookmark = {s: {path: [0], offset: 0}, e: {path: [0], offset: 0}};
return {
contents: $editable.html(),
bookmark: (rng ? rng.bookmark(editable) : emptyBookmark)
};
};
var applySnapshot = function (snapshot) {
if (snapshot.contents !== null) {
$editable.html(snapshot.contents);
}
if (snapshot.bookmark !== null) {
range.createFromBookmark(editable, snapshot.bookmark).select();
}
};
this.undo = function () {
if (0 < stackOffset) {
stackOffset--;
applySnapshot(stack[stackOffset]);
}
};
this.redo = function () {
if (stack.length - 1 > stackOffset) {
stackOffset++;
applySnapshot(stack[stackOffset]);
}
};
this.recordUndo = function () {
stackOffset++;
// Wash out stack after stackOffset
if (stack.length > stackOffset) {
stack = stack.slice(0, stackOffset);
}
// Create new snapshot and push it to the end
stack.push(makeSnapshot());
};
// Create first undo stack
this.recordUndo();
};
return History;
});
© 2015 - 2025 Weber Informatics LLC | Privacy Policy