UNPKG

@foo-software/react-toolbox

Version:

A set of React components implementing Google's Material Design specification with the power of CSS Modules.

49 lines (41 loc) 1.67 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.overrideComponentTypeChecker = overrideComponentTypeChecker; exports.defaultChecker = defaultChecker; exports.default = isComponentOfType; var _react = require('react'); var _react2 = _interopRequireDefault(_react); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var customChecker = void 0; /** * Sets customChecker which will be used for all components. * * @param providedChecker {Function} - Checker function */ function overrideComponentTypeChecker(providedChecker) { customChecker = providedChecker; } /** * Returns true if the provided element is a component of the provided type. * * @param classType {ReactElement class} - the class of a React Element * @param reactElement {ReactElement} - any React Element (not a real DOM node) */ function defaultChecker(classType, reactElement) { if (process.env.NODE_ENV !== 'production') { // https://github.com/gaearon/react-hot-loader/blob/v3.0.0-beta.7/docs/Known%20Limitations.md#checking-element-types classType = _react2.default.createElement(classType).type; // eslint-disable-line no-param-reassign } return reactElement && reactElement.type === classType; } /** * Executes customChecker if it's set or defaultChecker. * * @param classType {ReactElement class} - the class of a React Element * @param reactElement {ReactElement} - any React Element (not a real DOM node) */ function isComponentOfType(classType, reactElement) { return customChecker ? customChecker(classType, reactElement) : defaultChecker(classType, reactElement); }