UNPKG

@material-ui/core

Version:

React components that implement Google's Material Design.

43 lines (35 loc) 1.13 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.isMuiElement = isMuiElement; exports.setRef = setRef; exports.useForkRef = useForkRef; var _react = _interopRequireDefault(require("react")); function isMuiElement(element, muiNames) { return _react.default.isValidElement(element) && muiNames.indexOf(element.type.muiName) !== -1; } // TODO: Make it private only in v5 function setRef(ref, value) { if (typeof ref === 'function') { ref(value); } else if (ref) { ref.current = value; } } function useForkRef(refA, refB) { /** * This will create a new function if the ref props change and are defined. * This means react will call the old forkRef with `null` and the new forkRef * with the ref. Cleanup naturally emerges from this behavior */ return _react.default.useMemo(function () { if (refA == null && refB == null) { return null; } return function (refValue) { setRef(refA, refValue); setRef(refB, refValue); }; }, [refA, refB]); }