@douyinfe/semi-ui
Version:
A modern, comprehensive, flexible design system and UI library. Connect DesignOps & DevOps. Quickly build beautiful React apps. Maintained by Douyin-fe team.
43 lines (41 loc) • 1.57 kB
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.isClassComponent = isClassComponent;
exports.isCompositeTypeElement = isCompositeTypeElement;
exports.isElement = isElement;
exports.isEmptyChildren = isEmptyChildren;
exports.isFunctionalComponent = isFunctionalComponent;
Object.defineProperty(exports, "isHTMLElement", {
enumerable: true,
get: function () {
return _dom.isHTMLElement;
}
});
exports.isReactComponent = isReactComponent;
var _react = _interopRequireDefault(require("react"));
var _dom = require("@douyinfe/semi-foundation/lib/cjs/utils/dom");
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
// https://stackoverflow.com/questions/33199959/how-to-detect-a-react-component-vs-a-react-element
function isClassComponent(component) {
return typeof component === 'function' && Boolean(component.prototype.isReactComponent);
}
function isFunctionalComponent(Component) {
return typeof Component === 'function' &&
// can be various things
!(Component.prototype && Component.prototype.isReactComponent // native arrows don't have prototypes
);
}
function isReactComponent(component) {
return isClassComponent(component) || isFunctionalComponent(component);
}
function isElement(element) {
return /*#__PURE__*/_react.default.isValidElement(element);
}
function isCompositeTypeElement(element) {
return isElement(element) && typeof element.type === 'function';
}
function isEmptyChildren(children) {
return _react.default.Children.count(children) === 0;
}
;