1.3.1 • Published 10 years ago

primitate-time-travel v1.3.1

Weekly downloads
1
License
MIT
Repository
github
Last release
10 years ago

Primitate-TimeTravel

Build Status

Primitate-TimeTravel is an addon for the Primitate. It provies a simple way to undo and redo.

Install

npm install --save primitate-time-travel

Example

const startPrimitate = require("primitate").default;
const initTTCreator = require("primitate-time-travel").default;


const initialState = { counter: { count: 0 } };

function increment(previousState, next, initialState) {
  return { count: previousState.count + next };
}


const { createAction, subscribe, applyAddon } = startPrimitate(initialState);

const increment$ = createAction( state => state.counter )(increment);

const unsubscribe = subscribe( state => state.counter )( state => {
  console.log(state.counter);
});
// console: { count: 0 }

const createTimeTraveler = applyAddon(initTTCreator);


const traveler = createTimeTraveler( state => state.counter )(
  state => state.counter.count,   // memorize
  count => ({ count })    // remember
);
const undo = traveler.backToThePast();
const redo = traveler.backToTheFuture();


increment$(3); // console: { count: 3 }
increment$(7); // console: { count: 10 }

// Start time travel!

undo(); // console: { count: 3 }
redo(); // console: { count: 10 }

undo(); // console: { count: 3 }
undo(); // console: { count: 0 }
undo(); // listener does not called
redo(); // console: { count: 3 }
redo(); // console: { count: 10 }
redo(); // listener does not called

License

MIT

1.3.1

10 years ago

1.3.0

10 years ago

1.2.4

10 years ago

1.2.3

10 years ago

1.2.2

10 years ago

1.2.1

10 years ago

1.2.0

10 years ago

1.1.1

10 years ago

1.1.0

10 years ago

1.0.0

10 years ago