image-js
Version:
Image processing and manipulation in JavaScript
55 lines (54 loc) • 1.58 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.extendMethod = extendMethod;
exports.extendProperty = extendProperty;
var _hasOwn = _interopRequireDefault(require("has-own"));
var _Image = _interopRequireDefault(require("../Image"));
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
let computedPropertyDescriptor = {
configurable: true,
enumerable: false,
get: undefined
};
function extendMethod(name, method, options = {}) {
let {
inPlace = false,
returnThis = true,
partialArgs = []
} = options;
if (inPlace) {
_Image.default.prototype[name] = function (...args) {
// remove computed properties
this.computed = null;
let result = method.apply(this, [...partialArgs, ...args]);
if (returnThis) {
return this;
}
return result;
};
} else {
_Image.default.prototype[name] = function (...args) {
return method.apply(this, [...partialArgs, ...args]);
};
}
return _Image.default;
}
function extendProperty(name, method, options = {}) {
let {
partialArgs = []
} = options;
computedPropertyDescriptor.get = function () {
if (this.computed === null) {
this.computed = {};
} else if ((0, _hasOwn.default)(name, this.computed)) {
return this.computed[name];
}
let result = method.apply(this, partialArgs);
this.computed[name] = result;
return result;
};
Object.defineProperty(_Image.default.prototype, name, computedPropertyDescriptor);
return _Image.default;
}