Padrão de comando em JavaScript (desfazer / refazer)

Sempre quis oferecer suporte para desfazer / refazer em seu aplicativo JS?

Eu fiz, então escrevi um CommandManager que suporta a execução, não execução e reexecução de comandos.

Experimente a demonstração: http://alexanderbrevig.github.com/CommandManager.js/examples/

CommandManager.execute({
execute
: function(){
// do something
},
unexecute
: function(){
// undo something
}
});

//call unexecute of prev. command
CommandManager.undo();
//call execute of prev. command
CommandManager.redo();