(componentClass)
| 42926 | |
| 42927 | |
| 42928 | function createPropsPrototypeAndTypes(componentClass) { |
| 42929 | var parent = componentClass.prototype; |
| 42930 | |
| 42931 | if (!parent) { |
| 42932 | return { |
| 42933 | defaultProps: {} |
| 42934 | }; |
| 42935 | } |
| 42936 | |
| 42937 | var parentClass = Object.getPrototypeOf(componentClass); |
| 42938 | var parentPropDefs = parent && getPropsPrototypeAndTypes(parentClass) || null; // Parse propTypes from Component.defaultProps |
| 42939 | |
| 42940 | var componentDefaultProps = getOwnProperty(componentClass, 'defaultProps') || {}; |
| 42941 | var componentPropDefs = (0, _propTypes.parsePropTypes)(componentDefaultProps); // Create a merged type object |
| 42942 | |
| 42943 | var propTypes = Object.assign({}, parentPropDefs && parentPropDefs.propTypes, componentPropDefs.propTypes); // Create any necessary property descriptors and create the default prop object |
| 42944 | // Assign merged default props |
| 42945 | |
| 42946 | var defaultProps = createPropsPrototype(componentPropDefs.defaultProps, parentPropDefs && parentPropDefs.defaultProps, propTypes, componentClass); // Create a map for prop whose default value is a callback |
| 42947 | |
| 42948 | var deprecatedProps = Object.assign({}, parentPropDefs && parentPropDefs.deprecatedProps, componentPropDefs.deprecatedProps); // Store the precalculated props |
| 42949 | |
| 42950 | componentClass._mergedDefaultProps = defaultProps; |
| 42951 | componentClass._propTypes = propTypes; |
| 42952 | componentClass._deprecatedProps = deprecatedProps; |
| 42953 | return { |
| 42954 | propTypes: propTypes, |
| 42955 | defaultProps: defaultProps, |
| 42956 | deprecatedProps: deprecatedProps |
| 42957 | }; |
| 42958 | } // Builds a pre-merged default props object that component props can inherit from |
| 42959 | |
| 42960 | |
| 42961 | function createPropsPrototype(props, parentProps, propTypes, componentClass) { |
no test coverage detected