Code coverage report for imgly-sdk-html5/src/js/lib/extend.js

Statements: 86.36% (19 / 22)      Branches: 62.5% (5 / 8)      Functions: 100% (3 / 3)      Lines: 86.36% (19 / 22)      Ignored: none     

All files » imgly-sdk-html5/src/js/lib/ » extend.js
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70                                        1   1 1         1     1 20         1 1 1   1               1 1   1 1       1 1 1           1   1    
/*
 * 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==