UNPKG

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