reflexy
Version:
Flexbox layout react components
21 lines (20 loc) • 593 B
JavaScript
/* eslint-disable dot-notation */
import React from 'react';
import '@js-toolkit/utils/types';
import { REFLEXY_KEY } from './utils';
const REACT_MEMO_TYPE = Symbol.for('react.memo');
export function isFlex(component) {
// React component
if (typeof component === 'function') {
const flex = component;
return flex[REFLEXY_KEY] != null;
}
if (component['$$typeof'] === REACT_MEMO_TYPE) {
return isFlex(component.type);
}
// React element
if (React.isValidElement(component)) {
return isFlex(component.type);
}
return false;
}