Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
@skava/modules / ___dist / identifier / decorateWithIdentity.js
Size: Mime:
"use strict";

Object.defineProperty(exports, "__esModule", {
  value: true
});
exports.decorateWithIdentifier = decorateWithIdentifier;

var _index = require("../chain-able/index.js");

var _exotic = require("../exotic");

var _decorateComponentStatics = _interopRequireDefault(require("../observable-utils/deps/decorateComponentStatics"));

var _toIdentifier = _interopRequireDefault(require("./toIdentifier"));

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

/* eslint-disable max-statements */

/* eslint-disable brace-style */

/* @lint ^ 1 is for tests, 1 is for readable long conditionals */
// import decorateComponentStatics from './decorateComponentStatics'
// @todo remove
// local
// @alias stamp
const CLASS_IDENTIFIER = Symbol.for('@@classidentifier');
const INSTANCE_IDENTIFIER = Symbol.for('@@instanceidentifier');
/**
 * @description defines 2 symbols on a class for unique identifiers
 *              based on class & instance
 *              allowing id gen & weakmap scope for multi-instance context
 * @param {React.Component} Target
 * @return {React.Component}
 */

function decorateWithIdentifier(Target) {
  const classIdentifier = (0, _toIdentifier.default)(Target);
  let Identity = class Identity extends Target {
    constructor(...args) {
      super(...args);
      const instanceIdentifier = (0, _toIdentifier.default)(Target);

      if ((0, _exotic.hasOwnProp)(this, Symbol.toPrimitive) === false) {
        (0, _index.defineFinal)(Identity, Symbol.toPrimitive, (0, _index.always)(instanceIdentifier));
      }

      (0, _index.defineFinal)(Identity, INSTANCE_IDENTIFIER, instanceIdentifier);
      return this;
    }

  };
  (0, _decorateComponentStatics.default)(Identity, Target);
  (0, _index.defineFinal)(Identity, CLASS_IDENTIFIER, classIdentifier);
  return Identity;
}