undo redo (1)


Undoredo pure js

var undoStack = [], 
redoStack = [],
areaeditor,
undoBtn,
redoBtn;
function undoRedoButtonControl() {
    undoBtn.style.color = undoStack.length > 0 ? "black" : "gray";
    redoBtn.style.color = redoStack.length > 0 ? "black" : "gray";
}
function undo_push(a) {
    var b = undoStack.pop();
    undoStack.push(b);
    b !== a && undoStack.push(a);
    undoRedoButtonControl();
}

function redo_push(a) {
    redoStack.push(a);
    undoRedoButtonControl();
}

function undo_pop() {
    if (undoStack.length > 0) {
        redo_push(areaeditor.value);
        areaeditor.value = undoStack.pop();
        undoRedoButtonControl();       
    }
}

function redo_pop() {
    if (redoStack.length > 0) {
        undo_push(areaeditor.value);
        areaeditor.value = redoStack.pop();
        undoRedoButtonControl();        
    }
}
function process_keystrokes() {
    undo_push(areaeditor.value);
    areaeditor.focus();
}

function process_paste() {
    undo_push(areaeditor.value);    
    areaeditor.focus();
}