UNPKG

react-with-hoc

Version:

Work with React and HOCs (Higher-Order Components)

33 lines 4.18 kB
import React from "react"; import { newHoc } from "../utils/newHoc"; /** * adds default value to a prop, so it can still receive a value but it now has a default one * @see {@link withDefaults} {@link withFactory} {@link withOverride} {@link withOverrides} * @example * function CardWithIcon({ content, icon }: { * content: string; * icon: "star" | "heart" | ...; * }) { * return <>...</> * } * const StandardCard = withDefault("icon", "star")(CardWithIcon); * * <StandardCard content="some content" /> * // is equivalent to * <CardWithIcon icon="star" content="some content" /> * * // but * <StandardCard content="some content" icon="heart" /> * // is equivalent to * <CardWithIcon content="some content" icon="heart" /> // it propagates the new value */ export const withDefault = newHoc(function withDefault(Component, propName, value) { return function WithDefault(props) { return /*#__PURE__*/React.createElement(Component, { [propName]: value, ...props }); }; }); //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIm5ld0hvYyIsIndpdGhEZWZhdWx0IiwiQ29tcG9uZW50IiwicHJvcE5hbWUiLCJ2YWx1ZSIsIldpdGhEZWZhdWx0IiwicHJvcHMiLCJjcmVhdGVFbGVtZW50Il0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2hvY3Mvd2l0aERlZmF1bHQudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyBDb21wb25lbnRUeXBlLCBGdW5jdGlvbkNvbXBvbmVudCB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHtcbiAgSGFzQWxsUHJvcHNGbixcbiAgSWZUaGVuRm4sXG4gIEludGVyc2VjdGlvbkZuLFxuICBTZXRPcHRpb25hbEZuLFxufSBmcm9tIFwiLi4vdHlwZXMvRm5cIjtcbmltcG9ydCB7IEhvYyB9IGZyb20gXCIuLi90eXBlcy9Ib2NcIjtcbmltcG9ydCB7IG5ld0hvYyB9IGZyb20gXCIuLi91dGlscy9uZXdIb2NcIjtcblxudHlwZSBXaXRoRGVmYXVsdEhvYyA9IDxQcm9wVmFsdWUsIFByb3BOYW1lIGV4dGVuZHMgc3RyaW5nPihcbiAgcHJvcE5hbWU6IFByb3BOYW1lLFxuICB2YWx1ZTogUHJvcFZhbHVlLFxuKSA9PiBIb2M8XG4gIFtcbiAgICBJZlRoZW5GbjxcbiAgICAgIEhhc0FsbFByb3BzRm48UHJvcE5hbWU+LFxuICAgICAgW1xuICAgICAgICAuLi4oUHJvcFZhbHVlIGV4dGVuZHMgKC4uLmFyZ3M6IGFueVtdKSA9PiBhbnlcbiAgICAgICAgICA/IFtdXG4gICAgICAgICAgOiBbSW50ZXJzZWN0aW9uRm48W1Byb3BOYW1lLCBQcm9wVmFsdWVdPl0pLFxuICAgICAgICBTZXRPcHRpb25hbEZuPFByb3BOYW1lPixcbiAgICAgIF1cbiAgICA+LFxuICBdXG4+O1xuXG4vKipcbiAqIGFkZHMgZGVmYXVsdCB2YWx1ZSB0byBhIHByb3AsIHNvIGl0IGNhbiBzdGlsbCByZWNlaXZlIGEgdmFsdWUgYnV0IGl0IG5vdyBoYXMgYSBkZWZhdWx0IG9uZVxuICogQHNlZSB7QGxpbmsgd2l0aERlZmF1bHRzfSB7QGxpbmsgd2l0aEZhY3Rvcnl9IHtAbGluayB3aXRoT3ZlcnJpZGV9IHtAbGluayB3aXRoT3ZlcnJpZGVzfVxuICogQGV4YW1wbGVcbiAqIGZ1bmN0aW9uIENhcmRXaXRoSWNvbih7IGNvbnRlbnQsIGljb24gfToge1xuICogICBjb250ZW50OiBzdHJpbmc7XG4gKiAgIGljb246IFwic3RhclwiIHwgXCJoZWFydFwiIHwgLi4uO1xuICogfSkge1xuICogICByZXR1cm4gPD4uLi48Lz5cbiAqIH1cbiAqIGNvbnN0IFN0YW5kYXJkQ2FyZCA9IHdpdGhEZWZhdWx0KFwiaWNvblwiLCBcInN0YXJcIikoQ2FyZFdpdGhJY29uKTtcbiAqXG4gKiA8U3RhbmRhcmRDYXJkIGNvbnRlbnQ9XCJzb21lIGNvbnRlbnRcIiAvPlxuICogLy8gaXMgZXF1aXZhbGVudCB0b1xuICogPENhcmRXaXRoSWNvbiBpY29uPVwic3RhclwiIGNvbnRlbnQ9XCJzb21lIGNvbnRlbnRcIiAvPlxuICpcbiAqIC8vIGJ1dFxuICogPFN0YW5kYXJkQ2FyZCBjb250ZW50PVwic29tZSBjb250ZW50XCIgaWNvbj1cImhlYXJ0XCIgLz5cbiAqIC8vIGlzIGVxdWl2YWxlbnQgdG9cbiAqIDxDYXJkV2l0aEljb24gY29udGVudD1cInNvbWUgY29udGVudFwiIGljb249XCJoZWFydFwiIC8+IC8vIGl0IHByb3BhZ2F0ZXMgdGhlIG5ldyB2YWx1ZVxuICovXG5leHBvcnQgY29uc3Qgd2l0aERlZmF1bHQgPSBuZXdIb2M8V2l0aERlZmF1bHRIb2M+KGZ1bmN0aW9uIHdpdGhEZWZhdWx0KFxuICBDb21wb25lbnQ6IENvbXBvbmVudFR5cGUsXG4gIHByb3BOYW1lOiBzdHJpbmcsXG4gIHZhbHVlOiBhbnksXG4pOiBGdW5jdGlvbkNvbXBvbmVudCB7XG4gIHJldHVybiBmdW5jdGlvbiBXaXRoRGVmYXVsdChwcm9wczogYW55KTogSlNYLkVsZW1lbnQge1xuICAgIHJldHVybiA8Q29tcG9uZW50IHsuLi57IFtwcm9wTmFtZV06IHZhbHVlIH19IHsuLi5wcm9wc30gLz47XG4gIH07XG59KTtcbiJdLCJtYXBwaW5ncyI6IkFBQUEsT0FBT0EsS0FBSyxNQUE0QyxPQUFPO0FBUS9ELFNBQVNDLE1BQU0sUUFBUSxpQkFBaUI7QUFtQnhDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU8sTUFBTUMsV0FBVyxHQUFHRCxNQUFNLENBQWlCLFNBQVNDLFdBQVdBLENBQ3BFQyxTQUF3QixFQUN4QkMsUUFBZ0IsRUFDaEJDLEtBQVUsRUFDUztFQUNuQixPQUFPLFNBQVNDLFdBQVdBLENBQUNDLEtBQVUsRUFBZTtJQUNuRCxvQkFBT1AsS0FBQSxDQUFBUSxhQUFBLENBQUNMLFNBQVM7TUFBTyxDQUFDQyxRQUFRLEdBQUdDLEtBQUs7TUFBQSxHQUFRRTtJQUFLLENBQUcsQ0FBQztFQUM1RCxDQUFDO0FBQ0gsQ0FBQyxDQUFDIn0= //# sourceMappingURL=withDefault.js.map