UNPKG

2.42 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
19var _makeConfiguration = require('./makeConfiguration');
20
21var _makeConfiguration2 = _interopRequireDefault(_makeConfiguration);
22
23function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
24
25/**
26 * Determines if the given object has the signature of a class that inherits React.Component.
27 */
28
29
30/**
31 * @see https://github.com/gajus/react-css-modules#options
32 */
33var isReactComponent = function isReactComponent(maybeReactComponent) {
34 return 'prototype' in maybeReactComponent && (0, _isFunction3.default)(maybeReactComponent.prototype.render);
35};
36
37/**
38 * When used as a function.
39 */
40var functionConstructor = function functionConstructor(Component, defaultStyles, options) {
41 var decoratedClass = void 0;
42
43 var configuration = (0, _makeConfiguration2.default)(options);
44
45 if (isReactComponent(Component)) {
46 decoratedClass = (0, _extendReactClass2.default)(Component, defaultStyles, configuration);
47 } else {
48 decoratedClass = (0, _wrapStatelessFunction2.default)(Component, defaultStyles, configuration);
49 }
50
51 if (Component.displayName) {
52 decoratedClass.displayName = Component.displayName;
53 } else {
54 decoratedClass.displayName = Component.name;
55 }
56
57 return decoratedClass;
58};
59
60/**
61 * When used as a ES7 decorator.
62 */
63var decoratorConstructor = function decoratorConstructor(defaultStyles, options) {
64 return function (Component) {
65 return functionConstructor(Component, defaultStyles, options);
66 };
67};
68
69exports.default = function () {
70 if ((0, _isFunction3.default)(arguments.length <= 0 ? undefined : arguments[0])) {
71 return functionConstructor(arguments.length <= 0 ? undefined : arguments[0], arguments.length <= 1 ? undefined : arguments[1], arguments.length <= 2 ? undefined : arguments[2]);
72 } else {
73 return decoratorConstructor(arguments.length <= 0 ? undefined : arguments[0], arguments.length <= 1 ? undefined : arguments[1]);
74 }
75};
76
77module.exports = exports['default'];
\No newline at end of file