var str = 'style';
var obj = {
'style-2': true,
'style-3': false,
'style-4': true,
}
var arr = ['style-5', 'style-6']
const isArray = (value) => Array.isArray(value)
const isUndefined = (value) => typeof value === "undefined"
const isString = (value) => typeof value === "string"
const isNumber = (value) => !Number.isNaN(value) && typeof value === "number"
const isObject = (value) => !isArray(value) && value !== null && typeof value === "object"
function composeClass(...values) {
if (!values.length) {
return
}
const classNameStack = []
for (const value of values) {
switch (true) {
case !value: {
continue
}
case isString(value):
case isNumber(value): {
classNameStack.push(value)
continue
}
case isArray(value) && value.length > 0: {
const valueFromArray = Reflect.apply(composeClass, undefined, value)
if (!isUndefined(valueFromArray)) {
classNameStack.push(valueFromArray)
}
continue
}
case isObject(value): {
for (const key in value) {
if (value[key]) {
classNameStack.push(key)
}
}
continue
}
}
}
return classNameStack.length > 0 ? classNameStack.join(" ") : undefined
}