UNPKG

react-with-hoc

Version:

Work with React and HOCs (Higher-Order Components)

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