react-with-hoc
Version:
Work with React and HOCs (Higher-Order Components)
37 lines • 3.71 kB
JavaScript
import React, { isValidElement } from "react";
export function getTargetByProps({
props,
name,
TargetComponent,
options
}) {
if (typeof props[name] === "function") {
return props[name](TargetComponent);
}
if (typeof props[name] === "object" && props[name] !== null && !isValidElement(props[name])) {
return function FromPropObject(myProps) {
return /*#__PURE__*/React.createElement(TargetComponent, {
...myProps,
...props[name]
});
};
}
if (options.hiddenByDefault) {
if (props[name] === true) {
return TargetComponent;
}
if (!props[name]) {
return function Null() {
return null;
};
}
}
if (name in props) {
return function FromProp() {
return props[name];
};
}
return TargetComponent;
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsImlzVmFsaWRFbGVtZW50IiwiZ2V0VGFyZ2V0QnlQcm9wcyIsInByb3BzIiwibmFtZSIsIlRhcmdldENvbXBvbmVudCIsIm9wdGlvbnMiLCJGcm9tUHJvcE9iamVjdCIsIm15UHJvcHMiLCJjcmVhdGVFbGVtZW50IiwiaGlkZGVuQnlEZWZhdWx0IiwiTnVsbCIsIkZyb21Qcm9wIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3V0aWxzL2dldFRhcmdldEJ5UHJvcHMudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyBDb21wb25lbnRUeXBlLCBpc1ZhbGlkRWxlbWVudCB9IGZyb20gXCJyZWFjdFwiO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0VGFyZ2V0QnlQcm9wcyh7XG4gIHByb3BzLFxuICBuYW1lLFxuICBUYXJnZXRDb21wb25lbnQsXG4gIG9wdGlvbnMsXG59OiB7XG4gIHByb3BzOiBhbnk7XG4gIG5hbWU6IHN0cmluZztcbiAgVGFyZ2V0Q29tcG9uZW50OiBDb21wb25lbnRUeXBlO1xuICBvcHRpb25zOiBhbnk7XG59KTogYW55IHtcbiAgaWYgKHR5cGVvZiBwcm9wc1tuYW1lXSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgcmV0dXJuIHByb3BzW25hbWVdKFRhcmdldENvbXBvbmVudCk7XG4gIH1cbiAgaWYgKFxuICAgIHR5cGVvZiBwcm9wc1tuYW1lXSA9PT0gXCJvYmplY3RcIiAmJlxuICAgIHByb3BzW25hbWVdICE9PSBudWxsICYmXG4gICAgIWlzVmFsaWRFbGVtZW50KHByb3BzW25hbWVdKVxuICApIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gRnJvbVByb3BPYmplY3QobXlQcm9wczogYW55KTogYW55IHtcbiAgICAgIHJldHVybiA8VGFyZ2V0Q29tcG9uZW50IHsuLi5teVByb3BzfSB7Li4ucHJvcHNbbmFtZV19IC8+O1xuICAgIH07XG4gIH1cbiAgaWYgKG9wdGlvbnMuaGlkZGVuQnlEZWZhdWx0KSB7XG4gICAgaWYgKHByb3BzW25hbWVdID09PSB0cnVlKSB7XG4gICAgICByZXR1cm4gVGFyZ2V0Q29tcG9uZW50O1xuICAgIH1cbiAgICBpZiAoIXByb3BzW25hbWVdKSB7XG4gICAgICByZXR1cm4gZnVuY3Rpb24gTnVsbCgpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9O1xuICAgIH1cbiAgfVxuICBpZiAobmFtZSBpbiBwcm9wcykge1xuICAgIHJldHVybiBmdW5jdGlvbiBGcm9tUHJvcCgpOiBhbnkge1xuICAgICAgcmV0dXJuIHByb3BzW25hbWVdO1xuICAgIH07XG4gIH1cblxuICByZXR1cm4gVGFyZ2V0Q29tcG9uZW50O1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQSxPQUFPQSxLQUFLLElBQW1CQyxjQUFjLFFBQVEsT0FBTztBQUU1RCxPQUFPLFNBQVNDLGdCQUFnQkEsQ0FBQztFQUMvQkMsS0FBSztFQUNMQyxJQUFJO0VBQ0pDLGVBQWU7RUFDZkM7QUFNRixDQUFDLEVBQU87RUFDTixJQUFJLE9BQU9ILEtBQUssQ0FBQ0MsSUFBSSxDQUFDLEtBQUssVUFBVSxFQUFFO0lBQ3JDLE9BQU9ELEtBQUssQ0FBQ0MsSUFBSSxDQUFDLENBQUNDLGVBQWUsQ0FBQztFQUNyQztFQUNBLElBQ0UsT0FBT0YsS0FBSyxDQUFDQyxJQUFJLENBQUMsS0FBSyxRQUFRLElBQy9CRCxLQUFLLENBQUNDLElBQUksQ0FBQyxLQUFLLElBQUksSUFDcEIsQ0FBQ0gsY0FBYyxDQUFDRSxLQUFLLENBQUNDLElBQUksQ0FBQyxDQUFDLEVBQzVCO0lBQ0EsT0FBTyxTQUFTRyxjQUFjQSxDQUFDQyxPQUFZLEVBQU87TUFDaEQsb0JBQU9SLEtBQUEsQ0FBQVMsYUFBQSxDQUFDSixlQUFlO1FBQUEsR0FBS0csT0FBTztRQUFBLEdBQU1MLEtBQUssQ0FBQ0MsSUFBSTtNQUFDLENBQUcsQ0FBQztJQUMxRCxDQUFDO0VBQ0g7RUFDQSxJQUFJRSxPQUFPLENBQUNJLGVBQWUsRUFBRTtJQUMzQixJQUFJUCxLQUFLLENBQUNDLElBQUksQ0FBQyxLQUFLLElBQUksRUFBRTtNQUN4QixPQUFPQyxlQUFlO0lBQ3hCO0lBQ0EsSUFBSSxDQUFDRixLQUFLLENBQUNDLElBQUksQ0FBQyxFQUFFO01BQ2hCLE9BQU8sU0FBU08sSUFBSUEsQ0FBQSxFQUFHO1FBQ3JCLE9BQU8sSUFBSTtNQUNiLENBQUM7SUFDSDtFQUNGO0VBQ0EsSUFBSVAsSUFBSSxJQUFJRCxLQUFLLEVBQUU7SUFDakIsT0FBTyxTQUFTUyxRQUFRQSxDQUFBLEVBQVE7TUFDOUIsT0FBT1QsS0FBSyxDQUFDQyxJQUFJLENBQUM7SUFDcEIsQ0FBQztFQUNIO0VBRUEsT0FBT0MsZUFBZTtBQUN4QiJ9
//# sourceMappingURL=getTargetByProps.js.map