Skip to content

Commit

Permalink
chore: Move getPropTypeDefinition into utils file
Browse files Browse the repository at this point in the history
jerelmiller committed Jun 7, 2020

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
1 parent b458b4a commit 9a74761
Showing 2 changed files with 21 additions and 25 deletions.
29 changes: 4 additions & 25 deletions src/hooks/useComponentDoc.js
Original file line number Diff line number Diff line change
@@ -1,9 +1,5 @@
import { useMemo } from 'react';
import {
getDefaultValue,
getNormalizedTypeName,
getRawTypeName,
} from '../utils/propTypeInfo';
import { getPropTypeDefinition, getDefaultValue } from '../utils/propTypeInfo';

const IGNORED_METHODS = [
'prototype',
@@ -14,27 +10,10 @@ const IGNORED_METHODS = [
'defaultProps',
];

const getPropTypeDefinition = (name, propType) => {
const propDocs = propType.__docs__;
const propMeta = propType.__reflect__;

return {
name,
description: propDocs.text,
deprecation: propDocs.tags.deprecated?.[0] ?? null,
isRequired: propMeta.some((item) => item.name === 'isRequired'),
type: {
raw: getRawTypeName(propType),
name: getNormalizedTypeName(propType),
},
};
};

const extractPropTypes = (component) => {
return Object.entries(component.propTypes || {}).map(([name, propType]) => ({
...getPropTypeDefinition(name, propType),
defaultValue: getDefaultValue(component, name),
}));
return Object.entries(component.propTypes || {}).map(([name, propType]) =>
getPropTypeDefinition(component, name, propType)
);
};

const toStaticName = (propName) =>
17 changes: 17 additions & 0 deletions src/utils/propTypeInfo.js
Original file line number Diff line number Diff line change
@@ -91,3 +91,20 @@ export const getDefaultValue = (component, propTypeName) => {

return defaultValue;
};

export const getPropTypeDefinition = (component, name, propType) => {
const propDocs = propType.__docs__;
const propMeta = propType.__reflect__;

return {
name,
defaultValue: getDefaultValue(component, name),
description: propDocs.text,
deprecation: propDocs.tags.deprecated?.[0] ?? null,
isRequired: propMeta.some((item) => item.name === 'isRequired'),
type: {
raw: getRawTypeName(propType),
name: getNormalizedTypeName(propType),
},
};
};

0 comments on commit 9a74761

Please sign in to comment.