blob: e10b256b0374d34007606d84a21b5b6ee8c4a54a (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
"use strict";
/**
* Take any number of parameters and returns a space-concatenated string.
* If a parameter is a non-empty string, it's automatically added to the result.
* If a parameter is an object, for each entry, if the value is truthy, then the key
* is added to the result.
*
* For example: `classnames("hi", null, undefined, false, { foo: true, bar: false })` will
* return `"hi foo"`
*
*
* @param {...string|object} argss
* @returns String
*/
module.exports = function (...args) {
let className = "";
for (const arg of args) {
if (!arg) {
continue;
}
if (typeof arg == "string") {
className += " " + arg;
} else if (Object(arg) === arg) {
// We don't test that we have an Object literal, so we can be as fast as we can
for (const key in arg) {
if (arg[key]) {
className += " " + key;
}
}
}
}
return className.trim();
};
|