1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
|
8 |
|
9 |
|
10 |
|
11 | 'use strict';
|
12 |
|
13 | var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
14 |
|
15 | var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
16 |
|
17 | var React = require('react');
|
18 |
|
19 | var ReactRelayContext = require('./ReactRelayContext');
|
20 |
|
21 | var assertFragmentMap = require('./assertFragmentMap');
|
22 |
|
23 | var invariant = require("fbjs/lib/invariant");
|
24 |
|
25 | var mapObject = require("fbjs/lib/mapObject");
|
26 |
|
27 | var readContext = require('./readContext');
|
28 |
|
29 | var _require = require('./ReactRelayContainerUtils'),
|
30 | getComponentName = _require.getComponentName,
|
31 | getContainerName = _require.getContainerName;
|
32 |
|
33 | var _require2 = require('relay-runtime'),
|
34 | getFragment = _require2.getFragment;
|
35 |
|
36 |
|
37 |
|
38 |
|
39 |
|
40 | function buildReactRelayContainer(ComponentClass, fragmentSpec, createContainerWithFragments) {
|
41 |
|
42 | var containerName = getContainerName(ComponentClass);
|
43 | assertFragmentMap(getComponentName(ComponentClass), fragmentSpec);
|
44 | var fragments = mapObject(fragmentSpec, getFragment);
|
45 | var Container = createContainerWithFragments(ComponentClass, fragments);
|
46 | Container.displayName = containerName;
|
47 |
|
48 | function forwardRef(props, ref) {
|
49 | var context = readContext(ReactRelayContext);
|
50 | !(context != null) ? process.env.NODE_ENV !== "production" ? invariant(false, '`%s` tried to render a context that was not valid this means that ' + '`%s` was rendered outside of a query renderer.', containerName, containerName) : invariant(false) : void 0;
|
51 | return React.createElement(Container, (0, _extends2["default"])({}, props, {
|
52 | __relayContext: context,
|
53 | componentRef: props.componentRef || ref
|
54 | }));
|
55 | }
|
56 |
|
57 | forwardRef.displayName = containerName;
|
58 | var ForwardContainer = React.forwardRef(forwardRef);
|
59 |
|
60 | if (process.env.NODE_ENV !== "production") {
|
61 |
|
62 | ForwardContainer.__ComponentClass = ComponentClass;
|
63 | ForwardContainer.displayName = containerName;
|
64 | }
|
65 |
|
66 |
|
67 | return ForwardContainer;
|
68 | }
|
69 |
|
70 | module.exports = buildReactRelayContainer; |
\ | No newline at end of file |