react-with-hoc
Version:
Work with React and HOCs (Higher-Order Components)
31 lines (30 loc) • 4.08 kB
JavaScript
;
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