bdn-pocket
Version:
pocket tools for managing redux and redux-saga
61 lines (45 loc) • 1.54 kB
JavaScript
;
exports.__esModule = true;
exports.makeIsCacheValid = makeIsCacheValid;
var _it = require('@stamp/it');
var _it2 = _interopRequireDefault(_it);
var _identity = require('ramda/src/identity');
var _identity2 = _interopRequireDefault(_identity);
var _reselect = require('reselect');
var _prop_types = require('../prop_types');
var _prop_types2 = _interopRequireDefault(_prop_types);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function makeIsCacheValid(comparator) {
var lastResult = void 0;
return function isCacheValid(result) {
if (comparator(result, lastResult)) return true;
lastResult = result;
return false;
};
}
function makeSubStateGetter(stamp) {
var objSelectors = stamp.compose.deepProperties.objSelectors;
return Object.keys(objSelectors).length > 0 ? (0, _reselect.createStructuredSelector)(objSelectors) : _identity2.default;
}
var SelectorDef = (0, _it2.default)().deepProps({
objSelectors: {}
}).statics({
PropTypes: _prop_types2.default,
propTypes: function propTypes() {
var _PropTypes;
return this.statics({
PropTypes: (_PropTypes = this.PropTypes).propTypes.apply(_PropTypes, arguments)
});
},
selectors: function selectors(objSelectors) {
var newStamp = this.deepProps({
objSelectors: objSelectors
});
return newStamp.methods({
getSubState: makeSubStateGetter(newStamp)
});
}
}).methods({
getSubState: _identity2.default
});
exports.default = SelectorDef;