apollo-mobx
Version:
HOC for querying graphql server
57 lines (56 loc) • 1.71 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
var tslib_1 = require("tslib");
var mobx_react_1 = require("mobx-react");
var React = require("react");
function shallowCompare(a, b) {
if (!a && !b) {
return true;
}
if ((a && !b) || (!a && b)) {
return false;
}
var ka = 0;
var kb = 0;
for (var _i = 0, _a = Object.getOwnPropertyNames(a); _i < _a.length; _i++) {
var key = _a[_i];
if (a[key] !== b[key]) {
return false;
}
ka++;
}
for (var _b = 0, _c = Object.getOwnPropertyNames(b); _b < _c.length; _b++) {
var key = _c[_b];
kb++;
}
return ka === kb;
}
exports.shallowCompare = shallowCompare;
function compose() {
var funcs = [];
for (var _i = 0; _i < arguments.length; _i++) {
funcs[_i] = arguments[_i];
}
if (funcs.length === 0) {
return function (arg) { return arg; };
}
if (funcs.length === 1) {
return funcs[0];
}
return funcs.reduce(function (a, b) { return function () {
var args = [];
for (var _i = 0; _i < arguments.length; _i++) {
args[_i] = arguments[_i];
}
return a(b.apply(void 0, args));
}; });
}
exports.compose = compose;
function connectProps(mapStateToProps) {
return function wrapWithConnect(WrappedComponent) {
var func = function (props) { return React.createElement(WrappedComponent, tslib_1.__assign({}, props, mapStateToProps(props))); };
func.displayName = "Connect(" + (WrappedComponent.displayName || 'Component') + ")";
return mobx_react_1.observer(func);
};
}
exports.connectProps = connectProps;