UNPKG

react-with-hoc

Version:

Work with React and HOCs (Higher-Order Components)

31 lines (30 loc) 4.08 kB
"use strict"; var _react = require("react"); var _newHoc = require("../utils/newHoc"); /** * Start receiving an object and spread all properties to Component * * @experimental It uses the same mechanism as {@link withDefaults} but it could also have the same mechanism as {@link withOverrides} * * @example * function Profile({ name, age, city }: {...}) { * ... * } * const NewProfile = withSpread<"profile", "name" | "age" | "city">("profile")(Profile) * <NewProfile profile={{ name: "Some Name", age: 20, city: "Some City" }} /> * // is equivalent to * <Profile name="Some Name" age={20} city="Some City" /> */ const withSpread = exports.withSpread = (0, _newHoc.newHoc)(function withSpread(Component, key) { return function WithObject(props) { const newProps = { ...props[key], ...props }; return /*#__PURE__*/_react.default.createElement(Component, { ...newProps }); }; }); //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJyZXF1aXJlIiwiX25ld0hvYyIsIndpdGhTcHJlYWQiLCJleHBvcnRzIiwibmV3SG9jIiwiQ29tcG9uZW50Iiwia2V5IiwiV2l0aE9iamVjdCIsInByb3BzIiwibmV3UHJvcHMiLCJkZWZhdWx0IiwiY3JlYXRlRWxlbWVudCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9ob2NzL3dpdGhTcHJlYWQudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyBDb21wb25lbnRUeXBlLCBGdW5jdGlvbkNvbXBvbmVudCB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHtcbiAgRm4sXG4gIEZyb21TY2hlbWEsXG4gIEludGVyc2VjdGlvbkZuLFxuICBQaXBlLFxuICBTZXRPcHRpb25hbEZuLFxufSBmcm9tIFwiLi4vdHlwZXMvRm5cIjtcbmltcG9ydCB7IEhvYyB9IGZyb20gXCIuLi90eXBlcy9Ib2NcIjtcbmltcG9ydCB7IG5ld0hvYyB9IGZyb20gXCIuLi91dGlscy9uZXdIb2NcIjtcblxuaW50ZXJmYWNlIFdpdGhTcHJlYWRGbjxQcm9wTmFtZSBleHRlbmRzIHN0cmluZywgTmFtZXMgZXh0ZW5kcyBzdHJpbmc+XG4gIGV4dGVuZHMgRm4ge1xuICByZXR1cm46IFBpcGU8XG4gICAgdGhpc1tcImFyZzBcIl0sXG4gICAgW1xuICAgICAgSW50ZXJzZWN0aW9uRm48XG4gICAgICAgIFtQcm9wTmFtZSwgRnJvbVNjaGVtYTxFeHRyYWN0PHRoaXNbXCJhcmcwXCJdLCBbTmFtZXMsIGFueV0+Pl1cbiAgICAgID4sXG4gICAgICBTZXRPcHRpb25hbEZuPE5hbWVzPixcbiAgICBdXG4gID47XG59XG5cbmludGVyZmFjZSBXaXRoU3ByZWFkSG9jIHtcbiAgPFByb3BOYW1lIGV4dGVuZHMgc3RyaW5nLCBOYW1lcyBleHRlbmRzIHN0cmluZz4oXG4gICAgcHJvcE5hbWU6IFByb3BOYW1lLFxuICApOiBIb2M8W1dpdGhTcHJlYWRGbjxQcm9wTmFtZSwgTmFtZXM+XT47XG59XG5cbi8qKlxuICogU3RhcnQgcmVjZWl2aW5nIGFuIG9iamVjdCBhbmQgc3ByZWFkIGFsbCBwcm9wZXJ0aWVzIHRvIENvbXBvbmVudFxuICpcbiAqIEBleHBlcmltZW50YWwgSXQgdXNlcyB0aGUgc2FtZSBtZWNoYW5pc20gYXMge0BsaW5rIHdpdGhEZWZhdWx0c30gYnV0IGl0IGNvdWxkIGFsc28gaGF2ZSB0aGUgc2FtZSBtZWNoYW5pc20gYXMge0BsaW5rIHdpdGhPdmVycmlkZXN9XG4gKlxuICogQGV4YW1wbGVcbiAqIGZ1bmN0aW9uIFByb2ZpbGUoeyBuYW1lLCBhZ2UsIGNpdHkgfTogey4uLn0pIHtcbiAqICAgLi4uXG4gKiB9XG4gKiBjb25zdCBOZXdQcm9maWxlID0gd2l0aFNwcmVhZDxcInByb2ZpbGVcIiwgXCJuYW1lXCIgfCBcImFnZVwiIHwgXCJjaXR5XCI+KFwicHJvZmlsZVwiKShQcm9maWxlKVxuICogPE5ld1Byb2ZpbGUgcHJvZmlsZT17eyBuYW1lOiBcIlNvbWUgTmFtZVwiLCBhZ2U6IDIwLCBjaXR5OiBcIlNvbWUgQ2l0eVwiIH19IC8+XG4gKiAvLyBpcyBlcXVpdmFsZW50IHRvXG4gKiA8UHJvZmlsZSBuYW1lPVwiU29tZSBOYW1lXCIgYWdlPXsyMH0gY2l0eT1cIlNvbWUgQ2l0eVwiIC8+XG4gKi9cbmV4cG9ydCBjb25zdCB3aXRoU3ByZWFkID0gbmV3SG9jPFdpdGhTcHJlYWRIb2M+KGZ1bmN0aW9uIHdpdGhTcHJlYWQoXG4gIENvbXBvbmVudDogQ29tcG9uZW50VHlwZSxcbiAga2V5OiBzdHJpbmcsXG4pOiBGdW5jdGlvbkNvbXBvbmVudCB7XG4gIHJldHVybiBmdW5jdGlvbiBXaXRoT2JqZWN0KHByb3BzOiBhbnkpOiBKU1guRWxlbWVudCB7XG4gICAgY29uc3QgbmV3UHJvcHM6IGFueSA9IHtcbiAgICAgIC4uLnByb3BzW2tleV0sXG4gICAgICAuLi5wcm9wcyxcbiAgICB9O1xuXG4gICAgcmV0dXJuIDxDb21wb25lbnQgey4uLm5ld1Byb3BzfSAvPjtcbiAgfTtcbn0pO1xuIl0sIm1hcHBpbmdzIjoiOztBQUFBLElBQUFBLE1BQUEsR0FBQUMsT0FBQTtBQVNBLElBQUFDLE9BQUEsR0FBQUQsT0FBQTtBQXFCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ08sTUFBTUUsVUFBVSxHQUFBQyxPQUFBLENBQUFELFVBQUEsR0FBRyxJQUFBRSxjQUFNLEVBQWdCLFNBQVNGLFVBQVVBLENBQ2pFRyxTQUF3QixFQUN4QkMsR0FBVyxFQUNRO0VBQ25CLE9BQU8sU0FBU0MsVUFBVUEsQ0FBQ0MsS0FBVSxFQUFlO0lBQ2xELE1BQU1DLFFBQWEsR0FBRztNQUNwQixHQUFHRCxLQUFLLENBQUNGLEdBQUcsQ0FBQztNQUNiLEdBQUdFO0lBQ0wsQ0FBQztJQUVELG9CQUFPVCxNQUFBLENBQUFXLE9BQUEsQ0FBQUMsYUFBQSxDQUFDTixTQUFTO01BQUEsR0FBS0k7SUFBUSxDQUFHLENBQUM7RUFDcEMsQ0FBQztBQUNILENBQUMsQ0FBQyJ9 //# sourceMappingURL=withSpread.js.map