@talend/react-components
Version:
Set of react components.
62 lines (60 loc) • 1.86 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = wrap;
exports.toText = toText;
var _Inject = _interopRequireDefault(require("./Inject"));
var _lodash = require("lodash");
var _jsxRuntime = require("react/jsx-runtime");
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
/* eslint-disable @typescript-eslint/no-explicit-any */
function toText(props) {
if (Array.isArray(props.text)) {
return props.text.map((sentence, index) => /*#__PURE__*/(0, _jsxRuntime.jsx)("p", {
children: sentence
}, index));
}
return props.text;
}
const OMIT_PROPS = ['setState', 'deleteState', 'updateState', 'componentId', 'state', 'initState', 'getCollection', 'dispatch', 'dispatchActionCreator'];
const BLACK_LISTED_ATTR = ['childContextTypes',
// not authorized on function component
'propTypes' // already set by HOC
];
const COMPONENT_EXCEPTIONS = {
MenuItem: props => props.divider
};
function isNotBlackListedAttr(attr) {
return !BLACK_LISTED_ATTR.includes(attr);
}
function wrap(Component, key) {
const Wrapper = ({
getComponent,
components,
text,
...props
}) => {
const injected = _Inject.default.all(getComponent, components);
const newprops = {
...(0, _lodash.omit)(props, OMIT_PROPS)
};
if (key === 'MenuItem' && COMPONENT_EXCEPTIONS[key](props)) {
return /*#__PURE__*/(0, _jsxRuntime.jsx)(Component, {
...newprops
});
}
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(Component, {
...newprops,
children: [injected('children'), toText({
text
}), props.children]
});
};
Object.keys(Component).filter(isNotBlackListedAttr).forEach(attr => {
Wrapper[attr] = Component[attr];
});
Wrapper.displayName = key;
return Wrapper;
}
//# sourceMappingURL=wrap.js.map