UNPKG

react-with-hoc

Version:

Work with React and HOCs (Higher-Order Components)

43 lines (42 loc) 4.94 kB
"use strict"; 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