Package Exports
- data-state
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (data-state) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
data-state

Fast state based on top of typed arrays.
A simple typed array state container that is fast and scalable.
var state = createState({
type: Float32Array
}, function dispatch (index, value, oldValue) {
// Handle value changes on the data
})
for (var i = 0; i < 100) {
state.stage(i, Math.random())
}
state.update()I might use it in managing coordinates in canvas, and videos/audio processing. Or maybe any time I want a fast/simple Set:
var state = createState()
state.set(0, 123)
state.get(0) === 123Installation
$ npm install --save data-stateUsage
createState([options], dispatch)
Create state and container for data. Returns state functions.
Parameters
options(Object): Options for your state and data.type(TypedArray): ATypedArrayinterface for the data backing your state. Defaults toFloat32Array.data(ArrayBuffer): A buffer to initialize the typed array with. (Note: overrideslengthif set)length(Number): Alternative todata, initialize empty typed array at specified length. Defaults to10000.lowSecurity(Boolean): Makes thedump()return state internals. Defaults tofalse.
dispatch(Function): Dispatch function triggered every time you update.
Dispatch
Updates are called on your function like dispatch(index, value, oldValue). This is called by both state.set() and state.update().
Example
var state = createState({
type: Uint16Array,
length: 500 // Maximum amount of data.
}, function (i, value, oldValue) {
// Dispatch on update
})state.get(index)
Return value at the given index number.
Example
var foo = state({ data: someExistingData })
var value = foo.get(10)state.set(index, value)
Set value at the given index number. This calls a dispatch after (opposed to state.stage()).
Example
var state = createState({ type: Float32Array })
state.set(0, 100)
state.get(0) === 100
state.set(1, 0.005)state.stage(index, value)
Stages the setting of value at the given index number. Values are dispatched when state.update() is called.
Example
var state = createState()
state.stage(1, 123)
stage.get(1) !== 123
// Update it, set staged values
stage.update()
stage.get(1) === 123state.update()
Sets staged values, dispatching them in ascending order of their index numbers.
Example
var state = createState({
type: Float32Array
}, function dispatch (index, value, oldValue) {
// Handle value changes on the data
})
for (var i = 0; i < 100) {
state.stage(i, Math.random())
}
state.update()state.length()
Get length of state's array.
Example
var state = createState({ length: 10 })
// Get length
state.length() === 10state.dump()
This only returns null by default. It can be a risk if you do not want access to any of the data below (i.e. passing to plugins). It can be useful for debugging and unit testing though.
Returns an object containing data, staging, dispatch, and options.
Example
var state = createState({ lowSecurity: true })
var internals = state.dump()
internals.staging[0] = 123
internals.data.buffer
internals.dispatch(10, 0.101, 0.001)
// ...License
MIT © Jamen Marz