UNPKG

kaiju

Version:

Virtual dom, observables and stateful components

48 lines (38 loc) 1.32 kB
import h from 'snabbdom/h'; import Component from './component'; import Message from './message'; import { assign } from './util'; export default function connectToStore() { return function (baseComponent, mapStoreToProps) { function initState() { return {}; } function connect(_ref) { var on = _ref.on, props = _ref.props, state = _ref.state, msg = _ref.msg; var _props = props(), store = _props.store; on(props, function (externalProps) { return assign({}, state(), { externalProps: externalProps }); }); on(store.state, function (storeState) { var mappedProps = mapStoreToProps(store); return assign({}, state(), { mappedProps: mappedProps }); }); on(Message.unhandled, function (m) { return msg.sendToParent(m); }); } function render(_ref2) { var state = _ref2.state; var props = assign({}, state.externalProps, state.mappedProps); return baseComponent(props); } return function connectComponent(props) { var name = 'connect-' + (props.key === undefined ? baseComponent.name : props.key); return Component({ name: name, log: false, initState: initState, props: props, connect: connect, render: render }); }; }; }