add react-docgen to provide props tables for UI component library

This commit is contained in:
Erik Ziegler 2021-07-15 00:04:36 +02:00
parent 97805df68c
commit d6877cfcf9
54 changed files with 537 additions and 109 deletions

View File

@ -11,9 +11,11 @@ import {
} from '@ohif/ui';
import i18n from '@ohif/i18n';
import { hotkeys } from '@ohif/ui';
import { utils } from '@ohif/ui';
import { useNavigate } from 'react-router-dom';
const { hotkeys } = utils;
const { availableLanguages, defaultLanguage, currentLanguage } = i18n;
import { useAppConfig } from '@state';

View File

@ -5,6 +5,7 @@ route: components/button
---
import { Button, IconButton, Icon } from '@ohif/ui';
import { ComponentPropsTable } from '../../../src/components/ComponentPropsTable.jsx';
# Button
@ -369,5 +370,4 @@ import { IconButton } from '@ohif/ui';
## Properties
<Props of={Button} />
````
<ComponentPropsTable componentName={'Button'} />

View File

@ -5,6 +5,7 @@ route: components/buttonGroup
---
import { ButtonGroup, Button, IconButton, Icon } from '@ohif/ui';
import { ComponentPropsTable } from '../../../src/components/ComponentPropsTable.jsx';
# ButtonGroup
@ -107,5 +108,4 @@ import { ButtonGroup } from '@ohif/ui';
## Properties
<Props of={ButtonGroup} />
````
<ComponentPropsTable componentName={'ButtonGroup'} />

View File

@ -5,11 +5,10 @@ route: components/CinePlayer
---
import { useState } from 'react';
import { ComponentPropsTable } from '../../../src/components/ComponentPropsTable.jsx';
import { CinePlayer } from '@ohif/ui';
# Input Text
## Import
```javascript
@ -38,5 +37,4 @@ function() {
## Properties
<Props of={CinePlayer} />
```
<ComponentPropsTable componentName={'CinePlayer'} />

View File

