/*
* Photo Editor SDK - photoeditorsdk.com
* Copyright (c) 2013-2015 9elements GmbH
*
* Released under Attribution-NonCommercial 3.0 Unported
* http://creativecommons.org/licenses/by-nc/3.0/
*
* For commercial use, please contact us at contact@9elements.com
*/
/**
* Helper function to correctly set up the prototype chain
* Based on the backbone.js extend function:
* https://github.com/jashkenas/backbone/blob/master/backbone.js
* @param {Object} prototypeProperties
* @param {Object} classProperties
* @return {Object}
*/
'use strict';
module.exports = function (prototypeProperties, classProperties) {
/*jshint validthis:true*/
var parent = this;
var child;
// The constructor function for the new subclass is either defined by you
// (the 'constructor' property in your `extend` definition), or defaulted
// by us to simply call the parent's constructor.
Iif (prototypeProperties && prototypeProperties.hasOwnProperty('constructor')) {
child = prototypeProperties.constructor;
} else {
child = function () {
return parent.apply(this, arguments);
};
}
// Add static properties to the constructor function, if supplied.
var key;
for (key in parent) {
child[key] = parent[key];
}
Iif (typeof classProperties !== 'undefined') {
for (key in classProperties) {
child[key] = classProperties[key];
}
}
// Set the prototype chain to inherit from `parent`, without calling
// `parent`'s constructor function.
var Surrogate = function Surrogate() {
this.constructor = child;
};
Surrogate.prototype = parent.prototype;
child.prototype = new Surrogate();
// Add prototype properties (instance properties) to the subclass,
// if supplied.
Eif (prototypeProperties) {
for (key in prototypeProperties) {
child.prototype[key] = prototypeProperties[key];
}
}
// Set a convenience property in case the parent's prototype is needed
// later.
child.__super__ = parent.prototype;
return child;
};
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9yb290L1NFUlZFUi9pbWdseS1zZGstaHRtbDUvc3JjL2pzL2xpYi9leHRlbmQuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFrQkEsTUFBTSxDQUFDLE9BQU8sR0FBRyxVQUFVLG1CQUFtQixFQUFFLGVBQWUsRUFBRTs7QUFFL0QsTUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFBO0FBQ2pCLE1BQUksS0FBSyxDQUFBOzs7OztBQUtULE1BQUksbUJBQW1CLElBQUksbUJBQW1CLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxFQUFFO0FBQzVFLFNBQUssR0FBRyxtQkFBbUIsQ0FBQyxXQUFXLENBQUE7R0FDeEMsTUFBTTtBQUNMLFNBQUssR0FBRyxZQUFZO0FBQUUsYUFBTyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQTtLQUFFLENBQUE7R0FDN0Q7OztBQUdELE1BQUksR0FBRyxDQUFBO0FBQ1AsT0FBSyxHQUFHLElBQUksTUFBTSxFQUFFO0FBQ2xCLFNBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUE7R0FDekI7QUFDRCxNQUFJLE9BQU8sZUFBZSxLQUFLLFdBQVcsRUFBRTtBQUMxQyxTQUFLLEdBQUcsSUFBSSxlQUFlLEVBQUU7QUFDM0IsV0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQTtLQUNsQztHQUNGOzs7O0FBSUQsTUFBSSxTQUFTLEdBQUcsU0FBWixTQUFTLEdBQWU7QUFBRSxRQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQTtHQUFFLENBQUE7QUFDeEQsV0FBUyxDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFBO0FBQ3RDLE9BQUssQ0FBQyxTQUFTLEdBQUcsSUFBSSxTQUFTLEVBQUUsQ0FBQTs7OztBQUlqQyxNQUFJLG1CQUFtQixFQUFFO0FBQ3ZCLFNBQUssR0FBRyxJQUFJLG1CQUFtQixFQUFFO0FBQy9CLFdBQUssQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEdBQUcsbUJBQW1CLENBQUMsR0FBRyxDQUFDLENBQUE7S0FDaEQ7R0FDRjs7OztBQUlELE9BQUssQ0FBQyxTQUFTLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQTs7QUFFbEMsU0FBTyxLQUFLLENBQUE7Q0FDYixDQUFBIiwiZmlsZSI6Ii9yb290L1NFUlZFUi9pbWdseS1zZGstaHRtbDUvc3JjL2pzL2xpYi9leHRlbmQuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogUGhvdG8gRWRpdG9yIFNESyAtIHBob3RvZWRpdG9yc2RrLmNvbVxuICogQ29weXJpZ2h0IChjKSAyMDEzLTIwMTUgOWVsZW1lbnRzIEdtYkhcbiAqXG4gKiBSZWxlYXNlZCB1bmRlciBBdHRyaWJ1dGlvbi1Ob25Db21tZXJjaWFsIDMuMCBVbnBvcnRlZFxuICogaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbGljZW5zZXMvYnktbmMvMy4wL1xuICpcbiAqIEZvciBjb21tZXJjaWFsIHVzZSwgcGxlYXNlIGNvbnRhY3QgdXMgYXQgY29udGFjdEA5ZWxlbWVudHMuY29tXG4gKi9cblxuLyoqXG4gKiBIZWxwZXIgZnVuY3Rpb24gdG8gY29ycmVjdGx5IHNldCB1cCB0aGUgcHJvdG90eXBlIGNoYWluXG4gKiBCYXNlZCBvbiB0aGUgYmFja2JvbmUuanMgZXh0ZW5kIGZ1bmN0aW9uOlxuICogaHR0cHM6Ly9naXRodWIuY29tL2phc2hrZW5hcy9iYWNrYm9uZS9ibG9iL21hc3Rlci9iYWNrYm9uZS5qc1xuICogQHBhcmFtICB7T2JqZWN0fSBwcm90b3R5cGVQcm9wZXJ0aWVzXG4gKiBAcGFyYW0gIHtPYmplY3R9IGNsYXNzUHJvcGVydGllc1xuICogQHJldHVybiB7T2JqZWN0fVxuICovXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChwcm90b3R5cGVQcm9wZXJ0aWVzLCBjbGFzc1Byb3BlcnRpZXMpIHtcbiAgLypqc2hpbnQgdmFsaWR0aGlzOnRydWUqL1xuICB2YXIgcGFyZW50ID0gdGhpc1xuICB2YXIgY2hpbGRcblxuICAvLyBUaGUgY29uc3RydWN0b3IgZnVuY3Rpb24gZm9yIHRoZSBuZXcgc3ViY2xhc3MgaXMgZWl0aGVyIGRlZmluZWQgYnkgeW91XG4gIC8vICh0aGUgJ2NvbnN0cnVjdG9yJyBwcm9wZXJ0eSBpbiB5b3VyIGBleHRlbmRgIGRlZmluaXRpb24pLCBvciBkZWZhdWx0ZWRcbiAgLy8gYnkgdXMgdG8gc2ltcGx5IGNhbGwgdGhlIHBhcmVudCdzIGNvbnN0cnVjdG9yLlxuICBpZiAocHJvdG90eXBlUHJvcGVydGllcyAmJiBwcm90b3R5cGVQcm9wZXJ0aWVzLmhhc093blByb3BlcnR5KCdjb25zdHJ1Y3RvcicpKSB7XG4gICAgY2hpbGQgPSBwcm90b3R5cGVQcm9wZXJ0aWVzLmNvbnN0cnVjdG9yXG4gIH0gZWxzZSB7XG4gICAgY2hpbGQgPSBmdW5jdGlvbiAoKSB7IHJldHVybiBwYXJlbnQuYXBwbHkodGhpcywgYXJndW1lbnRzKSB9XG4gIH1cblxuICAvLyBBZGQgc3RhdGljIHByb3BlcnRpZXMgdG8gdGhlIGNvbnN0cnVjdG9yIGZ1bmN0aW9uLCBpZiBzdXBwbGllZC5cbiAgdmFyIGtleVxuICBmb3IgKGtleSBpbiBwYXJlbnQpIHtcbiAgICBjaGlsZFtrZXldID0gcGFyZW50W2tleV1cbiAgfVxuICBpZiAodHlwZW9mIGNsYXNzUHJvcGVydGllcyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICBmb3IgKGtleSBpbiBjbGFzc1Byb3BlcnRpZXMpIHtcbiAgICAgIGNoaWxkW2tleV0gPSBjbGFzc1Byb3BlcnRpZXNba2V5XVxuICAgIH1cbiAgfVxuXG4gIC8vIFNldCB0aGUgcHJvdG90eXBlIGNoYWluIHRvIGluaGVyaXQgZnJvbSBgcGFyZW50YCwgd2l0aG91dCBjYWxsaW5nXG4gIC8vIGBwYXJlbnRgJ3MgY29uc3RydWN0b3IgZnVuY3Rpb24uXG4gIHZhciBTdXJyb2dhdGUgPSBmdW5jdGlvbiAoKSB7IHRoaXMuY29uc3RydWN0b3IgPSBjaGlsZCB9XG4gIFN1cnJvZ2F0ZS5wcm90b3R5cGUgPSBwYXJlbnQucHJvdG90eXBlXG4gIGNoaWxkLnByb3RvdHlwZSA9IG5ldyBTdXJyb2dhdGUoKVxuXG4gIC8vIEFkZCBwcm90b3R5cGUgcHJvcGVydGllcyAoaW5zdGFuY2UgcHJvcGVydGllcykgdG8gdGhlIHN1YmNsYXNzLFxuICAvLyBpZiBzdXBwbGllZC5cbiAgaWYgKHByb3RvdHlwZVByb3BlcnRpZXMpIHtcbiAgICBmb3IgKGtleSBpbiBwcm90b3R5cGVQcm9wZXJ0aWVzKSB7XG4gICAgICBjaGlsZC5wcm90b3R5cGVba2V5XSA9IHByb3RvdHlwZVByb3BlcnRpZXNba2V5XVxuICAgIH1cbiAgfVxuXG4gIC8vIFNldCBhIGNvbnZlbmllbmNlIHByb3BlcnR5IGluIGNhc2UgdGhlIHBhcmVudCdzIHByb3RvdHlwZSBpcyBuZWVkZWRcbiAgLy8gbGF0ZXIuXG4gIGNoaWxkLl9fc3VwZXJfXyA9IHBhcmVudC5wcm90b3R5cGVcblxuICByZXR1cm4gY2hpbGRcbn1cbiJdfQ== |