28 lines
		
	
	
		
			668 B
		
	
	
	
		
			TypeScript
		
	
	
			
		
		
	
	
			28 lines
		
	
	
		
			668 B
		
	
	
	
		
			TypeScript
		
	
	
| import { isArray, isString, isObject } from './util';
 | |
| function classNames(...args: any[]) {
 | |
|   const classes = [];
 | |
|   for (let i = 0; i < args.length; i++) {
 | |
|     const value = args[i];
 | |
|     if (!value) continue;
 | |
|     if (isString(value)) {
 | |
|       classes.push(value);
 | |
|     } else if (isArray(value)) {
 | |
|       for (let i = 0; i < value.length; i++) {
 | |
|         const inner = classNames(value[i]);
 | |
|         if (inner) {
 | |
|           classes.push(inner);
 | |
|         }
 | |
|       }
 | |
|     } else if (isObject(value)) {
 | |
|       for (const name in value) {
 | |
|         if (value[name]) {
 | |
|           classes.push(name);
 | |
|         }
 | |
|       }
 | |
|     }
 | |
|   }
 | |
|   return classes.join(' ');
 | |
| }
 | |
| 
 | |
| export default classNames;
 |