static/kelmu.js
function(event) {

        event.preventDefault();

        if (window.kelmu.data[id].undoStackPointer < window.kelmu.data[id].undoStack.length - 1) {

          var sp = window.kelmu.data[id].undoStackPointer;
          if (window.kelmu.data[id].undoStack[sp + 1][0] !== window.kelmu.data[id].stepNumber) {
            originalRedo(event);
          }

          window.kelmu.data[id].undoStackPointer += 1;
          sp = window.kelmu.data[id].undoStackPointer;
          window.kelmu.data[id].stepNumber = window.kelmu.data[id].undoStack[sp][0];
          window.kelmu.data[id].subStepNumber = window.kelmu.data[id].undoStack[sp][1];

          createAnnotations();
          if (window.kelmu.data[id].actions.updateEditor) {
            window.kelmu.data[id].actions.updateEditor(true, true);
          }

        }

      }
function(event) {

        event.preventDefault();

        if (window.kelmu.data[id].undoStackPointer < window.kelmu.data[id].undoStack.length - 1) {

          var sp = window.kelmu.data[id].undoStackPointer;
          if (window.kelmu.data[id].undoStack[sp + 1][0] !== window.kelmu.data[id].stepNumber) {
            originalRedo(event);
          }

          window.kelmu.data[id].undoStackPointer += 1;
          sp = window.kelmu.data[id].undoStackPointer;
          window.kelmu.data[id].stepNumber = window.kelmu.data[id].undoStack[sp][0];
          window.kelmu.data[id].subStepNumber = window.kelmu.data[id].undoStack[sp][1];

          createAnnotations();
          if (window.kelmu.data[id].actions.updateEditor) {
            window.kelmu.data[id].actions.updateEditor(true, true);
          }

        }

      }
function ( event ) { event . preventDefault ( ) ; if ( window . kelmu . data [ id ] . undoStackPointer < window . kelmu . data [ id ] . undoStack . length - 1 ) { var sp = window . kelmu . data [ id ] . undoStackPointer ; if ( window . kelmu . data [ id ] . undoStack [ sp + 1 ] [ 0 ] !== window . kelmu . data [ id ] . stepNumber ) { originalRedo ( event ) ; } window . kelmu . data [ id ] . undoStackPointer += 1 ; sp = window . kelmu . data [ id ] . undoStackPointer ; window . kelmu . data [ id ] . stepNumber = window . kelmu . data [ id ] . undoStack [ sp ] [ 0 ] ; window . kelmu . data [ id ] . subStepNumber = window . kelmu . data [ id ] . undoStack [ sp ] [ 1 ] ; createAnnotations ( ) ; if ( window . kelmu . data [ id ] . actions . updateEditor ) { window . kelmu . data [ id ] . actions . updateEditor ( true , true ) ; } } }
Functionality for redo button.
Functionality for redo button .