UNPKG

2.3 kBJavaScriptView Raw
1'use strict';
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6
7var _isFunction2 = require('lodash/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
21/**
22 * Determines if the given object has the signature of a class that inherits React.Component.
23 */
24
25
26/**
27 * @see https://github.com/gajus/react-css-modules#options
28 */
29var isReactComponent = function isReactComponent(maybeReactComponent) {
30 return 'prototype' in maybeReactComponent && (0, _isFunction3.default)(maybeReactComponent.prototype.render);
31};
32
33/**
34 * When used as a function.
35 */
36var functionConstructor = function functionConstructor(Component, defaultStyles, options) {
37 var decoratedClass = void 0;
38
39 if (isReactComponent(Component)) {
40 decoratedClass = (0, _extendReactClass2.default)(Component, defaultStyles, options);
41 } else {
42 decoratedClass = (0, _wrapStatelessFunction2.default)(Component, defaultStyles, options);
43 }
44
45 if (Component.displayName) {
46 decoratedClass.displayName = Component.displayName;
47 } else {
48 decoratedClass.displayName = Component.name;
49 }
50
51 return decoratedClass;
52};
53
54/**
55 * When used as a ES7 decorator.
56 */
57var decoratorConstructor = function decoratorConstructor(defaultStyles, options) {
58 return function (Component) {
59 return functionConstructor(Component, defaultStyles, options);
60 };
61};
62
63exports.default = function () {
64 if ((0, _isFunction3.default)(arguments.length <= 0 ? undefined : arguments[0])) {
65 return functionConstructor(arguments.length <= 0 ? undefined : arguments[0], arguments.length <= 1 ? undefined : arguments[1], arguments.length <= 2 ? undefined : arguments[2]);
66 } else {
67 return decoratorConstructor(arguments.length <= 0 ? undefined : arguments[0], arguments.length <= 1 ? undefined : arguments[1]);
68 }
69};
70
71module.exports = exports['default'];
72//# sourceMappingURL=index.js.map