Undo/redo behavior for component/model-ish classes/objects
$ component install ericgj/model-undoable
For component/model, just use the plugin:
var undoable = require('model-undoable')
, model = require('model')
var Person = model('person')
.attr('id')
.attr('name')
.attr('email')
.use(undoable);Now your model instances have undo, redo, undoAll, redoAll methods.
-
undoandredowork as expected on individual model changes. -
undoAllundoes all changes back to the last save. -
redoAllredoes all undone changes from the last save to the most current. -
Model instances will also emit
undoandredoevents.
You can also mix it into model instances directly (or into similar objects that
emit change events such as react-ified objects):
var undoable = require('model-undoable')
var person = new Person();
undoable(person);Mainly I wrote it for undoAll for reverting all changes made in a reactive
view. Obviously most browsers give you individual undo/redo.
MIT