@hitachivantara/uikit-react-utils
Version:
UI Kit utilities package.
41 lines (40 loc) • 1.27 kB
JavaScript
;
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
const react = require("react");
const useCss = require("./useCss.cjs");
const useTheme = require("./useTheme.cjs");
function filterProps(props) {
return Object.keys(props).reduce((acc, key) => {
if (props[key] !== void 0) {
acc[key] = props[key];
}
return acc;
}, {});
}
function useDefaultProps(componentName, props) {
const { activeTheme } = useTheme.useTheme();
const { css, cx } = useCss.useCss();
const themeDefaultProps = activeTheme?.components?.[componentName];
const classes = react.useMemo(() => {
const themeClasses = themeDefaultProps?.classes || {};
const propsClasses = props?.classes || {};
const classKeys = [
...Object.keys(themeClasses),
...Object.keys(propsClasses)
];
if (classKeys.length === 0) return void 0;
return classKeys.reduce((acc, key) => {
acc[key] = cx(
themeClasses[key] && css(themeClasses[key]),
propsClasses[key]
);
return acc;
}, {});
}, [css, cx, props?.classes, themeDefaultProps?.classes]);
return {
...themeDefaultProps,
...filterProps(props),
...classes && { classes }
};
}
exports.useDefaultProps = useDefaultProps;