react-with-hoc
Version:
Work with React and HOCs (Higher-Order Components)
34 lines (33 loc) • 5.62 kB
JavaScript
;
var _react = require("react");
var _hocNameForWithStyle = require("../utils/hocNameForWithStyle");
var _newHoc = require("../utils/newHoc");
/**
* Make your component receive a new prop by renaming it.
*
* @see {@link withRenames}
* @example
* function Box({ handleClick }: { handleClick: () => void }) {
* ...
* }
* const NewBox = withRename("onClick", "handleClick")(Box);
* <NewBox onClick={() => {}} />
* // is equivalent to
* <Box handleClick={() => {}} />
*/
const withRename = exports.withRename = (0, _newHoc.newHoc)((0, _hocNameForWithStyle.createHocNameFunction)((newProp, oldProp) => `${newProp}→${oldProp}`), function withRename(Component, newProp, oldProp) {
return function WithRename(props) {
const newProps = {
...props
};
if (newProp in newProps) {
newProps[oldProp] = newProps[newProp];
delete newProps[newProp];
}
return /*#__PURE__*/_react.default.createElement(Component, {
...newProps
});
};
});
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJyZXF1aXJlIiwiX2hvY05hbWVGb3JXaXRoU3R5bGUiLCJfbmV3SG9jIiwid2l0aFJlbmFtZSIsImV4cG9ydHMiLCJuZXdIb2MiLCJjcmVhdGVIb2NOYW1lRnVuY3Rpb24iLCJuZXdQcm9wIiwib2xkUHJvcCIsIkNvbXBvbmVudCIsIldpdGhSZW5hbWUiLCJwcm9wcyIsIm5ld1Byb3BzIiwiZGVmYXVsdCIsImNyZWF0ZUVsZW1lbnQiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaG9jcy93aXRoUmVuYW1lLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgQ29tcG9uZW50VHlwZSwgRnVuY3Rpb25Db21wb25lbnQgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IEZuIH0gZnJvbSBcIi4uL3R5cGVzL0ZuXCI7XG5pbXBvcnQgeyBIb2MgfSBmcm9tIFwiLi4vdHlwZXMvSG9jXCI7XG5pbXBvcnQgeyBjcmVhdGVIb2NOYW1lRnVuY3Rpb24gfSBmcm9tIFwiLi4vdXRpbHMvaG9jTmFtZUZvcldpdGhTdHlsZVwiO1xuaW1wb3J0IHsgbmV3SG9jIH0gZnJvbSBcIi4uL3V0aWxzL25ld0hvY1wiO1xuXG5pbnRlcmZhY2UgV2l0aFJlbmFtZUZuPE5ld1Byb3AgZXh0ZW5kcyBzdHJpbmcsIE9sZFByb3AgZXh0ZW5kcyBzdHJpbmc+XG4gIGV4dGVuZHMgRm4ge1xuICByZXR1cm46IFtPbGRQcm9wLCBhbnldIGV4dGVuZHMgdGhpc1tcImFyZzBcIl1cbiAgICA/XG4gICAgICAgIHwgRXhjbHVkZTx0aGlzW1wiYXJnMFwiXSwgW09sZFByb3AsIGFueV0+XG4gICAgICAgIHwgW05ld1Byb3AsIEV4dHJhY3Q8dGhpc1tcImFyZzBcIl0sIFtPbGRQcm9wLCBhbnldPlsxXV1cbiAgICA6IHRoaXNbXCJhcmcwXCJdO1xufVxuXG50eXBlIFdpdGhSZW5hbWVIb2MgPSA8XG4gIGNvbnN0IE5ld1Byb3AgZXh0ZW5kcyBzdHJpbmcsXG4gIGNvbnN0IE9sZFByb3AgZXh0ZW5kcyBzdHJpbmcsXG4+KFxuICAvKipcbiAgICogQGV4YW1wbGVcbiAgICogZnVuY3Rpb24gQm94KHsgaGFuZGxlQ2xpY2sgfTogeyBoYW5kbGVDbGljazogKCkgPT4gdm9pZCB9KSB7XG4gICAqICAgLi4uXG4gICAqIH1cbiAgICogY29uc3QgTmV3Qm94ID0gd2l0aFJlbmFtZShcIm9uQ2xpY2tcIiwgXCJoYW5kbGVDbGlja1wiKShCb3gpO1xuICAgKiAvLyAgICAgICAgICAgICAgICAgICAgICAgICDihpEgdGhpcyB3aWxsIGJlIHRoZSBwcm9wZXJ0eVxuICAgKiA8TmV3Qm94IG9uQ2xpY2s9eygpID0+IHt9fSAvPlxuICAgKiAvLyAgICAgIOKGkSBvbkNsaWNrIGlzIHRoZSBuZXcgcHJvcFxuICAgKiAvLyBpcyBlcXVpdmFsZW50IHRvXG4gICAqIDxCb3ggaGFuZGxlQ2xpY2s9eygpID0+IHt9fSAvPlxuICAgKi9cbiAgbmV3UHJvcDogTmV3UHJvcCxcbiAgLyoqXG4gICAqIEBleGFtcGxlXG4gICAqIGZ1bmN0aW9uIEJveCh7IGhhbmRsZUNsaWNrIH06IHsgaGFuZGxlQ2xpY2s6ICgpID0+IHZvaWQgfSkge1xuICAgKiAgIC4uLlxuICAgKiB9XG4gICAqIGNvbnN0IE5ld0JveCA9IHdpdGhSZW5hbWUoXCJvbkNsaWNrXCIsIFwiaGFuZGxlQ2xpY2tcIikoQm94KTtcbiAgICogLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDihpEgdGhpcyBpcyB0aGUgb2xkIHByb3BcbiAgICogPE5ld0JveCBvbkNsaWNrPXsoKSA9PiB7fX0gLz5cbiAgICogLy8gaXMgZXF1aXZhbGVudCB0b1xuICAgKiA8Qm94IGhhbmRsZUNsaWNrPXsoKSA9PiB7fX0gLz5cbiAgICogLy8gICDihpEgdGhpcyBpcyB0aGUgb2xkIHByb3BcbiAgICovXG4gIG9sZFByb3A6IE9sZFByb3AsXG4pID0+IEhvYzxbV2l0aFJlbmFtZUZuPE5ld1Byb3AsIE9sZFByb3A+XT47XG5cbi8qKlxuICogTWFrZSB5b3VyIGNvbXBvbmVudCByZWNlaXZlIGEgbmV3IHByb3AgYnkgcmVuYW1pbmcgaXQuXG4gKlxuICogQHNlZSB7QGxpbmsgd2l0aFJlbmFtZXN9XG4gKiBAZXhhbXBsZVxuICogZnVuY3Rpb24gQm94KHsgaGFuZGxlQ2xpY2sgfTogeyBoYW5kbGVDbGljazogKCkgPT4gdm9pZCB9KSB7XG4gKiAgIC4uLlxuICogfVxuICogY29uc3QgTmV3Qm94ID0gd2l0aFJlbmFtZShcIm9uQ2xpY2tcIiwgXCJoYW5kbGVDbGlja1wiKShCb3gpO1xuICogPE5ld0JveCBvbkNsaWNrPXsoKSA9PiB7fX0gLz5cbiAqIC8vIGlzIGVxdWl2YWxlbnQgdG9cbiAqIDxCb3ggaGFuZGxlQ2xpY2s9eygpID0+IHt9fSAvPlxuICovXG5leHBvcnQgY29uc3Qgd2l0aFJlbmFtZSA9IG5ld0hvYzxXaXRoUmVuYW1lSG9jPihcbiAgY3JlYXRlSG9jTmFtZUZ1bmN0aW9uKFxuICAgIChuZXdQcm9wOiBzdHJpbmcsIG9sZFByb3A6IHN0cmluZykgPT4gYCR7bmV3UHJvcH3ihpIke29sZFByb3B9YCxcbiAgKSxcbiAgZnVuY3Rpb24gd2l0aFJlbmFtZShcbiAgICBDb21wb25lbnQ6IENvbXBvbmVudFR5cGUsXG4gICAgbmV3UHJvcDogc3RyaW5nLFxuICAgIG9sZFByb3A6IHN0cmluZyxcbiAgKTogRnVuY3Rpb25Db21wb25lbnQge1xuICAgIHJldHVybiBmdW5jdGlvbiBXaXRoUmVuYW1lKHByb3BzOiBhbnkpOiBKU1guRWxlbWVudCB7XG4gICAgICBjb25zdCBuZXdQcm9wcyA9IHsgLi4ucHJvcHMgfTtcbiAgICAgIGlmIChuZXdQcm9wIGluIG5ld1Byb3BzKSB7XG4gICAgICAgIG5ld1Byb3BzW29sZFByb3BdID0gbmV3UHJvcHNbbmV3UHJvcF07XG4gICAgICAgIGRlbGV0ZSBuZXdQcm9wc1tuZXdQcm9wXTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIDxDb21wb25lbnQgey4uLm5ld1Byb3BzfSAvPjtcbiAgICB9O1xuICB9LFxuKTtcbiJdLCJtYXBwaW5ncyI6Ijs7QUFBQSxJQUFBQSxNQUFBLEdBQUFDLE9BQUE7QUFHQSxJQUFBQyxvQkFBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsT0FBQSxHQUFBRixPQUFBO0FBMkNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ08sTUFBTUcsVUFBVSxHQUFBQyxPQUFBLENBQUFELFVBQUEsR0FBRyxJQUFBRSxjQUFNLEVBQzlCLElBQUFDLDBDQUFxQixFQUNuQixDQUFDQyxPQUFlLEVBQUVDLE9BQWUsS0FBTSxHQUFFRCxPQUFRLElBQUdDLE9BQVEsRUFDOUQsQ0FBQyxFQUNELFNBQVNMLFVBQVVBLENBQ2pCTSxTQUF3QixFQUN4QkYsT0FBZSxFQUNmQyxPQUFlLEVBQ0k7RUFDbkIsT0FBTyxTQUFTRSxVQUFVQSxDQUFDQyxLQUFVLEVBQWU7SUFDbEQsTUFBTUMsUUFBUSxHQUFHO01BQUUsR0FBR0Q7SUFBTSxDQUFDO0lBQzdCLElBQUlKLE9BQU8sSUFBSUssUUFBUSxFQUFFO01BQ3ZCQSxRQUFRLENBQUNKLE9BQU8sQ0FBQyxHQUFHSSxRQUFRLENBQUNMLE9BQU8sQ0FBQztNQUNyQyxPQUFPSyxRQUFRLENBQUNMLE9BQU8sQ0FBQztJQUMxQjtJQUVBLG9CQUFPUixNQUFBLENBQUFjLE9BQUEsQ0FBQUMsYUFBQSxDQUFDTCxTQUFTO01BQUEsR0FBS0c7SUFBUSxDQUFHLENBQUM7RUFDcEMsQ0FBQztBQUNILENBQ0YsQ0FBQyJ9
//# sourceMappingURL=withRename.js.map