UNPKG

react-inky

Version:
45 lines (38 loc) 1.31 kB
"use strict"; 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; }