UNPKG

1.36 kBJavaScriptView Raw
1var React = require('react');
2
3function classComponent(component) {
4 return (
5 typeof component === 'function' &&
6 component.prototype &&
7 !!component.prototype.isReactComponent
8 );
9}
10
11// Ensure compatability with transformed code
12function functionComponent(component) {
13 return (
14 typeof component === 'function' &&
15 String(component).includes('return') &&
16 (
17 String(component).includes('React.') ||
18 String(component).includes('react.')
19 ) &&
20 String(component).includes('.createElement')
21 );
22}
23
24function component(component) {
25 return (
26 classComponent(component) ||
27 functionComponent(component)
28 );
29}
30
31function element(typeElement) {
32 return React.isValidElement(typeElement);
33}
34
35function DOMTypeElement(typeElement) {
36 return element(typeElement) && typeof typeElement.type === 'string';
37}
38
39function compositeTypeElement(typeElement) {
40 return element(typeElement) && typeof typeElement.type === 'function';
41}
42
43function compatible(item) {
44 return element(item) || component(item);
45}
46
47var isReact = {};
48
49isReact.classComponent = classComponent;
50isReact.functionComponent = functionComponent;
51isReact.component = component;
52isReact.element = element;
53isReact.DOMTypeElement = DOMTypeElement;
54isReact.compositeTypeElement = compositeTypeElement;
55isReact.compatible = compatible;
56
57module.exports = isReact;