react-component-decorators
Version:
React decorators, magic.
79 lines (59 loc) • 3.2 kB
JavaScript
;
exports.__esModule = true;
exports.renderArgsClass = exports.applyInjectProps = undefined;
var _injectProps = require('./injectProps');
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) {
var desc = {};
Object['ke' + 'ys'](descriptor).forEach(function (key) {
desc[key] = descriptor[key];
});
desc.enumerable = !!desc.enumerable;
desc.configurable = !!desc.configurable;
if ('value' in desc || desc.initializer) {
desc.writable = true;
}
desc = decorators.slice().reverse().reduce(function (desc, decorator) {
return decorator(target, property, desc) || desc;
}, desc);
if (context && desc.initializer !== void 0) {
desc.value = desc.initializer ? desc.initializer.call(context) : void 0;
desc.initializer = undefined;
}
if (desc.initializer === void 0) {
Object['define' + 'Property'](target, property, desc);
desc = null;
}
return desc;
}
function renderArgsClass() {
var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ['props', 'state'];
var propsToInject = ['props', 'state'];
if (!Array.isArray(options)) {
var decoratorArgsBecauseNoOptions = options;
return decorate(decoratorArgsBecauseNoOptions);
} else {
propsToInject = options;
}
function decorate(target) {
var _dec, _desc, _value, _class;
return _dec = (0, _injectProps.applyInjectProps)(propsToInject), (_class = function (_target) {
_inherits(InjectPropsClass, _target);
function InjectPropsClass() {
_classCallCheck(this, InjectPropsClass);
return _possibleConstructorReturn(this, _target.apply(this, arguments));
}
InjectPropsClass.prototype.render = function render() {
// console.debug('------ rendering with args', {props: this.props, state: this.state})
return _target.prototype.render.call(this, this.props, this.state);
};
return InjectPropsClass;
}(target), (_applyDecoratedDescriptor(_class.prototype, 'render', [_dec], Object.getOwnPropertyDescriptor(_class.prototype, 'render'), _class.prototype)), _class);
}
return decorate;
}
exports.default = renderArgsClass;
exports.applyInjectProps = _injectProps.applyInjectProps;
exports.renderArgsClass = renderArgsClass;