react-with-hoc
Version:
Work with React and HOCs (Higher-Order Components)
35 lines (34 loc) • 4.34 kB
JavaScript
;
var _react = require("react");
var _newHoc = require("../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
*/
const withDefault = exports.withDefault = (0, _newHoc.newHoc)(function withDefault(Component, propName, value) {
return function WithDefault(props) {
return /*#__PURE__*/_react.default.createElement(Component, {
[propName]: value,
...props
});
};
});
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJyZXF1aXJlIiwiX25ld0hvYyIsIndpdGhEZWZhdWx0IiwiZXhwb3J0cyIsIm5ld0hvYyIsIkNvbXBvbmVudCIsInByb3BOYW1lIiwidmFsdWUiLCJXaXRoRGVmYXVsdCIsInByb3BzIiwiZGVmYXVsdCIsImNyZWF0ZUVsZW1lbnQiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaG9jcy93aXRoRGVmYXVsdC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IENvbXBvbmVudFR5cGUsIEZ1bmN0aW9uQ29tcG9uZW50IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQge1xuICBIYXNBbGxQcm9wc0ZuLFxuICBJZlRoZW5GbixcbiAgSW50ZXJzZWN0aW9uRm4sXG4gIFNldE9wdGlvbmFsRm4sXG59IGZyb20gXCIuLi90eXBlcy9GblwiO1xuaW1wb3J0IHsgSG9jIH0gZnJvbSBcIi4uL3R5cGVzL0hvY1wiO1xuaW1wb3J0IHsgbmV3SG9jIH0gZnJvbSBcIi4uL3V0aWxzL25ld0hvY1wiO1xuXG50eXBlIFdpdGhEZWZhdWx0SG9jID0gPFByb3BWYWx1ZSwgUHJvcE5hbWUgZXh0ZW5kcyBzdHJpbmc+KFxuICBwcm9wTmFtZTogUHJvcE5hbWUsXG4gIHZhbHVlOiBQcm9wVmFsdWUsXG4pID0+IEhvYzxcbiAgW1xuICAgIElmVGhlbkZuPFxuICAgICAgSGFzQWxsUHJvcHNGbjxQcm9wTmFtZT4sXG4gICAgICBbXG4gICAgICAgIC4uLihQcm9wVmFsdWUgZXh0ZW5kcyAoLi4uYXJnczogYW55W10pID0+IGFueVxuICAgICAgICAgID8gW11cbiAgICAgICAgICA6IFtJbnRlcnNlY3Rpb25GbjxbUHJvcE5hbWUsIFByb3BWYWx1ZV0+XSksXG4gICAgICAgIFNldE9wdGlvbmFsRm48UHJvcE5hbWU+LFxuICAgICAgXVxuICAgID4sXG4gIF1cbj47XG5cbi8qKlxuICogYWRkcyBkZWZhdWx0IHZhbHVlIHRvIGEgcHJvcCwgc28gaXQgY2FuIHN0aWxsIHJlY2VpdmUgYSB2YWx1ZSBidXQgaXQgbm93IGhhcyBhIGRlZmF1bHQgb25lXG4gKiBAc2VlIHtAbGluayB3aXRoRGVmYXVsdHN9IHtAbGluayB3aXRoRmFjdG9yeX0ge0BsaW5rIHdpdGhPdmVycmlkZX0ge0BsaW5rIHdpdGhPdmVycmlkZXN9XG4gKiBAZXhhbXBsZVxuICogZnVuY3Rpb24gQ2FyZFdpdGhJY29uKHsgY29udGVudCwgaWNvbiB9OiB7XG4gKiAgIGNvbnRlbnQ6IHN0cmluZztcbiAqICAgaWNvbjogXCJzdGFyXCIgfCBcImhlYXJ0XCIgfCAuLi47XG4gKiB9KSB7XG4gKiAgIHJldHVybiA8Pi4uLjwvPlxuICogfVxuICogY29uc3QgU3RhbmRhcmRDYXJkID0gd2l0aERlZmF1bHQoXCJpY29uXCIsIFwic3RhclwiKShDYXJkV2l0aEljb24pO1xuICpcbiAqIDxTdGFuZGFyZENhcmQgY29udGVudD1cInNvbWUgY29udGVudFwiIC8+XG4gKiAvLyBpcyBlcXVpdmFsZW50IHRvXG4gKiA8Q2FyZFdpdGhJY29uIGljb249XCJzdGFyXCIgY29udGVudD1cInNvbWUgY29udGVudFwiIC8+XG4gKlxuICogLy8gYnV0XG4gKiA8U3RhbmRhcmRDYXJkIGNvbnRlbnQ9XCJzb21lIGNvbnRlbnRcIiBpY29uPVwiaGVhcnRcIiAvPlxuICogLy8gaXMgZXF1aXZhbGVudCB0b1xuICogPENhcmRXaXRoSWNvbiBjb250ZW50PVwic29tZSBjb250ZW50XCIgaWNvbj1cImhlYXJ0XCIgLz4gLy8gaXQgcHJvcGFnYXRlcyB0aGUgbmV3IHZhbHVlXG4gKi9cbmV4cG9ydCBjb25zdCB3aXRoRGVmYXVsdCA9IG5ld0hvYzxXaXRoRGVmYXVsdEhvYz4oZnVuY3Rpb24gd2l0aERlZmF1bHQoXG4gIENvbXBvbmVudDogQ29tcG9uZW50VHlwZSxcbiAgcHJvcE5hbWU6IHN0cmluZyxcbiAgdmFsdWU6IGFueSxcbik6IEZ1bmN0aW9uQ29tcG9uZW50IHtcbiAgcmV0dXJuIGZ1bmN0aW9uIFdpdGhEZWZhdWx0KHByb3BzOiBhbnkpOiBKU1guRWxlbWVudCB7XG4gICAgcmV0dXJuIDxDb21wb25lbnQgey4uLnsgW3Byb3BOYW1lXTogdmFsdWUgfX0gey4uLnByb3BzfSAvPjtcbiAgfTtcbn0pO1xuIl0sIm1hcHBpbmdzIjoiOztBQUFBLElBQUFBLE1BQUEsR0FBQUMsT0FBQTtBQVFBLElBQUFDLE9BQUEsR0FBQUQsT0FBQTtBQW1CQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTyxNQUFNRSxXQUFXLEdBQUFDLE9BQUEsQ0FBQUQsV0FBQSxHQUFHLElBQUFFLGNBQU0sRUFBaUIsU0FBU0YsV0FBV0EsQ0FDcEVHLFNBQXdCLEVBQ3hCQyxRQUFnQixFQUNoQkMsS0FBVSxFQUNTO0VBQ25CLE9BQU8sU0FBU0MsV0FBV0EsQ0FBQ0MsS0FBVSxFQUFlO0lBQ25ELG9CQUFPVixNQUFBLENBQUFXLE9BQUEsQ0FBQUMsYUFBQSxDQUFDTixTQUFTO01BQU8sQ0FBQ0MsUUFBUSxHQUFHQyxLQUFLO01BQUEsR0FBUUU7SUFBSyxDQUFHLENBQUM7RUFDNUQsQ0FBQztBQUNILENBQUMsQ0FBQyJ9
//# sourceMappingURL=withDefault.js.map