classNames.js 940 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. 'use strict';
  8. var hasOwn = {}.hasOwnProperty;
  9. function classNames() {
  10. var classes = [];
  11. for (var i = 0; i < arguments.length; i++) {
  12. var arg = arguments[i];
  13. if (!arg) continue;
  14. var argType = typeof arg;
  15. if (argType === 'string' || argType === 'number') {
  16. classes.push(arg);
  17. } else if (Array.isArray(arg) && arg.length) {
  18. var inner = classNames.apply(null, arg);
  19. if (inner) {
  20. classes.push(inner);
  21. }
  22. } else if (argType === 'object') {
  23. for (var key in arg) {
  24. if (hasOwn.call(arg, key) && arg[key]) {
  25. classes.push(key);
  26. }
  27. }
  28. }
  29. }
  30. return classes.join(' ');
  31. }
  32. export default classNames