UNPKG

gambit

Version:

A hyper-thin library to help building API driven redux apps

72 lines (52 loc) 2.13 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.connectComponent = undefined; var _extends2 = require('babel-runtime/helpers/extends'); var _extends3 = _interopRequireDefault(_extends2); var _reactRedux = require('react-redux'); var _forIn = require('lodash/forIn'); var _forIn2 = _interopRequireDefault(_forIn); var _invariant = require('invariant'); var _invariant2 = _interopRequireDefault(_invariant); var _GeneralConstants = require('./GeneralConstants'); var _GeneralConstants2 = _interopRequireDefault(_GeneralConstants); var _dict = require('./dict'); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function mapStateToProps() { var fetch = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0]; var containerName = arguments[1]; return function (state, props) { var obj = {}; (0, _forIn2.default)(fetch, function (value, key) { (0, _invariant2.default)(typeof value.as === 'function', (0, _dict.noFunctionAs)(value.as, key, containerName)); obj[key] = value.as(state, props); }); return obj; }; } function mergeProps() { var methods = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0]; var containerName = arguments[1]; return function (stateProps, _ref, ownProps) { var dispatch = _ref.dispatch; var megaProps = (0, _extends3.default)({}, ownProps, stateProps); var otherMethods = {}; (0, _forIn2.default)(methods, function (value, key) { otherMethods[key] = value(dispatch, megaProps); }); otherMethods.monitor = function (id, props, state) { return dispatch({ type: _GeneralConstants2.default.MONITORED_VALUE_CHANGED, id: id, props: props, state: state }); }; return (0, _extends3.default)({}, megaProps, otherMethods); }; } var connectComponent = exports.connectComponent = function connectComponent(Component, fetch, methods, name) { return (0, _reactRedux.connect)(mapStateToProps(fetch, name), null, mergeProps(methods, name))(Component); };