classNames.js 707 B

1234567891011121314151617181920212223242526
  1. import { isArray, isString, isObject } from './util';
  2. function classNames() {
  3. const classes = [];
  4. for (let i = 0; i < arguments.length; i++) {
  5. const value = i < 0 || arguments.length <= i ? undefined : arguments[i];
  6. if (!value) continue;
  7. if (isString(value)) {
  8. classes.push(value);
  9. } else if (isArray(value)) {
  10. for (let i = 0; i < value.length; i++) {
  11. const inner = classNames(value[i]);
  12. if (inner) {
  13. classes.push(inner);
  14. }
  15. }
  16. } else if (isObject(value)) {
  17. for (const name in value) {
  18. if (value[name]) {
  19. classes.push(name);
  20. }
  21. }
  22. }
  23. }
  24. return classes.join(' ');
  25. }
  26. export default classNames;