UNPKG

react-with-hoc

Version:

Work with React and HOCs (Higher-Order Components)

29 lines 3.92 kB
import React from "react"; import { newHoc } from "../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" /> */ export const withSpread = newHoc(function withSpread(Component, key) { return function WithObject(props) { const newProps = { ...props[key], ...props }; return /*#__PURE__*/React.createElement(Component, { ...newProps }); }; }); //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIm5ld0hvYyIsIndpdGhTcHJlYWQiLCJDb21wb25lbnQiLCJrZXkiLCJXaXRoT2JqZWN0IiwicHJvcHMiLCJuZXdQcm9wcyIsImNyZWF0ZUVsZW1lbnQiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaG9jcy93aXRoU3ByZWFkLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgQ29tcG9uZW50VHlwZSwgRnVuY3Rpb25Db21wb25lbnQgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7XG4gIEZuLFxuICBGcm9tU2NoZW1hLFxuICBJbnRlcnNlY3Rpb25GbixcbiAgUGlwZSxcbiAgU2V0T3B0aW9uYWxGbixcbn0gZnJvbSBcIi4uL3R5cGVzL0ZuXCI7XG5pbXBvcnQgeyBIb2MgfSBmcm9tIFwiLi4vdHlwZXMvSG9jXCI7XG5pbXBvcnQgeyBuZXdIb2MgfSBmcm9tIFwiLi4vdXRpbHMvbmV3SG9jXCI7XG5cbmludGVyZmFjZSBXaXRoU3ByZWFkRm48UHJvcE5hbWUgZXh0ZW5kcyBzdHJpbmcsIE5hbWVzIGV4dGVuZHMgc3RyaW5nPlxuICBleHRlbmRzIEZuIHtcbiAgcmV0dXJuOiBQaXBlPFxuICAgIHRoaXNbXCJhcmcwXCJdLFxuICAgIFtcbiAgICAgIEludGVyc2VjdGlvbkZuPFxuICAgICAgICBbUHJvcE5hbWUsIEZyb21TY2hlbWE8RXh0cmFjdDx0aGlzW1wiYXJnMFwiXSwgW05hbWVzLCBhbnldPj5dXG4gICAgICA+LFxuICAgICAgU2V0T3B0aW9uYWxGbjxOYW1lcz4sXG4gICAgXVxuICA+O1xufVxuXG5pbnRlcmZhY2UgV2l0aFNwcmVhZEhvYyB7XG4gIDxQcm9wTmFtZSBleHRlbmRzIHN0cmluZywgTmFtZXMgZXh0ZW5kcyBzdHJpbmc+KFxuICAgIHByb3BOYW1lOiBQcm9wTmFtZSxcbiAgKTogSG9jPFtXaXRoU3ByZWFkRm48UHJvcE5hbWUsIE5hbWVzPl0+O1xufVxuXG4vKipcbiAqIFN0YXJ0IHJlY2VpdmluZyBhbiBvYmplY3QgYW5kIHNwcmVhZCBhbGwgcHJvcGVydGllcyB0byBDb21wb25lbnRcbiAqXG4gKiBAZXhwZXJpbWVudGFsIEl0IHVzZXMgdGhlIHNhbWUgbWVjaGFuaXNtIGFzIHtAbGluayB3aXRoRGVmYXVsdHN9IGJ1dCBpdCBjb3VsZCBhbHNvIGhhdmUgdGhlIHNhbWUgbWVjaGFuaXNtIGFzIHtAbGluayB3aXRoT3ZlcnJpZGVzfVxuICpcbiAqIEBleGFtcGxlXG4gKiBmdW5jdGlvbiBQcm9maWxlKHsgbmFtZSwgYWdlLCBjaXR5IH06IHsuLi59KSB7XG4gKiAgIC4uLlxuICogfVxuICogY29uc3QgTmV3UHJvZmlsZSA9IHdpdGhTcHJlYWQ8XCJwcm9maWxlXCIsIFwibmFtZVwiIHwgXCJhZ2VcIiB8IFwiY2l0eVwiPihcInByb2ZpbGVcIikoUHJvZmlsZSlcbiAqIDxOZXdQcm9maWxlIHByb2ZpbGU9e3sgbmFtZTogXCJTb21lIE5hbWVcIiwgYWdlOiAyMCwgY2l0eTogXCJTb21lIENpdHlcIiB9fSAvPlxuICogLy8gaXMgZXF1aXZhbGVudCB0b1xuICogPFByb2ZpbGUgbmFtZT1cIlNvbWUgTmFtZVwiIGFnZT17MjB9IGNpdHk9XCJTb21lIENpdHlcIiAvPlxuICovXG5leHBvcnQgY29uc3Qgd2l0aFNwcmVhZCA9IG5ld0hvYzxXaXRoU3ByZWFkSG9jPihmdW5jdGlvbiB3aXRoU3ByZWFkKFxuICBDb21wb25lbnQ6IENvbXBvbmVudFR5cGUsXG4gIGtleTogc3RyaW5nLFxuKTogRnVuY3Rpb25Db21wb25lbnQge1xuICByZXR1cm4gZnVuY3Rpb24gV2l0aE9iamVjdChwcm9wczogYW55KTogSlNYLkVsZW1lbnQge1xuICAgIGNvbnN0IG5ld1Byb3BzOiBhbnkgPSB7XG4gICAgICAuLi5wcm9wc1trZXldLFxuICAgICAgLi4ucHJvcHMsXG4gICAgfTtcblxuICAgIHJldHVybiA8Q29tcG9uZW50IHsuLi5uZXdQcm9wc30gLz47XG4gIH07XG59KTtcbiJdLCJtYXBwaW5ncyI6IkFBQUEsT0FBT0EsS0FBSyxNQUE0QyxPQUFPO0FBUy9ELFNBQVNDLE1BQU0sUUFBUSxpQkFBaUI7QUFxQnhDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPLE1BQU1DLFVBQVUsR0FBR0QsTUFBTSxDQUFnQixTQUFTQyxVQUFVQSxDQUNqRUMsU0FBd0IsRUFDeEJDLEdBQVcsRUFDUTtFQUNuQixPQUFPLFNBQVNDLFVBQVVBLENBQUNDLEtBQVUsRUFBZTtJQUNsRCxNQUFNQyxRQUFhLEdBQUc7TUFDcEIsR0FBR0QsS0FBSyxDQUFDRixHQUFHLENBQUM7TUFDYixHQUFHRTtJQUNMLENBQUM7SUFFRCxvQkFBT04sS0FBQSxDQUFBUSxhQUFBLENBQUNMLFNBQVM7TUFBQSxHQUFLSTtJQUFRLENBQUcsQ0FBQztFQUNwQyxDQUFDO0FBQ0gsQ0FBQyxDQUFDIn0= //# sourceMappingURL=withSpread.js.map