instantjob-recruiter-client
Version:
a set of tools for creating an instantjob recruiter react client
75 lines (56 loc) • 2.45 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _getOwnPropertyDescriptor = require('babel-runtime/core-js/object/get-own-property-descriptor');
var _getOwnPropertyDescriptor2 = _interopRequireDefault(_getOwnPropertyDescriptor);
var _getOwnPropertyNames = require('babel-runtime/core-js/object/get-own-property-names');
var _getOwnPropertyNames2 = _interopRequireDefault(_getOwnPropertyNames);
var _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');
var _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);
var _defineProperty = require('babel-runtime/core-js/object/define-property');
var _defineProperty2 = _interopRequireDefault(_defineProperty);
exports.default = auto_bind;
var _utilities = require('./utilities');
var _constants = require('./constants');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var react_properties_set = (0, _utilities.set_from_array)(["constructor", "componentWillMount", "render", "componentDidMount", "componentWillReceiveProps", "shouldComponentUpdate", "componentWillUpdate", "componentDidUpdate", "componentWillUnmount"]);
var is_not_react_property = function is_not_react_property(property) {
return !react_properties_set[property];
};
// from react-autobind
function boundMethod(objPrototype, method, descriptor) {
var fn = descriptor.value;
return {
configurable: true,
get: function get() {
if (this === objPrototype || this.hasOwnProperty(method)) {
return fn;
}
var boundFn = fn.bind(this);
(0, _defineProperty2.default)(this, method, {
value: boundFn,
configurable: true,
writable: true
});
return boundFn;
},
set: function set(new_fn) {
fn = new_fn;
}
};
}
function auto_bind(component) {
var prototype = (0, _getPrototypeOf2.default)(component);
(0, _getOwnPropertyNames2.default)(prototype).filter(is_not_react_property).forEach(function (property) {
var descriptor = (0, _getOwnPropertyDescriptor2.default)(prototype, property);
if (descriptor === undefined) {
_constants.DEV && console.warn('Autobind: "' + method + '" method not found in class.');
return;
}
if (typeof descriptor.value !== 'function') {
return;
}
(0, _defineProperty2.default)(prototype, property, boundMethod(prototype, property, descriptor));
});
}