@loona/react
Version:
App State Management done with GraphQL (react integration)
39 lines • 1.68 kB
JavaScript
var __assign = (this && this.__assign) || function () {
__assign = Object.assign || function(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
t[p] = s[p];
}
return t;
};
return __assign.apply(this, arguments);
};
import * as React from 'react';
import { graphql } from 'react-apollo';
import { LoonaContext } from '../context';
import { wrapMutation } from '../component/mutation';
import { getDisplayName } from '../utils';
export function withMutation(document, operationOptions) {
if (operationOptions === void 0) { operationOptions = {}; }
return function (WrappedComponent) {
var name = operationOptions.name || 'mutate';
var wrappedComponentName = getDisplayName(WrappedComponent);
var displayName = "LoonaMutate(" + wrappedComponentName + ")";
function GraphQLComponent(props) {
var mutate = props[name];
return (React.createElement(LoonaContext.Consumer, null, function (_a) {
var loona = _a.loona;
var _b;
var childProps = (_b = {},
_b[name] = wrapMutation(loona, mutate, document),
_b);
return React.createElement(WrappedComponent, __assign({}, props, childProps));
}));
}
GraphQLComponent.displayName = displayName;
GraphQLComponent.WrappedComponent = WrappedComponent;
return graphql(document, operationOptions)(GraphQLComponent);
};
}
//# sourceMappingURL=with-mutation.js.map