react-with-hoc
Version:
Work with React and HOCs (Higher-Order Components)
36 lines (35 loc) • 4.4 kB
JavaScript
;
var _react = require("react");
var _newHoc = require("../utils/newHoc");
/**
* adds default values to many props, so they can still receive values but they now have a default
* @see {@link withDefault} {@link withFactory} {@link withOverrides} {@link withOverride}
* @example
* function Card({ content, icon, border }: {
* content: string;
* icon: "star" | "heart" | ...;
* border: "none" | "dashed" | ...
* }) {
* return <>...</>
* }
* const StandardCard = withDefaults({icon: "star", border: "rounded"})(Card);
*
* <StandardCard content="some content" />
* // is equivalent to
* <CardWithIcon icon="star" border="rounded" content="some content" />
*
* // but
* <StandardCard content="some content" icon="heart" border="dashed" />
* // is equivalent to
* <CardWithIcon content="some content" icon="heart" border="dashed" /> // it propagates the new value
*/
const withDefaults = exports.withDefaults = (0, _newHoc.newHoc)(function withDefaults(Component, map) {
return function WithDefaults(props) {
return /*#__PURE__*/_react.default.createElement(Component, {
...map,
...props
});
};
});
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJyZXF1aXJlIiwiX25ld0hvYyIsIndpdGhEZWZhdWx0cyIsImV4cG9ydHMiLCJuZXdIb2MiLCJDb21wb25lbnQiLCJtYXAiLCJXaXRoRGVmYXVsdHMiLCJwcm9wcyIsImRlZmF1bHQiLCJjcmVhdGVFbGVtZW50Il0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2hvY3Mvd2l0aERlZmF1bHRzLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgQ29tcG9uZW50VHlwZSwgRnVuY3Rpb25Db21wb25lbnQgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IEZuLCBJbnRlcnNlY3Rpb25GbiwgUGlwZSwgU2V0T3B0aW9uYWxGbiwgVG9TY2hlbWEgfSBmcm9tIFwiLi4vdHlwZXMvRm5cIjtcbmltcG9ydCB7IEhvYyB9IGZyb20gXCIuLi90eXBlcy9Ib2NcIjtcbmltcG9ydCB7IG5ld0hvYyB9IGZyb20gXCIuLi91dGlscy9uZXdIb2NcIjtcblxuaW50ZXJmYWNlIFdpdGhEZWZhdWx0c0ZuPFNjaGVtYSBleHRlbmRzIFtzdHJpbmcgfCBudW1iZXIgfCBzeW1ib2wsIGFueV0+XG4gIGV4dGVuZHMgRm4ge1xuICByZXR1cm46IFBpcGU8XG4gICAgdGhpc1tcImFyZzBcIl0sXG4gICAgW0ludGVyc2VjdGlvbkZuPFNjaGVtYT4sIFNldE9wdGlvbmFsRm48U2NoZW1hWzBdPl1cbiAgPjtcbn1cblxudHlwZSBXaXRoRGVmYXVsdHNIb2MgPSA8TWFwIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4+KFxuICBtYXA6IE1hcCxcbikgPT4gSG9jPFtXaXRoRGVmYXVsdHNGbjxUb1NjaGVtYTxNYXA+Pl0+O1xuXG4vKipcbiAqIGFkZHMgZGVmYXVsdCB2YWx1ZXMgdG8gbWFueSBwcm9wcywgc28gdGhleSBjYW4gc3RpbGwgcmVjZWl2ZSB2YWx1ZXMgYnV0IHRoZXkgbm93IGhhdmUgYSBkZWZhdWx0XG4gKiBAc2VlIHtAbGluayB3aXRoRGVmYXVsdH0ge0BsaW5rIHdpdGhGYWN0b3J5fSB7QGxpbmsgd2l0aE92ZXJyaWRlc30ge0BsaW5rIHdpdGhPdmVycmlkZX1cbiAqIEBleGFtcGxlXG4gKiBmdW5jdGlvbiBDYXJkKHsgY29udGVudCwgaWNvbiwgYm9yZGVyIH06IHtcbiAqICAgY29udGVudDogc3RyaW5nO1xuICogICBpY29uOiBcInN0YXJcIiB8IFwiaGVhcnRcIiB8IC4uLjtcbiAqICAgYm9yZGVyOiBcIm5vbmVcIiB8IFwiZGFzaGVkXCIgfCAuLi5cbiAqIH0pIHtcbiAqICAgcmV0dXJuIDw+Li4uPC8+XG4gKiB9XG4gKiBjb25zdCBTdGFuZGFyZENhcmQgPSB3aXRoRGVmYXVsdHMoe2ljb246IFwic3RhclwiLCBib3JkZXI6IFwicm91bmRlZFwifSkoQ2FyZCk7XG4gKlxuICogPFN0YW5kYXJkQ2FyZCBjb250ZW50PVwic29tZSBjb250ZW50XCIgLz5cbiAqIC8vIGlzIGVxdWl2YWxlbnQgdG9cbiAqIDxDYXJkV2l0aEljb24gaWNvbj1cInN0YXJcIiBib3JkZXI9XCJyb3VuZGVkXCIgY29udGVudD1cInNvbWUgY29udGVudFwiIC8+XG4gKlxuICogLy8gYnV0XG4gKiA8U3RhbmRhcmRDYXJkIGNvbnRlbnQ9XCJzb21lIGNvbnRlbnRcIiBpY29uPVwiaGVhcnRcIiBib3JkZXI9XCJkYXNoZWRcIiAvPlxuICogLy8gaXMgZXF1aXZhbGVudCB0b1xuICogPENhcmRXaXRoSWNvbiBjb250ZW50PVwic29tZSBjb250ZW50XCIgaWNvbj1cImhlYXJ0XCIgYm9yZGVyPVwiZGFzaGVkXCIgLz4gLy8gaXQgcHJvcGFnYXRlcyB0aGUgbmV3IHZhbHVlXG4gKi9cbmV4cG9ydCBjb25zdCB3aXRoRGVmYXVsdHMgPSBuZXdIb2M8V2l0aERlZmF1bHRzSG9jPihmdW5jdGlvbiB3aXRoRGVmYXVsdHMoXG4gIENvbXBvbmVudDogQ29tcG9uZW50VHlwZSxcbiAgbWFwOiBvYmplY3QsXG4pOiBGdW5jdGlvbkNvbXBvbmVudCB7XG4gIHJldHVybiBmdW5jdGlvbiBXaXRoRGVmYXVsdHMocHJvcHM6IG9iamVjdCk6IEpTWC5FbGVtZW50IHtcbiAgICByZXR1cm4gPENvbXBvbmVudCB7Li4ubWFwfSB7Li4ucHJvcHN9IC8+O1xuICB9O1xufSk7XG4iXSwibWFwcGluZ3MiOiI7O0FBQUEsSUFBQUEsTUFBQSxHQUFBQyxPQUFBO0FBR0EsSUFBQUMsT0FBQSxHQUFBRCxPQUFBO0FBY0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTyxNQUFNRSxZQUFZLEdBQUFDLE9BQUEsQ0FBQUQsWUFBQSxHQUFHLElBQUFFLGNBQU0sRUFBa0IsU0FBU0YsWUFBWUEsQ0FDdkVHLFNBQXdCLEVBQ3hCQyxHQUFXLEVBQ1E7RUFDbkIsT0FBTyxTQUFTQyxZQUFZQSxDQUFDQyxLQUFhLEVBQWU7SUFDdkQsb0JBQU9ULE1BQUEsQ0FBQVUsT0FBQSxDQUFBQyxhQUFBLENBQUNMLFNBQVM7TUFBQSxHQUFLQyxHQUFHO01BQUEsR0FBTUU7SUFBSyxDQUFHLENBQUM7RUFDMUMsQ0FBQztBQUNILENBQUMsQ0FBQyJ9
//# sourceMappingURL=withDefaults.js.map