react-inky
Version:
React components for Inky
45 lines (38 loc) • 1.31 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = getAttrs;
var _classnames = _interopRequireDefault(require("classnames"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
/**
* Compile attributes for a component's root element, based on its tag and default class name.
* @param {Object} props - Component props.
* @param {Array} excluded - List of excluded attributes.
* @param {String} className - Component root class name.
* @returns {Object} Filtered props.
*
* @example
* const props = {
* large: 6,
* small: 12,
* style: { background: 'white' },
* className: 'header'
* }
*
* // Only returns "style" and "className", because the other two are custom props
* // The class "header" is added to the base "row"
* const attrs = getAttrs(props, ['children'], 'row'); // => { style: ..., className: 'row header' }
* <table {...attrs}></table>
*/
function getAttrs(props, excluded, className = '') {
// Filter out attributes
const output = {};
for (const k in props) {
if (!excluded.includes(k)) {
output[k] = props[k];
}
} // Append class names in props to base classes
output.className = (0, _classnames.default)(className, props.className);
return output;
}