classNames.js 927 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. /*!
  2. Copyright (c) 2018 Jed Watson.
  3. Licensed under the MIT License (MIT), see
  4. http://jedwatson.github.io/classnames
  5. */
  6. /* global define */
  7. var hasOwn = {}.hasOwnProperty;
  8. function classNames() {
  9. var classes = [];
  10. for (var i = 0; i < arguments.length; i++) {
  11. var arg = arguments[i];
  12. if (!arg) continue;
  13. var argType = typeof arg;
  14. if (argType === 'string' || argType === 'number') {
  15. classes.push(arg);
  16. } else if (Array.isArray(arg) && arg.length) {
  17. var inner = classNames.apply(null, arg);
  18. if (inner) {
  19. classes.push(inner);
  20. }
  21. } else if (argType === 'object') {
  22. for (var key in arg) {
  23. if (hasOwn.call(arg, key) && arg[key]) {
  24. classes.push(key);
  25. }
  26. }
  27. }
  28. }
  29. return classes.join(' ');
  30. }
  31. export default classNames