function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
var hasOwn = {}.hasOwnProperty;
export default function classNames() {
  var classes = '';
  for (var i = 0; i < arguments.length; i++) {
    var arg = arguments[i];
    if (arg) {
      classes = appendClass(classes, parseValue(arg));
    }
  }
  return classes;
}
function parseValue(arg) {
  if (typeof arg === 'string') {
    return arg.trim();
  }
  if (_typeof(arg) !== 'object') {
    return '';
  }
  if (Array.isArray(arg)) {
    return classNames.apply(null, arg);
  }
  if (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {
    return arg.toString();
  }
  var classes = '';
  for (var key in arg) {
    if (hasOwn.call(arg, key) && arg[key]) {
      classes = appendClass(classes, key);
    }
  }
  return classes;
}
function appendClass(value, newClass) {
  if (!newClass) {
    return value;
  }
  return value ? value + ' ' + newClass : newClass;
}