@bett3r-dev/flyd
Version:
The less is more, modular, functional reactive programming library
71 lines (44 loc) • 1.63 kB
Markdown
Functions for working with Flyd stream in objects.
- Convert object values from plain values into streams with __streamProps__
- Convert object values from streams into plain values with __extractProps__
- Convert a plain object with stream values into a single stream of plain objects with __stream__
These functions perform these conversions recursively in nested objects.
Given an object of normal values, turn every value into a stream. It will
stream nested properties recursively.
__Signature__
`Object a -> Object (Stream a)`
__Usage__
```js
const flydObj = require('flyd/module/object')
const obj = {x: 1, y: {z: 2}}
const objOfStreams = flydObj.streamProps(obj)
objOfStreams.x() // 1
objOfStreams.y.z() // 2
```
Given an object that contains streams for values, extract everything into an
object of regular values. It will extract nested properties recursively.
__Signature__
`Object (Stream a) -> Object a`
__Usage__
```js
const objOfStreams = {x: flyd.stream(1), y: {z: flyd.stream(2)}}
const obj = flydObj.extractProps(objOfStreams)
//obj is {x: 1, y: {z: 2}}
```
Given an object containing streams, combine all the streams into a single stream of plain objects.
__Signature__
`Object (Stream a) -> Stream (Object a)`
__Usage__
```js
const click = flyd.stream()
const message = flyd.map(() => 'Hello world!', state.click)
const state = {click, message}
const stateStream = flydObj.stream(state)
stateStream() // {click: undefined, message: undefined}
click(true)
stateStream() // {click: true, message: 'Hello World!'}
```