react-with-hoc
Version:
Work with React and HOCs (Higher-Order Components)
43 lines (42 loc) • 5 kB
JavaScript
;
var _react = require("react");
var _newHoc = require("../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
*/
const withOmit = exports.withOmit = (0, _newHoc.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.default.createElement(Component, {
...newProps
});
};
});
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJyZXF1aXJlIiwiX25ld0hvYyIsIndpdGhPbWl0IiwiZXhwb3J0cyIsIm5ld0hvYyIsIkNvbXBvbmVudCIsIm9taXROYW1lcyIsIm9taXRTZXQiLCJTZXQiLCJXaXRoT21pdCIsInByb3BzIiwibmV3UHJvcHMiLCJrZXkiLCJoYXMiLCJkZWZhdWx0IiwiY3JlYXRlRWxlbWVudCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9ob2NzL3dpdGhPbWl0LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgQ29tcG9uZW50VHlwZSwgRnVuY3Rpb25Db21wb25lbnQgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IENhbGwsIEZuLCBLZWVwTmV2ZXJzRm4sIE9taXRGbiB9IGZyb20gXCIuLi90eXBlcy9GblwiO1xuaW1wb3J0IHsgSG9jIH0gZnJvbSBcIi4uL3R5cGVzL0hvY1wiO1xuaW1wb3J0IHsgbmV3SG9jIH0gZnJvbSBcIi4uL3V0aWxzL25ld0hvY1wiO1xuXG5pbnRlcmZhY2UgV2l0aE9taXRGbjxPbWl0TmFtZXMgZXh0ZW5kcyBzdHJpbmc+IGV4dGVuZHMgRm4ge1xuICByZXR1cm46IENhbGw8XG4gICAgS2VlcE5ldmVyc0ZuPE9taXRGbjxPbWl0TmFtZXM+PixcbiAgICB7XG4gICAgICBbSyBpbiBFeHRyYWN0PHRoaXNbXCJhcmcwXCJdLCBhbnlbXT5bMF1dOiBbXG4gICAgICAgIEssXG4gICAgICAgIEsgZXh0ZW5kcyBPbWl0TmFtZXNcbiAgICAgICAgICA/IHVuZGVmaW5lZCBleHRlbmRzIEV4dHJhY3Q8dGhpc1tcImFyZzBcIl0sIFtLLCBhbnldPlsxXVxuICAgICAgICAgICAgPyBFeHRyYWN0PHRoaXNbXCJhcmcwXCJdLCBbSywgYW55XT5bMV1cbiAgICAgICAgICAgIDogbmV2ZXJcbiAgICAgICAgICA6IEV4dHJhY3Q8dGhpc1tcImFyZzBcIl0sIFtLLCBhbnldPlsxXSxcbiAgICAgIF07XG4gICAgfVtFeHRyYWN0PHRoaXNbXCJhcmcwXCJdLCBhbnlbXT5bMF1dXG4gID47XG59XG5cbnR5cGUgV2l0aE9taXRIb2MgPSA8T21pdE5hbWVzIGV4dGVuZHMgc3RyaW5nPihcbiAgb21pdE5hbWVzOiBPbWl0TmFtZXNbXSxcbikgPT4gSG9jPFtXaXRoT21pdEZuPE9taXROYW1lcz5dPjtcblxuLyoqXG4gKiBPbWl0LCB3aGljaCBpcyBhY3R1YWxseSBpZ25vcmUgbWVudGlvbmVkIHByb3BzXG4gKlxuICogQHNlZSB7QGxpbmsgd2l0aFBpY2t9XG4gKiBAZXhhbXBsZVxuICogY29uc3QgdXNlciA9IHtcbiAqICAgdXNlcm5hbWU6IFwiU29tZSB1c2VybmFtZVwiLFxuICogICBwYXNzd29yZDogXCJzMG0zIHA0c3N3MHJkXCIsXG4gKiAgIHZpdGFsU2VjcmV0SW5mbzogXCIuLi5cIlxuICogfTtcbiAqIGZ1bmN0aW9uIFJldmVhbEluZm8oXG4gKiAgIHsgdXNlcm5hbWUsIHBhc3N3b3JkLCB2aXRhbFNlY3JldEluZm8gfTpcbiAqICAgeyB1c2VybmFtZTogc3RyaW5nOyBwYXNzd29yZD86IHN0cmluZzsgdml0YWxTZWNyZXRJbmZvOiBzdHJpbmcgfVxuICogKSB7XG4gKiAgIC4uLlxuICogfVxuICogY29uc3QgU2FmZVJldmVhbEluZm8gPSB3aXRoT21pdChbXCJwYXNzd29yZFwiXSkoUmV2ZWFsSW5mbyk7XG4gKiA8U2FmZVJldmVhbEluZm8gey4uLnVzZXJ9IC8+XG4gKiAvLyBpcyBlcXVpdmFsZW50IHRvXG4gKiA8UmV2ZWFsSW5mbyB1c2VybmFtZT17dXNlci51c2VybmFtZX0gdml0YWxTZWNyZXRJbmZvPXt1c2VyLnZpdGFsU2VjcmV0SW5mb30gLz4gLy8gcGFzc3dvcmQgaXMgbm90IGluY2x1ZGVkLCBidXQgeW91IGNhbiBzdGlsbCBzZWUgdml0YWxTZWNyZXRJbmZvXG4gKi9cbmV4cG9ydCBjb25zdCB3aXRoT21pdCA9IG5ld0hvYzxXaXRoT21pdEhvYz4oZnVuY3Rpb24gd2l0aE9taXQoXG4gIENvbXBvbmVudDogQ29tcG9uZW50VHlwZSxcbiAgb21pdE5hbWVzOiBzdHJpbmdbXSxcbik6IEZ1bmN0aW9uQ29tcG9uZW50IHtcbiAgY29uc3Qgb21pdFNldCA9IG5ldyBTZXQob21pdE5hbWVzKTtcblxuICByZXR1cm4gZnVuY3Rpb24gV2l0aE9taXQocHJvcHM6IGFueSk6IEpTWC5FbGVtZW50IHtcbiAgICBjb25zdCBuZXdQcm9wcyA9IHsgLi4ucHJvcHMgfTtcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBuZXdQcm9wcykge1xuICAgICAgaWYgKG9taXRTZXQuaGFzKGtleSkpIHtcbiAgICAgICAgZGVsZXRlIG5ld1Byb3BzW2tleV07XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIDxDb21wb25lbnQgey4uLm5ld1Byb3BzfSAvPjtcbiAgfTtcbn0pO1xuIl0sIm1hcHBpbmdzIjoiOztBQUFBLElBQUFBLE1BQUEsR0FBQUMsT0FBQTtBQUdBLElBQUFDLE9BQUEsR0FBQUQsT0FBQTtBQXNCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTyxNQUFNRSxRQUFRLEdBQUFDLE9BQUEsQ0FBQUQsUUFBQSxHQUFHLElBQUFFLGNBQU0sRUFBYyxTQUFTRixRQUFRQSxDQUMzREcsU0FBd0IsRUFDeEJDLFNBQW1CLEVBQ0E7RUFDbkIsTUFBTUMsT0FBTyxHQUFHLElBQUlDLEdBQUcsQ0FBQ0YsU0FBUyxDQUFDO0VBRWxDLE9BQU8sU0FBU0csUUFBUUEsQ0FBQ0MsS0FBVSxFQUFlO0lBQ2hELE1BQU1DLFFBQVEsR0FBRztNQUFFLEdBQUdEO0lBQU0sQ0FBQztJQUM3QixLQUFLLE1BQU1FLEdBQUcsSUFBSUQsUUFBUSxFQUFFO01BQzFCLElBQUlKLE9BQU8sQ0FBQ00sR0FBRyxDQUFDRCxHQUFHLENBQUMsRUFBRTtRQUNwQixPQUFPRCxRQUFRLENBQUNDLEdBQUcsQ0FBQztNQUN0QjtJQUNGO0lBRUEsb0JBQU9iLE1BQUEsQ0FBQWUsT0FBQSxDQUFBQyxhQUFBLENBQUNWLFNBQVM7TUFBQSxHQUFLTTtJQUFRLENBQUcsQ0FBQztFQUNwQyxDQUFDO0FBQ0gsQ0FBQyxDQUFDIn0=
//# sourceMappingURL=withOmit.js.map