UNPKG

react-with-hoc

Version:

Work with React and HOCs (Higher-Order Components)

54 lines (53 loc) 5.52 kB
"use strict"; var _react = require("react"); var _newHoc = require("../utils/newHoc"); /** * withBody can be used as an intermediator to convert props and pass to the component * @example * // in this example, HappinessByLevel logs according to level 1 to 5 * function HappinessByLevel({ level }: { level: number }) { * if (level >= 5) { * return "Very Happy"; * } * if (level === 4) { * return "Happy"; * } * if (level === 3) { * return "Neutral"; * } * if (level === 2) { * return "Sad"; * } * // very sad if level is 1 or less * return "Very Sad"; * } * * const HappinessByGradient = withBody(function convertToGradient({ * level, * }: { * level: number; * }) { * // convert a value from 0 to 1 to a gradient level * return { level: Math.ceil(level * 5) }; * })(HappinessByLevel); * @example * const AddOne = withBody(function acceptStringToo({ * value, * }: { * value: number | string; * }) { * return { value: typeof value === "string" ? parseInt(value, 10) : value }; * })(function AddOne({ value }: { value: number }) { * return <>{value + 1}</>; * }); */ const withBody = exports.withBody = (0, _newHoc.newHoc)(function withBody(Component, body) { return function WithBody(props) { return /*#__PURE__*/_react.default.createElement(Component, { ...props, ...body(props) }); }; }); //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJyZXF1aXJlIiwiX25ld0hvYyIsIndpdGhCb2R5IiwiZXhwb3J0cyIsIm5ld0hvYyIsIkNvbXBvbmVudCIsImJvZHkiLCJXaXRoQm9keSIsInByb3BzIiwiZGVmYXVsdCIsImNyZWF0ZUVsZW1lbnQiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaG9jcy93aXRoQm9keS50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IENvbXBvbmVudFR5cGUsIEZ1bmN0aW9uQ29tcG9uZW50IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQge1xuICBGbixcbiAgSW50ZXJzZWN0aW9uRm4sXG4gIEtlZXBOZXZlcnNGbixcbiAgT21pdEZuLFxuICBQaWNrRm4sXG4gIFBpcGUsXG4gIFRvU2NoZW1hLFxufSBmcm9tIFwiLi4vdHlwZXMvRm5cIjtcbmltcG9ydCB7IEhvYyB9IGZyb20gXCIuLi90eXBlcy9Ib2NcIjtcbmltcG9ydCB7IG5ld0hvYyB9IGZyb20gXCIuLi91dGlscy9uZXdIb2NcIjtcblxuZXhwb3J0IGludGVyZmFjZSBXaXRoQm9keUZuPFxuICBQcm9wc1NjaGVtYSBleHRlbmRzIFtzdHJpbmcgfCBudW1iZXIgfCBzeW1ib2wsIGFueV0sXG4gIFJldFNjaGVtYSBleHRlbmRzIFtzdHJpbmcgfCBudW1iZXIgfCBzeW1ib2wsIGFueV0sXG4+IGV4dGVuZHMgRm4ge1xuICByZXR1cm46IFBpcGU8XG4gICAgdGhpc1tcImFyZzBcIl0sXG4gICAgW1xuICAgICAgSW50ZXJzZWN0aW9uRm48UmV0U2NoZW1hPixcbiAgICAgIEtlZXBOZXZlcnNGbjxPbWl0Rm48UmV0U2NoZW1hWzBdPj4sXG4gICAgICBJbnRlcnNlY3Rpb25GbjxcbiAgICAgICAgUGlwZTxcbiAgICAgICAgICB0aGlzW1wiYXJnMFwiXSxcbiAgICAgICAgICBbUGlja0ZuPFByb3BzU2NoZW1hWzBdPiwgSW50ZXJzZWN0aW9uRm48UHJvcHNTY2hlbWE+XVxuICAgICAgICA+XG4gICAgICA+LFxuICAgIF1cbiAgPjtcbn1cblxudHlwZSBXaXRoQm9keUhvYyA9IDxQcm9wcyBleHRlbmRzIG9iamVjdCwgUmV0IGV4dGVuZHMgb2JqZWN0PihcbiAgYm9keTogKHByb3BzOiBQcm9wcykgPT4gUmV0LFxuKSA9PiBIb2M8W1dpdGhCb2R5Rm48VG9TY2hlbWE8UHJvcHM+LCBUb1NjaGVtYTxSZXQ+Pl0+O1xuXG4vKipcbiAqIHdpdGhCb2R5IGNhbiBiZSB1c2VkIGFzIGFuIGludGVybWVkaWF0b3IgdG8gY29udmVydCBwcm9wcyBhbmQgcGFzcyB0byB0aGUgY29tcG9uZW50XG4gKiBAZXhhbXBsZVxuICogLy8gaW4gdGhpcyBleGFtcGxlLCBIYXBwaW5lc3NCeUxldmVsIGxvZ3MgYWNjb3JkaW5nIHRvIGxldmVsIDEgdG8gNVxuICogZnVuY3Rpb24gSGFwcGluZXNzQnlMZXZlbCh7IGxldmVsIH06IHsgbGV2ZWw6IG51bWJlciB9KSB7XG4gKiAgIGlmIChsZXZlbCA+PSA1KSB7XG4gKiAgICAgcmV0dXJuIFwiVmVyeSBIYXBweVwiO1xuICogICB9XG4gKiAgIGlmIChsZXZlbCA9PT0gNCkge1xuICogICAgIHJldHVybiBcIkhhcHB5XCI7XG4gKiAgIH1cbiAqICAgaWYgKGxldmVsID09PSAzKSB7XG4gKiAgICAgcmV0dXJuIFwiTmV1dHJhbFwiO1xuICogICB9XG4gKiAgIGlmIChsZXZlbCA9PT0gMikge1xuICogICAgIHJldHVybiBcIlNhZFwiO1xuICogICB9XG4gKiAgIC8vIHZlcnkgc2FkIGlmIGxldmVsIGlzIDEgb3IgbGVzc1xuICogICByZXR1cm4gXCJWZXJ5IFNhZFwiO1xuICogfVxuICpcbiAqIGNvbnN0IEhhcHBpbmVzc0J5R3JhZGllbnQgPSB3aXRoQm9keShmdW5jdGlvbiBjb252ZXJ0VG9HcmFkaWVudCh7XG4gKiAgIGxldmVsLFxuICogfToge1xuICogICBsZXZlbDogbnVtYmVyO1xuICogfSkge1xuICogICAvLyBjb252ZXJ0IGEgdmFsdWUgZnJvbSAwIHRvIDEgdG8gYSBncmFkaWVudCBsZXZlbFxuICogICByZXR1cm4geyBsZXZlbDogTWF0aC5jZWlsKGxldmVsICogNSkgfTtcbiAqIH0pKEhhcHBpbmVzc0J5TGV2ZWwpO1xuICogQGV4YW1wbGVcbiAqIGNvbnN0IEFkZE9uZSA9IHdpdGhCb2R5KGZ1bmN0aW9uIGFjY2VwdFN0cmluZ1Rvbyh7XG4gKiAgIHZhbHVlLFxuICogfToge1xuICogICB2YWx1ZTogbnVtYmVyIHwgc3RyaW5nO1xuICogfSkge1xuICogICByZXR1cm4geyB2YWx1ZTogdHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiID8gcGFyc2VJbnQodmFsdWUsIDEwKSA6IHZhbHVlIH07XG4gKiB9KShmdW5jdGlvbiBBZGRPbmUoeyB2YWx1ZSB9OiB7IHZhbHVlOiBudW1iZXIgfSkge1xuICogICByZXR1cm4gPD57dmFsdWUgKyAxfTwvPjtcbiAqIH0pO1xuICovXG5leHBvcnQgY29uc3Qgd2l0aEJvZHkgPSBuZXdIb2M8V2l0aEJvZHlIb2M+KGZ1bmN0aW9uIHdpdGhCb2R5KFxuICBDb21wb25lbnQ6IENvbXBvbmVudFR5cGUsXG4gIGJvZHk6IEZ1bmN0aW9uLFxuKTogRnVuY3Rpb25Db21wb25lbnQge1xuICByZXR1cm4gZnVuY3Rpb24gV2l0aEJvZHkocHJvcHM6IGFueSk6IEpTWC5FbGVtZW50IHtcbiAgICByZXR1cm4gPENvbXBvbmVudCB7Li4ucHJvcHN9IHsuLi5ib2R5KHByb3BzKX0gLz47XG4gIH07XG59KTtcbiJdLCJtYXBwaW5ncyI6Ijs7QUFBQSxJQUFBQSxNQUFBLEdBQUFDLE9BQUE7QUFXQSxJQUFBQyxPQUFBLEdBQUFELE9BQUE7QUF5QkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTyxNQUFNRSxRQUFRLEdBQUFDLE9BQUEsQ0FBQUQsUUFBQSxHQUFHLElBQUFFLGNBQU0sRUFBYyxTQUFTRixRQUFRQSxDQUMzREcsU0FBd0IsRUFDeEJDLElBQWMsRUFDSztFQUNuQixPQUFPLFNBQVNDLFFBQVFBLENBQUNDLEtBQVUsRUFBZTtJQUNoRCxvQkFBT1QsTUFBQSxDQUFBVSxPQUFBLENBQUFDLGFBQUEsQ0FBQ0wsU0FBUztNQUFBLEdBQUtHLEtBQUs7TUFBQSxHQUFNRixJQUFJLENBQUNFLEtBQUs7SUFBQyxDQUFHLENBQUM7RUFDbEQsQ0FBQztBQUNILENBQUMsQ0FBQyJ9 //# sourceMappingURL=withBody.js.map