react-with-hoc
Version:
Work with React and HOCs (Higher-Order Components)
43 lines (42 loc) • 4.94 kB
JavaScript
;
var _react = require("react");
var _newHoc = require("../utils/newHoc");
/**
* Pick, which is actually ignore other props
*
* @see {@link withOmit}
* @example
* const user = {
* username: "Some username",
* password: "s0m3 p4ssw0rd",
* vitalSecretInfo: "..."
* };
* function RevealInfo(
* { username, password, vitalSecretInfo }:
* { username: string; password?: string; vitalSecretInfo: string }
* ) {
* ...
* }
* const SafeRevealInfo = withPick(["username"])(RevealInfo);
* <SafeRevealInfo {...user} />
* // is equivalent to
* <RevealInfo username={user.username} /> // password and vitalSecretInfo is not included
*/
const withPick = exports.withPick = (0, _newHoc.newHoc)(function withPick(Component, pickNames) {
const pickSet = new Set(pickNames);
return function WithPick(props) {
const newProps = {
...props
};
for (const key in newProps) {
if (!pickSet.has(key) && key in newProps) {
delete newProps[key];
}
}
return /*#__PURE__*/_react.default.createElement(Component, {
...newProps
});
};
});
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJyZXF1aXJlIiwiX25ld0hvYyIsIndpdGhQaWNrIiwiZXhwb3J0cyIsIm5ld0hvYyIsIkNvbXBvbmVudCIsInBpY2tOYW1lcyIsInBpY2tTZXQiLCJTZXQiLCJXaXRoUGljayIsInByb3BzIiwibmV3UHJvcHMiLCJrZXkiLCJoYXMiLCJkZWZhdWx0IiwiY3JlYXRlRWxlbWVudCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9ob2NzL3dpdGhQaWNrLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgQ29tcG9uZW50VHlwZSwgRnVuY3Rpb25Db21wb25lbnQgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IENhbGwsIEZuLCBLZWVwTmV2ZXJzRm4sIFBpY2tGbiB9IGZyb20gXCIuLi90eXBlcy9GblwiO1xuaW1wb3J0IHsgSG9jIH0gZnJvbSBcIi4uL3R5cGVzL0hvY1wiO1xuaW1wb3J0IHsgbmV3SG9jIH0gZnJvbSBcIi4uL3V0aWxzL25ld0hvY1wiO1xuXG5pbnRlcmZhY2UgV2l0aFBpY2tGbjxQaWNrTmFtZXMgZXh0ZW5kcyBzdHJpbmc+IGV4dGVuZHMgRm4ge1xuICByZXR1cm46IENhbGw8XG4gICAgS2VlcE5ldmVyc0ZuPFBpY2tGbjxQaWNrTmFtZXM+PixcbiAgICB7XG4gICAgICBbSyBpbiBFeHRyYWN0PHRoaXNbXCJhcmcwXCJdLCBhbnlbXT5bMF1dOiBbXG4gICAgICAgIEssXG4gICAgICAgIEsgZXh0ZW5kcyBQaWNrTmFtZXNcbiAgICAgICAgICA/IEV4dHJhY3Q8dGhpc1tcImFyZzBcIl0sIFtLLCBhbnldPlsxXVxuICAgICAgICAgIDogdW5kZWZpbmVkIGV4dGVuZHMgRXh0cmFjdDx0aGlzW1wiYXJnMFwiXSwgW0ssIGFueV0+WzFdXG4gICAgICAgICAgICA/IEV4dHJhY3Q8dGhpc1tcImFyZzBcIl0sIFtLLCBhbnldPlsxXVxuICAgICAgICAgICAgOiBuZXZlcixcbiAgICAgIF07XG4gICAgfVtFeHRyYWN0PHRoaXNbXCJhcmcwXCJdLCBhbnlbXT5bMF1dXG4gID47XG59XG5cbnR5cGUgV2l0aFBpY2tIb2MgPSA8UGlja05hbWVzIGV4dGVuZHMgc3RyaW5nPihcbiAgcGlja05hbWVzOiBQaWNrTmFtZXNbXSxcbikgPT4gSG9jPFtXaXRoUGlja0ZuPFBpY2tOYW1lcz5dPjtcblxuLyoqXG4gKiBQaWNrLCB3aGljaCBpcyBhY3R1YWxseSBpZ25vcmUgb3RoZXIgcHJvcHNcbiAqXG4gKiBAc2VlIHtAbGluayB3aXRoT21pdH1cbiAqIEBleGFtcGxlXG4gKiBjb25zdCB1c2VyID0ge1xuICogICB1c2VybmFtZTogXCJTb21lIHVzZXJuYW1lXCIsXG4gKiAgIHBhc3N3b3JkOiBcInMwbTMgcDRzc3cwcmRcIixcbiAqICAgdml0YWxTZWNyZXRJbmZvOiBcIi4uLlwiXG4gKiB9O1xuICogZnVuY3Rpb24gUmV2ZWFsSW5mbyhcbiAqICAgeyB1c2VybmFtZSwgcGFzc3dvcmQsIHZpdGFsU2VjcmV0SW5mbyB9OlxuICogICB7IHVzZXJuYW1lOiBzdHJpbmc7IHBhc3N3b3JkPzogc3RyaW5nOyB2aXRhbFNlY3JldEluZm86IHN0cmluZyB9XG4gKiApIHtcbiAqICAgLi4uXG4gKiB9XG4gKiBjb25zdCBTYWZlUmV2ZWFsSW5mbyA9IHdpdGhQaWNrKFtcInVzZXJuYW1lXCJdKShSZXZlYWxJbmZvKTtcbiAqIDxTYWZlUmV2ZWFsSW5mbyB7Li4udXNlcn0gLz5cbiAqIC8vIGlzIGVxdWl2YWxlbnQgdG9cbiAqIDxSZXZlYWxJbmZvIHVzZXJuYW1lPXt1c2VyLnVzZXJuYW1lfSAvPiAvLyBwYXNzd29yZCBhbmQgdml0YWxTZWNyZXRJbmZvIGlzIG5vdCBpbmNsdWRlZFxuICovXG5leHBvcnQgY29uc3Qgd2l0aFBpY2sgPSBuZXdIb2M8V2l0aFBpY2tIb2M+KGZ1bmN0aW9uIHdpdGhQaWNrKFxuICBDb21wb25lbnQ6IENvbXBvbmVudFR5cGUsXG4gIHBpY2tOYW1lczogc3RyaW5nW10sXG4pOiBGdW5jdGlvbkNvbXBvbmVudCB7XG4gIGNvbnN0IHBpY2tTZXQgPSBuZXcgU2V0KHBpY2tOYW1lcyk7XG5cbiAgcmV0dXJuIGZ1bmN0aW9uIFdpdGhQaWNrKHByb3BzOiBhbnkpOiBKU1guRWxlbWVudCB7XG4gICAgY29uc3QgbmV3UHJvcHMgPSB7IC4uLnByb3BzIH07XG4gICAgZm9yIChjb25zdCBrZXkgaW4gbmV3UHJvcHMpIHtcbiAgICAgIGlmICghcGlja1NldC5oYXMoa2V5KSAmJiBrZXkgaW4gbmV3UHJvcHMpIHtcbiAgICAgICAgZGVsZXRlIG5ld1Byb3BzW2tleV07XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIDxDb21wb25lbnQgey4uLm5ld1Byb3BzfSAvPjtcbiAgfTtcbn0pO1xuIl0sIm1hcHBpbmdzIjoiOztBQUFBLElBQUFBLE1BQUEsR0FBQUMsT0FBQTtBQUdBLElBQUFDLE9BQUEsR0FBQUQsT0FBQTtBQXNCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTyxNQUFNRSxRQUFRLEdBQUFDLE9BQUEsQ0FBQUQsUUFBQSxHQUFHLElBQUFFLGNBQU0sRUFBYyxTQUFTRixRQUFRQSxDQUMzREcsU0FBd0IsRUFDeEJDLFNBQW1CLEVBQ0E7RUFDbkIsTUFBTUMsT0FBTyxHQUFHLElBQUlDLEdBQUcsQ0FBQ0YsU0FBUyxDQUFDO0VBRWxDLE9BQU8sU0FBU0csUUFBUUEsQ0FBQ0MsS0FBVSxFQUFlO0lBQ2hELE1BQU1DLFFBQVEsR0FBRztNQUFFLEdBQUdEO0lBQU0sQ0FBQztJQUM3QixLQUFLLE1BQU1FLEdBQUcsSUFBSUQsUUFBUSxFQUFFO01BQzFCLElBQUksQ0FBQ0osT0FBTyxDQUFDTSxHQUFHLENBQUNELEdBQUcsQ0FBQyxJQUFJQSxHQUFHLElBQUlELFFBQVEsRUFBRTtRQUN4QyxPQUFPQSxRQUFRLENBQUNDLEdBQUcsQ0FBQztNQUN0QjtJQUNGO0lBRUEsb0JBQU9iLE1BQUEsQ0FBQWUsT0FBQSxDQUFBQyxhQUFBLENBQUNWLFNBQVM7TUFBQSxHQUFLTTtJQUFRLENBQUcsQ0FBQztFQUNwQyxDQUFDO0FBQ0gsQ0FBQyxDQUFDIn0=
//# sourceMappingURL=withPick.js.map