Skip to content

History-tracking wrapper for Immutable.js collections and cursors

License

Notifications You must be signed in to change notification settings

KualiCo/immutable-history

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

immutable-history

immutable-history is a library for easily interacting with cursors to Immutable.js collections while maintaining a stack of previous states. This is useful for implementing undo among other things.

You need to understand the Immutable.js api for cursors and collections for this to be useful to you.

It is inspired by ideas from om and works great with React but you can use it for (ノ◕ヮ◕)ノ*:・゚✧ A N Y T H I N G (ಥ﹏ಥ)!

Installation

npm i --save immutable-history

Usage

var History = require('immutable-history');

// called with the updated cursor whenever the history changes
function render(cursor) {
  // pass subcursors from the cursor down through your app hierachy and watch
  // the changes magically propogate
  console.log('rendering');
  setTimeout(function() {
    var powers = cursor.get(['powers']);
    if (powers.size < 5) {
      powers.update(function(oldValue) {
        return oldValue.push('EVEN MORE MUSCLES');
      });
    } else {
      // go back to the previous state of the cursor
      history.undo()
    }
  }, 500);
  console.log(cursor);
}

var history = new History({name: 'Jamison', powers: ['flight', 'telekinesis', 'the power to move you']}, render);

This creates a history object with an initial state, and a render function that is called whenever the state is updated. The history object stores a stack of all previous states, so you can undo back through the previous states.

Any changes to the data in the cursor will trigger the callback again. This is useful with react, where you need to re-render some component heirarchy when your app state changes.

About

History-tracking wrapper for Immutable.js collections and cursors

Resources

License

Stars

Watchers

Forks

Packages

No packages published