in js/vnext/projection/common.js [25:57]
export function normalizeClasses(classes, context) {
if (_.isArray(classes)) {
return classes;
} else if (_.isString(classes)) {
return classes.split(/\s+/);
} else if (_.isFunction(classes)) {
return classes(context);
} else if (_.isObject(classes)) {
return _.chain(classes)
.pairs()
.filter(([, value]) => {
/**
* A boolean or a callback to decide whether or not a class is applied.
* When it's a function, it takes the context and return a boolean.
* @typedef ClassPredicate
* @type {(boolean|ClassPredicateCallback)}
*/
const isFunc = _.isFunction(value);
/**
* @callback ClassPredicateCallback
* @param {Object} context
* Refer to the `context` of {@link normalizeClasses}.
* @return {boolean}
* Whether or not the class is applied.
*/
return (isFunc && value(context)) || (!isFunc && Boolean(value));
})
.map(([key]) => key)
.value();
}
return [];
}