@loona/react
Version:
App State Management done with GraphQL (react integration)
33 lines • 1.33 kB
JavaScript
var __assign = (this && this.__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;
};
import * as React from 'react';
import { LoonaContext } from '../context';
export function connect(factory) {
return function wrapWithConnect(WrappedComponent) {
var wrappedComponentName = WrappedComponent.displayName || WrappedComponent.name || 'Component';
var displayName = "Connect(" + wrappedComponentName + ")";
function wrapWithDispatch(props, loona) {
if (!loona) {
throw new Error('No Loona no fun!');
}
var childProps = factory(loona.dispatch.bind(loona));
return React.createElement(WrappedComponent, __assign({}, props, childProps));
}
function Connect(props) {
return (React.createElement(LoonaContext.Consumer, null, function (_a) {
var loona = _a.loona;
return wrapWithDispatch(props, loona);
}));
}
Connect.displayName = displayName;
Connect.WrappedComponent = WrappedComponent;
return Connect;
};
}
//# sourceMappingURL=action.js.map