UNPKG

react-with-hoc

Version:

Work with React and HOCs (Higher-Order Components)

36 lines (35 loc) 4.4 kB
"use strict"; 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