UNPKG

bdn-pocket

Version:

pocket tools for managing redux and redux-saga

61 lines (45 loc) 1.54 kB
'use strict'; 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;