public/ckeditor/4.4dev/plugins/undo/plugin.js
function( keyCode, strokesPerSnapshotExceeded ) {
			var keyGroup = UndoManager.getKeyGroup( keyCode ),
				// Count of keystrokes in current a row.
				// Note if strokesPerSnapshotExceeded will be exceeded, it'll be restarted.
				strokesRecorded = this.strokesRecorded[ keyGroup ] + 1;

			strokesPerSnapshotExceeded =
				( strokesPerSnapshotExceeded || strokesRecorded >= this.strokesLimit );

			if ( !this.typing )
				onTypingStart( this );

			if ( strokesPerSnapshotExceeded ) {
				// Reset the count of strokes, so it'll be later assigned to this.strokesRecorded.
				strokesRecorded = 0;

				this.editor.fire( 'saveSnapshot' );
			} else {
				// Fire change event.
				this.editor.fire( 'change' );
			}

			// Store recorded strokes count.
			this.strokesRecorded[ keyGroup ] = strokesRecorded;
			// This prop will tell in next itaration what kind of group was processed previously.
			this.previousKeyGroup = keyGroup;
		}
function( keyCode, strokesPerSnapshotExceeded ) {
			var keyGroup = UndoManager.getKeyGroup( keyCode ),
				// Count of keystrokes in current a row.
				// Note if strokesPerSnapshotExceeded will be exceeded, it'll be restarted.
				strokesRecorded = this.strokesRecorded[ keyGroup ] + 1;

			strokesPerSnapshotExceeded =
				( strokesPerSnapshotExceeded || strokesRecorded >= this.strokesLimit );

			if ( !this.typing )
				onTypingStart( this );

			if ( strokesPerSnapshotExceeded ) {
				// Reset the count of strokes, so it'll be later assigned to this.strokesRecorded.
				strokesRecorded = 0;

				this.editor.fire( 'saveSnapshot' );
			} else {
				// Fire change event.
				this.editor.fire( 'change' );
			}

			// Store recorded strokes count.
			this.strokesRecorded[ keyGroup ] = strokesRecorded;
			// This prop will tell in next itaration what kind of group was processed previously.
			this.previousKeyGroup = keyGroup;
		}
function ( keyCode , strokesPerSnapshotExceeded ) { var keyGroup = UndoManager . getKeyGroup ( keyCode ) , // Count of keystrokes in current a row.
 // Note if strokesPerSnapshotExceeded will be exceeded, it'll be restarted.
 strokesRecorded = this . strokesRecorded [ keyGroup ] + 1 ; strokesPerSnapshotExceeded = ( strokesPerSnapshotExceeded || strokesRecorded >= this . strokesLimit ) ; if ( ! this . typing ) onTypingStart ( this ) ; if ( strokesPerSnapshotExceeded ) { // Reset the count of strokes, so it'll be later assigned to this.strokesRecorded.
 strokesRecorded = 0 ; this . editor . fire ( 'saveSnapshot' ) ; } else { // Fire change event.
 this . editor . fire ( 'change' ) ; } // Store recorded strokes count.
 this . strokesRecorded [ keyGroup ] = strokesRecorded ; // This prop will tell in next itaration what kind of group was processed previously.
 this . previousKeyGroup = keyGroup ; }
Handles keystroke support for the undo manager. It is called on `keyup` event for
keystrokes that can change the editor content.

@param {Number} keyCode The key code.
@param {Boolean} [strokesPerSnapshotExceeded] When set to `true`, the method will
behave as if the strokes limit was exceeded regardless of the {@link #strokesRecorded} value.
Handles keystroke support for the undo manager . It is called on keyup event for keystrokes that can change the editor content .