UNPKG

react-with-hoc

Version:

Work with React and HOCs (Higher-Order Components)

41 lines 4.86 kB
import React from "react"; import { newHoc } from "../utils/newHoc"; /** * Omit, which is actually ignore mentioned props * * @see {@link withPick} * @example * const user = { * username: "Some username", * password: "s0m3 p4ssw0rd", * vitalSecretInfo: "..." * }; * function RevealInfo( * { username, password, vitalSecretInfo }: * { username: string; password?: string; vitalSecretInfo: string } * ) { * ... * } * const SafeRevealInfo = withOmit(["password"])(RevealInfo); * <SafeRevealInfo {...user} /> * // is equivalent to * <RevealInfo username={user.username} vitalSecretInfo={user.vitalSecretInfo} /> // password is not included, but you can still see vitalSecretInfo */ export const withOmit = newHoc(function withOmit(Component, omitNames) { const omitSet = new Set(omitNames); return function WithOmit(props) { const newProps = { ...props }; for (const key in newProps) { if (omitSet.has(key)) { delete newProps[key]; } } return /*#__PURE__*/React.createElement(Component, { ...newProps }); }; }); //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIm5ld0hvYyIsIndpdGhPbWl0IiwiQ29tcG9uZW50Iiwib21pdE5hbWVzIiwib21pdFNldCIsIlNldCIsIldpdGhPbWl0IiwicHJvcHMiLCJuZXdQcm9wcyIsImtleSIsImhhcyIsImNyZWF0ZUVsZW1lbnQiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaG9jcy93aXRoT21pdC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IENvbXBvbmVudFR5cGUsIEZ1bmN0aW9uQ29tcG9uZW50IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBDYWxsLCBGbiwgS2VlcE5ldmVyc0ZuLCBPbWl0Rm4gfSBmcm9tIFwiLi4vdHlwZXMvRm5cIjtcbmltcG9ydCB7IEhvYyB9IGZyb20gXCIuLi90eXBlcy9Ib2NcIjtcbmltcG9ydCB7IG5ld0hvYyB9IGZyb20gXCIuLi91dGlscy9uZXdIb2NcIjtcblxuaW50ZXJmYWNlIFdpdGhPbWl0Rm48T21pdE5hbWVzIGV4dGVuZHMgc3RyaW5nPiBleHRlbmRzIEZuIHtcbiAgcmV0dXJuOiBDYWxsPFxuICAgIEtlZXBOZXZlcnNGbjxPbWl0Rm48T21pdE5hbWVzPj4sXG4gICAge1xuICAgICAgW0sgaW4gRXh0cmFjdDx0aGlzW1wiYXJnMFwiXSwgYW55W10+WzBdXTogW1xuICAgICAgICBLLFxuICAgICAgICBLIGV4dGVuZHMgT21pdE5hbWVzXG4gICAgICAgICAgPyB1bmRlZmluZWQgZXh0ZW5kcyBFeHRyYWN0PHRoaXNbXCJhcmcwXCJdLCBbSywgYW55XT5bMV1cbiAgICAgICAgICAgID8gRXh0cmFjdDx0aGlzW1wiYXJnMFwiXSwgW0ssIGFueV0+WzFdXG4gICAgICAgICAgICA6IG5ldmVyXG4gICAgICAgICAgOiBFeHRyYWN0PHRoaXNbXCJhcmcwXCJdLCBbSywgYW55XT5bMV0sXG4gICAgICBdO1xuICAgIH1bRXh0cmFjdDx0aGlzW1wiYXJnMFwiXSwgYW55W10+WzBdXVxuICA+O1xufVxuXG50eXBlIFdpdGhPbWl0SG9jID0gPE9taXROYW1lcyBleHRlbmRzIHN0cmluZz4oXG4gIG9taXROYW1lczogT21pdE5hbWVzW10sXG4pID0+IEhvYzxbV2l0aE9taXRGbjxPbWl0TmFtZXM+XT47XG5cbi8qKlxuICogT21pdCwgd2hpY2ggaXMgYWN0dWFsbHkgaWdub3JlIG1lbnRpb25lZCBwcm9wc1xuICpcbiAqIEBzZWUge0BsaW5rIHdpdGhQaWNrfVxuICogQGV4YW1wbGVcbiAqIGNvbnN0IHVzZXIgPSB7XG4gKiAgIHVzZXJuYW1lOiBcIlNvbWUgdXNlcm5hbWVcIixcbiAqICAgcGFzc3dvcmQ6IFwiczBtMyBwNHNzdzByZFwiLFxuICogICB2aXRhbFNlY3JldEluZm86IFwiLi4uXCJcbiAqIH07XG4gKiBmdW5jdGlvbiBSZXZlYWxJbmZvKFxuICogICB7IHVzZXJuYW1lLCBwYXNzd29yZCwgdml0YWxTZWNyZXRJbmZvIH06XG4gKiAgIHsgdXNlcm5hbWU6IHN0cmluZzsgcGFzc3dvcmQ/OiBzdHJpbmc7IHZpdGFsU2VjcmV0SW5mbzogc3RyaW5nIH1cbiAqICkge1xuICogICAuLi5cbiAqIH1cbiAqIGNvbnN0IFNhZmVSZXZlYWxJbmZvID0gd2l0aE9taXQoW1wicGFzc3dvcmRcIl0pKFJldmVhbEluZm8pO1xuICogPFNhZmVSZXZlYWxJbmZvIHsuLi51c2VyfSAvPlxuICogLy8gaXMgZXF1aXZhbGVudCB0b1xuICogPFJldmVhbEluZm8gdXNlcm5hbWU9e3VzZXIudXNlcm5hbWV9IHZpdGFsU2VjcmV0SW5mbz17dXNlci52aXRhbFNlY3JldEluZm99IC8+IC8vIHBhc3N3b3JkIGlzIG5vdCBpbmNsdWRlZCwgYnV0IHlvdSBjYW4gc3RpbGwgc2VlIHZpdGFsU2VjcmV0SW5mb1xuICovXG5leHBvcnQgY29uc3Qgd2l0aE9taXQgPSBuZXdIb2M8V2l0aE9taXRIb2M+KGZ1bmN0aW9uIHdpdGhPbWl0KFxuICBDb21wb25lbnQ6IENvbXBvbmVudFR5cGUsXG4gIG9taXROYW1lczogc3RyaW5nW10sXG4pOiBGdW5jdGlvbkNvbXBvbmVudCB7XG4gIGNvbnN0IG9taXRTZXQgPSBuZXcgU2V0KG9taXROYW1lcyk7XG5cbiAgcmV0dXJuIGZ1bmN0aW9uIFdpdGhPbWl0KHByb3BzOiBhbnkpOiBKU1guRWxlbWVudCB7XG4gICAgY29uc3QgbmV3UHJvcHMgPSB7IC4uLnByb3BzIH07XG4gICAgZm9yIChjb25zdCBrZXkgaW4gbmV3UHJvcHMpIHtcbiAgICAgIGlmIChvbWl0U2V0LmhhcyhrZXkpKSB7XG4gICAgICAgIGRlbGV0ZSBuZXdQcm9wc1trZXldO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiA8Q29tcG9uZW50IHsuLi5uZXdQcm9wc30gLz47XG4gIH07XG59KTtcbiJdLCJtYXBwaW5ncyI6IkFBQUEsT0FBT0EsS0FBSyxNQUE0QyxPQUFPO0FBRy9ELFNBQVNDLE1BQU0sUUFBUSxpQkFBaUI7QUFzQnhDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU8sTUFBTUMsUUFBUSxHQUFHRCxNQUFNLENBQWMsU0FBU0MsUUFBUUEsQ0FDM0RDLFNBQXdCLEVBQ3hCQyxTQUFtQixFQUNBO0VBQ25CLE1BQU1DLE9BQU8sR0FBRyxJQUFJQyxHQUFHLENBQUNGLFNBQVMsQ0FBQztFQUVsQyxPQUFPLFNBQVNHLFFBQVFBLENBQUNDLEtBQVUsRUFBZTtJQUNoRCxNQUFNQyxRQUFRLEdBQUc7TUFBRSxHQUFHRDtJQUFNLENBQUM7SUFDN0IsS0FBSyxNQUFNRSxHQUFHLElBQUlELFFBQVEsRUFBRTtNQUMxQixJQUFJSixPQUFPLENBQUNNLEdBQUcsQ0FBQ0QsR0FBRyxDQUFDLEVBQUU7UUFDcEIsT0FBT0QsUUFBUSxDQUFDQyxHQUFHLENBQUM7TUFDdEI7SUFDRjtJQUVBLG9CQUFPVixLQUFBLENBQUFZLGFBQUEsQ0FBQ1QsU0FBUztNQUFBLEdBQUtNO0lBQVEsQ0FBRyxDQUFDO0VBQ3BDLENBQUM7QUFDSCxDQUFDLENBQUMifQ== //# sourceMappingURL=withOmit.js.map