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 / view-container / styles / styledSelector.js
Size: Mime:
"use strict";

Object.defineProperty(exports, "__esModule", {
  value: true
});
exports.withSelector = exports.decorateWithStyledSelector = exports.styledSelector = styledSelector;
exports.default = void 0;

var _exotic = require("exotic");

var _identifier = require("../../identifier");

// @note - this is a list of identifiers too... selectors tho
const matchAllNonWords = /\W+/g;
let count = 0;
let viewRegistry = new WeakMap();

function getCountFor(thisArg) {
  if (viewRegistry.has(thisArg)) {
    return viewRegistry.get(thisArg);
  } else {
    count += 1;
    viewRegistry.set(thisArg, count);
    return count;
  }
}

function getSelector() {
  const name = (0, _identifier.toComponentName)(this);
  let selector = name;

  if (!(0, _exotic.isNil)(this.props.selector)) {
    selector += '-' + this.props.selector + ' x';
  } // if (!isNil(this.props.key)) {
  //   selector += '-' + this.props.key + ' x'
  // }
  // encodeURIComponent(selector)


  selector = selector.replace(matchAllNonWords, '_');
  return selector + getCountFor(this);
}
/**
 * @description todo
 * @param {string} id id can be a string, or the Target class from decorator (decorator options vs none)
 * @return {Function | String | ClassDecorator}
 */


function styledSelector(id) {
  function extendTarget(Target) {
    // if (!hasPrototype(Target)) {
    //   // validate
    //   throw new Error('must pass in a class, passed in ' + JSON.stringify(Target))
    // }
    if ((0, _exotic.isFunction)(Target.getSelector)) {
      // already insantiated
      return Target;
    } // all react instances are frozen


    if (!Object.isExtensible(Target)) {
      return getSelector.call(Target, Target);
    } // on class


    if ((0, _exotic.isObj)(Target.prototype)) {
      Target.prototype.getSelector = getSelector;
    } // on instance & static


    Target.getSelector = getSelector;
    return Target;
  }

  if ((0, _exotic.isObj)(id)) {
    return extendTarget(id);
  } else {
    // if isString(id)
    return extendTarget;
  }
}

var _default = styledSelector;
exports.default = _default;