add storybook stories for ActionItem and Toggle (#1698)

This commit is contained in:
Quinn Slack 2019-01-07 23:44:08 -08:00 committed by GitHub
parent d86d9d4af2
commit 88731d7c94
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
14 changed files with 511 additions and 66 deletions

View File

@ -1,6 +1,6 @@
import { configure } from '@storybook/react'
// automatically import all files ending in *.stories.js
// Automatically import all files ending in *.stories.tsx?.
const req = require.context('../../stories', true, /\.tsx?$/)
function loadStories(): void {
for (const filename of req.keys()) {

View File

@ -4,7 +4,7 @@
const config = {
collectCoverage: true,
coverageDirectory: '<rootDir>/coverage',
moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx'],
moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx', 'json'],
preset: 'ts-jest/presets/js-with-ts',
roots: ['<rootDir>/src'],
transform: { '^.+\\.[jt]sx?$': 'ts-jest' },
@ -18,6 +18,8 @@ const config = {
'/node_modules/(?!abortable-rx|@sourcegraph/react-loading-spinner|@sourcegraph/codeintellify)',
],
moduleNameMapper: { '\\.s?css$': 'identity-obj-proxy' },
// By default, don't clutter `yarn test --watch` output with the full coverage table. To see it, use the
// `--coverageReporters text` jest option.
coverageReporters: ['json', 'lcov', 'text-summary'],

View File

@ -40,10 +40,16 @@
"@sourcegraph/stylelint-config": "^1.0.1",
"@sourcegraph/tsconfig": "^3.0.0",
"@sourcegraph/tslint-config": "^12.3.1",
"@storybook/addon-actions": "4.1.3",
"@storybook/addon-actions": "^4.1.4",
"@storybook/addon-console": "^1.1.0",
"@storybook/addon-info": "^4.1.4",
"@storybook/addon-links": "4.1.3",
"@storybook/addons": "4.1.3",
"@storybook/react": "4.1.3",
"@storybook/addon-notes": "^4.1.4",
"@storybook/addon-options": "^4.1.4",
"@storybook/addon-storyshots": "^4.1.4",
"@storybook/addons": "^4.1.4",
"@storybook/components": "^4.1.4",
"@storybook/react": "^4.1.4",
"@types/babel__core": "7.0.4",
"@types/chai": "4.1.7",
"@types/chai-as-promised": "7.1.0",
@ -86,8 +92,12 @@
"@types/sinon": "7.0.3",
"@types/socket.io": "2.1.2",
"@types/socket.io-client": "1.4.32",
"@types/storybook__addon-actions": "3.4.1",
"@types/storybook__react": "4.0.0",
"@types/storybook__addon-actions": "^3.4.1",
"@types/storybook__addon-info": "^3.4.2",
"@types/storybook__addon-notes": "^4.0.0",
"@types/storybook__addon-options": "^4.0.0",
"@types/storybook__addon-storyshots": "^3.4.4",
"@types/storybook__react": "^4.0.0",
"@types/textarea-caret": "3.0.0",
"@types/uuid": "3.4.4",
"@types/webpack": "4.4.22",
@ -114,6 +124,7 @@
"graphql": "^14.0.2",
"graphql-schema-linter": "^0.1.6",
"gulp": "^4.0.0",
"identity-obj-proxy": "^3.0.0",
"jest": "^23.6.0",
"json-schema-ref-parser": "^6.0.2",
"json-schema-to-typescript": "^6.1.0",
@ -128,6 +139,7 @@
"postcss-loader": "^3.0.0",
"prettier": "1.15.3",
"puppeteer": "1.11.0",
"react-docgen-typescript-webpack-plugin": "^1.1.0",
"react-test-renderer": "^16.7.0",
"react-testing-library": "^5.4.2",
"sass-loader": "^7.0.3",

View File

@ -0,0 +1,5 @@
// @ts-check
import '@storybook/addon-options/register'
import '@storybook/addon-actions/register'
import '@storybook/addon-notes/register'

View File

@ -0,0 +1,43 @@
// @ts-check
import { configure, addDecorator } from '@storybook/react'
import { withInfo } from '@storybook/addon-info'
import { withOptions } from '@storybook/addon-options'
// @ts-ignore
import { themes } from '@storybook/components'
import { configureActions } from '@storybook/addon-actions'
import '@storybook/addon-console'
// @ts-ignore
import { withConsole } from '@storybook/addon-console'
import { withNotes } from '@storybook/addon-notes'
// Load CSS.
import '../../web/src/SourcegraphWebApp.scss'
async function main() {
// Load all *.story.tsx files.
if (require.context) {
// In Webpack:
const requireContext = require.context('../src', true, /\.story\.tsx?$/)
for (const storyModule of requireContext.keys()) {
requireContext(storyModule)
}
} else {
throw new Error('running storybooks outside of Webpack is not yet supported')
}
// Configure storybooks.
configure(() => {
addDecorator(withNotes())
addDecorator((storyFn, context) => withConsole()(storyFn)(context))
// @ts-ignore
addDecorator(withOptions({ theme: themes.dark }))
addDecorator(withInfo({ header: false, propTables: false }))
configureActions({
depth: 100,
limit: 20,
})
}, module)
}
main().catch(err => console.error(err))

View File

@ -0,0 +1,32 @@
// @ts-check
const path = require('path')
module.exports = (baseConfig, env, config) => {
config.module.rules.push({
test: /\.(ts|tsx)$/,
loader: require.resolve('babel-loader'),
options: {
presets: [['react-app', { flow: false, typescript: true }]],
},
})
config.resolve.extensions.push('.ts', '.tsx')
// Put our style rules at the beginning so they're processed by the time it
// gets to storybook's style rules.
config.module.rules.unshift({
test: /\.(css|sass|scss)$/,
use: [
'style-loader',
'postcss-loader',
{
loader: 'sass-loader',
options: {
includePaths: [path.resolve(__dirname, '../..', 'node_modules')],
},
},
],
})
return config
}

View File

@ -22,7 +22,8 @@
"graphql": "gulp graphQLTypes",
"schema": "gulp schema",
"watch-schema": "gulp watchSchema",
"prepublish": "yarn run tslint:build-rules"
"prepublish": "yarn run tslint:build-rules",
"storybook": "start-storybook -p 9001 -c .storybook"
},
"sideEffects": false
}

View File

@ -0,0 +1,112 @@
import { action } from '@storybook/addon-actions'
import { storiesOf } from '@storybook/react'
import * as H from 'history'
import React from 'react'
import { setLinkComponent } from '../components/Link'
import { ActionItem, ActionItemComponentProps } from './ActionItem'
setLinkComponent(({ to, children, ...props }) => (
<a href={to && typeof to !== 'string' ? H.createPath(to) : to} {...props}>
{children}
</a>
))
const EXTENSIONS_CONTROLLER: ActionItemComponentProps['extensionsController'] = {
executeCommand: () => new Promise(resolve => setTimeout(resolve, 750)),
}
const PLATFORM_CONTEXT: ActionItemComponentProps['platformContext'] = {
forceUpdateTooltip: () => void 0,
}
const LOCATION: H.Location = { hash: '', pathname: '/', search: '', state: undefined }
const ICON_URL =
'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg=='
const onDidExecute = action('onDidExecute')
const { add } = storiesOf('ActionItem', module)
add('noop action', () => (
<ActionItem
action={{ id: 'a', command: undefined, actionItem: { label: 'Hello' } }}
variant="actionItem"
location={LOCATION}
extensionsController={EXTENSIONS_CONTROLLER}
platformContext={PLATFORM_CONTEXT}
/>
))
add('command action', () => (
<ActionItem
action={{ id: 'a', command: 'c', title: 'Hello', iconURL: ICON_URL }}
disabledDuringExecution={true}
showLoadingSpinnerDuringExecution={true}
showInlineError={true}
onDidExecute={onDidExecute}
location={LOCATION}
extensionsController={EXTENSIONS_CONTROLLER}
platformContext={PLATFORM_CONTEXT}
/>
))
add('link action', () => (
<ActionItem
action={{
id: 'a',
command: 'open',
commandArguments: ['javascript:alert("link clicked")'],
actionItem: { label: 'Hello' },
}}
variant="actionItem"
onDidExecute={onDidExecute}
location={LOCATION}
extensionsController={EXTENSIONS_CONTROLLER}
platformContext={PLATFORM_CONTEXT}
/>
))
add('executing', () => {
class ActionItemExecuting extends ActionItem {
constructor(props: ActionItem['props']) {
super(props)
this.state.actionOrError = 'loading'
}
}
return (
<ActionItemExecuting
action={{ id: 'a', command: 'c', title: 'Hello', iconURL: ICON_URL }}
disabledDuringExecution={true}
showLoadingSpinnerDuringExecution={true}
showInlineError={true}
location={LOCATION}
extensionsController={EXTENSIONS_CONTROLLER}
platformContext={PLATFORM_CONTEXT}
/>
)
})
add(
'error',
() => {
class ActionItemWithError extends ActionItem {
constructor(props: ActionItem['props']) {
super(props)
this.state.actionOrError = new Error('e')
}
}
return (
<ActionItemWithError
action={{ id: 'a', command: 'c', title: 'Hello', iconURL: ICON_URL }}
disabledDuringExecution={true}
showLoadingSpinnerDuringExecution={true}
showInlineError={true}
location={LOCATION}
extensionsController={EXTENSIONS_CONTROLLER}
platformContext={PLATFORM_CONTEXT}
/>
)
},
{ notes: 'The error is shown in a tooltip, which is not yet visible in the storybook.' }
)

View File

@ -59,11 +59,9 @@ export interface ActionItemProps {
title?: React.ReactElement<any>
}
export interface ActionItemComponentProps {
extensionsController:
| ExtensionsControllerProps['extensionsController']
| { executeCommand: (params: ExecuteCommandParams) => Promise<any> }
platformContext: PlatformContextProps['platformContext'] | { forceUpdateTooltip: () => void }
export interface ActionItemComponentProps
extends ExtensionsControllerProps<'executeCommand'>,
PlatformContextProps<'forceUpdateTooltip'> {
location: H.Location
}

View File

@ -2,7 +2,7 @@
background: none;
border: none;
cursor: pointer;
display: block;
display: inline-block;
outline: none !important;
padding: 0;
position: relative;

View File

@ -0,0 +1,35 @@
import { action } from '@storybook/addon-actions'
import { storiesOf } from '@storybook/react'
import React from 'react'
import { Toggle } from './Toggle'
const onToggle = action('onToggle')
const { add } = storiesOf('Toggle', module)
add('interactive', () => {
interface State {
value?: boolean
}
class ToggleInteractive extends React.Component<{}, State> {
public state: State = {}
public render(): JSX.Element | null {
return (
<div className="d-flex align-items-center">
<Toggle value={this.state.value} onToggle={this.onToggle} title="Hello" className="mr-2" /> Value is{' '}
{String(this.state.value)}
</div>
)
}
private onToggle = (value: boolean) => this.setState({ value }, () => onToggle(value))
}
return <ToggleInteractive />
})
add('on', () => <Toggle value={true} onToggle={onToggle} />)
add('off', () => <Toggle value={false} onToggle={onToggle} />)
add('disabled/on', () => <Toggle value={true} disabled={true} onToggle={onToggle} />)
add('disabled/off', () => <Toggle value={false} disabled={true} onToggle={onToggle} />)

View File

@ -50,11 +50,11 @@ export interface Controller extends Unsubscribable {
* React props or state containing the client. There should be only a single client for the whole
* application.
*/
export interface ExtensionsControllerProps {
export interface ExtensionsControllerProps<K extends keyof Controller = keyof Controller> {
/**
* The client, which is used to communicate with and manage extensions.
*/
extensionsController: Controller
extensionsController: Pick<Controller, K>
}
/**

View File

@ -282,5 +282,6 @@ hr {
@import './repo/blob/discussions/DiscussionsTree';
@import './components/SearchResult';
@import './components/SearchResultMatch';
@import '../node_modules/@sourcegraph/react-loading-spinner/lib/LoadingSpinner';
@import './extensions/shared';

304
yarn.lock
View File

@ -1547,17 +1547,17 @@
resolved "https://registry.npmjs.org/@sqs/jsonc-parser/-/jsonc-parser-1.0.3.tgz#178538e4cb32cad15b47a739cabd77408ba18021"
integrity sha512-dW/2OZ1z5r2rhYPcISh8GwRz7lUzVh4S4+Dgw8wg4WDdTL8yqXjQX8Ysd8cUGhzKE9/UbbrLdlj7sEwzI8Bbqw==
"@storybook/addon-actions@4.1.3":
version "4.1.3"
resolved "https://registry.npmjs.org/@storybook/addon-actions/-/addon-actions-4.1.3.tgz#a6368297beb6a2e0cad9939ea0678a697939b5a5"
integrity sha512-zIxc8LljnVJPiLfyLCZ/fxWx+NXAdpTQJA/7bIQyZHRl8/VDNg0wRAZIdrvDFbZOiHyUp79qk55rS9Od0KhqoA==
"@storybook/addon-actions@^4.1.4":
version "4.1.4"
resolved "https://registry.npmjs.org/@storybook/addon-actions/-/addon-actions-4.1.4.tgz#d6ff166939b0f1b6c2de57c6716503449b17124d"
integrity sha512-G/dROclra4G6j1GZ/tHhADa1Hc1noSrMm3lDziyKC+W3EhWL9nhnPkreG3VHsZUkfAfZHECT8ATFZHo/QGS3pg==
dependencies:
"@emotion/core" "^0.13.1"
"@emotion/provider" "^0.11.2"
"@emotion/styled" "^0.10.6"
"@storybook/addons" "4.1.3"
"@storybook/components" "4.1.3"
"@storybook/core-events" "4.1.3"
"@storybook/addons" "4.1.4"
"@storybook/components" "4.1.4"
"@storybook/core-events" "4.1.4"
core-js "^2.5.7"
deep-equal "^1.0.1"
global "^4.3.2"
@ -1567,6 +1567,31 @@
react-inspector "^2.3.0"
uuid "^3.3.2"
"@storybook/addon-console@^1.1.0":
version "1.1.0"
resolved "https://registry.npmjs.org/@storybook/addon-console/-/addon-console-1.1.0.tgz#ef063fa122a7aa03ac54067a1d6a72d717b41c73"
integrity sha512-G36/KB0uN5OB30W/QQU/NIbQ2EA4ZjJGORvYNx83bojRN2cKF0NFae5hEwlAAhKZK31qe3g3bsymWvc7+WBCpA==
dependencies:
global "^4.3.2"
"@storybook/addon-info@^4.1.4":
version "4.1.4"
resolved "https://registry.npmjs.org/@storybook/addon-info/-/addon-info-4.1.4.tgz#f370543a9151a31a6b2ec7fa5bbea544dcc15eff"
integrity sha512-D6HUZ1qOEXN1jtIbcn9TuB/sKJlgOVTb7YwCyaKWIF1WIZ9xumoL4t8jl4inXAbtPcLZ9e+oE3owJFKYXCQUTQ==
dependencies:
"@emotion/styled" "^0.10.6"
"@storybook/addons" "4.1.4"
"@storybook/client-logger" "4.1.4"
"@storybook/components" "4.1.4"
core-js "^2.5.7"
global "^4.3.2"
marksy "^6.1.0"
nested-object-assign "^1.0.1"
prop-types "^15.6.2"
react-addons-create-fragment "^15.5.3"
react-lifecycles-compat "^3.0.4"
util-deprecate "^1.0.2"
"@storybook/addon-links@4.1.3":
version "4.1.3"
resolved "https://registry.npmjs.org/@storybook/addon-links/-/addon-links-4.1.3.tgz#4d30542ce9cee84c8bb31d45589891c321fd817d"
@ -1579,6 +1604,39 @@
global "^4.3.2"
prop-types "^15.6.2"
"@storybook/addon-notes@^4.1.4":
version "4.1.4"
resolved "https://registry.npmjs.org/@storybook/addon-notes/-/addon-notes-4.1.4.tgz#02aa0f675f1cccf84dddbf1c0aa4f64e8fb3dc03"
integrity sha512-vhAnOtpALQ0C5qHEhloHNp7gIjFS1li/VBr0C1/UCU55kgFbQ4kjuwH1F+ptJJlvCOu2h4/Q0WkLs4S3KFhAfw==
dependencies:
"@emotion/styled" "^0.10.6"
"@storybook/addons" "4.1.4"
core-js "^2.5.7"
marked "^0.5.2"
prop-types "^15.6.2"
"@storybook/addon-options@^4.1.4":
version "4.1.4"
resolved "https://registry.npmjs.org/@storybook/addon-options/-/addon-options-4.1.4.tgz#58765a50d7cf8c1b1ff1cf9e257ce29f8b47912e"
integrity sha512-+XK72SYStpYlfssHHBw6wJu5+KZ+W5nuOChcgEB9fmpbQVd+69tLv8QWaK95ez0/+3KRC7jrHWAzsd8nitQZBQ==
dependencies:
"@storybook/addons" "4.1.4"
core-js "^2.5.7"
util-deprecate "^1.0.2"
"@storybook/addon-storyshots@^4.1.4":
version "4.1.4"
resolved "https://registry.npmjs.org/@storybook/addon-storyshots/-/addon-storyshots-4.1.4.tgz#c09e467ae0354c18906079591fbbe99243745c33"
integrity sha512-AQk7lYpYqDmBG6rFm0PSffW3mKOSogLci1CQ+vNFBhwvf2INLj4JHU/G7cSKK1NvtZlp9kvl4E8jVzXGNo610A==
dependencies:
"@storybook/addons" "4.1.4"
core-js "^2.5.7"
glob "^7.1.3"
global "^4.3.2"
jest-specific-snapshot "^1.0.0"
read-pkg-up "^4.0.0"
regenerator-runtime "^0.12.1"
"@storybook/addons@4.1.3":
version "4.1.3"
resolved "https://registry.npmjs.org/@storybook/addons/-/addons-4.1.3.tgz#5d6561e37751eb1848b92660fe928b065e7c344d"
@ -1589,12 +1647,22 @@
global "^4.3.2"
util-deprecate "^1.0.2"
"@storybook/channel-postmessage@4.1.3":
version "4.1.3"
resolved "https://registry.npmjs.org/@storybook/channel-postmessage/-/channel-postmessage-4.1.3.tgz#c0c2f15b1a7b3e9a6674accc6d3f574129476028"
integrity sha512-8srwq67Hc6IuY8GrJPYaPhPjPLKts5bYyy7hLZ464t/bOvvG21jItz5f262S1Tibh9t43fygYFbl4lb9qyumSg==
"@storybook/addons@4.1.4", "@storybook/addons@^4.1.4":
version "4.1.4"
resolved "https://registry.npmjs.org/@storybook/addons/-/addons-4.1.4.tgz#652c494aa448441f182a36d83d8f05a54f5b5c31"
integrity sha512-h91OXr9eFx3ilST+4rpXpPB3Y6gnJ/ZBps84cgZ69coffTeYfzNHPB1Fu2RVsB1skdSFTF/TnB1bAEzYNZ2cDQ==
dependencies:
"@storybook/channels" "4.1.3"
"@storybook/channels" "4.1.4"
"@storybook/components" "4.1.4"
global "^4.3.2"
util-deprecate "^1.0.2"
"@storybook/channel-postmessage@4.1.4":
version "4.1.4"
resolved "https://registry.npmjs.org/@storybook/channel-postmessage/-/channel-postmessage-4.1.4.tgz#f63bd2a6a8725e3af2c184dfa27f5eaada5eed23"
integrity sha512-VeZkS6ISoJH/HHl45LlIWKt4uv1YuIeRzrpPJ0ggnSIPvroRfEypQh5svuFuEkHXs5jOPQ6gtFEyxjT+EH+SfQ==
dependencies:
"@storybook/channels" "4.1.4"
global "^4.3.2"
json-stringify-safe "^5.0.1"
@ -1603,10 +1671,15 @@
resolved "https://registry.npmjs.org/@storybook/channels/-/channels-4.1.3.tgz#38b13650d408e0a3a8f7ab1b2ae03df45c8acf54"
integrity sha512-SaxHlNbNO2yXwg7GI4k6TGWhYK+WdXEDLfDp9w2BigZQel5SCDZsuOCYtE3yG6ajrdBq4ehkhnLPE0wQcupp7A==
"@storybook/client-logger@4.1.3":
version "4.1.3"
resolved "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-4.1.3.tgz#087c489d9bc777e305a95055557de643c399c1a4"
integrity sha512-J7QDBsP7qMBjuyXR8MTrcEk+KiYgriztg1ycTopltCiiroi8yCeIaNIUQZ3rbEsKpHdDVT/oDj1g5WDafQ03Qg==
"@storybook/channels@4.1.4":
version "4.1.4"
resolved "https://registry.npmjs.org/@storybook/channels/-/channels-4.1.4.tgz#8ed05f821c55fd359231568d9a94e31ea81a2f82"
integrity sha512-tXKSz58p4o1CiRL9VNUfgMuNeuyUkLLyBfK0tAY0Co370BTfUvMq7clG65+nPj+rdb7foYQQKpnwGYdMVzuzsg==
"@storybook/client-logger@4.1.4":
version "4.1.4"
resolved "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-4.1.4.tgz#c87d8d3357cb3eb582249f43692ea82c7c2461e0"
integrity sha512-fOrSNPa4Pg8m9UD8fTUFTewTtuzhckrt6zESpj+P7/MnWM+W71umvobb0HpPBGKvwSC8qJZhOwsH7tNI7K0PAw==
"@storybook/components@4.1.3":
version "4.1.3"
@ -1624,27 +1697,48 @@
react-textarea-autosize "^7.0.4"
render-fragment "^0.1.1"
"@storybook/components@4.1.4", "@storybook/components@^4.1.4":
version "4.1.4"
resolved "https://registry.npmjs.org/@storybook/components/-/components-4.1.4.tgz#9513cb9f224bd9c1a449b8ff85bcf03e5572e0bd"
integrity sha512-H0SMPt/zF1zfyCqUTwx0RcaRbviiz9vdxXWO4jURfgULhGpP+mQRXz0KUn2k7s/RMerTtpB4/DKNKm0zDylcNQ==
dependencies:
"@emotion/core" "^0.13.1"
"@emotion/provider" "^0.11.2"
"@emotion/styled" "^0.10.6"
global "^4.3.2"
lodash "^4.17.11"
prop-types "^15.6.2"
react-inspector "^2.3.0"
react-split-pane "^0.1.84"
react-textarea-autosize "^7.0.4"
render-fragment "^0.1.1"
"@storybook/core-events@4.1.3":
version "4.1.3"
resolved "https://registry.npmjs.org/@storybook/core-events/-/core-events-4.1.3.tgz#80476d5380d60180511e0cd9546f24253197adef"
integrity sha512-mMHclba/+TCPdz+UXX0TYXN3SVe17p5n9OuZ6h0hZPdUPaqwN5xsi+UmYH6jGutHEzwkiVzw4cs5QvkcxuUzng==
"@storybook/core@4.1.3":
version "4.1.3"
resolved "https://registry.npmjs.org/@storybook/core/-/core-4.1.3.tgz#8c887094841931661f5b3693699b834870c8dc8c"
integrity sha512-boyc+/fmNd/HReEkec8UVqAqiMUXBbTu64xG2yytNJQ+Z9jzlGBMMJQWC6Ad5iAwgSco3BbbRT7XRkhhC35ibA==
"@storybook/core-events@4.1.4":
version "4.1.4"
resolved "https://registry.npmjs.org/@storybook/core-events/-/core-events-4.1.4.tgz#e20eff66c2683989fe1d9aa02aa9c1e28d15a927"
integrity sha512-N/yQOwNMyPZQEj0Q2ZN/DEm+A9TvCMzL24w7f1JC2W2sSrnzMKPQabSIk2rzH2gJwc4Z2EyVI4AgPTocBwCHNA==
"@storybook/core@4.1.4":
version "4.1.4"
resolved "https://registry.npmjs.org/@storybook/core/-/core-4.1.4.tgz#69f4fdf083160d71d309347d51b7037afdac1eee"
integrity sha512-nniqbFVszHhvca33uDft0ErUuaKkAul17Tke4EOvP0xb0/4sFj6CL1B2KTMUdsarlq+dcNXdKP0+e5skgwojvg==
dependencies:
"@babel/plugin-proposal-class-properties" "^7.2.0"
"@babel/preset-env" "^7.2.0"
"@emotion/core" "^0.13.1"
"@emotion/provider" "^0.11.2"
"@emotion/styled" "^0.10.6"
"@storybook/addons" "4.1.3"
"@storybook/channel-postmessage" "4.1.3"
"@storybook/client-logger" "4.1.3"
"@storybook/core-events" "4.1.3"
"@storybook/node-logger" "4.1.3"
"@storybook/ui" "4.1.3"
"@storybook/addons" "4.1.4"
"@storybook/channel-postmessage" "4.1.4"
"@storybook/client-logger" "4.1.4"
"@storybook/core-events" "4.1.4"
"@storybook/node-logger" "4.1.4"
"@storybook/ui" "4.1.4"
airbnb-js-shims "^1 || ^2"
autoprefixer "^9.3.1"
babel-plugin-macros "^2.4.2"
@ -1707,10 +1801,10 @@
"@storybook/react-simple-di" "^1.2.1"
babel-runtime "6.x.x"
"@storybook/node-logger@4.1.3":
version "4.1.3"
resolved "https://registry.npmjs.org/@storybook/node-logger/-/node-logger-4.1.3.tgz#08f21a5ae5883391ef134df2901de8e5332e9ebc"
integrity sha512-UMyic114zKOwusubRajH42moR9ad0dJo56oRw5yk31UjMIn930AHfAAHxjfbm8FfUrz24rud2/gfC1UQjSqq5g==
"@storybook/node-logger@4.1.4":
version "4.1.4"
resolved "https://registry.npmjs.org/@storybook/node-logger/-/node-logger-4.1.4.tgz#3f2255a01fcbcd875be7b334833fd775a0338058"
integrity sha512-jMepAkeeYY29kQEgbWMpTCCiV2P8fMhEwOudBBlq+QUj0Ugkchh2tfp5ViZ52aqQeZtoGJA8++rVSAKaTYkhOA==
dependencies:
chalk "^2.4.1"
core-js "^2.5.7"
@ -1754,17 +1848,17 @@
dependencies:
babel-runtime "^6.5.0"
"@storybook/react@4.1.3":
version "4.1.3"
resolved "https://registry.npmjs.org/@storybook/react/-/react-4.1.3.tgz#149b92a3f543d0fec4580b55223ecd360e2a1c37"
integrity sha512-6tyNssoixH+HFcLqNLDZRgK6ECX4OpH/QHshk+4bQLd9uhXI9q8Ej7qmmRPCYrQFW0nuGLToPn3XNsJRN1JBhw==
"@storybook/react@^4.1.4":
version "4.1.4"
resolved "https://registry.npmjs.org/@storybook/react/-/react-4.1.4.tgz#29b7bbee6b6f5cf9b8b2c5ed796cfcb144c572b5"
integrity sha512-W4H3JKkmI9QWvJzCLTETMrESKjnYU0alutd45Jz6Oie/eniGmZZDHoq40TpQNafchc5StBiqq9zbq0axy9UMPA==
dependencies:
"@babel/plugin-transform-react-constant-elements" "^7.2.0"
"@babel/preset-flow" "^7.0.0"
"@babel/preset-react" "^7.0.0"
"@emotion/styled" "^0.10.6"
"@storybook/core" "4.1.3"
"@storybook/node-logger" "4.1.3"
"@storybook/core" "4.1.4"
"@storybook/node-logger" "4.1.4"
"@svgr/webpack" "^4.0.3"
babel-plugin-named-asset-import "^0.2.3"
babel-plugin-react-docgen "^2.0.0"
@ -1780,16 +1874,16 @@
semver "^5.6.0"
webpack "^4.23.1"
"@storybook/ui@4.1.3":
version "4.1.3"
resolved "https://registry.npmjs.org/@storybook/ui/-/ui-4.1.3.tgz#7ed0e44d3eebe8aab1a8b2fd47c235d9072b8225"
integrity sha512-0tjir7iMhjVjMSyYPZ2f/EAEBE62rkmVp/aWGzkMDuRvrxFUQ7Z73C8fRdpYoNcvqlXFf3oh88q7zHd7SKNCdA==
"@storybook/ui@4.1.4":
version "4.1.4"
resolved "https://registry.npmjs.org/@storybook/ui/-/ui-4.1.4.tgz#519118ad41430115359b245384854cb3388ed53f"
integrity sha512-qP7aDHxHBShU8MACnDsfR7LaOYvGcpRKF99yO3eygmHGJNyt7DHvxa5MnUOnsB30nRhcPuEPEWbVsamLQOUg3Q==
dependencies:
"@emotion/core" "^0.13.1"
"@emotion/provider" "^0.11.2"
"@emotion/styled" "^0.10.6"
"@storybook/components" "4.1.3"
"@storybook/core-events" "4.1.3"
"@storybook/components" "4.1.4"
"@storybook/core-events" "4.1.4"
"@storybook/mantra-core" "^1.7.2"
"@storybook/podda" "^1.2.3"
"@storybook/react-komposer" "^2.0.5"
@ -2167,6 +2261,11 @@
resolved "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.118.tgz#247bab39bfcc6d910d4927c6e06cbc70ec376f27"
integrity sha512-iiJbKLZbhSa6FYRip/9ZDX6HXhayXLDGY2Fqws9cOkEQ6XeKfaxB0sC541mowZJueYyMnVUmmG+al5/4fCDrgw==
"@types/marked@*":
version "0.6.0"
resolved "https://registry.npmjs.org/@types/marked/-/marked-0.6.0.tgz#e4ac316144a84afda5c2474488d7b9fef3ab9995"
integrity sha512-TxwhgR9VsIfRDJ3WwFokG8Xu+ea0nYGDRHdI783WJ983uffatz0ytIeUEIBOwPvRy241KRSNVyywQltuTqDh0w==
"@types/marked@0.5.0":
version "0.5.0"
resolved "https://registry.npmjs.org/@types/marked/-/marked-0.5.0.tgz#4b91c66ee8cf0abb6938e02fdec207279959962e"
@ -2269,7 +2368,7 @@
resolved "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.5.6.tgz#9c03d3fed70a8d517c191b7734da2879b50ca26c"
integrity sha512-ZBFR7TROLVzCkswA3Fmqq+IIJt62/T7aY/Dmz+QkU7CaW2QFqAitCE8Ups7IzmGhcN1YWMBT4Qcoc07jU9hOJQ==
"@types/puppeteer@1.11.1":
"@types/puppeteer@*", "@types/puppeteer@1.11.1":
version "1.11.1"
resolved "https://registry.npmjs.org/@types/puppeteer/-/puppeteer-1.11.1.tgz#f2fe2e08917af2b4dc4b03bd2b838c05cb9d8410"
integrity sha512-IvrvZfWjITUH7q4WrM25ul9xlIeLM3Oh+hV2FL7xQQSroVf8mX3lMZaN7XEsw6Bdfp99Qm7I4GcD+ak5+wIEfA==
@ -2416,12 +2515,44 @@
dependencies:
"@types/node" "*"
"@types/storybook__addon-actions@3.4.1":
"@types/storybook__addon-actions@^3.4.1":
version "3.4.1"
resolved "https://registry.npmjs.org/@types/storybook__addon-actions/-/storybook__addon-actions-3.4.1.tgz#8f90d76b023b58ee794170f2fe774a3fddda2c1d"
integrity sha512-An8pNb1/7QhkdOT8Ht5WjJsSxAh2mWti/J4eILwUHpXVZ1j3xlVaOzwTbg8twN4DjgOAggjEDOj6Bx8YOWh9Pg==
"@types/storybook__react@4.0.0":
"@types/storybook__addon-info@^3.4.2":
version "3.4.2"
resolved "https://registry.npmjs.org/@types/storybook__addon-info/-/storybook__addon-info-3.4.2.tgz#31a27e66867f02e593579cc58f54d22e726b0925"
integrity sha512-1af9u42JAMbi54MOkfzZt2+RTbUnpVJCN6vkkcAEtlyML4tXpmW482d3TZNiYPk3ePHKkielNZUtfpijT/XJ+A==
dependencies:
"@types/react" "*"
"@types/storybook__addon-notes@^4.0.0":
version "4.0.0"
resolved "https://registry.npmjs.org/@types/storybook__addon-notes/-/storybook__addon-notes-4.0.0.tgz#1d3354d995445c7b128c13c1cd76a6991fbe131c"
integrity sha512-jh4dqUo4iflX2lK2CmbCnwKFMFDp6d48d6fo9FrHzzqcWXoeaSmWIqdLDytBpvdr2VbG8/Zo3Z4inOzw99p2Xg==
dependencies:
"@types/marked" "*"
"@types/react" "*"
"@types/storybook__react" "*"
"@types/storybook__addon-options@^4.0.0":
version "4.0.0"
resolved "https://registry.npmjs.org/@types/storybook__addon-options/-/storybook__addon-options-4.0.0.tgz#80beff796c892f9bccbd221cbfc792dbe2d9764f"
integrity sha512-toMfmqTdbh65jafemsy2+dVWjt3wjgHxbJF6V0jhfsyeZckc/1VYtjMqQZdR4vlFT+nBcOKQYt7+kw2nqYF91Q==
dependencies:
"@types/storybook__react" "*"
"@types/storybook__addon-storyshots@^3.4.4":
version "3.4.4"
resolved "https://registry.npmjs.org/@types/storybook__addon-storyshots/-/storybook__addon-storyshots-3.4.4.tgz#bc34d425b8ca2f1e73e3c1ecb6afc178b9fa9ace"
integrity sha512-Zwu+fk/zqCNAnRnLlOvLRMPi2KrUuXMW/HWZ4RMOHfu2OGqp9bkNF59whI4XwLM/aZUN27nne8bGaHIDL0rRTg==
dependencies:
"@types/puppeteer" "*"
"@types/react" "*"
"@types/storybook__react" "*"
"@types/storybook__react@*", "@types/storybook__react@^4.0.0":
version "4.0.0"
resolved "https://registry.npmjs.org/@types/storybook__react/-/storybook__react-4.0.0.tgz#52cc452fbab599568d595075a90142ef4a1233f6"
integrity sha512-Iq3RX953fqZRwWN3jywm8pUx1/Atev+x/9tF7/2CNA+Ii55sGSJJRWMRthUKQXTa3zOexcvfksfVYdUaIZY91w==
@ -2809,7 +2940,7 @@ ajv-keywords@^3.1.0:
resolved "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.2.0.tgz#e86b819c602cf8821ad637413698f1dec021847a"
integrity sha1-6GuBnGAs+IIa1jdBNpjx3sAhhHo=
ajv@^6.1.0:
ajv@^6.1.0, ajv@^6.1.1:
version "6.6.2"
resolved "https://registry.npmjs.org/ajv/-/ajv-6.6.2.tgz#caceccf474bf3fc3ce3b147443711a24063cc30d"
integrity sha512-FBHEW6Jf5TB9MGBgUUA9XHkTbjXYfAUjY43ACMfmdMRHniyoMHjHjzD50OK8LGDWQwp4rWEsIq5kEqq7rvIM1g==
@ -3692,6 +3823,11 @@ babel-runtime@6.x.x, babel-runtime@^6.11.6, babel-runtime@^6.22.0, babel-runtime
core-js "^2.4.0"
regenerator-runtime "^0.11.0"
babel-standalone@^6.26.0:
version "6.26.0"
resolved "https://registry.npmjs.org/babel-standalone/-/babel-standalone-6.26.0.tgz#15fb3d35f2c456695815ebf1ed96fe7f015b6886"
integrity sha1-Ffs9NfLEVmlYFevx7Zb+fwFbaIY=
babel-template@^6.16.0, babel-template@^6.24.1, babel-template@^6.26.0:
version "6.26.0"
resolved "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz#de03e2d16396b069f46dd9fff8521fb1a0e35e02"
@ -6751,7 +6887,7 @@ fb-watchman@^2.0.0:
dependencies:
bser "^2.0.0"
fbjs@^0.8.0, fbjs@^0.8.9:
fbjs@^0.8.0, fbjs@^0.8.4, fbjs@^0.8.9:
version "0.8.17"
resolved "https://registry.npmjs.org/fbjs/-/fbjs-0.8.17.tgz#c4d598ead6949112653d6588b01a5cdcd9f90fdd"
integrity sha1-xNWY6taUkRJlPWWIsBpc3Nn5D90=
@ -7279,7 +7415,7 @@ glob-watcher@^5.0.0:
just-debounce "^1.0.0"
object.defaults "^1.1.0"
glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2, glob@~7.1.1:
glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@~7.1.1:
version "7.1.3"
resolved "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1"
integrity sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==
@ -7612,6 +7748,11 @@ har-validator@~5.1.0:
ajv "^6.5.5"
har-schema "^2.0.0"
harmony-reflect@^1.4.6:
version "1.6.1"
resolved "https://registry.npmjs.org/harmony-reflect/-/harmony-reflect-1.6.1.tgz#c108d4f2bb451efef7a37861fdbdae72c9bdefa9"
integrity sha512-WJTeyp0JzGtHcuMsi7rw2VwtkvLa+JyfEKJCFyfcS0+CDkjQ5lHPu7zEhFZP+PDSRrEgXa5Ah0l1MbgbE41XjA==
has-ansi@^2.0.0:
version "2.0.0"
resolved "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91"
@ -7736,7 +7877,7 @@ hastscript@^5.0.0:
property-information "^5.0.1"
space-separated-tokens "^1.0.0"
he@1.2.x, he@^1.2.0:
he@1.2.x, he@^1.1.1, he@^1.2.0:
version "1.2.0"
resolved "https://registry.npmjs.org/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f"
integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==
@ -7990,6 +8131,13 @@ icss-utils@^4.0.0:
dependencies:
postcss "^7.0.5"
identity-obj-proxy@^3.0.0:
version "3.0.0"
resolved "https://registry.npmjs.org/identity-obj-proxy/-/identity-obj-proxy-3.0.0.tgz#94d2bda96084453ef36fbc5aaec37e0f79f1fc14"
integrity sha1-lNK9qWCERT7zb7xarsN+D3nx/BQ=
dependencies:
harmony-reflect "^1.4.6"
ieee754@^1.1.4:
version "1.1.12"
resolved "https://registry.npmjs.org/ieee754/-/ieee754-1.1.12.tgz#50bf24e5b9c8bb98af4964c941cdb0918da7b60b"
@ -9020,7 +9168,7 @@ jest-serializer@^23.0.1:
resolved "https://registry.npmjs.org/jest-serializer/-/jest-serializer-23.0.1.tgz#a3776aeb311e90fe83fab9e533e85102bd164165"
integrity sha1-o3dq6zEekP6D+rnlM+hRAr0WQWU=
jest-snapshot@^23.6.0:
jest-snapshot@>=20.0.3, jest-snapshot@^23.6.0:
version "23.6.0"
resolved "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-23.6.0.tgz#f9c2625d1b18acda01ec2d2b826c0ce58a5aa17a"
integrity sha512-tM7/Bprftun6Cvj2Awh/ikS7zV3pVwjRYU2qNYS51VZHgaAMBs5l4o/69AiDHhQrj5+LA2Lq4VIvK7zYk/bswg==
@ -9036,6 +9184,13 @@ jest-snapshot@^23.6.0:
pretty-format "^23.6.0"
semver "^5.5.0"
jest-specific-snapshot@^1.0.0:
version "1.0.0"
resolved "https://registry.npmjs.org/jest-specific-snapshot/-/jest-specific-snapshot-1.0.0.tgz#157c79e2534a6fea820fd475f5d17740c8f90833"
integrity sha512-EjCK8Ob8eneeQCdBuO06J1v1C1jklKK7VvCOG/iwQx+8byZ7iCY8+d9M7xlUJiu76ubycXtSkIrPrL+nqjJsjA==
dependencies:
jest-snapshot ">=20.0.3"
jest-util@^23.4.0:
version "23.4.0"
resolved "https://registry.npmjs.org/jest-util/-/jest-util-23.4.0.tgz#4d063cb927baf0a23831ff61bec2cbbf49793561"
@ -9728,6 +9883,11 @@ markdown-table@^1.1.0:
resolved "https://registry.npmjs.org/markdown-table/-/markdown-table-1.1.2.tgz#c78db948fa879903a41bce522e3b96f801c63786"
integrity sha512-NcWuJFHDA8V3wkDgR/j4+gZx+YQwstPgfQDV8ndUeWWzta3dnDTBxpVzqS9lkmJAuV5YX35lmyojl6HO5JXAgw==
marked@^0.3.12:
version "0.3.19"
resolved "https://registry.npmjs.org/marked/-/marked-0.3.19.tgz#5d47f709c4c9fc3c216b6d46127280f40b39d790"
integrity sha512-ea2eGWOqNxPcXv8dyERdSr/6FmzvWwzjMxpfGB/sbMccXoct+xY+YukPD+QTUZwyvK7BZwcr4m21WBOW41pAkg==
marked@^0.4.0:
version "0.4.0"
resolved "https://registry.npmjs.org/marked/-/marked-0.4.0.tgz#9ad2c2a7a1791f10a852e0112f77b571dce10c66"
@ -9738,6 +9898,15 @@ marked@^0.5.2:
resolved "https://registry.npmjs.org/marked/-/marked-0.5.2.tgz#3efdb27b1fd0ecec4f5aba362bddcd18120e5ba9"
integrity sha512-fdZvBa7/vSQIZCi4uuwo2N3q+7jJURpMVCcbaX0S1Mg65WZ5ilXvC67MviJAsdjqqgD+CEq4RKo5AYGgINkVAA==
marksy@^6.1.0:
version "6.1.0"
resolved "https://registry.npmjs.org/marksy/-/marksy-6.1.0.tgz#36482148a1115cc78570855f7ebd744bb453d5cc"
integrity sha512-xVAuJQxwdAljvFVqlY7CIRewn5YHGvCqeJkY1bbcTBfZV4dNDSZpHWTREb1MNu/oXYzKgg5pmTfE1DIW6M1zrA==
dependencies:
babel-standalone "^6.26.0"
he "^1.1.1"
marked "^0.3.12"
matchdep@^2.0.0:
version "2.0.0"
resolved "https://registry.npmjs.org/matchdep/-/matchdep-2.0.0.tgz#c6f34834a0d8dbc3b37c27ee8bbcb27c7775582e"
@ -10270,6 +10439,11 @@ nested-error-stacks@^2.0.0:
resolved "https://registry.npmjs.org/nested-error-stacks/-/nested-error-stacks-2.1.0.tgz#0fbdcf3e13fe4994781280524f8b96b0cdff9c61"
integrity sha512-AO81vsIO1k1sM4Zrd6Hu7regmJN1NSiAja10gc4bX3F0wd+9rQmcuHQaHVQCYIEC8iFXnE+mavh23GOt7wBgug==
nested-object-assign@^1.0.1:
version "1.0.3"
resolved "https://registry.npmjs.org/nested-object-assign/-/nested-object-assign-1.0.3.tgz#5aca69390d9affe5a612152b5f0843ae399ac597"
integrity sha512-kgq1CuvLyUcbcIuTiCA93cQ2IJFSlRwXcN+hLcb2qLJwC2qrePHGZZa7IipyWqaWF6tQjdax2pQnVxdq19Zzwg==
next-tick@1:
version "1.0.0"
resolved "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz#ca86d1fe8828169b0120208e3dc8424b9db8342c"
@ -12073,6 +12247,15 @@ rc@^1.1.6, rc@^1.2.7:
minimist "^1.2.0"
strip-json-comments "~2.0.1"
react-addons-create-fragment@^15.5.3:
version "15.6.2"
resolved "https://registry.npmjs.org/react-addons-create-fragment/-/react-addons-create-fragment-15.6.2.tgz#a394de7c2c7becd6b5475ba1b97ac472ce7c74f8"
integrity sha1-o5TefCx77Na1R1uhuXrEcs58dPg=
dependencies:
fbjs "^0.8.4"
loose-envify "^1.3.1"
object-assign "^4.1.0"
react-dev-utils@^6.1.0:
version "6.1.1"
resolved "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-6.1.1.tgz#a07e3e8923c4609d9f27e5af5207e3ca20724895"
@ -12103,6 +12286,19 @@ react-dev-utils@^6.1.0:
strip-ansi "4.0.0"
text-table "0.2.0"
react-docgen-typescript-webpack-plugin@^1.1.0:
version "1.1.0"
resolved "https://registry.npmjs.org/react-docgen-typescript-webpack-plugin/-/react-docgen-typescript-webpack-plugin-1.1.0.tgz#4bfb8c3312fce487083924842cf03f66177ab9df"
integrity sha1-S/uMMxL85IcIOSSELPA/Zhd6ud8=
dependencies:
ajv "^6.1.1"
react-docgen-typescript "^1.2.3"
react-docgen-typescript@^1.2.3:
version "1.12.2"
resolved "https://registry.npmjs.org/react-docgen-typescript/-/react-docgen-typescript-1.12.2.tgz#d5fb578d12f6876efdde69176f4ea658e75a9a29"
integrity sha512-pcot0jGiMIyhmwNeSU83GvClNwk9NbcnYHcGf4pKMmw5J43d5OzYRcTzrZTGlIOWjYfYazYhvTxjujE625P3Mw==
react-docgen@^3.0.0-rc.1:
version "3.0.0-rc.2"
resolved "https://registry.npmjs.org/react-docgen/-/react-docgen-3.0.0-rc.2.tgz#5939c64699fd9959da6d97d890f7b648e542dbcc"
@ -12329,6 +12525,14 @@ read-pkg-up@^3.0.0:
find-up "^2.0.0"
read-pkg "^3.0.0"
read-pkg-up@^4.0.0:
version "4.0.0"
resolved "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-4.0.0.tgz#1b221c6088ba7799601c808f91161c66e58f8978"
integrity sha512-6etQSH7nJGsK0RbG/2TeDzZFa8shjQ1um+SwQQ5cwKy0dhSXdOncEhb1CPpvQG4h7FyOV6EB6YlV0yJvZQNAkA==
dependencies:
find-up "^3.0.0"
read-pkg "^3.0.0"
read-pkg@^1.0.0:
version "1.1.0"
resolved "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28"