simple-undo-redo
v1.0.0
Published
Simple undo-redo functionality with branching support for JavaScript applications
Downloads
6
Maintainers
Readme
simple-undo-redo
Simple undo-redo functionality with branching support for JavaScript applications.
Features
- ✅ Simple undo/redo operations
- ✅ Git-like branching system
- ✅ React hook included
- ✅ LocalStorage support
- ✅ Zero dependencies
- ✅ Works in browser and Node.js
Installation
npm install simple-undo-redoQuick Start
const UndoRedoJS = require('simple-undo-redo');
// Create instance
const undoRedo = new UndoRedoJS({ count: 0 });
// Update data
undoRedo.update({ count: 1 }, 'Increment count');
undoRedo.update({ count: 2 }, 'Increment again');
// Undo/Redo
undoRedo.undo(); // Back to count: 1
undoRedo.redo(); // Forward to count: 2
// Get current data
console.log(undoRedo.getCurrentData()); // { count: 2 }React Usage
const { useUndoRedo } = require('simple-undo-redo');
function MyComponent() {
const { data, updateData, undo, redo, canUndo, canRedo } = useUndoRedo({ count: 0 });
return (
<div>
<p>Count: {data.count}</p>
<button onClick={() => updateData({ count: data.count + 1 })}>+</button>
<button onClick={undo} disabled={!canUndo}>Undo</button>
<button onClick={redo} disabled={!canRedo}>Redo</button>
</div>
);
}Branching
// Create branch
undoRedo.createBranch('feature');
undoRedo.switchBranch('feature');
// Make changes in branch
undoRedo.update({ count: 10 }, 'Feature changes');
// Switch back and merge
undoRedo.switchBranch('main');
undoRedo.mergeBranch('feature');API
Constructor
const undoRedo = new UndoRedoJS(initialData, {
maxSize: 50, // Maximum history size
enableStorage: false, // Enable localStorage
storageKey: 'undo-redo' // localStorage key
});Methods
| Method | Description |
|--------|-------------|
| update(data, message) | Update data with optional message |
| undo() | Go back one step |
| redo() | Go forward one step |
| getCurrentData() | Get current data |
| canUndo() | Check if undo is possible |
| canRedo() | Check if redo is possible |
| createBranch(name) | Create new branch |
| switchBranch(name) | Switch to branch |
| mergeBranch(name) | Merge branch into current |
| getHistory() | Get history of current branch |
| clear() | Clear all data and history |
License
MIT
