UNPKG

react-with-hoc

Version:

Work with React and HOCs (Higher-Order Components)

33 lines 4.32 kB
import React from "react"; import { newHoc } from "../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" /> */ export const withOverride = newHoc(function withOverride(Component, propName, value) { return function WithOverride(props) { return /*#__PURE__*/React.createElement(Component, { ...props, [propName]: value }); }; }); //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIm5ld0hvYyIsIndpdGhPdmVycmlkZSIsIkNvbXBvbmVudCIsInByb3BOYW1lIiwidmFsdWUiLCJXaXRoT3ZlcnJpZGUiLCJwcm9wcyIsImNyZWF0ZUVsZW1lbnQiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaG9jcy93aXRoT3ZlcnJpZGUudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyBDb21wb25lbnRUeXBlLCBGdW5jdGlvbkNvbXBvbmVudCB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHtcbiAgSGFzQWxsUHJvcHNGbixcbiAgSWZUaGVuRm4sXG4gIEludGVyc2VjdGlvbkZuLFxuICBLZWVwTmV2ZXJzRm4sXG4gIE9taXRGbixcbn0gZnJvbSBcIi4uL3R5cGVzL0ZuXCI7XG5pbXBvcnQgeyBIb2MgfSBmcm9tIFwiLi4vdHlwZXMvSG9jXCI7XG5pbXBvcnQgeyBuZXdIb2MgfSBmcm9tIFwiLi4vdXRpbHMvbmV3SG9jXCI7XG5cbnR5cGUgV2l0aE92ZXJyaWRlSG9jID0gPFByb3BWYWx1ZSwgUHJvcE5hbWUgZXh0ZW5kcyBzdHJpbmc+KFxuICBwcm9wTmFtZTogUHJvcE5hbWUsXG4gIHZhbHVlOiBQcm9wVmFsdWUsXG4pID0+IEhvYzxcbiAgW1xuICAgIElmVGhlbkZuPFxuICAgICAgSGFzQWxsUHJvcHNGbjxQcm9wTmFtZT4sXG4gICAgICBbXG4gICAgICAgIC4uLihQcm9wVmFsdWUgZXh0ZW5kcyAoLi4uYXJnczogYW55W10pID0+IGFueVxuICAgICAgICAgID8gW11cbiAgICAgICAgICA6IFtJbnRlcnNlY3Rpb25GbjxbUHJvcE5hbWUsIFByb3BWYWx1ZV0+XSksXG4gICAgICAgIEtlZXBOZXZlcnNGbjxPbWl0Rm48UHJvcE5hbWU+PixcbiAgICAgIF1cbiAgICA+LFxuICBdXG4+O1xuXG4vKipcbiAqIGFkZHMgYSBwcm9wIHZhbHVlIHRvIHRoZSBjb21wb25lbnQsIHRoZSBnaXZlbiB2YWx1ZSBjYW4gbm90IGJlIG92ZXJyaWRlLCB3aGljaCBtZWFucyB0aGUgZ2l2ZW4gdmFsdWUgb3ZlcnJpZGVzIG90aGVyc1xuICogQHNlZSB7QGxpbmsgd2l0aE92ZXJyaWRlc30ge0BsaW5rIHdpdGhGYWN0b3J5fSB7QGxpbmsgd2l0aERlZmF1bHR9IHtAbGluayB3aXRoRGVmYXVsdHN9XG4gKiBAZXhhbXBsZVxuICogZnVuY3Rpb24gQ2FyZFdpdGhJY29uKHsgY29udGVudCwgaWNvbiB9OiB7XG4gKiAgIGNvbnRlbnQ6IHN0cmluZztcbiAqICAgaWNvbjogXCJzdGFyXCIgfCBcImhlYXJ0XCIgfCAuLi47XG4gKiB9KSB7XG4gKiAgIHJldHVybiA8Pi4uLjwvPlxuICogfVxuICogY29uc3QgU3RhbmRhcmRDYXJkID0gd2l0aE92ZXJyaWRlKFwiaWNvblwiLCBcInN0YXJcIikoQ2FyZFdpdGhJY29uKTtcbiAqXG4gKiA8U3RhbmRhcmRDYXJkIGNvbnRlbnQ9XCJzb21lIGNvbnRlbnRcIiAvPlxuICogLy8gaXMgZXF1aXZhbGVudCB0b1xuICogPENhcmRXaXRoSWNvbiBjb250ZW50PVwic29tZSBjb250ZW50XCIgaWNvbj1cInN0YXJcIiAvPlxuICpcbiAqIC8vIGFuZFxuICogPFN0YW5kYXJkQ2FyZCBjb250ZW50PVwic29tZSBjb250ZW50XCIgaWNvbj1cImhlYXJ0XCIgLz4gLy8g4p2MIGlzIGEgdHlwZXNjcmlwdCBlcnJvciwgYnV0IGV2ZW4gdGhvdWdoXG4gKiAvLyBpcyBlcXVpdmFsZW50IHRvXG4gKiA8Q2FyZFdpdGhJY29uIGNvbnRlbnQ9XCJzb21lIGNvbnRlbnRcIiBpY29uPVwic3RhclwiIC8+XG4gKi9cbmV4cG9ydCBjb25zdCB3aXRoT3ZlcnJpZGUgPSBuZXdIb2M8V2l0aE92ZXJyaWRlSG9jPihmdW5jdGlvbiB3aXRoT3ZlcnJpZGUoXG4gIENvbXBvbmVudDogQ29tcG9uZW50VHlwZSxcbiAgcHJvcE5hbWU6IHN0cmluZyxcbiAgdmFsdWU6IGFueSxcbik6IEZ1bmN0aW9uQ29tcG9uZW50IHtcbiAgcmV0dXJuIGZ1bmN0aW9uIFdpdGhPdmVycmlkZShwcm9wczogYW55KTogSlNYLkVsZW1lbnQge1xuICAgIHJldHVybiA8Q29tcG9uZW50IHsuLi5wcm9wc30gey4uLnsgW3Byb3BOYW1lXTogdmFsdWUgfX0gLz47XG4gIH07XG59KTtcbiJdLCJtYXBwaW5ncyI6IkFBQUEsT0FBT0EsS0FBSyxNQUE0QyxPQUFPO0FBUy9ELFNBQVNDLE1BQU0sUUFBUSxpQkFBaUI7QUFtQnhDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU8sTUFBTUMsWUFBWSxHQUFHRCxNQUFNLENBQWtCLFNBQVNDLFlBQVlBLENBQ3ZFQyxTQUF3QixFQUN4QkMsUUFBZ0IsRUFDaEJDLEtBQVUsRUFDUztFQUNuQixPQUFPLFNBQVNDLFlBQVlBLENBQUNDLEtBQVUsRUFBZTtJQUNwRCxvQkFBT1AsS0FBQSxDQUFBUSxhQUFBLENBQUNMLFNBQVM7TUFBQSxHQUFLSSxLQUFLO01BQVEsQ0FBQ0gsUUFBUSxHQUFHQztJQUFLLENBQUssQ0FBQztFQUM1RCxDQUFDO0FBQ0gsQ0FBQyxDQUFDIn0= //# sourceMappingURL=withOverride.js.map