nuclear-binding-container
Version:
A binding registry to be used within a nuclear app to register resolver functions for specific keys.
57 lines (43 loc) • 1.38 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.Model = undefined;
var _immutable = require('immutable');
var _createModel = require('../createModel');
var _createModel2 = _interopRequireDefault(_createModel);
var _BindingInterface = require('../interfaces/BindingInterface');
var _BindingInterface2 = _interopRequireDefault(_BindingInterface);
var _actionTypes = require('../actionTypes');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
/**
* Model class of one Binding.
*/
var Model = exports.Model = (0, _createModel2.default)(_BindingInterface2.default);
exports.default = {
getInitialState: function getInitialState() {
return (0, _immutable.Map)({});
},
handlers: [{
type: _actionTypes.ADD,
handler: addBinding
}]
};
/**
* Convert given payload to a new model and add it to the store.
*
* @public
* @param {Immutable.Map} bindings
* @param {object} payload
* @param {string} payload.key
* @param {boolean} payload.shared
* @param {function} payload.resolver
* @returns {Immutable.Map} new bindings
*/
function addBinding(bindings, _ref) {
var key = _ref.key;
var shared = _ref.shared;
var resolver = _ref.resolver;
var binding = new Model({ key: key, shared: shared, resolver: resolver });
return bindings.set(key, binding);
}