"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _propTypes = _interopRequireDefault(require("prop-types")); var _chainPropTypes = _interopRequireDefault(require("./chainPropTypes")); function isClassComponent(elementType) { // elementType.prototype?.isReactComponent var _elementType$prototyp = elementType.prototype, prototype = _elementType$prototyp === void 0 ? {} : _elementType$prototyp; return Boolean(prototype.isReactComponent); } function acceptingRef(props, propName, componentName, location, propFullName) { var element = props[propName]; var safePropName = propFullName || propName; if (element == null) { return null; } var warningHint; var elementType = element.type; /** * Blacklisting instead of whitelisting * * Blacklisting will miss some components, such as React.Fragment. Those will at least * trigger a warning in React. * We can't whitelist because there is no safe way to detect React.forwardRef * or class components. "Safe" means there's no public API. * */ if (typeof elementType === 'function' && !isClassComponent(elementType)) { warningHint = 'Did you accidentally use a plain function component for an element instead?'; } if (warningHint !== undefined) { return new Error("Invalid ".concat(location, " `").concat(safePropName, "` supplied to `").concat(componentName, "`. ") + "Expected an element that can hold a ref. ".concat(warningHint, " ") + 'For more information see https://material-ui.com/r/caveat-with-refs-guide'); } return null; } var elementAcceptingRef = (0, _chainPropTypes.default)(_propTypes.default.element, acceptingRef); elementAcceptingRef.isRequired = (0, _chainPropTypes.default)(_propTypes.default.element.isRequired, acceptingRef); var _default = elementAcceptingRef; exports.default = _default;