@uploadcare/file-uploader
Version:
Building blocks for Uploadcare products integration
35 lines (29 loc) • 718 B
JavaScript
function normalize(...args) {
return args.reduce((result, arg) => {
if (typeof arg === 'string') {
result[arg] = true;
return result;
}
for (let token of Object.keys(arg)) {
result[token] = arg[token];
}
return result;
}, {});
}
export function classNames(...args) {
let mapping = normalize(...args);
return Object.keys(mapping)
.reduce((result, token) => {
if (mapping[token]) {
result.push(token);
}
return result;
}, [])
.join(' ');
}
export function applyClassNames(element, ...args) {
let mapping = normalize(...args);
for (let token of Object.keys(mapping)) {
element.classList.toggle(token, mapping[token]);
}
}