refun
Version:
A collection of React Hook-enabled functions that compose harmoniously with each other. Similar to `recompose`, but:
43 lines (31 loc) • 1.49 kB
JavaScript
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.mapStateRef = void 0;
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _extends3 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
var _react = require("react");
var _tsfn = require("tsfn");
var _utils = require("./utils");
var mapStateRef = function mapStateRef(stateName, stateFlusherName, getValue, watchKeys) {
return function (props) {
var _extends2;
var useStateResult = (0, _react.useState)(_tsfn.EMPTY_OBJECT);
var prevProps = (0, _react.useRef)(_tsfn.EMPTY_OBJECT);
var stateRef = (0, _react.useRef)(_tsfn.EMPTY_OBJECT);
var stateFlushRef = (0, _react.useRef)(_tsfn.NOOP);
if (stateFlushRef.current === _tsfn.NOOP) {
stateFlushRef.current = function () {
useStateResult[1]({});
};
}
if (prevProps.current === _tsfn.EMPTY_OBJECT || !(0, _utils.shallowEqualByKeys)(prevProps.current, props, watchKeys)) {
stateRef.current = getValue(props);
}
prevProps.current = props;
return (0, _extends3.default)({}, props, (_extends2 = {}, (0, _defineProperty2.default)(_extends2, stateName, stateRef), (0, _defineProperty2.default)(_extends2, stateFlusherName, stateFlushRef.current), _extends2));
};
};
exports.mapStateRef = mapStateRef;
//# sourceMappingURL=map-state-ref.js.map