This is a tiny extension of the redux-undo package
that adds a linearizeHistory config option. Linearizing history allows you to "undo undos",
giving you a completely linear history in which "future" states are never lost (this is
Emacs-style undo) - if you keep pressing the undo button you'll be taken through the entire
history of edits.
Say we have a simple application that lets us increment, decrement, and print out a number. We
start with 1 and increment it 4 times to get to 5. Now our past states look like this:
[1, 2, 3, 4]
If we then undo 2 times we get back to 3 and our past looks like this:
[1, 2]
and our future looks like this:
[4, 5]
Dispatching any action except for an undo will trigger a linearization of the history. So if we now print, our history will first be linearized to look like this:
[1, 2, 3, 4, 5, 4]
Now the next undo action will undo the previous undo, taking us back to 4 instead of 2.
The usage is the same as for redux-undo.
Just pass the linearizeHistory configuration option.
// redux-undo higher-order reducer
import undoable from 'redux-undo';
combineReducers({
counter: undoable(counter, { linearizeHistory: true })
});
- Honor the
limitconfig option - Allow filtering of actions that trigger a linearization of history
- Add tests :)