❤ Made at @outlandish
🍀 Simple undo and redo for objects.
👉 Use your preferred bundler and transpiler as required.
const input = history({ value: '' })
input.value = 'Ziggy'
input.value = 'Stardust'
input.$$index //=> 2
input.$$history() //=> [{ value: '' }, { value: 'Ziggy' }]
input.$$undo()
input.$$index //=> 1
input.value //=> 'Ziggy'
input.$$redo()
input.$$index //=> 2
input.value //=> 'Stardust'
npm install --save objecthistory
yarn add objecthistory
// ES2015
import history from 'objecthistory'
// CommonJS
var history = require('objecthistory')
Enhance an object with undo, redo & change history.
- [obj] {Object} (optional, default=
{}
) Object to enhance
Returns enhanced object.
An enhanced object has the following methods.
The current position of the object in the history of changes, which represents the current value of the object.
-
An
undo
moves the cursor backwards in the history. -
A
redo
moves the cursor forwards in the history. -
Any forward history is lost when a new change is made.
Undo n
changes to the object.
- [n] {Number} (optional, default=
1
) Number of redos to apply
Re-apply n
undone changes to the object.
- [n] {Number} (optional, default=
1
) Number of redos to apply
Get an array of n
history items.
- [n] {Number} (optional, default=
Infinity
) Number of history items to retrieve
Get an array of n
history items before $$index
.
- [n] {Number} (optional, default=
Infinity
) Number of history items to retrieve
Get an array of n
history items after $$index
.
- [n] {Number} (optional, default=
Infinity
) Number of history items to retrieve
All pull requests and issues welcome!
If you're not sure how, check out the great video tutorials on egghead.io!