react-with-hoc
Version:
Work with React and HOCs (Higher-Order Components)
35 lines (34 loc) • 4.47 kB
JavaScript
;
var _react = require("react");
var _newHoc = require("../utils/newHoc");
/**
* adds a prop value to the component, the given value can not be override, which means the given value overrides others
* @see {@link withOverrides} {@link withFactory} {@link withDefault} {@link withDefaults}
* @example
* function CardWithIcon({ content, icon }: {
* content: string;
* icon: "star" | "heart" | ...;
* }) {
* return <>...</>
* }
* const StandardCard = withOverride("icon", "star")(CardWithIcon);
*
* <StandardCard content="some content" />
* // is equivalent to
* <CardWithIcon content="some content" icon="star" />
*
* // and
* <StandardCard content="some content" icon="heart" /> // ❌ is a typescript error, but even though
* // is equivalent to
* <CardWithIcon content="some content" icon="star" />
*/
const withOverride = exports.withOverride = (0, _newHoc.newHoc)(function withOverride(Component, propName, value) {
return function WithOverride(props) {
return /*#__PURE__*/_react.default.createElement(Component, {
...props,
[propName]: value
});
};
});
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJyZXF1aXJlIiwiX25ld0hvYyIsIndpdGhPdmVycmlkZSIsImV4cG9ydHMiLCJuZXdIb2MiLCJDb21wb25lbnQiLCJwcm9wTmFtZSIsInZhbHVlIiwiV2l0aE92ZXJyaWRlIiwicHJvcHMiLCJkZWZhdWx0IiwiY3JlYXRlRWxlbWVudCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9ob2NzL3dpdGhPdmVycmlkZS50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IENvbXBvbmVudFR5cGUsIEZ1bmN0aW9uQ29tcG9uZW50IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQge1xuICBIYXNBbGxQcm9wc0ZuLFxuICBJZlRoZW5GbixcbiAgSW50ZXJzZWN0aW9uRm4sXG4gIEtlZXBOZXZlcnNGbixcbiAgT21pdEZuLFxufSBmcm9tIFwiLi4vdHlwZXMvRm5cIjtcbmltcG9ydCB7IEhvYyB9IGZyb20gXCIuLi90eXBlcy9Ib2NcIjtcbmltcG9ydCB7IG5ld0hvYyB9IGZyb20gXCIuLi91dGlscy9uZXdIb2NcIjtcblxudHlwZSBXaXRoT3ZlcnJpZGVIb2MgPSA8UHJvcFZhbHVlLCBQcm9wTmFtZSBleHRlbmRzIHN0cmluZz4oXG4gIHByb3BOYW1lOiBQcm9wTmFtZSxcbiAgdmFsdWU6IFByb3BWYWx1ZSxcbikgPT4gSG9jPFxuICBbXG4gICAgSWZUaGVuRm48XG4gICAgICBIYXNBbGxQcm9wc0ZuPFByb3BOYW1lPixcbiAgICAgIFtcbiAgICAgICAgLi4uKFByb3BWYWx1ZSBleHRlbmRzICguLi5hcmdzOiBhbnlbXSkgPT4gYW55XG4gICAgICAgICAgPyBbXVxuICAgICAgICAgIDogW0ludGVyc2VjdGlvbkZuPFtQcm9wTmFtZSwgUHJvcFZhbHVlXT5dKSxcbiAgICAgICAgS2VlcE5ldmVyc0ZuPE9taXRGbjxQcm9wTmFtZT4+LFxuICAgICAgXVxuICAgID4sXG4gIF1cbj47XG5cbi8qKlxuICogYWRkcyBhIHByb3AgdmFsdWUgdG8gdGhlIGNvbXBvbmVudCwgdGhlIGdpdmVuIHZhbHVlIGNhbiBub3QgYmUgb3ZlcnJpZGUsIHdoaWNoIG1lYW5zIHRoZSBnaXZlbiB2YWx1ZSBvdmVycmlkZXMgb3RoZXJzXG4gKiBAc2VlIHtAbGluayB3aXRoT3ZlcnJpZGVzfSB7QGxpbmsgd2l0aEZhY3Rvcnl9IHtAbGluayB3aXRoRGVmYXVsdH0ge0BsaW5rIHdpdGhEZWZhdWx0c31cbiAqIEBleGFtcGxlXG4gKiBmdW5jdGlvbiBDYXJkV2l0aEljb24oeyBjb250ZW50LCBpY29uIH06IHtcbiAqICAgY29udGVudDogc3RyaW5nO1xuICogICBpY29uOiBcInN0YXJcIiB8IFwiaGVhcnRcIiB8IC4uLjtcbiAqIH0pIHtcbiAqICAgcmV0dXJuIDw+Li4uPC8+XG4gKiB9XG4gKiBjb25zdCBTdGFuZGFyZENhcmQgPSB3aXRoT3ZlcnJpZGUoXCJpY29uXCIsIFwic3RhclwiKShDYXJkV2l0aEljb24pO1xuICpcbiAqIDxTdGFuZGFyZENhcmQgY29udGVudD1cInNvbWUgY29udGVudFwiIC8+XG4gKiAvLyBpcyBlcXVpdmFsZW50IHRvXG4gKiA8Q2FyZFdpdGhJY29uIGNvbnRlbnQ9XCJzb21lIGNvbnRlbnRcIiBpY29uPVwic3RhclwiIC8+XG4gKlxuICogLy8gYW5kXG4gKiA8U3RhbmRhcmRDYXJkIGNvbnRlbnQ9XCJzb21lIGNvbnRlbnRcIiBpY29uPVwiaGVhcnRcIiAvPiAvLyDinYwgaXMgYSB0eXBlc2NyaXB0IGVycm9yLCBidXQgZXZlbiB0aG91Z2hcbiAqIC8vIGlzIGVxdWl2YWxlbnQgdG9cbiAqIDxDYXJkV2l0aEljb24gY29udGVudD1cInNvbWUgY29udGVudFwiIGljb249XCJzdGFyXCIgLz5cbiAqL1xuZXhwb3J0IGNvbnN0IHdpdGhPdmVycmlkZSA9IG5ld0hvYzxXaXRoT3ZlcnJpZGVIb2M+KGZ1bmN0aW9uIHdpdGhPdmVycmlkZShcbiAgQ29tcG9uZW50OiBDb21wb25lbnRUeXBlLFxuICBwcm9wTmFtZTogc3RyaW5nLFxuICB2YWx1ZTogYW55LFxuKTogRnVuY3Rpb25Db21wb25lbnQge1xuICByZXR1cm4gZnVuY3Rpb24gV2l0aE92ZXJyaWRlKHByb3BzOiBhbnkpOiBKU1guRWxlbWVudCB7XG4gICAgcmV0dXJuIDxDb21wb25lbnQgey4uLnByb3BzfSB7Li4ueyBbcHJvcE5hbWVdOiB2YWx1ZSB9fSAvPjtcbiAgfTtcbn0pO1xuIl0sIm1hcHBpbmdzIjoiOztBQUFBLElBQUFBLE1BQUEsR0FBQUMsT0FBQTtBQVNBLElBQUFDLE9BQUEsR0FBQUQsT0FBQTtBQW1CQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTyxNQUFNRSxZQUFZLEdBQUFDLE9BQUEsQ0FBQUQsWUFBQSxHQUFHLElBQUFFLGNBQU0sRUFBa0IsU0FBU0YsWUFBWUEsQ0FDdkVHLFNBQXdCLEVBQ3hCQyxRQUFnQixFQUNoQkMsS0FBVSxFQUNTO0VBQ25CLE9BQU8sU0FBU0MsWUFBWUEsQ0FBQ0MsS0FBVSxFQUFlO0lBQ3BELG9CQUFPVixNQUFBLENBQUFXLE9BQUEsQ0FBQUMsYUFBQSxDQUFDTixTQUFTO01BQUEsR0FBS0ksS0FBSztNQUFRLENBQUNILFFBQVEsR0FBR0M7SUFBSyxDQUFLLENBQUM7RUFDNUQsQ0FBQztBQUNILENBQUMsQ0FBQyJ9
//# sourceMappingURL=withOverride.js.map