UNPKG

react-apollo

Version:
100 lines 5.21 kB
var __extends = (this && this.__extends) || (function () { var extendStatics = Object.setPrototypeOf || ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; return function (d, b) { extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; })(); 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; }; var __rest = (this && this.__rest) || function (s, e) { var t = {}; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p]; if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0) t[p[i]] = s[p[i]]; return t; }; import * as React from 'react'; var hoistNonReactStatics = require('hoist-non-react-statics'); import { parser } from './parser'; import { default as Subscription } from './Subscriptions'; import { getDisplayName, GraphQLBase, calculateVariablesFromProps, defaultMapPropsToOptions, defaultMapPropsToSkip, } from './hoc-utils'; export function subscribe(document, operationOptions) { if (operationOptions === void 0) { operationOptions = {}; } var operation = parser(document); var _a = operationOptions.options, options = _a === void 0 ? defaultMapPropsToOptions : _a, _b = operationOptions.skip, skip = _b === void 0 ? defaultMapPropsToSkip : _b, _c = operationOptions.alias, alias = _c === void 0 ? 'Apollo' : _c, shouldResubscribe = operationOptions.shouldResubscribe; var mapPropsToOptions = options; if (typeof mapPropsToOptions !== 'function') mapPropsToOptions = function () { return options; }; var mapPropsToSkip = skip; if (typeof mapPropsToSkip !== 'function') mapPropsToSkip = function () { return skip; }; var lastResultProps; return function (WrappedComponent) { var graphQLDisplayName = alias + "(" + getDisplayName(WrappedComponent) + ")"; var GraphQL = (function (_super) { __extends(GraphQL, _super); function GraphQL(props) { var _this = _super.call(this, props) || this; _this.state = { resubscribe: false }; return _this; } GraphQL.prototype.componentWillReceiveProps = function (nextProps) { if (!shouldResubscribe) return; this.setState({ resubscribe: shouldResubscribe(this.props, nextProps), }); }; GraphQL.prototype.render = function () { var _this = this; var props = this.props; var shouldSkip = mapPropsToSkip(props); var opts = shouldSkip ? Object.create(null) : mapPropsToOptions(props); if (!shouldSkip && !opts.variables && operation.variables.length > 0) { opts.variables = calculateVariablesFromProps(operation, props, graphQLDisplayName, getDisplayName(WrappedComponent)); } return (React.createElement(Subscription, __assign({}, opts, { displayName: graphQLDisplayName, skip: shouldSkip, subscription: document, shouldResubscribe: this.state.resubscribe }), function (_a) { var data = _a.data, r = __rest(_a, ["data"]); if (operationOptions.withRef) { _this.withRef = true; props = Object.assign({}, props, { ref: _this.setWrappedInstance, }); } if (shouldSkip) return React.createElement(WrappedComponent, __assign({}, props)); var result = Object.assign(r, data || {}); var name = operationOptions.name || 'data'; var childProps = (_b = {}, _b[name] = result, _b); if (operationOptions.props) { var newResult = (_c = {}, _c[name] = result, _c.ownProps = props, _c); lastResultProps = operationOptions.props(newResult, lastResultProps); childProps = lastResultProps; } return React.createElement(WrappedComponent, __assign({}, props, childProps)); var _b, _c; })); }; GraphQL.displayName = graphQLDisplayName; GraphQL.WrappedComponent = WrappedComponent; return GraphQL; }(GraphQLBase)); return hoistNonReactStatics(GraphQL, WrappedComponent, {}); }; } //# sourceMappingURL=subscription-hoc.js.map