@tohuhono/puck-rich-text
Version:
A puck component for rich text editing made for OberonCMS
34 lines (33 loc) • 956 B
JavaScript
import classnames from "classnames";
const getClassNameFactory = (rootClass, styles, { baseClass = "" } = {}) => (options = {}) => {
let descendant = false;
let modifiers = false;
if (typeof options === "string") {
descendant = options;
} else if (typeof options === "object") {
modifiers = options;
}
if (descendant) {
const style = styles[`${rootClass}-${descendant}`];
if (style) {
return baseClass + styles[`${rootClass}-${descendant}`] || "";
}
return "";
} else if (modifiers) {
const prefixedModifiers = {};
for (const modifier in modifiers) {
prefixedModifiers[styles[`${rootClass}--${modifier}`]] = modifiers[modifier];
}
const c = styles[rootClass];
return baseClass + classnames({
[c]: !!c,
// only apply the class if it exists
...prefixedModifiers
});
} else {
return baseClass + styles[rootClass] || "";
}
};
export {
getClassNameFactory
};