rsuite
Version:
A suite of react components
51 lines (46 loc) • 1.53 kB
JavaScript
'use client';
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
exports.__esModule = true;
exports.omitBoxProps = exports.extractBoxProps = void 0;
var _camelCase = _interopRequireDefault(require("lodash/camelCase"));
var _cssAlias = require("../styled-system/css-alias");
var _cssProperties = require("../styled-system/css-properties");
const boxPropKeys = new Set(_cssProperties.supportedCSSProperties);
Object.entries(_cssAlias.cssSystemPropAlias).forEach(([key, prop]) => {
boxPropKeys.add(key);
boxPropKeys.add((0, _camelCase.default)(prop.property));
});
const isBoxProp = key => boxPropKeys.has(key);
/**
* Extract box properties from props
* @param props Original props object
* @returns Object containing only box properties
*/
const extractBoxProps = props => {
const boxProps = {};
// Extract only box related properties
Object.keys(props).forEach(key => {
if (isBoxProp(key) && props[key] !== undefined) {
boxProps[key] = props[key];
}
});
return boxProps;
};
/**
* Filter out layout properties from props
* @param props Original props object
* @returns New object without layout properties
*/
exports.extractBoxProps = extractBoxProps;
const omitBoxProps = props => {
const filteredProps = {};
// Copy all properties except box related ones
Object.keys(props).forEach(key => {
if (!isBoxProp(key)) {
filteredProps[key] = props[key];
}
});
return filteredProps;
};
exports.omitBoxProps = omitBoxProps;