state-history

1.2.1 • Public • Published

state-history

NPM

A basic state history manager.

Install

npm i state-history

Basic usage

import { StateHistory } from 'state-history';
// or
const { StateHistory } = require('state-history');
 
// create history
const history = new StateHistory();
 
// push some states
history.push({ a: 1 });
history.push({ a: 2 });
history.push({ a: 3 }); // current history is { a: 3 }
 
history.goPrev(); // current history is now { a: 2 }
history.goNext(); // current history is now { a: 3 }
history.go(-2); // current history is now { a: 1 }
 
// listen to history changes
history.subscribe(newState => console.log(newState));
history.push({ a: 1 }); // triggers an history change
history.goPrev(); // also triggers an history change

Properties

// number of past states in the history
// it should be checked to be greater than 0 before calling `goPrev`
numPrevnumber;
 
// number of future states in the history
// it should be checked to be greater than 0 before calling `goNext`
numNextnumber;

Methods

// push a new entry onto the history stack
// and returns it
push(stateT)T;
 
// moves the pointer in the history stack to the previous entry
// and returns the new current state
// it is equivalent to `go(-1)`
goPrev()T;
 
// moves the pointer in the history stack to the next entry
// and returns the new current state
// it is equivalent to `go(1)`
goNext()T;
 
// moves the pointer in the history stack to the last entry
// and returns the new current state
// it is  equivalent to `go(numNext)`
goLast()T;
 
// moves the pointer in the history stack by `i` entries
// a negative number will go to the `-i`th previous entry
// and a positive number will go to the `i`th next entry
go(inumber)T;
 
// get a specific entry from the history stack
// ie: `-1` for the previous entry, `1` for the next entry
get(inumber)T;
 
// register a callback function that will be called every time
// a new entry is added or when the pointer in the history stack is moved
subscribe(callback: (state: T) => void)void;
 
// unregister a callback function
unsubscribe(callback: (state: T) => void)void;
 
// unregister all callback functions
unsubscribeAll()void;
 
// remove all entries from the state history
clear()void

Readme

Keywords

none

Package Sidebar

Install

npm i state-history

Weekly Downloads

6

Version

1.2.1

License

MIT

Unpacked Size

14.6 kB

Total Files

5

Last publish

Collaborators

  • doguh