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 / deps / createElementWithClassName.js
Size: Mime:
"use strict";

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

var _react = _interopRequireDefault(require("react"));

var _exotic = require("exotic");

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

function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }

function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }

// @see https://reactjs.org/docs/react-api.html#isvalidelement
function createElementWithClassName(tagName, className = 'NOCLASS', displayName) {
  // we actually DO NOT WANT THIS camelCase(className)
  const name = displayName || className || `CreatedWithClass<${tagName}>`;

  if ((0, _exotic.isString)(tagName) === false && _react.default.isValidElement(tagName) === false) {
    console.log({
      tagName,
      className
    });
    throw new Error(`createElementWithClassName with ${tagName}.${className} is not valid`);
  } // @TODO support activeclass as toggle + selectorless


  const factory = props => {
    // combine custom className if any
    const finalClassName = [className, props.className].join(' ');

    const creation = _react.default.createElement(tagName, _objectSpread({
      // displayName: name,
      className: finalClassName
    }, props)); // creation.displayName = displayName || 'CreatedWithClass'


    return creation;
  };

  factory.displayName = name;
  return factory; // const factory = React.createFactory(tagName, { className })
  // if (displayName) {
  //   factory.name = displayName
  // }
  // return factory
  // return function(props) {
  //   return factory({ , ...props })
  // }
}

var _default = createElementWithClassName;
exports.default = _default;