UNPKG

@talend/react-components

Version:
62 lines (60 loc) 1.86 kB
"use strict"; 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