UNPKG

simple-undo-redo

Version:

Simple undo-redo functionality with branching support for JavaScript applications

104 lines (78 loc) 2.48 kB
# 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 ```bash npm install simple-undo-redo ``` ## Quick Start ```javascript 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 ```javascript 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 ```javascript // 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 ```javascript 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