UNPKG

2.67 kBJavaScriptView Raw
1'use strict';
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6
7var _isFunction2 = require('lodash/lang/isFunction');
8
9var _isFunction3 = _interopRequireDefault(_isFunction2);
10
11var _extendReactClass = require('./extendReactClass');
12
13var _extendReactClass2 = _interopRequireDefault(_extendReactClass);
14
15var _wrapStatelessFunction = require('./wrapStatelessFunction');
16
17var _wrapStatelessFunction2 = _interopRequireDefault(_wrapStatelessFunction);
18
19function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
20
21var decoratorConstructor = undefined,
22 functionConstructor = undefined,
23 isReactComponent = undefined;
24
25/**
26 * Determines if the given object has the signature of a class that inherits React.Component.
27 *
28 * @param {*} Component
29 * @returns {boolean}
30 */
31isReactComponent = function (Component) {
32 return 'prototype' in Component && (0, _isFunction3.default)(Component.prototype.render);
33};
34
35/**
36 * When used as a function.
37 *
38 * @param {Function} Component
39 * @param {Object} defaultStyles CSS Modules class map.
40 * @param {Object} options {@link https://github.com/gajus/react-css-modules#options}
41 * @returns {Function}
42 */
43functionConstructor = function (Component, defaultStyles, options) {
44 var decoratedClass = undefined;
45
46 if (isReactComponent(Component)) {
47 decoratedClass = (0, _extendReactClass2.default)(Component, defaultStyles, options);
48 } else {
49 decoratedClass = (0, _wrapStatelessFunction2.default)(Component, defaultStyles, options);
50 }
51
52 if (Component.displayName) {
53 decoratedClass.displayName = Component.displayName;
54 } else {
55 decoratedClass.displayName = Component.name;
56 }
57
58 return decoratedClass;
59};
60
61/**
62 * When used as a ES7 decorator.
63 *
64 * @param {Object} defaultStyles CSS Modules class map.
65 * @param {Object} options {@link https://github.com/gajus/react-css-modules#options}
66 * @returns {Function}
67 */
68decoratorConstructor = function (defaultStyles, options) {
69 return function (Component) {
70 return functionConstructor(Component, defaultStyles, options);
71 };
72};
73
74exports.default = function () {
75 if ((0, _isFunction3.default)(arguments.length <= 0 ? undefined : arguments[0])) {
76 return functionConstructor(arguments.length <= 0 ? undefined : arguments[0], arguments.length <= 1 ? undefined : arguments[1], arguments.length <= 2 ? undefined : arguments[2]);
77 } else {
78 return decoratorConstructor(arguments.length <= 0 ? undefined : arguments[0], arguments.length <= 1 ? undefined : arguments[1]);
79 }
80};
81
82module.exports = exports['default'];
83//# sourceMappingURL=index.js.map