UNPKG

2.33 kBJavaScriptView Raw
1'use strict';
2
3var _lodashLangIsObject2 = require('lodash/lang/isObject');
4
5var _lodashLangIsObject3 = _interopRequireDefault(_lodashLangIsObject2);
6
7var _lodashObjectAssign2 = require('lodash/object/assign');
8
9var _lodashObjectAssign3 = _interopRequireDefault(_lodashObjectAssign2);
10
11Object.defineProperty(exports, '__esModule', {
12 value: true
13});
14
15var _linkClass = require('./linkClass');
16
17var _linkClass2 = _interopRequireDefault(_linkClass);
18
19var _react = require('react');
20
21var _react2 = _interopRequireDefault(_react);
22
23function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
24
25var wrapStatelessFunction = undefined;
26
27/**
28 * @see https://facebook.github.io/react/blog/2015/09/10/react-v0.14-rc1.html#stateless-function-components
29 * @param {Function} Component
30 * @param {Object} defaultStyles
31 * @param {Object} options
32 * @returns {Function}
33 */
34wrapStatelessFunction = function (Component, defaultStyles, options) {
35 var WrappedComponent = undefined;
36
37 WrappedComponent = function () {
38 for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
39 args[_key - 1] = arguments[_key];
40 }
41
42 var props = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];
43
44 var renderResult = undefined,
45 styles = undefined,
46 useProps = undefined;
47
48 if (props.styles) {
49 useProps = props;
50 styles = props.styles;
51 } else if ((0, _lodashLangIsObject3['default'])(defaultStyles)) {
52 useProps = (0, _lodashObjectAssign3['default'])({}, props, {
53 styles: defaultStyles
54 });
55
56 styles = defaultStyles;
57 } else {
58 useProps = props;
59 styles = {};
60 }
61
62 renderResult = Component.apply(undefined, [useProps].concat(args));
63
64 if (renderResult) {
65 return (0, _linkClass2['default'])(renderResult, styles, options);
66 }
67
68 return _react2['default'].createElement('noscript');
69 };
70
71 (0, _lodashObjectAssign3['default'])(WrappedComponent, Component);
72
73 return WrappedComponent;
74};
75
76exports['default'] = wrapStatelessFunction;
77module.exports = exports['default'];
78//# sourceMappingURL=wrapStatelessFunction.js.map