react-with-hoc
Version:
Work with React and HOCs (Higher-Order Components)
121 lines (120 loc) • 15.1 kB
JavaScript
import React, { Fragment, createElement, isValidElement } from "react";
import { newHoc } from "../utils/newHoc";
const isReactNode = value => isValidElement(value) || typeof value !== "object" || value === null;
/**
* Like Array.map but for React components.
* Concatenates components for each item in array, range or object
*
* @experimental It needs to discuss its name
*
* @example
* const Component = withForEach(3)(Example)
* <Component {...props} />
* // is equivalent to
* <>
* <Example key={0} {...props} i={0} />
* <Example key={1} {...props} i={1} />
* <Example key={2} {...props} i={2} />
* </>
*
* @example
* const Component = withForEach(["a", "b"])(Example)
* <Component {...props} />
* // is equivalent to
* <>
* <Example key={0} {...props} i={0}>a</Example>
* <Example key={1} {...props} i={1}>b</Example>
* </>
*
* @example
* const Component = withForEach({
* a: 100,
* b: 200,
* })(Example)
* <Component {...props} />
* // is equivalent to
* <>
* <Example key="a" {...props} i="a">100</Example>
* <Example key="b" {...props} i="b">200</Example>
* </>
*/
export const withForEach = newHoc(function withForEach(Component, target, {
indexName = "i",
key = props => props[indexName],
valueName = "children"
} = {}) {
function componentWithKey(newProps) {
if (valueName === "children") {
const {
children,
...rest
} = newProps;
return /*#__PURE__*/React.createElement(Component, {
key: key(newProps),
...rest
}, children);
}
return /*#__PURE__*/React.createElement(Component, {
key: key(newProps),
...newProps
});
}
return function WithForEach(props) {
const children = (() => {
if (typeof target === "number") {
return Array.from({
length: target
}).map((_v, i) => componentWithKey({
...props,
[indexName]: i
}));
}
if (Array.isArray(target)) {
if (target.length === 0) {
return [];
}
if (isReactNode(target[0])) {
return target.map((v, i) => componentWithKey({
...props,
[indexName]: i,
[valueName]: v
}));
}
return target.map((v, i) => componentWithKey({
...v,
...props,
[indexName]: i
}));
}
if (typeof target === "object" && target !== null) {
if (Object.keys(target).length === 0) {
return [];
}
if (isReactNode(Object.values(target)[0])) {
return Object.entries(target).map(([index, value]) => {
return componentWithKey({
...props,
[indexName]: index,
[valueName]: value
});
});
}
return Object.entries(target).map(([index, value]) => {
return componentWithKey({
...value,
...props,
[indexName]: index
});
});
}
if (process.env.NODE_ENV !== "production") {
const never = target;
never;
}
throw new Error("withForEach: should be used with number, Array or object");
})();
return createElement(Fragment, null, ...children);
};
});
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIkZyYWdtZW50IiwiY3JlYXRlRWxlbWVudCIsImlzVmFsaWRFbGVtZW50IiwibmV3SG9jIiwiaXNSZWFjdE5vZGUiLCJ2YWx1ZSIsIndpdGhGb3JFYWNoIiwiQ29tcG9uZW50IiwidGFyZ2V0IiwiaW5kZXhOYW1lIiwia2V5IiwicHJvcHMiLCJ2YWx1ZU5hbWUiLCJjb21wb25lbnRXaXRoS2V5IiwibmV3UHJvcHMiLCJjaGlsZHJlbiIsInJlc3QiLCJXaXRoRm9yRWFjaCIsIkFycmF5IiwiZnJvbSIsImxlbmd0aCIsIm1hcCIsIl92IiwiaSIsImlzQXJyYXkiLCJ2IiwiT2JqZWN0Iiwia2V5cyIsInZhbHVlcyIsImVudHJpZXMiLCJpbmRleCIsInByb2Nlc3MiLCJlbnYiLCJOT0RFX0VOViIsIm5ldmVyIiwiRXJyb3IiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaG9jcy93aXRoRm9yRWFjaC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7XG4gIENvbXBvbmVudFR5cGUsXG4gIEZyYWdtZW50LFxuICBGdW5jdGlvbkNvbXBvbmVudCxcbiAgS2V5LFxuICBSZWFjdE5vZGUsXG4gIGNyZWF0ZUVsZW1lbnQsXG4gIGlzVmFsaWRFbGVtZW50LFxufSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IFNldE9wdGlvbmFsRm4gfSBmcm9tIFwiLi4vdHlwZXMvRm5cIjtcbmltcG9ydCB7IEhvYyB9IGZyb20gXCIuLi90eXBlcy9Ib2NcIjtcbmltcG9ydCB7IG5ld0hvYyB9IGZyb20gXCIuLi91dGlscy9uZXdIb2NcIjtcblxuaW50ZXJmYWNlIE9wdGlvbnM8SW5kZXhOYW1lIGV4dGVuZHMgc3RyaW5nLCBWYWx1ZU5hbWUgZXh0ZW5kcyBzdHJpbmc+IHtcbiAgLyoqXG4gICAqIEBkZWZhdWx0IFwiaVwiXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDihpMgXCJzb21lTmFtZVwiIGhlcmUgYXMgd2VsbFxuICAgKiBjb25zdCBDb21wb25lbnQgPSB3aXRoRm9yRWFjaCgzLCB7aW5kZXhOYW1lOiBcInNvbWVOYW1lXCJ9KShFeGFtcGxlKVxuICAgKiA8Q29tcG9uZW50IHsuLi5wcm9wc30gLz5cbiAgICogLy8gaXMgZXF1aXZhbGVudCB0b1xuICAgKiA8PlxuICAgKiAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgICDihpMgXCJzb21lTmFtZVwiIGhlcmUgYXMgd2VsbFxuICAgKiAgIDxFeGFtcGxlIGtleT17MH0gey4uLnByb3BzfSBzb21lTmFtZT17MH0gLz5cbiAgICogICA8RXhhbXBsZSBrZXk9ezF9IHsuLi5wcm9wc30gc29tZU5hbWU9ezF9IC8+XG4gICAqICAgPEV4YW1wbGUga2V5PXsyfSB7Li4ucHJvcHN9IHNvbWVOYW1lPXsyfSAvPlxuICAgKiA8Lz5cbiAgICovXG4gIGluZGV4TmFtZT86IEluZGV4TmFtZTtcbiAgLyoqXG4gICAqIEBkZWZhdWx0IFwiY2hpbGRyZW5cIlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBjb25zdCBDb21wb25lbnQgPSB3aXRoRm9yRWFjaChcbiAgICogICBbXCJhXCIsIFwiYlwiXSxcbiAgICogICAvLyAgICAgICAgICAg4oaTIFwic29tZU5hbWVcIiBoZXJlIGFzIHdlbGxcbiAgICogICB7dmFsdWVOYW1lOiBcInNvbWVOYW1lXCJ9XG4gICAqICkoRXhhbXBsZSlcbiAgICogPENvbXBvbmVudCB7Li4ucHJvcHN9IC8+XG4gICAqIC8vIGlzIGVxdWl2YWxlbnQgdG9cbiAgICogPD5cbiAgICogICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg4oaTIFwic29tZU5hbWVcIiBoZXJlIGFzIHdlbGxcbiAgICogICA8RXhhbXBsZSBrZXk9ezB9IHsuLi5wcm9wc30gaT17MH0gc29tZU5hbWU9XCJhXCIgLz5cbiAgICogICA8RXhhbXBsZSBrZXk9ezF9IHsuLi5wcm9wc30gaT17MX0gc29tZU5hbWU9XCJiXCIgLz5cbiAgICogPC8+XG4gICAqL1xuICB2YWx1ZU5hbWU/OiBWYWx1ZU5hbWU7XG4gIC8qKlxuICAgKiBAZGVmYXVsdCAocHJvcHMpID0+IHByb3BzW2luZGV4TmFtZV0gLy8gd2hpY2ggaXMgcHJvcHMuaVxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiAvLyBtYWtlcyBrZXkgPSAyXnhcbiAgICogY29uc3QgQ29tcG9uZW50ID0gd2l0aEZvckVhY2goNCwge2tleTogKHtpfSkgPT4gMiAqKiBpfSkoRXhhbXBsZSlcbiAgICogPENvbXBvbmVudCB7Li4ucHJvcHN9IC8+XG4gICAqIC8vIGlzIGVxdWl2YWxlbnQgdG9cbiAgICogPD5cbiAgICogICAvLyAgICAgICAgICAgIOKGkyBub3RlIGtleSB2YWx1ZXNcbiAgICogICA8RXhhbXBsZSBrZXk9ezF9IHsuLi5wcm9wc30gc29tZU5hbWU9ezB9IC8+XG4gICAqICAgPEV4YW1wbGUga2V5PXsyfSB7Li4ucHJvcHN9IHNvbWVOYW1lPXsxfSAvPlxuICAgKiAgIDxFeGFtcGxlIGtleT17NH0gey4uLnByb3BzfSBzb21lTmFtZT17Mn0gLz5cbiAgICogICA8RXhhbXBsZSBrZXk9ezh9IHsuLi5wcm9wc30gc29tZU5hbWU9ezJ9IC8+XG4gICAqIDwvPlxuICAgKi9cbiAga2V5PzogKHByb3BzOiBvYmplY3QpID0+IEtleTtcbn1cblxuaW50ZXJmYWNlIFdpdGhGb3JFYWNoSG9jIHtcbiAgPEluZGV4TmFtZSBleHRlbmRzIHN0cmluZywgVmFsdWVOYW1lIGV4dGVuZHMgc3RyaW5nPihcbiAgICB0YXJnZXQ6IG51bWJlciB8IEFycmF5PHVua25vd24+IHwgb2JqZWN0LFxuICAgIG9wdGlvbnM/OiBPcHRpb25zPEluZGV4TmFtZSwgVmFsdWVOYW1lPixcbiAgKTogSG9jPFxuICAgIFtcbiAgICAgIFNldE9wdGlvbmFsRm48XG4gICAgICAgIHwgKFtJbmRleE5hbWUgJiBcIlwiXSBleHRlbmRzIFtuZXZlcl0gPyBJbmRleE5hbWUgOiBcImlcIilcbiAgICAgICAgfCAoW1ZhbHVlTmFtZSAmIFwiXCJdIGV4dGVuZHMgW25ldmVyXSA/IFZhbHVlTmFtZSA6IFwiY2hpbGRyZW5cIilcbiAgICAgID4sXG4gICAgXVxuICA+O1xufVxuXG5jb25zdCBpc1JlYWN0Tm9kZSA9ICh2YWx1ZTogdW5rbm93bik6IGJvb2xlYW4gPT5cbiAgaXNWYWxpZEVsZW1lbnQodmFsdWUpIHx8IHR5cGVvZiB2YWx1ZSAhPT0gXCJvYmplY3RcIiB8fCB2YWx1ZSA9PT0gbnVsbDtcblxuLyoqXG4gKiBMaWtlIEFycmF5Lm1hcCBidXQgZm9yIFJlYWN0IGNvbXBvbmVudHMuXG4gKiBDb25jYXRlbmF0ZXMgY29tcG9uZW50cyBmb3IgZWFjaCBpdGVtIGluIGFycmF5LCByYW5nZSBvciBvYmplY3RcbiAqXG4gKiBAZXhwZXJpbWVudGFsIEl0IG5lZWRzIHRvIGRpc2N1c3MgaXRzIG5hbWVcbiAqXG4gKiBAZXhhbXBsZVxuICogY29uc3QgQ29tcG9uZW50ID0gd2l0aEZvckVhY2goMykoRXhhbXBsZSlcbiAqIDxDb21wb25lbnQgey4uLnByb3BzfSAvPlxuICogLy8gaXMgZXF1aXZhbGVudCB0b1xuICogPD5cbiAqICAgPEV4YW1wbGUga2V5PXswfSB7Li4ucHJvcHN9IGk9ezB9IC8+XG4gKiAgIDxFeGFtcGxlIGtleT17MX0gey4uLnByb3BzfSBpPXsxfSAvPlxuICogICA8RXhhbXBsZSBrZXk9ezJ9IHsuLi5wcm9wc30gaT17Mn0gLz5cbiAqIDwvPlxuICpcbiAqIEBleGFtcGxlXG4gKiBjb25zdCBDb21wb25lbnQgPSB3aXRoRm9yRWFjaChbXCJhXCIsIFwiYlwiXSkoRXhhbXBsZSlcbiAqIDxDb21wb25lbnQgey4uLnByb3BzfSAvPlxuICogLy8gaXMgZXF1aXZhbGVudCB0b1xuICogPD5cbiAqICAgPEV4YW1wbGUga2V5PXswfSB7Li4ucHJvcHN9IGk9ezB9PmE8L0V4YW1wbGU+XG4gKiAgIDxFeGFtcGxlIGtleT17MX0gey4uLnByb3BzfSBpPXsxfT5iPC9FeGFtcGxlPlxuICogPC8+XG4gKlxuICogQGV4YW1wbGVcbiAqIGNvbnN0IENvbXBvbmVudCA9IHdpdGhGb3JFYWNoKHtcbiAqICAgYTogMTAwLFxuICogICBiOiAyMDAsXG4gKiB9KShFeGFtcGxlKVxuICogPENvbXBvbmVudCB7Li4ucHJvcHN9IC8+XG4gKiAvLyBpcyBlcXVpdmFsZW50IHRvXG4gKiA8PlxuICogICA8RXhhbXBsZSBrZXk9XCJhXCIgey4uLnByb3BzfSBpPVwiYVwiPjEwMDwvRXhhbXBsZT5cbiAqICAgPEV4YW1wbGUga2V5PVwiYlwiIHsuLi5wcm9wc30gaT1cImJcIj4yMDA8L0V4YW1wbGU+XG4gKiA8Lz5cbiAqL1xuZXhwb3J0IGNvbnN0IHdpdGhGb3JFYWNoID0gbmV3SG9jPFdpdGhGb3JFYWNoSG9jPihmdW5jdGlvbiB3aXRoRm9yRWFjaChcbiAgQ29tcG9uZW50OiBDb21wb25lbnRUeXBlLFxuICB0YXJnZXQ6IG51bWJlciB8IEFycmF5PHVua25vd24+IHwgb2JqZWN0LFxuICB7XG4gICAgaW5kZXhOYW1lID0gXCJpXCIsXG4gICAga2V5ID0gKHByb3BzOiBhbnkpOiBLZXkgPT4gcHJvcHNbaW5kZXhOYW1lXSxcbiAgICB2YWx1ZU5hbWUgPSBcImNoaWxkcmVuXCIsXG4gIH0gPSB7fSxcbik6IEZ1bmN0aW9uQ29tcG9uZW50IHtcbiAgZnVuY3Rpb24gY29tcG9uZW50V2l0aEtleShuZXdQcm9wczogYW55KTogUmVhY3ROb2RlIHtcbiAgICBpZiAodmFsdWVOYW1lID09PSBcImNoaWxkcmVuXCIpIHtcbiAgICAgIGNvbnN0IHsgY2hpbGRyZW4sIC4uLnJlc3QgfSA9IG5ld1Byb3BzO1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgPENvbXBvbmVudCBrZXk9e2tleShuZXdQcm9wcyl9IHsuLi5yZXN0fT5cbiAgICAgICAgICB7Y2hpbGRyZW59XG4gICAgICAgIDwvQ29tcG9uZW50PlxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIDxDb21wb25lbnQga2V5PXtrZXkobmV3UHJvcHMpfSB7Li4ubmV3UHJvcHN9IC8+O1xuICB9XG5cbiAgcmV0dXJuIGZ1bmN0aW9uIFdpdGhGb3JFYWNoKHByb3BzOiBhbnkpOiBSZWFjdE5vZGUge1xuICAgIGNvbnN0IGNoaWxkcmVuID0gKCgpOiBSZWFjdE5vZGVbXSA9PiB7XG4gICAgICBpZiAodHlwZW9mIHRhcmdldCA9PT0gXCJudW1iZXJcIikge1xuICAgICAgICByZXR1cm4gQXJyYXkuZnJvbSh7IGxlbmd0aDogdGFyZ2V0IH0pLm1hcCgoX3YsIGkpID0+XG4gICAgICAgICAgY29tcG9uZW50V2l0aEtleSh7IC4uLnByb3BzLCBbaW5kZXhOYW1lXTogaSB9KSxcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkodGFyZ2V0KSkge1xuICAgICAgICBpZiAodGFyZ2V0Lmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpc1JlYWN0Tm9kZSh0YXJnZXRbMF0pKSB7XG4gICAgICAgICAgcmV0dXJuIHRhcmdldC5tYXAoKHYsIGkpID0+XG4gICAgICAgICAgICBjb21wb25lbnRXaXRoS2V5KHsgLi4ucHJvcHMsIFtpbmRleE5hbWVdOiBpLCBbdmFsdWVOYW1lXTogdiB9KSxcbiAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRhcmdldC5tYXAoKHYsIGkpID0+XG4gICAgICAgICAgY29tcG9uZW50V2l0aEtleSh7IC4uLnYsIC4uLnByb3BzLCBbaW5kZXhOYW1lXTogaSB9KSxcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHR5cGVvZiB0YXJnZXQgPT09IFwib2JqZWN0XCIgJiYgdGFyZ2V0ICE9PSBudWxsKSB7XG4gICAgICAgIGlmIChPYmplY3Qua2V5cyh0YXJnZXQpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpc1JlYWN0Tm9kZShPYmplY3QudmFsdWVzKHRhcmdldClbMF0pKSB7XG4gICAgICAgICAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHRhcmdldCkubWFwKChbaW5kZXgsIHZhbHVlXSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGNvbXBvbmVudFdpdGhLZXkoe1xuICAgICAgICAgICAgICAuLi5wcm9wcyxcbiAgICAgICAgICAgICAgW2luZGV4TmFtZV06IGluZGV4LFxuICAgICAgICAgICAgICBbdmFsdWVOYW1lXTogdmFsdWUsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBPYmplY3QuZW50cmllcyh0YXJnZXQpLm1hcCgoW2luZGV4LCB2YWx1ZV0pID0+IHtcbiAgICAgICAgICByZXR1cm4gY29tcG9uZW50V2l0aEtleSh7IC4uLnZhbHVlLCAuLi5wcm9wcywgW2luZGV4TmFtZV06IGluZGV4IH0pO1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikge1xuICAgICAgICBjb25zdCBuZXZlcjogbmV2ZXIgPSB0YXJnZXQ7XG4gICAgICAgIG5ldmVyO1xuICAgICAgfVxuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBcIndpdGhGb3JFYWNoOiBzaG91bGQgYmUgdXNlZCB3aXRoIG51bWJlciwgQXJyYXkgb3Igb2JqZWN0XCIsXG4gICAgICApO1xuICAgIH0pKCk7XG5cbiAgICByZXR1cm4gY3JlYXRlRWxlbWVudChGcmFnbWVudCwgbnVsbCwgLi4uY2hpbGRyZW4pO1xuICB9O1xufSk7XG4iXSwibWFwcGluZ3MiOiJBQUFBLE9BQU9BLEtBQUssSUFFVkMsUUFBUSxFQUlSQyxhQUFhLEVBQ2JDLGNBQWMsUUFDVCxPQUFPO0FBR2QsU0FBU0MsTUFBTSxRQUFRLGlCQUFpQjtBQXNFeEMsTUFBTUMsV0FBVyxHQUFJQyxLQUFjLElBQ2pDSCxjQUFjLENBQUNHLEtBQUss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
//# sourceMappingURL=withForEach.js.map