@ -5,6 +5,7 @@ route: components/contextMenu
---
import { ContextMenu } from '@ohif/ui';
import { ComponentPropsTable } from '../../../src/components/ComponentPropsTable.jsx';
# Context Menu
@ -45,5 +46,4 @@ function() {
## Properties
<Props of={ContextMenu} />
```
<ComponentPropsTable componentName={'ContextMenu'} />

View File

@ -5,6 +5,7 @@ route: components/date-range
---
import { useState } from 'react';
import { ComponentPropsTable } from '../../../src/components/ComponentPropsTable.jsx';
import { DateRange } from '@ohif/ui';
@ -42,5 +43,4 @@ function() {
## Properties
<Props of={DateRange} />
```
<ComponentPropsTable componentName={'DateRange'} />

View File

@ -5,6 +5,7 @@ route: components/dropdown
---
import { Dropdown, IconButton, Icon } from '@ohif/ui';
import { ComponentPropsTable } from '../../../src/components/ComponentPropsTable.jsx';
# Dropdown
@ -64,5 +65,4 @@ function() {
## Properties
<Props of={Dropdown} />
```
<ComponentPropsTable componentName={'Dropdown'} />

View File

@ -5,6 +5,7 @@ route: components/empty-studies
---
import { EmptyStudies } from '@ohif/ui';
import { ComponentPropsTable } from '../../../src/components/ComponentPropsTable.jsx';
# Empty Studies
@ -26,5 +27,4 @@ import { EmptyStudies } from '@ohif/ui';
## Properties
<Props of={EmptyStudies} />
```
<ComponentPropsTable componentName={'EmptyStudies'} />

View File

@ -5,6 +5,7 @@ route: components/errorBoundary
---
import { ErrorBoundary } from '@ohif/ui';
import { ComponentPropsTable } from '../../../src/components/ComponentPropsTable.jsx';
# Error Boundary
@ -55,5 +56,4 @@ function() {
## Properties
<Props of={ErrorBoundary} />
````
<ComponentPropsTable componentName={'ErrorBoundary'} />

View File

@ -5,7 +5,7 @@ route: components/expandableToolbarButton
---
import { useState } from 'react';
import { ComponentPropsTable } from '../../../src/components/ComponentPropsTable.jsx';
import { ExpandableToolbarButton, ListMenu } from '@ohif/ui';
# Toolbar Button
@ -84,5 +84,4 @@ function() {
## Properties
<Props of={ExpandableToolbarButton} />
```
<ComponentPropsTable componentName={'ExpandableToolbarButton'} />

View File

@ -5,6 +5,7 @@ route: components/input
---
import { Input } from '@ohif/ui';
import { ComponentPropsTable } from '../../../src/components/ComponentPropsTable.jsx';
# Input
@ -35,5 +36,4 @@ function() {
## Properties
<Props of={Input} />
```
<ComponentPropsTable componentName={'Input'} />

View File

@ -5,6 +5,7 @@ route: components/InputDateRange
---
import { useState } from 'react';
import { ComponentPropsTable } from '../../../src/components/ComponentPropsTable.jsx';
import { InputDateRange } from '@ohif/ui';
@ -40,5 +41,4 @@ function() {
## Properties
<Props of={InputDateRange} />
```
<ComponentPropsTable componentName={'InputDateRange'} />

View File

@ -5,6 +5,7 @@ route: components/InputGroup
---
import { useState } from 'react';
import { ComponentPropsTable } from '../../../src/components/ComponentPropsTable.jsx';
import { InputGroup } from '@ohif/ui';
@ -87,5 +88,4 @@ function() {
## Properties
<Props of={InputGroup} />
```
<ComponentPropsTable componentName={'InputGroup'} />

View File

@ -5,6 +5,7 @@ route: components/InputMultiSelect
---
import { useState } from 'react';
import { ComponentPropsTable } from '../../../src/components/ComponentPropsTable.jsx';
import { InputMultiSelect } from '@ohif/ui';
@ -45,5 +46,4 @@ function() {
## Properties
<Props of={InputMultiSelect} />
```
<ComponentPropsTable componentName={'InputMultiSelect'} />

View File

@ -5,6 +5,7 @@ route: components/InputText
---
import { useState } from 'react';
import { ComponentPropsTable } from '../../../src/components/ComponentPropsTable.jsx';
import { InputText } from '@ohif/ui';
@ -39,5 +40,4 @@ function() {
## Properties
<Props of={InputText} />
```
<ComponentPropsTable componentName={'InputText'} />

View File

@ -5,6 +5,7 @@ route: components/label
---
import { Label } from '@ohif/ui';
import { ComponentPropsTable } from '../../../src/components/ComponentPropsTable.jsx';
# Label
@ -28,5 +29,4 @@ function() {
## Properties
<Props of={Label} />
```
<ComponentPropsTable componentName={'Label'} />

View File

@ -5,6 +5,7 @@ route: components/listMenu
---
import { useState } from 'react';
import { ComponentPropsTable } from '../../../src/components/ComponentPropsTable.jsx';
import { ListMenu, ToolbarButton } from '@ohif/ui';
@ -78,5 +79,4 @@ function() {
## Properties
<Props of={ListMenu} />
```
<ComponentPropsTable componentName={'ListMenu'} />

View File

@ -5,6 +5,7 @@ route: components/measurementTable
---
import { useState } from 'react';
import { ComponentPropsTable } from '../../../src/components/ComponentPropsTable.jsx';
import { MeasurementTable } from '@ohif/ui';
@ -55,5 +56,4 @@ function() {
## Properties
<Props of={MeasurementTable} />
````
<ComponentPropsTable componentName={'MeasurementTable'} />

View File

@ -5,6 +5,7 @@ route: components/navBar
---
import { NavBar, Typography } from '@ohif/ui';
import { ComponentPropsTable } from '../../../src/components/ComponentPropsTable.jsx';
# NavBar
@ -26,5 +27,4 @@ import { NavBar } from '@ohif/ui';
## Properties
<Props of={NavBar} />
```
<ComponentPropsTable componentName={'NavBar'} />

View File

@ -5,6 +5,7 @@ route: components/notification
---
import { Notification } from '@ohif/ui';
import { ComponentPropsTable } from '../../../src/components/ComponentPropsTable.jsx';
# Notification
@ -54,5 +55,4 @@ function() {
## Properties
<Props of={Notification} />
```
<ComponentPropsTable componentName={'Notification'} />

View File

@ -5,6 +5,7 @@ route: components/segmentationTable
---
import { SegmentationTable } from '@ohif/ui';
import { ComponentPropsTable } from '../../../src/components/ComponentPropsTable.jsx';
# Segmentation Table
@ -33,5 +34,4 @@ function() {
## Properties
<Props of={SegmentationTable} />
```
<ComponentPropsTable componentName={'SegmentationTable'} />

View File

@ -5,6 +5,7 @@ route: components/select
---
import { Select } from '@ohif/ui';
import { ComponentPropsTable } from '../../../src/components/ComponentPropsTable.jsx';
# Select
@ -66,5 +67,4 @@ import { Select } from '@ohif/ui';
## Properties
<Props of={Select} />
````
<ComponentPropsTable componentName={'Select'} />

View File

@ -81,5 +81,4 @@ import { SidePanel } from '@ohif/ui';
## Properties
<Props of={SidePanel} />
````
(<ComponentPropsTable componentName={'SidePanel'} />)````

View File

@ -7,6 +7,7 @@ route: components/splitButton
import { useState } from 'react';
import { SplitButton, WindowLevelMenuItem } from '@ohif/ui';
import { ComponentPropsTable } from '../../../src/components/ComponentPropsTable.jsx';
# Split Button
@ -84,5 +85,4 @@ function() {
## Properties
<Props of={SplitButton} />
```
<ComponentPropsTable componentName={'SplitButton'} />

View File

@ -5,6 +5,7 @@ route: components/studyBrowser
---
import { StudyBrowser } from '@ohif/ui';
import { ComponentPropsTable } from '../../../src/components/ComponentPropsTable.jsx';
# StudyBrowser
@ -107,5 +108,4 @@ function() {
## Properties
<Props of={StudyBrowser} />
```
<ComponentPropsTable componentName={'StudyBrowser'} />

View File

@ -43,5 +43,5 @@ function() {
## Properties
<Props of={StudyItem} />
<ComponentPropsTable componentName={'StudyItem'} />
```

View File

@ -5,6 +5,7 @@ route: components/studyListFilter
---
import { useState } from 'react';
import { ComponentPropsTable } from '../../../src/components/ComponentPropsTable.jsx';
import { StudyListFilter, Modal } from '@ohif/ui';
import { ModalProvider } from '@ohif/ui';
@ -118,5 +119,4 @@ function() {
## Properties
<Props of={StudyListFilter} />
```
<ComponentPropsTable componentName={'StudyListFilter'} />

View File

@ -5,6 +5,7 @@ route: components/studyListPagination
---
import { useState } from 'react';
import { ComponentPropsTable } from '../../../src/components/ComponentPropsTable.jsx';
import { StudyListPagination } from '@ohif/ui';
@ -42,5 +43,4 @@ function() {
## Properties
<Props of={StudyListPagination} />
```
<ComponentPropsTable componentName={'StudyListPagination'} />

View File

@ -5,6 +5,7 @@ route: components/studyListTable
---
import { useState } from 'react';
import { ComponentPropsTable } from '../../../src/components/ComponentPropsTable.jsx';
import { StudyListTable } from '@ohif/ui';
@ -59,5 +60,4 @@ function() {
## Properties
<Props of={StudyListTable} />
```
<ComponentPropsTable componentName={'StudyListTable'} />

View File

@ -5,6 +5,7 @@ route: components/table
---
import { Table, TableHead, TableBody, TableRow, TableCell } from '@ohif/ui';
import { ComponentPropsTable } from '../../../src/components/ComponentPropsTable.jsx';
# Table
@ -58,21 +59,21 @@ passing a `className` or `style`.
### Table Props
<Props of={Table} />
<ComponentPropsTable componentName={'Table'} />
### TableHead Props
<Props of={TableHead} />
<ComponentPropsTable componentName={'TableHead'} />
### TableBody Props
<Props of={TableBody} />
<ComponentPropsTable componentName={'TableBody'} />
### TableRow Props
<Props of={TableRow} />
<ComponentPropsTable componentName={'TableRow'} />
### TableCell Props
<Props of={TableCell} />
<ComponentPropsTable componentName={'TableCell'} />
```

View File

@ -37,4 +37,4 @@ import { Thumbnail } from '@ohif/ui';
## Properties
<Props of={Thumbnail} />
<ComponentPropsTable componentName={'Thumbnail'} />

View File

@ -34,4 +34,4 @@ import { Thumbnail } from '@ohif/ui';
## Properties
<Props of={ThumbnailNoImage} />
<ComponentPropsTable componentName={'ThumbnailNoImage'} />

View File

@ -6,6 +6,7 @@ route: components/ThumbnailTracked
import { ThumbnailTracked } from '../';
import { ComponentPropsTable } from '../../../src/components/ComponentPropsTable.jsx';
# ThumbnailTracked
@ -36,4 +37,4 @@ import { ThumbnailTracked } from '@ohif/ui';
## Properties
<Props of={ThumbnailTracked} />
<ComponentPropsTable componentName={'ThumbnailTracked'} />

View File

@ -5,6 +5,7 @@ route: components/toolbarButton
---
import { useState, useCallback } from 'react';
import { ComponentPropsTable } from '../../../src/components/ComponentPropsTable.jsx';
import { ToolbarButton } from '@ohif/ui';
@ -43,5 +44,4 @@ function() {
## Properties
<Props of={ToolbarButton} />
```
<ComponentPropsTable componentName={'ToolbarButton'} />

View File

@ -5,6 +5,7 @@ route: components/tooltip
---
import { Tooltip, Typography } from '@ohif/ui';
import { ComponentPropsTable } from '../../../src/components/ComponentPropsTable.jsx';
# Tooltip
@ -36,5 +37,4 @@ function TooltipExample(props) {
## Properties
<Props of={Tooltip} />
```
<ComponentPropsTable componentName={'Tooltip'} />

View File

@ -5,6 +5,7 @@ route: components/tooltipClipboard
---
import { TooltipClipboard } from '@ohif/ui';
import { ComponentPropsTable } from '../../../src/components/ComponentPropsTable.jsx';
# Tooltip Clipboard
@ -25,4 +26,4 @@ import { TooltipClipboard } from '@ohif/ui';
## Properties
<Props of={TooltipClipboard} />
<ComponentPropsTable componentName={'TooltipClipboard'} />

View File

@ -5,6 +5,7 @@ route: components/typography
---
import { Typography } from '@ohif/ui';
import { ComponentPropsTable } from '../../../src/components/ComponentPropsTable.jsx';
# Typography
@ -65,5 +66,4 @@ element.
## Properties
<Props of={Typography} />
````
<ComponentPropsTable componentName={'Typography'} />

View File

@ -5,6 +5,7 @@ route: components/viewport
---
import { Viewport } from '@ohif/ui';
import { ComponentPropsTable } from '../../../src/components/ComponentPropsTable.jsx';
# Viewport
@ -51,5 +52,4 @@ import { Viewport } from '@ohif/ui';
## Properties
<Props of={Viewport} />
```
<ComponentPropsTable componentName={'Viewport'} />

View File

@ -5,6 +5,7 @@ route: components/viewportActionBar
---
import { ViewportActionBar } from '@ohif/ui';
import { ComponentPropsTable } from '../../../src/components/ComponentPropsTable.jsx';
# Viewport Action Bar
@ -132,5 +133,4 @@ import { ViewportActionBar } from '@ohif/ui';
## Properties
<Props of={ViewportActionBar} />
````
<ComponentPropsTable componentName={'ViewportActionBar'} />

View File

@ -5,6 +5,7 @@ route: components/viewportGrid
---
import { DragAndDropProvider, ViewportGrid } from '@ohif/ui';
import { ComponentPropsTable } from '../../../src/components/ComponentPropsTable.jsx';
# ViewportGrid
@ -35,5 +36,4 @@ import { ViewportGrid } from '@ohif/ui';
## Properties
<Props of={ViewportGrid} />
```
<ComponentPropsTable componentName={'ViewportGrid'} />

View File

@ -6,6 +6,7 @@ route: components/viewport-pane
import { ViewportGrid, ViewportPane, DragAndDropProvider } from '@ohif/ui';
import { ComponentPropsTable } from '../../../src/components/ComponentPropsTable.jsx';
# ViewportPane
@ -32,4 +33,4 @@ import { ViewportPane } from '@ohif/ui';
## Properties
<Props of={ViewportPane} />
<ComponentPropsTable componentName={'ViewportPane'} />

View File

@ -5,6 +5,7 @@ route: components/windowLevelMenuItem
---
import { useState } from 'react';
import { ComponentPropsTable } from '../../../src/components/ComponentPropsTable.jsx';
import { ListMenu, WindowLevelMenuItem } from '@ohif/ui';
@ -30,5 +31,4 @@ function() {
## Properties
<Props of={WindowLevelMenuItem} />
```
<ComponentPropsTable componentName={'WindowLevelMenuItem'} />

View File

@ -5,6 +5,7 @@ route: components/icon
---
import { Icon, ICONS } from '@ohif/ui';
import { ComponentPropsTable } from '../../../src/components/ComponentPropsTable.jsx';
# Icon
@ -43,11 +44,7 @@ import { Icon } from '@ohif/ui';
## Properties
<Props of={Icon} />
<ComponentPropsTable componentName={'Icon'} />
The `Icon` component takes a single prop of `name`, which indicates which Icon
should be displayed. The icon inherit the component text/font styles.
```
```

View File

@ -46,8 +46,8 @@ const isI18nStaging = process.env.I18N_STAGING === 'true';
/** @type {import('@docusaurus/types').DocusaurusConfig} */
(module.exports = {
title: 'OHIF',
tagline: 'Build optimized websites quickly, focus on your content',
organizationName: 'facebook',
tagline: 'Open-source web-based medical imaging viewer',
organizationName: 'Open Health Imaging Foundation',
projectName: 'OHIF',
baseUrl,
baseUrlIssueBanner: true,
@ -188,6 +188,20 @@ const isI18nStaging = process.env.I18N_STAGING === 'true';
// ],
// },
// ],
[
'docusaurus-plugin-react-docgen',
{
// pass in a single string or an array of strings
//id: 'docgen-button',
src: ['../ui/src/components/**/*.jsx'],
global: true,
/*route: {
path: '/docs/api',
component: require.resolve('./ComponentDocPage.jsx'),
exact: true,
},*/
},
],
],
presets: [
[
@ -368,10 +382,6 @@ const isI18nStaging = process.env.I18N_STAGING === 'true';
{
title: 'Community',
items: [
{
label: 'Feedback',
to: 'https://community.ohif.org/',
},
{
label: 'Discussion board',
to: 'https://community.ohif.org/',

View File

@ -57,8 +57,13 @@
]
},
"devDependencies": {
"capitalize": "^2.0.3",
"docusaurus-plugin-react-docgen": "^0.0.2",
"lodash.get": "^4.4.2",
"postcss-import": "^14.0.2",
"postcss-preset-env": "^6.7.0",
"react-docgen": "^5.4.0",
"react-tooltip": "^4.2.21",
"tailwindcss": "^2.2.4"
}
}

View File

@ -0,0 +1,24 @@
import React from 'react'
import PropTypes from 'prop-types'
import { usePluginData } from '@docusaurus/useGlobalData';
import { PropsTable } from '../react-docgen-props-table/PropsTable'
export function ComponentPropsTable({ componentName }) {
if (!componentName) {
return null;
}
const data = usePluginData('docusaurus-plugin-react-docgen')
const componentDocGenData = data[componentName.toLowerCase()]
if (!componentDocGenData) {
return null;
}
return (
<PropsTable className={'table-auto'} props={componentDocGenData.props}/>
)
}
ComponentPropsTable.PropTypes = {
componentName: PropTypes.string.required
}

View File

@ -0,0 +1,102 @@
import React from 'react';
import get from 'lodash.get';
import capitalize from 'capitalize';
import { humanize } from './humanize-prop';
import { Table } from './components/Table';
import { Tooltip } from './components/Tooltip';
const styles = {
thead: {
textAlign: 'left',
},
};
export const getPropType = (prop, Tooltip) => {
const propName = prop.flowType ? prop.flowType.name : prop.type.name;
const isEnum = propName.startsWith('"') || propName === 'enum';
const name = capitalize(isEnum ? 'enum' : propName);
const value = prop.type && prop.type.value;
if (!name) return null;
if (
!Tooltip ||
(isEnum && typeof value === 'string') ||
(!prop.flowType && !isEnum && !value) ||
(prop.flowType && !prop.flowType.elements)
) {
return name;
}
return prop.flowType ? (
<Tooltip text={humanize(prop.flowType)}>{name}</Tooltip>
) : (
<Tooltip text={humanize(prop.type)}>{name}</Tooltip>
);
};
export const PropsTable = ({ props, ...rest }) => {
if (!props || typeof props !== 'object') {
throw new Error('invalid props passed to PropsTable');
}
const hasDescription = Object.keys(props).some(name => {
const description = get(props, `${name}.description`);
return Boolean(description) && Boolean(get(description, 'length'));
});
const Thead = 'thead';
const Tr = 'tr';
const Th = 'th';
const Tbody = 'tbody';
const Td = 'td';
return (
<Table {...rest}>
<Thead style={styles.thead}>
<Tr>
<Th>Property</Th>
<Th>Type</Th>
<Th>Required</Th>
<Th>Default</Th>
{hasDescription && <Th width="40%">Description</Th>}
</Tr>
</Thead>
<Tbody>
{props &&
Object.keys(props).map(name => {
const prop = props[name];
if (!prop.flowType && !prop.type) return null;
return (
<Tr key={name}>
<Td>{name}</Td>
<Td>{getPropType(prop, Tooltip)}</Td>
<Td>{String(prop.required)}</Td>
{!prop.defaultValue ? (
<Td>
<em>-</em>
</Td>
) : (
<Td>
{prop.defaultValue.value === "''" ? (
<em>[Empty String]</em>
) : (
prop.defaultValue &&
prop.defaultValue.value.replace(/'/g, '')
)}
</Td>
)}
{hasDescription && (
<Td>{prop.description && prop.description}</Td>
)}
</Tr>
);
})}
</Tbody>
</Table>
);
};

View File

@ -0,0 +1,10 @@
import React from 'react';
export const Table = props => {
const { className, style, ...rest } = props;
return (
<div className={className}>
<table className={className} {...rest} />
</div>
);
};

View File

@ -0,0 +1,17 @@
import React from 'react';
import ReactTooltip from 'react-tooltip';
export const Tooltip = ({ text, children }) => {
const id = JSON.stringify(text);
return (
<React.Fragment>
<a data-tip data-for={id} href="#" onClick={ev => ev.preventDefault()}>
{children}
</a>
<ReactTooltip id={id} effect="solid">
{text}
</ReactTooltip>
</React.Fragment>
);
};

View File

@ -0,0 +1,23 @@
import capitalize from 'capitalize'
import get from 'lodash.get'
import { humanize } from './humanize-prop'
export const getPropType = (prop) => {
const propName = get(prop.flowType || prop.type, 'name')
if (!propName) return null
const isEnum = propName.startsWith('"') || propName === 'enum'
const name = capitalize(isEnum ? 'enum' : propName)
const value = get(prop, 'type.value')
if (!name) return null
if (
(isEnum && typeof value === 'string') ||
(!prop.flowType && !isEnum && !value) ||
(prop.flowType && !prop.flowType.elements)
) {
return name
}
return prop.flowType ? humanize(prop.flowType) : humanize(prop.type)
}

View File

@ -0,0 +1,49 @@
import capitalize from 'capitalize'
const RE_OBJECTOF = /(?:React\.)?(?:PropTypes\.)?objectOf\((?:React\.)?(?:PropTypes\.)?(\w+)\)/
const getTypeStr = (type) => {
switch (type.name.toLowerCase()) {
case 'instanceof':
return `Class(${type.value})`
case 'enum':
if (type.computed) return type.value
return type.value
? type.value.map((v) => `${v.value}`).join(' │ ')
: type.raw
case 'union':
return type.value
? type.value.map((t) => `${getTypeStr(t)}`).join(' │ ')
: type.raw
case 'array':
return type.raw
case 'arrayof':
return `Array<${getTypeStr(type.value)}>`
case 'custom':
if (type.raw.indexOf('function') !== -1 || type.raw.indexOf('=>') !== -1) {
return 'Custom(Function)'
} else if (type.raw.toLowerCase().indexOf('objectof') !== -1) {
const m = type.raw.match(RE_OBJECTOF)
if (m && m[1]) return `ObjectOf(${capitalize(m[1])})`
return 'ObjectOf'
}
return 'Custom'
case 'bool':
return 'Boolean'
case 'func':
return 'Function'
case 'shape':
const shape = type.value
const rst = {}
Object.keys(shape).forEach(key => {
rst[key] = getTypeStr(shape[key])
})
return JSON.stringify(rst, null, 2)
default:
return capitalize(type.name)
}
}
export const humanize = (type) => getTypeStr(type)

View File

@ -0,0 +1,2 @@
import { PropsTable } from './PropsTable'
export default PropsTable

View File

@ -2,7 +2,7 @@ module.exports = {
prefix: '',
important: false,
separator: ':',
purge: ['./docs/**/*.jsx', './docs/**/*.mdx'],
//purge: ['./docs/**/*.jsx', './docs/**/*.mdx'],
theme: {
screens: {
sm: '640px',

215
yarn.lock
View File

@ -166,7 +166,7 @@
semver "^5.4.1"
source-map "^0.5.0"
"@babel/core@^7.1.0", "@babel/core@^7.11.1", "@babel/core@^7.12.16", "@babel/core@^7.12.3", "@babel/core@^7.5.0":
"@babel/core@^7.1.0", "@babel/core@^7.11.1", "@babel/core@^7.12.16", "@babel/core@^7.12.3", "@babel/core@^7.5.0", "@babel/core@^7.7.5":
version "7.14.6"
resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.14.6.tgz#e0814ec1a950032ff16c13a2721de39a8416fcab"
integrity sha512-gJnOEWSqTk96qG5BoIrl5bVtc23DCycmIePPYnamY9RboYdI4nFy5vAQMSl81O5K/W0sLDWfGysnOECC+KUUCA==
@ -187,7 +187,7 @@
semver "^6.3.0"
source-map "^0.5.0"
"@babel/generator@^7.12.15", "@babel/generator@^7.12.5", "@babel/generator@^7.14.5", "@babel/generator@^7.4.0":
"@babel/generator@^7.12.11", "@babel/generator@^7.12.15", "@babel/generator@^7.12.5", "@babel/generator@^7.14.5", "@babel/generator@^7.4.0":
version "7.14.5"
resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.14.5.tgz#848d7b9f031caca9d0cd0af01b063f226f52d785"
integrity sha512-y3rlP+/G25OIX3mYKKIOlQRcqj7YgrvHxOLbVmyLJ9bPmi5ttvUmpydVjcFjZphOktWuA7ovbx91ECloWTfjIA==
@ -1114,13 +1114,27 @@
core-js-pure "^3.15.0"
regenerator-runtime "^0.13.4"
"@babel/runtime@7.1.2", "@babel/runtime@7.7.6", "@babel/runtime@^7.1.2", "@babel/runtime@^7.10.2", "@babel/runtime@^7.10.3", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.1", "@babel/runtime@^7.12.5", "@babel/runtime@^7.2.0", "@babel/runtime@^7.3.1", "@babel/runtime@^7.4.4", "@babel/runtime@^7.4.5", "@babel/runtime@^7.5.5", "@babel/runtime@^7.7.2", "@babel/runtime@^7.7.4", "@babel/runtime@^7.7.6", "@babel/runtime@^7.8.4", "@babel/runtime@^7.9.2":
"@babel/runtime@7.1.2":
version "7.1.2"
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.1.2.tgz#81c89935f4647706fc54541145e6b4ecfef4b8e3"
integrity sha512-Y3SCjmhSupzFB6wcv1KmmFucH6gDVnI30WjOcicV10ju0cZjak3Jcs67YLIXBrmZYw1xCrVeJPbycFwrqNyxpg==
dependencies:
regenerator-runtime "^0.12.0"
"@babel/runtime@7.7.6", "@babel/runtime@^7.1.2", "@babel/runtime@^7.2.0", "@babel/runtime@^7.3.1", "@babel/runtime@^7.4.4", "@babel/runtime@^7.4.5", "@babel/runtime@^7.5.5", "@babel/runtime@^7.7.2", "@babel/runtime@^7.7.4", "@babel/runtime@^7.7.6":
version "7.7.6"
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.7.6.tgz#d18c511121aff1b4f2cd1d452f1bac9601dd830f"
integrity sha512-BWAJxpNVa0QlE5gZdWjSxXtemZyZ9RmrmVozxt3NUXeZhVIJ5ANyqmMc0JDrivBZyxUuQvFxlvH4OWWOogGfUw==
dependencies:
regenerator-runtime "^0.13.2"
"@babel/runtime@^7.10.2", "@babel/runtime@^7.10.3", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.1", "@babel/runtime@^7.12.5", "@babel/runtime@^7.8.4", "@babel/runtime@^7.9.2":
version "7.14.6"
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.14.6.tgz#535203bc0892efc7dec60bdc27b2ecf6e409062d"
integrity sha512-/PCB2uJ7oM44tz8YhC4Z/6PeOKXp4K588f+5M3clr1M4zbqztlo0XEfJ2LEzj/FgwfgGcIdl8n7YYjTCI0BYwg==
dependencies:
regenerator-runtime "^0.13.4"
"@babel/template@^7.12.7", "@babel/template@^7.14.5", "@babel/template@^7.4.0":
version "7.14.5"
resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.14.5.tgz#a9bc9d8b33354ff6e55a9c60d1109200a68974f4"
@ -1130,7 +1144,7 @@
"@babel/parser" "^7.14.5"
"@babel/types" "^7.14.5"
"@babel/traverse@^7.0.0", "@babel/traverse@^7.1.0", "@babel/traverse@^7.12.13", "@babel/traverse@^7.12.9", "@babel/traverse@^7.13.0", "@babel/traverse@^7.14.5", "@babel/traverse@^7.4.3":
"@babel/traverse@^7.0.0", "@babel/traverse@^7.1.0", "@babel/traverse@^7.1.6", "@babel/traverse@^7.12.13", "@babel/traverse@^7.12.9", "@babel/traverse@^7.13.0", "@babel/traverse@^7.14.5", "@babel/traverse@^7.4.3":
version "7.14.7"
resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.14.7.tgz#64007c9774cfdc3abd23b0780bc18a3ce3631753"
integrity sha512-9vDr5NzHu27wgwejuKL7kIOm4bwEtaPQ4Z6cpCmjSuaRqpH/7xc4qcGEscwMqlkwgcXl6MvqoAjZkQ24uSdIZQ==
@ -1145,7 +1159,7 @@
debug "^4.1.0"
globals "^11.1.0"
"@babel/types@^7.0.0", "@babel/types@^7.12.6", "@babel/types@^7.12.7", "@babel/types@^7.14.5", "@babel/types@^7.3.0", "@babel/types@^7.4.0", "@babel/types@^7.4.4":
"@babel/types@^7.0.0", "@babel/types@^7.12.6", "@babel/types@^7.12.7", "@babel/types@^7.14.5", "@babel/types@^7.2.0", "@babel/types@^7.3.0", "@babel/types@^7.4.0", "@babel/types@^7.4.4":
version "7.14.5"
resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.14.5.tgz#3bb997ba829a2104cedb20689c4a5b8121d383ff"
integrity sha512-M/NzBpEL95I5Hh4dwhin5JlE7EzO5PHMAuzjxss3tiOBD46KfQvVedN/3jEPZvdRvtsK2222XfdHogNIttFgcg==
@ -1153,6 +1167,11 @@
"@babel/helper-validator-identifier" "^7.14.5"
to-fast-properties "^2.0.0"
"@bcoe/v8-coverage@^0.2.3":
version "0.2.3"
resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39"
integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==
"@cnakazawa/watch@^1.0.3":
version "1.0.4"
resolved "https://registry.yarnpkg.com/@cnakazawa/watch/-/watch-1.0.4.tgz#f864ae85004d0fcab6f50be9141c4da368d1656a"
@ -1889,6 +1908,11 @@
dependencies:
"@hapi/hoek" "^9.0.0"
"@istanbuljs/schema@^0.1.2":
version "0.1.3"
resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98"
integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==
"@jest/console@^24.7.1", "@jest/console@^24.9.0":
version "24.9.0"
resolved "https://registry.yarnpkg.com/@jest/console/-/console-24.9.0.tgz#79b1bc06fb74a8cfb01cbdedf945584b1b9707f0"
@ -3546,7 +3570,7 @@
resolved "https://registry.yarnpkg.com/@types/invariant/-/invariant-2.2.34.tgz#05e4f79f465c2007884374d4795452f995720bbe"
integrity sha512-lYUtmJ9BqUN688fGY1U1HZoWT1/Jrmgigx2loq4ZcJpICECm/Om3V314BxdzypO0u5PORKGMM6x0OXaljV1YFg==
"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0":
"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1":
version "2.0.3"
resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz#4ba8ddb720221f432e443bd5f9117fd22cfd4762"
integrity sha512-sz7iLqvVUg1gIedBOvlkxPlc8/uVzyS5OwGz1cKjXzkl3FpL3al0crU8YGU1WoHkxn0Wxbw5tyi6hvzJKNzFsw==
@ -4434,6 +4458,13 @@ ast-types-flow@^0.0.7:
resolved "https://registry.yarnpkg.com/ast-types-flow/-/ast-types-flow-0.0.7.tgz#f70b735c6bca1a5c9c22d982c3e39e7feba3bdad"
integrity sha1-9wtzXGvKGlycItmCw+Oef+ujva0=
ast-types@^0.14.2:
version "0.14.2"
resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.14.2.tgz#600b882df8583e3cd4f2df5fa20fa83759d4bdfd"
integrity sha512-O0yuUDnZeQDL+ncNGlJ78BiO4jnYI3bvMsD5prT0/nsgijG/LpNBIr63gTjVTNsiGkgQhiyCShTgxt8oXOrklA==
dependencies:
tslib "^2.0.1"
astral-regex@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9"
@ -5047,6 +5078,24 @@ bytes@3.1.0, bytes@^3.0.0:
resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6"
integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==
c8@^7.6.0:
version "7.7.3"
resolved "https://registry.yarnpkg.com/c8/-/c8-7.7.3.tgz#5af8f83b55dace03b353375e7a2ba85e2c13b17f"
integrity sha512-ZyA7n3w8i4ETV25tVYMHwJxCSnaOf/LfA8vOcuZOPbonuQfD7tBT/gMWZy7eczRpCDuHcvMXwoqAemg6R0p3+A==
dependencies:
"@bcoe/v8-coverage" "^0.2.3"
"@istanbuljs/schema" "^0.1.2"
find-up "^5.0.0"
foreground-child "^2.0.0"
istanbul-lib-coverage "^3.0.0"
istanbul-lib-report "^3.0.0"
istanbul-reports "^3.0.2"
rimraf "^3.0.0"
test-exclude "^6.0.0"
v8-to-istanbul "^8.0.0"
yargs "^16.2.0"
yargs-parser "^20.2.7"
cacache@^12.0.0, cacache@^12.0.3:
version "12.0.4"
resolved "https://registry.yarnpkg.com/cacache/-/cacache-12.0.4.tgz#668bcbd105aeb5f1d92fe25570ec9525c8faa40c"
@ -5212,6 +5261,11 @@ caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000981, caniuse-lite@^1.0.30001020, can
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001244.tgz#a6dc49ad5fa02d81d04373ec3f5ceabc3da06abf"
integrity sha512-Wb4UFZPkPoJoKKVfELPWytRzpemjP/s0pe22NriANru1NoI+5bGNxzKtk7edYL8rmCWTfQO8eRiF0pn1Dqzx7Q==
capitalize@^2.0.3:
version "2.0.3"
resolved "https://registry.yarnpkg.com/capitalize/-/capitalize-2.0.3.tgz#ccfeb1046d2a054eb30f34af907a70c3e90f3b73"
integrity sha512-Qc5ksT1/zEJBbFYD05h99hCNEW0cgyD0zzE5WvkgisNnppJ+16zfaSk34evF0j6pGW8hejkRUeygJ5uN5k22SQ==
capture-exit@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/capture-exit/-/capture-exit-2.0.0.tgz#fb953bfaebeb781f62898239dabb426d08a509a4"
@ -5552,6 +5606,15 @@ cliui@^5.0.0:
strip-ansi "^5.2.0"
wrap-ansi "^5.1.0"
cliui@^7.0.2:
version "7.0.4"
resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f"
integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==
dependencies:
string-width "^4.2.0"
strip-ansi "^6.0.0"
wrap-ansi "^7.0.0"
clone-deep@^4.0.1:
version "4.0.1"
resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387"
@ -5718,7 +5781,7 @@ comma-separated-tokens@^1.0.0:
resolved "https://registry.yarnpkg.com/comma-separated-tokens/-/comma-separated-tokens-1.0.8.tgz#632b80b6117867a158f1080ad498b2fbe7e3f5ea"
integrity sha512-GHuDRO12Sypu2cV70d1dkA2EUmXHgntrzbpvOB+Qy+49ypNfGgFQIC2fhhXbnyrJRynDCAARsT7Ou0M6hirpfw==
commander@^2.20.0:
commander@^2.19.0, commander@^2.20.0:
version "2.20.3"
resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33"
integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==
@ -5979,7 +6042,7 @@ conventional-recommended-bump@^5.0.0:
meow "^4.0.0"
q "^1.5.1"
convert-source-map@^1.4.0, convert-source-map@^1.5.0, convert-source-map@^1.7.0:
convert-source-map@^1.4.0, convert-source-map@^1.5.0, convert-source-map@^1.6.0, convert-source-map@^1.7.0:
version "1.8.0"
resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.8.0.tgz#f3373c32d21b4d780dd8004514684fb791ca4369"
integrity sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==
@ -7066,6 +7129,14 @@ document.contains@^1.0.1:
dependencies:
define-properties "^1.1.3"
docusaurus-plugin-react-docgen@^0.0.2:
version "0.0.2"
resolved "https://registry.yarnpkg.com/docusaurus-plugin-react-docgen/-/docusaurus-plugin-react-docgen-0.0.2.tgz#1271644c79302b345f2bb5b90849a4d6d26689c5"
integrity sha512-KTDzFJWhdXSG98MOZh78K4PNK/jUNwb6C1b8h0KoCVvUtmF/mIIXROxB7A2W0oB/NXxq2ktUHjb7g99jhxudjA==
dependencies:
globby "^11.0.0"
joi "^17.0.0"
dom-converter@^0.2.0:
version "0.2.0"
resolved "https://registry.yarnpkg.com/dom-converter/-/dom-converter-0.2.0.tgz#6721a9daee2e293682955b6afe416771627bb768"
@ -7716,6 +7787,15 @@ estraverse@^5.1.0, estraverse@^5.2.0:
resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.2.0.tgz#307df42547e6cc7324d3cf03c155d5cdb8c53880"
integrity sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==
estree-to-babel@^3.1.0:
version "3.2.1"
resolved "https://registry.yarnpkg.com/estree-to-babel/-/estree-to-babel-3.2.1.tgz#82e78315275c3ca74475fdc8ac1a5103c8a75bf5"
integrity sha512-YNF+mZ/Wu2FU/gvmzuWtYc8rloubL7wfXCTgouFrnjGVXPA/EeYYA7pupXWrb3Iv1cTBeSSxxJIbK23l4MRNqg==
dependencies:
"@babel/traverse" "^7.1.6"
"@babel/types" "^7.2.0"
c8 "^7.6.0"
estree-walker@^0.6.1:
version "0.6.1"
resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.6.1.tgz#53049143f40c6eb918b23671d1fe3219f3a1b362"
@ -8420,6 +8500,14 @@ foreachasync@^3.0.0:
resolved "https://registry.yarnpkg.com/foreachasync/-/foreachasync-3.0.0.tgz#5502987dc8714be3392097f32e0071c9dee07cf6"
integrity sha1-VQKYfchxS+M5IJfzLgBxyd7gfPY=
foreground-child@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-2.0.0.tgz#71b32800c9f15aa8f2f83f4a6bd9bff35d861a53"
integrity sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==
dependencies:
cross-spawn "^7.0.0"
signal-exit "^3.0.2"
forever-agent@~0.6.1:
version "0.6.1"
resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91"
@ -8613,7 +8701,7 @@ gensync@^1.0.0-beta.1, gensync@^1.0.0-beta.2:
resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0"
integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==
get-caller-file@^2.0.1:
get-caller-file@^2.0.1, get-caller-file@^2.0.5:
version "2.0.5"
resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e"
integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==
@ -8903,7 +8991,7 @@ globby@^10.0.1:
merge2 "^1.2.3"
slash "^3.0.0"
globby@^11.0.1, globby@^11.0.2, globby@^11.0.3:
globby@^11.0.0, globby@^11.0.1, globby@^11.0.2, globby@^11.0.3:
version "11.0.4"
resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.4.tgz#2cbaff77c2f2a62e71e9b2813a67b97a3a3001a5"
integrity sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==
@ -10340,6 +10428,11 @@ istanbul-lib-coverage@^2.0.2, istanbul-lib-coverage@^2.0.5:
resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz#675f0ab69503fad4b1d849f736baaca803344f49"
integrity sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA==
istanbul-lib-coverage@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz#f5944a37c70b550b02a78a5c3b2055b280cec8ec"
integrity sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg==
istanbul-lib-instrument@^3.0.1, istanbul-lib-instrument@^3.3.0:
version "3.3.0"
resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-3.3.0.tgz#a5f63d91f0bbc0c3e479ef4c5de027335ec6d630"
@ -10362,6 +10455,15 @@ istanbul-lib-report@^2.0.4:
make-dir "^2.1.0"
supports-color "^6.1.0"
istanbul-lib-report@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#7518fe52ea44de372f460a76b5ecda9ffb73d8a6"
integrity sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==
dependencies:
istanbul-lib-coverage "^3.0.0"
make-dir "^3.0.0"
supports-color "^7.1.0"
istanbul-lib-source-maps@^3.0.1:
version "3.0.6"
resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.6.tgz#284997c48211752ec486253da97e3879defba8c8"
@ -10380,6 +10482,14 @@ istanbul-reports@^2.2.6:
dependencies:
html-escaper "^2.0.0"
istanbul-reports@^3.0.2:
version "3.0.2"
resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.0.2.tgz#d593210e5000683750cb09fc0644e4b6e27fd53b"
integrity sha512-9tZvz7AiR3PEDNGiV9vIouQ/EAcqMXFmkcA1CDFTwOB98OZVDL0PH9glHotf5Ugp6GCOTypfzGWI/OqjWNCRUw==
dependencies:
html-escaper "^2.0.0"
istanbul-lib-report "^3.0.0"
jest-canvas-mock@^2.1.0:
version "2.3.1"
resolved "https://registry.yarnpkg.com/jest-canvas-mock/-/jest-canvas-mock-2.3.1.tgz#9535d14bc18ccf1493be36ac37dd349928387826"
@ -10770,7 +10880,7 @@ jest@^24.8.0:
import-local "^2.0.0"
jest-cli "^24.9.0"
joi@^17.3.0, joi@^17.4.0:
joi@^17.0.0, joi@^17.3.0, joi@^17.4.0:
version "17.4.1"
resolved "https://registry.yarnpkg.com/joi/-/joi-17.4.1.tgz#15d2f23c8cbe4d1baded2dd190c58f8dbe11cca0"
integrity sha512-gDPOwQ5sr+BUxXuPDGrC1pSNcVR/yGGcTI0aCnjYxZEa3za60K/iCQ+OFIkEHWZGVCUcUlXlFKvMmrlmxrG6UQ==
@ -11916,7 +12026,7 @@ minimalistic-assert@^1.0.0:
resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7"
integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==
minimatch@3.0.4, minimatch@^3.0.4:
minimatch@3.0.4, minimatch@^3.0.2, minimatch@^3.0.4:
version "3.0.4"
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083"
integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==
@ -12169,7 +12279,7 @@ negotiator@0.6.2:
resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb"
integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==
neo-async@^2.6.0, neo-async@^2.6.2:
neo-async@^2.6.0, neo-async@^2.6.1, neo-async@^2.6.2:
version "2.6.2"
resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f"
integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==
@ -12199,6 +12309,13 @@ node-addon-api@^3.2.0:
resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-3.2.1.tgz#81325e0a2117789c0128dab65e7e38f07ceba161"
integrity sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==
node-dir@^0.1.10:
version "0.1.17"
resolved "https://registry.yarnpkg.com/node-dir/-/node-dir-0.1.17.tgz#5f5665d93351335caabef8f1c554516cf5f1e4e5"
integrity sha1-X1Zl2TNRM1yqvvjxxVRRbPXx5OU=
dependencies:
minimatch "^3.0.2"
node-emoji@^1.10.0, node-emoji@^1.8.1:
version "1.10.0"
resolved "https://registry.yarnpkg.com/node-emoji/-/node-emoji-1.10.0.tgz#8886abd25d9c7bb61802a658523d1f8d2a89b2da"
@ -14838,6 +14955,22 @@ react-dnd@9.4.0:
hoist-non-react-statics "^3.3.0"
shallowequal "^1.1.0"
react-docgen@^5.4.0:
version "5.4.0"
resolved "https://registry.yarnpkg.com/react-docgen/-/react-docgen-5.4.0.tgz#2cd7236720ec2769252ef0421f23250b39a153a1"
integrity sha512-JBjVQ9cahmNlfjMGxWUxJg919xBBKAoy3hgDgKERbR+BcF4ANpDuzWAScC7j27hZfd8sJNmMPOLWo9+vB/XJEQ==
dependencies:
"@babel/core" "^7.7.5"
"@babel/generator" "^7.12.11"
"@babel/runtime" "^7.7.6"
ast-types "^0.14.2"
commander "^2.19.0"
doctrine "^3.0.0"
estree-to-babel "^3.1.0"
neo-async "^2.6.1"
node-dir "^0.1.10"
strip-indent "^3.0.0"
react-dom@^17.0.2:
version "17.0.2"
resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-17.0.2.tgz#ecffb6845e3ad8dbfcdc498f0d0a939736502c23"
@ -15131,6 +15264,14 @@ react-textarea-autosize@^8.3.2:
use-composed-ref "^1.0.0"
use-latest "^1.0.0"
react-tooltip@^4.2.21:
version "4.2.21"
resolved "https://registry.yarnpkg.com/react-tooltip/-/react-tooltip-4.2.21.tgz#840123ed86cf33d50ddde8ec8813b2960bfded7f"
integrity sha512-zSLprMymBDowknr0KVDiJ05IjZn9mQhhg4PRsqln0OZtURAJ1snt1xi5daZfagsh6vfsziZrc9pErPTDY1ACig==
dependencies:
prop-types "^15.7.2"
uuid "^7.0.3"
react-transition-group@2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/react-transition-group/-/react-transition-group-2.0.0.tgz#e882e61fce8622ed981b6e31fc7ef52d43a1a06a"
@ -15463,6 +15604,11 @@ regenerate@^1.4.0:
resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a"
integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==
regenerator-runtime@^0.12.0:
version "0.12.1"
resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.12.1.tgz#fa1a71544764c036f8c49b13a08b2594c9f8a0de"
integrity sha512-odxIc1/vDlo4iZcfXqRYFj0vpXFNoGdKMAUieAlFYO6m/nl5e9KR/beGf41z4a1FI+aQgtjhuaSlDxQ0hmkrHg==
regenerator-runtime@^0.13.1, regenerator-runtime@^0.13.2, regenerator-runtime@^0.13.3, regenerator-runtime@^0.13.4:
version "0.13.7"
resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz#cac2dacc8a1ea675feaabaeb8ae833898ae46f55"
@ -17256,6 +17402,15 @@ test-exclude@^5.2.3:
read-pkg-up "^4.0.0"
require-main-filename "^2.0.0"
test-exclude@^6.0.0:
version "6.0.0"
resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e"
integrity sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==
dependencies:
"@istanbuljs/schema" "^0.1.2"
glob "^7.1.4"
minimatch "^3.0.4"
text-extensions@^1.0.0:
version "1.9.0"
resolved "https://registry.yarnpkg.com/text-extensions/-/text-extensions-1.9.0.tgz#1853e45fee39c945ce6f6c36b2d659b5aabc2a26"
@ -17994,11 +18149,25 @@ uuid@^3.0.1, uuid@^3.3.2, uuid@^3.4.0:
resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee"
integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==
uuid@^7.0.3:
version "7.0.3"
resolved "https://registry.yarnpkg.com/uuid/-/uuid-7.0.3.tgz#c5c9f2c8cf25dc0a372c4df1441c41f5bd0c680b"
integrity sha512-DPSke0pXhTZgoF/d+WSt2QaKMCFSfx7QegxEWT+JOuHF5aWrKEn0G+ztjuJg/gG8/ItK+rbPCD/yNv8yyih6Cg==
v8-compile-cache@^2.0.3, v8-compile-cache@^2.2.0:
version "2.3.0"
resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee"
integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==
v8-to-istanbul@^8.0.0:
version "8.0.0"
resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-8.0.0.tgz#4229f2a99e367f3f018fa1d5c2b8ec684667c69c"
integrity sha512-LkmXi8UUNxnCC+JlH7/fsfsKr5AU110l+SYGJimWNkWhxbN5EyeOtm1MJ0hhvqMMOhGwBj1Fp70Yv9i+hX0QAg==
dependencies:
"@types/istanbul-lib-coverage" "^2.0.1"
convert-source-map "^1.6.0"
source-map "^0.7.3"
validate-npm-package-license@^3.0.1, validate-npm-package-license@^3.0.3:
version "3.0.4"
resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a"
@ -18856,6 +19025,11 @@ y18n@^4.0.0:
resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.3.tgz#b5f259c82cd6e336921efd7bfd8bf560de9eeedf"
integrity sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==
y18n@^5.0.5:
version "5.0.8"
resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55"
integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==
yallist@^2.1.2:
version "2.1.2"
resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52"
@ -18892,7 +19066,7 @@ yargs-parser@^15.0.1:
camelcase "^5.0.0"
decamelize "^1.2.0"
yargs-parser@^20.2.3:
yargs-parser@^20.2.2, yargs-parser@^20.2.3, yargs-parser@^20.2.7:
version "20.2.9"
resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee"
integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==
@ -18930,6 +19104,19 @@ yargs@^14.2.2:
y18n "^4.0.0"
yargs-parser "^15.0.1"
yargs@^16.2.0:
version "16.2.0"
resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66"
integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==
dependencies:
cliui "^7.0.2"
escalade "^3.1.1"
get-caller-file "^2.0.5"
require-directory "^2.1.1"
string-width "^4.2.0"
y18n "^5.0.5"
yargs-parser "^20.2.2"
yauzl@^2.10.0:
version "2.10.0"
resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9"