UNPKG

doly

Version:
67 lines (55 loc) 2.35 kB
"use strict"; var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard"); var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = createTag; var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray")); var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties")); var _react = _interopRequireWildcard(require("react")); var _pickBy = _interopRequireDefault(require("lodash/pickBy")); /** * createTag * 创建标签 * tag 标签 * prop 替换 target * propsToOmit 过滤 props * propsToNested 传递 props */ function createTag() { var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, _ref$tag = _ref.tag, defaultTag = _ref$tag === void 0 ? 'div' : _ref$tag, _ref$prop = _ref.prop, prop = _ref$prop === void 0 ? 'as' : _ref$prop, name = _ref.name, _ref$propsToOmit = _ref.propsToOmit, propsToOmit = _ref$propsToOmit === void 0 ? [] : _ref$propsToOmit, _ref$propsToNested = _ref.propsToNested, propsToNested = _ref$propsToNested === void 0 ? [] : _ref$propsToNested; return function (_ref2) { var children = _ref2.children, otherProps = (0, _objectWithoutProperties2.default)(_ref2, ["children"]); var tag = otherProps[prop] || defaultTag; var omitPropsKeys = [prop].concat((0, _toConsumableArray2.default)(propsToOmit)); var nestedPropsKeys = propsToNested; var props = (0, _pickBy.default)(otherProps, function (value, key) { return omitPropsKeys.indexOf(key) === -1; }); var _children = children; if (name && process.env.NODE_ENV !== 'production') props['ui-name'] = name; if (propsToNested.length > 0) { var childrenProps = (0, _pickBy.default)(otherProps, function (value, key) { return nestedPropsKeys.indexOf(key) > -1; }); _children = _react.Children.toArray(children).map(function (child) { if ((0, _react.isValidElement)(child)) { return (0, _react.cloneElement)(child, childrenProps); } return child; }); } return (0, _react.createElement)(tag, props, _children); }; }