mirror of
https://github.com/storybookjs/storybook.git
synced 2025-03-20 05:02:37 +08:00
Merge branch 'master' into patch-1
This commit is contained in:
commit
18d5528eef
@ -80,7 +80,7 @@ setDefaults({
|
||||
inline: true, // Displays info inline vs click button to view
|
||||
source: true, // Displays the source of story Component
|
||||
propTables: [/* Components used in story */], // displays Prop Tables with this components
|
||||
propTablesExclude: [], // Exclude Components from being shoun in Prop Tables section
|
||||
propTablesExclude: [], // Exclude Components from being shown in Prop Tables section
|
||||
styles: {}, // Overrides styles of addon
|
||||
marksyConf: {}, // Overrides components used to display markdown. Warning! This option's name will be likely deprecated in favor to "components" with the same API in 3.3 release. Follow this PR #1501 for details
|
||||
maxPropsIntoLine: 1, // Max props to display per line in source code
|
||||
|
@ -231,6 +231,18 @@ const value = date(label, defaultValue);
|
||||
|
||||
> Note: the default value must not change - e.g., do not do `date('Label', new Date())` or `date('Label')`
|
||||
|
||||
### button
|
||||
|
||||
Allows you to include a button and associated handler.
|
||||
|
||||
```js
|
||||
import { button } from '@storybook/addon-knobs';
|
||||
|
||||
const label = 'Do Something';
|
||||
const handler = () => doSomething('foobar');
|
||||
button(label, handler);
|
||||
```
|
||||
|
||||
### withKnobs vs withKnobsOptions
|
||||
|
||||
If you feel like this addon is not performing well enough there is an option to use `withKnobsOptions` instead of `withKnobs`.
|
||||
|
@ -28,8 +28,8 @@
|
||||
"util-deprecate": "^1.0.2"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/node": "^7.0.12",
|
||||
"@types/react": "^16.0.11",
|
||||
"@types/node": "^7.0.46",
|
||||
"@types/react": "^16.0.15",
|
||||
"git-url-parse": "^6.2.2",
|
||||
"raw-loader": "^0.5.1",
|
||||
"react": "^16.0.0",
|
||||
|
@ -46,6 +46,7 @@ export default class Panel extends React.Component {
|
||||
constructor(props) {
|
||||
super(props);
|
||||
this.handleChange = this.handleChange.bind(this);
|
||||
this.handleClick = this.handleClick.bind(this);
|
||||
this.setKnobs = this.setKnobs.bind(this);
|
||||
this.reset = this.reset.bind(this);
|
||||
this.setOptions = this.setOptions.bind(this);
|
||||
@ -133,6 +134,10 @@ export default class Panel extends React.Component {
|
||||
this.setState({ knobs: newKnobs }, this.emitChange(changedKnob));
|
||||
}
|
||||
|
||||
handleClick(knob) {
|
||||
this.props.channel.emit('addon:knobs:knobClick', knob);
|
||||
}
|
||||
|
||||
render() {
|
||||
const { knobs } = this.state;
|
||||
const knobsArray = Object.keys(knobs)
|
||||
@ -146,7 +151,11 @@ export default class Panel extends React.Component {
|
||||
return (
|
||||
<div style={styles.panelWrapper}>
|
||||
<div style={styles.panel}>
|
||||
<PropForm knobs={knobsArray} onFieldChange={this.handleChange} />
|
||||
<PropForm
|
||||
knobs={knobsArray}
|
||||
onFieldChange={this.handleChange}
|
||||
onFieldClick={this.handleClick}
|
||||
/>
|
||||
</div>
|
||||
<button style={styles.resetButton} onClick={this.reset}>
|
||||
RESET
|
||||
|
@ -46,16 +46,16 @@ export default class PropField extends React.Component {
|
||||
}
|
||||
|
||||
render() {
|
||||
const { onChange, knob } = this.props;
|
||||
const { onChange, onClick, knob } = this.props;
|
||||
|
||||
const InputType = TypeMap[knob.type] || InvalidType;
|
||||
|
||||
return (
|
||||
<div style={stylesheet.field}>
|
||||
<label htmlFor={knob.name} style={stylesheet.label}>
|
||||
{`${knob.name}`}
|
||||
{!knob.hideLabel && `${knob.name}`}
|
||||
</label>
|
||||
<InputType knob={knob} onChange={onChange} />
|
||||
<InputType knob={knob} onChange={onChange} onClick={onClick} />
|
||||
</div>
|
||||
);
|
||||
}
|
||||
@ -67,4 +67,5 @@ PropField.propTypes = {
|
||||
value: PropTypes.any,
|
||||
}).isRequired,
|
||||
onChange: PropTypes.func.isRequired,
|
||||
onClick: PropTypes.func.isRequired,
|
||||
};
|
||||
|
@ -46,6 +46,7 @@ export default class propForm extends React.Component {
|
||||
value={knob.value}
|
||||
knob={knob}
|
||||
onChange={changeHandler}
|
||||
onClick={this.props.onFieldClick}
|
||||
/>
|
||||
);
|
||||
})}
|
||||
@ -68,4 +69,5 @@ propForm.propTypes = {
|
||||
})
|
||||
),
|
||||
onFieldChange: PropTypes.func.isRequired,
|
||||
onFieldClick: PropTypes.func.isRequired,
|
||||
};
|
||||
|
41
addons/knobs/src/components/types/Button.js
Normal file
41
addons/knobs/src/components/types/Button.js
Normal file
@ -0,0 +1,41 @@
|
||||
import PropTypes from 'prop-types';
|
||||
import React from 'react';
|
||||
|
||||
const styles = {
|
||||
height: '26px',
|
||||
};
|
||||
|
||||
class ButtonType extends React.Component {
|
||||
render() {
|
||||
const { knob, onClick } = this.props;
|
||||
return (
|
||||
<button
|
||||
type="button"
|
||||
id={knob.name}
|
||||
ref={c => {
|
||||
this.input = c;
|
||||
}}
|
||||
style={styles}
|
||||
onClick={() => onClick(knob)}
|
||||
>
|
||||
{knob.name}
|
||||
</button>
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
ButtonType.defaultProps = {
|
||||
knob: {},
|
||||
};
|
||||
|
||||
ButtonType.propTypes = {
|
||||
knob: PropTypes.shape({
|
||||
name: PropTypes.string,
|
||||
}),
|
||||
onClick: PropTypes.func.isRequired,
|
||||
};
|
||||
|
||||
ButtonType.serialize = value => value;
|
||||
ButtonType.deserialize = value => value;
|
||||
|
||||
export default ButtonType;
|
@ -6,6 +6,7 @@ import ObjectType from './Object';
|
||||
import SelectType from './Select';
|
||||
import ArrayType from './Array';
|
||||
import DateType from './Date';
|
||||
import ButtonType from './Button';
|
||||
|
||||
export default {
|
||||
text: TextType,
|
||||
@ -16,4 +17,5 @@ export default {
|
||||
select: SelectType,
|
||||
array: ArrayType,
|
||||
date: DateType,
|
||||
button: ButtonType,
|
||||
};
|
||||
|
@ -58,6 +58,10 @@ export function date(name, value = new Date()) {
|
||||
return manager.knob(name, { type: 'date', value: proxyValue });
|
||||
}
|
||||
|
||||
export function button(name, callback) {
|
||||
return manager.knob(name, { type: 'button', callback, hideLabel: true });
|
||||
}
|
||||
|
||||
// "Higher order component" / wrapper style API
|
||||
// In 3.3, this will become `withKnobs`, once our decorator API supports it.
|
||||
// See https://github.com/storybooks/storybook/pull/1527
|
||||
|
@ -7,6 +7,7 @@ export default class WrapStory extends React.Component {
|
||||
constructor(props) {
|
||||
super(props);
|
||||
this.knobChanged = this.knobChanged.bind(this);
|
||||
this.knobClicked = this.knobClicked.bind(this);
|
||||
this.resetKnobs = this.resetKnobs.bind(this);
|
||||
this.setPaneKnobs = this.setPaneKnobs.bind(this);
|
||||
this._knobsAreReset = false;
|
||||
@ -16,6 +17,8 @@ export default class WrapStory extends React.Component {
|
||||
componentDidMount() {
|
||||
// Watch for changes in knob editor.
|
||||
this.props.channel.on('addon:knobs:knobChange', this.knobChanged);
|
||||
// Watch for clicks in knob editor.
|
||||
this.props.channel.on('addon:knobs:knobClick', this.knobClicked);
|
||||
// Watch for the reset event and reset knobs.
|
||||
this.props.channel.on('addon:knobs:reset', this.resetKnobs);
|
||||
// Watch for any change in the knobStore and set the panel again for those
|
||||
@ -31,6 +34,7 @@ export default class WrapStory extends React.Component {
|
||||
|
||||
componentWillUnmount() {
|
||||
this.props.channel.removeListener('addon:knobs:knobChange', this.knobChanged);
|
||||
this.props.channel.removeListener('addon:knobs:knobClick', this.knobClicked);
|
||||
this.props.channel.removeListener('addon:knobs:reset', this.resetKnobs);
|
||||
this.props.knobStore.unsubscribe(this.setPaneKnobs);
|
||||
}
|
||||
@ -45,11 +49,17 @@ export default class WrapStory extends React.Component {
|
||||
const { knobStore, storyFn, context } = this.props;
|
||||
// Update the related knob and it's value.
|
||||
const knobOptions = knobStore.get(name);
|
||||
|
||||
knobOptions.value = value;
|
||||
knobStore.markAllUnused();
|
||||
this.setState({ storyContent: storyFn(context) });
|
||||
}
|
||||
|
||||
knobClicked(knob) {
|
||||
const knobOptions = this.props.knobStore.get(knob.name);
|
||||
knobOptions.callback();
|
||||
}
|
||||
|
||||
resetKnobs() {
|
||||
const { knobStore, storyFn, context } = this.props;
|
||||
knobStore.reset();
|
||||
|
@ -8,10 +8,16 @@ export const vueHandler = (channel, knobStore) => getStory => context => ({
|
||||
const { name, value } = change;
|
||||
// Update the related knob and it's value.
|
||||
const knobOptions = knobStore.get(name);
|
||||
|
||||
knobOptions.value = value;
|
||||
this.$forceUpdate();
|
||||
},
|
||||
|
||||
onKnobClick(knob) {
|
||||
const knobOptions = knobStore.get(knob.name);
|
||||
knobOptions.callback();
|
||||
},
|
||||
|
||||
onKnobReset() {
|
||||
knobStore.reset();
|
||||
this.setPaneKnobs(false);
|
||||
@ -26,12 +32,14 @@ export const vueHandler = (channel, knobStore) => getStory => context => ({
|
||||
created() {
|
||||
channel.on('addon:knobs:reset', this.onKnobReset);
|
||||
channel.on('addon:knobs:knobChange', this.onKnobChange);
|
||||
channel.on('addon:knobs:knobClick', this.onKnobClick);
|
||||
knobStore.subscribe(this.setPaneKnobs);
|
||||
},
|
||||
|
||||
beforeDestroy() {
|
||||
channel.removeListener('addon:knobs:reset', this.onKnobReset);
|
||||
channel.removeListener('addon:knobs:knobChange', this.onKnobChange);
|
||||
channel.removeListener('addon:knobs:knobClick', this.onKnobClick);
|
||||
knobStore.unsubscribe(this.setPaneKnobs);
|
||||
},
|
||||
});
|
||||
|
@ -32,8 +32,9 @@ describe('Vue handler', () => {
|
||||
const testStore = new KnobStore();
|
||||
new Vue(vueHandler(testChannel, testStore)(testStory)(testContext)).$mount();
|
||||
|
||||
expect(testChannel.on).toHaveBeenCalledTimes(2);
|
||||
expect(testChannel.on).toHaveBeenCalledTimes(3);
|
||||
expect(testChannel.on).toHaveBeenCalledWith('addon:knobs:reset', expect.any(Function));
|
||||
expect(testChannel.on).toHaveBeenCalledWith('addon:knobs:knobChange', expect.any(Function));
|
||||
expect(testChannel.on).toHaveBeenCalledWith('addon:knobs:knobClick', expect.any(Function));
|
||||
});
|
||||
});
|
||||
|
@ -40,7 +40,7 @@
|
||||
"babel-plugin-transform-regenerator": "^6.26.0",
|
||||
"babel-plugin-transform-runtime": "^6.23.0",
|
||||
"babel-polyfill": "^6.26.0",
|
||||
"babel-preset-env": "^1.6.0",
|
||||
"babel-preset-env": "^1.6.1",
|
||||
"babel-preset-minify": "^0.2.0",
|
||||
"babel-preset-react": "^6.24.1",
|
||||
"babel-preset-stage-0": "^6.24.1",
|
||||
@ -64,7 +64,7 @@
|
||||
"url-parse": "^1.1.9",
|
||||
"util-deprecate": "^1.0.2",
|
||||
"uuid": "^3.1.0",
|
||||
"webpack": "^3.7.1",
|
||||
"webpack": "^3.8.1",
|
||||
"webpack-dev-middleware": "^1.12.0",
|
||||
"webpack-hot-middleware": "^2.20.0",
|
||||
"ws": "^3.0.0"
|
||||
|
@ -34,14 +34,14 @@
|
||||
"babel-plugin-react-docgen": "^1.8.0",
|
||||
"babel-plugin-transform-regenerator": "^6.26.0",
|
||||
"babel-plugin-transform-runtime": "^6.23.0",
|
||||
"babel-preset-env": "^1.6.0",
|
||||
"babel-preset-env": "^1.6.1",
|
||||
"babel-preset-minify": "^0.2.0",
|
||||
"babel-preset-react": "^6.24.1",
|
||||
"babel-preset-react-app": "^3.0.3",
|
||||
"babel-preset-stage-0": "^6.24.1",
|
||||
"babel-runtime": "^6.26.0",
|
||||
"case-sensitive-paths-webpack-plugin": "^2.1.1",
|
||||
"chalk": "^2.1.0",
|
||||
"chalk": "^2.2.0",
|
||||
"commander": "^2.11.0",
|
||||
"common-tags": "^1.4.0",
|
||||
"configstore": "^3.1.1",
|
||||
@ -71,7 +71,7 @@
|
||||
"url-loader": "^0.6.2",
|
||||
"util-deprecate": "^1.0.2",
|
||||
"uuid": "^3.1.0",
|
||||
"webpack": "^3.7.1",
|
||||
"webpack": "^3.8.1",
|
||||
"webpack-dev-middleware": "^1.12.0",
|
||||
"webpack-hot-middleware": "^2.20.0"
|
||||
},
|
||||
|
@ -41,7 +41,7 @@
|
||||
"babel-preset-stage-0": "^6.24.1",
|
||||
"babel-runtime": "^6.26.0",
|
||||
"case-sensitive-paths-webpack-plugin": "^2.1.1",
|
||||
"chalk": "^2.1.0",
|
||||
"chalk": "^2.2.0",
|
||||
"commander": "^2.11.0",
|
||||
"common-tags": "^1.4.0",
|
||||
"configstore": "^3.1.1",
|
||||
|
@ -29,9 +29,10 @@ collectors:
|
||||
bootstrap_command: yarn
|
||||
actors:
|
||||
# pull requests for updates to our major version
|
||||
- type: js-lerna
|
||||
- type: js-lerna:0.9.0-beta
|
||||
versions: "L.Y.Y"
|
||||
settings:
|
||||
batch_mode: true
|
||||
bootstrap_command: yarn
|
||||
github_labels:
|
||||
- dependencies:update
|
||||
|
@ -25,7 +25,7 @@
|
||||
"babel-core": "^6.26.0",
|
||||
"babel-plugin-transform-runtime": "^6.23.0",
|
||||
"babel-polyfill": "^6.26.0",
|
||||
"babel-preset-env": "^1.6.0",
|
||||
"babel-preset-env": "^1.6.1",
|
||||
"babel-preset-react": "^6.24.1",
|
||||
"babel-preset-stage-0": "^6.24.1",
|
||||
"bootstrap": "^3.3.7",
|
||||
|
@ -1364,6 +1364,41 @@ babel-preset-env@^1.6.0:
|
||||
invariant "^2.2.2"
|
||||
semver "^5.3.0"
|
||||
|
||||
babel-preset-env@^1.6.1:
|
||||
version "1.6.1"
|
||||
resolved "https://registry.yarnpkg.com/babel-preset-env/-/babel-preset-env-1.6.1.tgz#a18b564cc9b9afdf4aae57ae3c1b0d99188e6f48"
|
||||
dependencies:
|
||||
babel-plugin-check-es2015-constants "^6.22.0"
|
||||
babel-plugin-syntax-trailing-function-commas "^6.22.0"
|
||||
babel-plugin-transform-async-to-generator "^6.22.0"
|
||||
babel-plugin-transform-es2015-arrow-functions "^6.22.0"
|
||||
babel-plugin-transform-es2015-block-scoped-functions "^6.22.0"
|
||||
babel-plugin-transform-es2015-block-scoping "^6.23.0"
|
||||
babel-plugin-transform-es2015-classes "^6.23.0"
|
||||
babel-plugin-transform-es2015-computed-properties "^6.22.0"
|
||||
babel-plugin-transform-es2015-destructuring "^6.23.0"
|
||||
babel-plugin-transform-es2015-duplicate-keys "^6.22.0"
|
||||
babel-plugin-transform-es2015-for-of "^6.23.0"
|
||||
babel-plugin-transform-es2015-function-name "^6.22.0"
|
||||
babel-plugin-transform-es2015-literals "^6.22.0"
|
||||
babel-plugin-transform-es2015-modules-amd "^6.22.0"
|
||||
babel-plugin-transform-es2015-modules-commonjs "^6.23.0"
|
||||
babel-plugin-transform-es2015-modules-systemjs "^6.23.0"
|
||||
babel-plugin-transform-es2015-modules-umd "^6.23.0"
|
||||
babel-plugin-transform-es2015-object-super "^6.22.0"
|
||||
babel-plugin-transform-es2015-parameters "^6.23.0"
|
||||
babel-plugin-transform-es2015-shorthand-properties "^6.22.0"
|
||||
babel-plugin-transform-es2015-spread "^6.22.0"
|
||||
babel-plugin-transform-es2015-sticky-regex "^6.22.0"
|
||||
babel-plugin-transform-es2015-template-literals "^6.22.0"
|
||||
babel-plugin-transform-es2015-typeof-symbol "^6.23.0"
|
||||
babel-plugin-transform-es2015-unicode-regex "^6.22.0"
|
||||
babel-plugin-transform-exponentiation-operator "^6.22.0"
|
||||
babel-plugin-transform-regenerator "^6.22.0"
|
||||
browserslist "^2.1.2"
|
||||
invariant "^2.2.2"
|
||||
semver "^5.3.0"
|
||||
|
||||
babel-preset-es2015@^6.24.1:
|
||||
version "6.24.1"
|
||||
resolved "https://registry.yarnpkg.com/babel-preset-es2015/-/babel-preset-es2015-6.24.1.tgz#d44050d6bc2c9feea702aaf38d727a0210538939"
|
||||
|
@ -1318,6 +1318,13 @@ exports[`Storyshots Button with knobs 1`] = `
|
||||
<p>
|
||||
Nice to meet you!
|
||||
</p>
|
||||
<hr />
|
||||
<p>
|
||||
PS. My shirt pocket contains:
|
||||
</p>
|
||||
<li>
|
||||
No items!
|
||||
</li>
|
||||
</div>
|
||||
`;
|
||||
|
||||
|
@ -1,4 +1,5 @@
|
||||
import React from 'react';
|
||||
import PropTypes from 'prop-types';
|
||||
import EventEmiter from 'eventemitter3';
|
||||
|
||||
import { storiesOf } from '@storybook/react';
|
||||
@ -16,6 +17,7 @@ import {
|
||||
select,
|
||||
array,
|
||||
date,
|
||||
button,
|
||||
object,
|
||||
} from '@storybook/addon-knobs';
|
||||
import centered from '@storybook/addon-centered';
|
||||
@ -59,6 +61,23 @@ const InfoButton = () => (
|
||||
</span>
|
||||
);
|
||||
|
||||
class AsyncItemLoader extends React.Component {
|
||||
constructor() {
|
||||
super();
|
||||
this.state = { items: [] };
|
||||
}
|
||||
|
||||
loadItems() {
|
||||
setTimeout(() => this.setState({ items: ['pencil', 'pen', 'eraser'] }), 1500);
|
||||
}
|
||||
|
||||
render() {
|
||||
button('Load the items', () => this.loadItems());
|
||||
return this.props.children(this.state.items);
|
||||
}
|
||||
}
|
||||
AsyncItemLoader.propTypes = { children: PropTypes.func.isRequired };
|
||||
|
||||
storiesOf('Button', module)
|
||||
.addDecorator(withKnobs)
|
||||
.add('with text', () => (
|
||||
@ -118,6 +137,14 @@ storiesOf('Button', module)
|
||||
<p>In my backpack, I have:</p>
|
||||
<ul>{items.map(item => <li key={item}>{item}</li>)}</ul>
|
||||
<p>{salutation}</p>
|
||||
<hr />
|
||||
<p>PS. My shirt pocket contains: </p>
|
||||
<AsyncItemLoader>
|
||||
{loadedItems => {
|
||||
if (!loadedItems.length) return <li>No items!</li>;
|
||||
return <ul>{loadedItems.map(i => <li key={i}>{i}</li>)}</ul>;
|
||||
}}
|
||||
</AsyncItemLoader>
|
||||
</div>
|
||||
);
|
||||
})
|
||||
|
@ -14,6 +14,7 @@ import {
|
||||
select,
|
||||
color,
|
||||
date,
|
||||
button,
|
||||
} from '@storybook/addon-knobs';
|
||||
import Centered from '@storybook/addon-centered';
|
||||
|
||||
@ -231,6 +232,8 @@ storiesOf('Addon Knobs', module)
|
||||
: `I'm out of ${fruit}${nice ? ', Sorry!' : '.'}`;
|
||||
const salutation = nice ? 'Nice to meet you!' : 'Leave me alone!';
|
||||
|
||||
button('Arbitrary action', action('You clicked it!'));
|
||||
|
||||
return {
|
||||
template: `
|
||||
<div style="border:2px dotted ${colour}; padding: 8px 22px; border-radius: 8px">
|
||||
|
@ -22,7 +22,7 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"@storybook/codemod": "^3.2.12",
|
||||
"chalk": "^2.1.0",
|
||||
"chalk": "^2.2.0",
|
||||
"child-process-promise": "^2.2.1",
|
||||
"commander": "^2.11.0",
|
||||
"cross-spawn": "^5.0.1",
|
||||
|
@ -16,7 +16,7 @@
|
||||
"dependencies": {
|
||||
"@hypnosphi/fuse.js": "^3.0.9",
|
||||
"@storybook/components": "^3.2.12",
|
||||
"@storybook/react-fuzzy": "^0.4.0",
|
||||
"@storybook/react-fuzzy": "^0.4.1",
|
||||
"babel-runtime": "^6.26.0",
|
||||
"deep-equal": "^1.0.1",
|
||||
"events": "^1.1.1",
|
||||
|
10
package.json
10
package.json
@ -44,19 +44,19 @@
|
||||
"babel-plugin-transform-md-import-to-string": "^1.0.6",
|
||||
"babel-plugin-transform-runtime": "^6.23.0",
|
||||
"babel-polyfill": "^6.26.0",
|
||||
"babel-preset-env": "^1.6.0",
|
||||
"babel-preset-env": "^1.6.1",
|
||||
"babel-preset-react": "^6.24.1",
|
||||
"babel-preset-stage-0": "^6.24.1",
|
||||
"chalk": "^2.1.0",
|
||||
"chalk": "^2.2.0",
|
||||
"codecov": "^2.3.1",
|
||||
"commander": "^2.11.0",
|
||||
"danger": "^1.2.0",
|
||||
"enzyme": "^3.1.0",
|
||||
"enzyme-adapter-react-16": "^1.0.1",
|
||||
"enzyme-adapter-react-16": "^1.0.2",
|
||||
"eslint": "^4.9.0",
|
||||
"eslint-config-airbnb": "^15.1.0",
|
||||
"eslint-config-prettier": "^2.4.0",
|
||||
"eslint-plugin-import": "^2.7.0",
|
||||
"eslint-plugin-import": "^2.8.0",
|
||||
"eslint-plugin-jest": "^21.0.0",
|
||||
"eslint-plugin-json": "^1.2.0",
|
||||
"eslint-plugin-jsx-a11y": "^6.0.2",
|
||||
@ -71,7 +71,7 @@
|
||||
"jest": "^21.2.0",
|
||||
"jest-enzyme": "^4.0.1",
|
||||
"lerna": "^2.4.0",
|
||||
"lint-staged": "^4.1.0",
|
||||
"lint-staged": "^4.3.0",
|
||||
"lodash": "^4.17.4",
|
||||
"nodemon": "^1.12.1",
|
||||
"npmlog": "^4.1.2",
|
||||
|
100
yarn.lock
100
yarn.lock
@ -21,9 +21,9 @@
|
||||
git-url-parse "^6.0.2"
|
||||
shelljs "^0.7.0"
|
||||
|
||||
"@storybook/react-fuzzy@^0.4.0":
|
||||
version "0.4.0"
|
||||
resolved "https://registry.yarnpkg.com/@storybook/react-fuzzy/-/react-fuzzy-0.4.0.tgz#2961e8a1f6c1afcce97e9e9a14d1dfe9d9061087"
|
||||
"@storybook/react-fuzzy@^0.4.1":
|
||||
version "0.4.1"
|
||||
resolved "https://registry.yarnpkg.com/@storybook/react-fuzzy/-/react-fuzzy-0.4.1.tgz#612bdf7768585ad6e086b4738efbf204e94290a0"
|
||||
dependencies:
|
||||
babel-runtime "^6.23.0"
|
||||
classnames "^2.2.5"
|
||||
@ -44,17 +44,17 @@
|
||||
version "6.0.88"
|
||||
resolved "https://registry.yarnpkg.com/@types/node/-/node-6.0.88.tgz#f618f11a944f6a18d92b5c472028728a3e3d4b66"
|
||||
|
||||
"@types/node@^7.0.12":
|
||||
version "7.0.43"
|
||||
resolved "https://registry.yarnpkg.com/@types/node/-/node-7.0.43.tgz#a187e08495a075f200ca946079c914e1a5fe962c"
|
||||
"@types/node@^7.0.46":
|
||||
version "7.0.46"
|
||||
resolved "https://registry.yarnpkg.com/@types/node/-/node-7.0.46.tgz#c3dedd25558c676b3d6303e51799abb9c3f8f314"
|
||||
|
||||
"@types/react@^15.0.24":
|
||||
version "15.6.4"
|
||||
resolved "https://registry.yarnpkg.com/@types/react/-/react-15.6.4.tgz#3bb57bd43183a05919ceb025a264287348f47e9d"
|
||||
|
||||
"@types/react@^16.0.11":
|
||||
version "16.0.11"
|
||||
resolved "https://registry.yarnpkg.com/@types/react/-/react-16.0.11.tgz#ab505dc60bd1dcd6113577d71d1c96e58b6bd9f0"
|
||||
"@types/react@^16.0.15":
|
||||
version "16.0.15"
|
||||
resolved "https://registry.yarnpkg.com/@types/react/-/react-16.0.15.tgz#1b1eba408fc75735b3e53a83333c346eeeb0022b"
|
||||
|
||||
JSONStream@^1.0.4:
|
||||
version "1.3.1"
|
||||
@ -1651,6 +1651,41 @@ babel-preset-env@^1.6.0:
|
||||
invariant "^2.2.2"
|
||||
semver "^5.3.0"
|
||||
|
||||
babel-preset-env@^1.6.1:
|
||||
version "1.6.1"
|
||||
resolved "https://registry.yarnpkg.com/babel-preset-env/-/babel-preset-env-1.6.1.tgz#a18b564cc9b9afdf4aae57ae3c1b0d99188e6f48"
|
||||
dependencies:
|
||||
babel-plugin-check-es2015-constants "^6.22.0"
|
||||
babel-plugin-syntax-trailing-function-commas "^6.22.0"
|
||||
babel-plugin-transform-async-to-generator "^6.22.0"
|
||||
babel-plugin-transform-es2015-arrow-functions "^6.22.0"
|
||||
babel-plugin-transform-es2015-block-scoped-functions "^6.22.0"
|
||||
babel-plugin-transform-es2015-block-scoping "^6.23.0"
|
||||
babel-plugin-transform-es2015-classes "^6.23.0"
|
||||
babel-plugin-transform-es2015-computed-properties "^6.22.0"
|
||||
babel-plugin-transform-es2015-destructuring "^6.23.0"
|
||||
babel-plugin-transform-es2015-duplicate-keys "^6.22.0"
|
||||
babel-plugin-transform-es2015-for-of "^6.23.0"
|
||||
babel-plugin-transform-es2015-function-name "^6.22.0"
|
||||
babel-plugin-transform-es2015-literals "^6.22.0"
|
||||
babel-plugin-transform-es2015-modules-amd "^6.22.0"
|
||||
babel-plugin-transform-es2015-modules-commonjs "^6.23.0"
|
||||
babel-plugin-transform-es2015-modules-systemjs "^6.23.0"
|
||||
babel-plugin-transform-es2015-modules-umd "^6.23.0"
|
||||
babel-plugin-transform-es2015-object-super "^6.22.0"
|
||||
babel-plugin-transform-es2015-parameters "^6.23.0"
|
||||
babel-plugin-transform-es2015-shorthand-properties "^6.22.0"
|
||||
babel-plugin-transform-es2015-spread "^6.22.0"
|
||||
babel-plugin-transform-es2015-sticky-regex "^6.22.0"
|
||||
babel-plugin-transform-es2015-template-literals "^6.22.0"
|
||||
babel-plugin-transform-es2015-typeof-symbol "^6.23.0"
|
||||
babel-plugin-transform-es2015-unicode-regex "^6.22.0"
|
||||
babel-plugin-transform-exponentiation-operator "^6.22.0"
|
||||
babel-plugin-transform-regenerator "^6.22.0"
|
||||
browserslist "^2.1.2"
|
||||
invariant "^2.2.2"
|
||||
semver "^5.3.0"
|
||||
|
||||
babel-preset-es2015-node@^6.1.1:
|
||||
version "6.1.1"
|
||||
resolved "https://registry.yarnpkg.com/babel-preset-es2015-node/-/babel-preset-es2015-node-6.1.1.tgz#60b23157024b0cfebf3a63554cb05ee035b4e55f"
|
||||
@ -2471,6 +2506,14 @@ chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0:
|
||||
escape-string-regexp "^1.0.5"
|
||||
supports-color "^4.0.0"
|
||||
|
||||
chalk@^2.2.0:
|
||||
version "2.2.0"
|
||||
resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.2.0.tgz#477b3bf2f9b8fd5ca9e429747e37f724ee7af240"
|
||||
dependencies:
|
||||
ansi-styles "^3.1.0"
|
||||
escape-string-regexp "^1.0.5"
|
||||
supports-color "^4.0.0"
|
||||
|
||||
chalk@~0.4.0:
|
||||
version "0.4.0"
|
||||
resolved "https://registry.yarnpkg.com/chalk/-/chalk-0.4.0.tgz#5199a3ddcd0c1efe23bc08c1b027b06176e0c64f"
|
||||
@ -3896,15 +3939,16 @@ entities@^1.1.1, entities@~1.1.1:
|
||||
version "1.1.1"
|
||||
resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.1.tgz#6e5c2d0a5621b5dadaecef80b90edfb5cd7772f0"
|
||||
|
||||
enzyme-adapter-react-16@^1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/enzyme-adapter-react-16/-/enzyme-adapter-react-16-1.0.1.tgz#066cb1735e65d8d95841a023f94dab3ce6109e17"
|
||||
enzyme-adapter-react-16@^1.0.2:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/enzyme-adapter-react-16/-/enzyme-adapter-react-16-1.0.2.tgz#8c6f431f17c69e1e9eeb25ca4bd92f31971eb2dd"
|
||||
dependencies:
|
||||
enzyme-adapter-utils "^1.0.0"
|
||||
lodash "^4.17.4"
|
||||
object.assign "^4.0.4"
|
||||
object.values "^1.0.4"
|
||||
prop-types "^15.5.10"
|
||||
react-test-renderer "^16.0.0-0"
|
||||
|
||||
enzyme-adapter-utils@^1.0.0:
|
||||
version "1.0.0"
|
||||
@ -4130,7 +4174,7 @@ eslint-plugin-flowtype@2.35.0:
|
||||
dependencies:
|
||||
lodash "^4.15.0"
|
||||
|
||||
eslint-plugin-import@2.7.0, eslint-plugin-import@^2.7.0:
|
||||
eslint-plugin-import@2.7.0:
|
||||
version "2.7.0"
|
||||
resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.7.0.tgz#21de33380b9efb55f5ef6d2e210ec0e07e7fa69f"
|
||||
dependencies:
|
||||
@ -4145,6 +4189,21 @@ eslint-plugin-import@2.7.0, eslint-plugin-import@^2.7.0:
|
||||
minimatch "^3.0.3"
|
||||
read-pkg-up "^2.0.0"
|
||||
|
||||
eslint-plugin-import@^2.8.0:
|
||||
version "2.8.0"
|
||||
resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.8.0.tgz#fa1b6ef31fcb3c501c09859c1b86f1fc5b986894"
|
||||
dependencies:
|
||||
builtin-modules "^1.1.1"
|
||||
contains-path "^0.1.0"
|
||||
debug "^2.6.8"
|
||||
doctrine "1.5.0"
|
||||
eslint-import-resolver-node "^0.3.1"
|
||||
eslint-module-utils "^2.1.1"
|
||||
has "^1.0.1"
|
||||
lodash.cond "^4.3.0"
|
||||
minimatch "^3.0.3"
|
||||
read-pkg-up "^2.0.0"
|
||||
|
||||
eslint-plugin-jest@^21.0.0:
|
||||
version "21.2.0"
|
||||
resolved "https://registry.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-21.2.0.tgz#292044df9cf0866ad9c530e78e6528fae287b926"
|
||||
@ -7197,12 +7256,13 @@ levn@^0.3.0, levn@~0.3.0:
|
||||
prelude-ls "~1.1.2"
|
||||
type-check "~0.3.2"
|
||||
|
||||
lint-staged@^4.1.0:
|
||||
version "4.2.3"
|
||||
resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-4.2.3.tgz#5a1f12256af06110b96225f109dbf215009a37a9"
|
||||
lint-staged@^4.3.0:
|
||||
version "4.3.0"
|
||||
resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-4.3.0.tgz#ed0779ad9a42c0dc62bb3244e522870b41125879"
|
||||
dependencies:
|
||||
app-root-path "^2.0.0"
|
||||
chalk "^2.1.0"
|
||||
commander "^2.11.0"
|
||||
cosmiconfig "^1.1.0"
|
||||
execa "^0.8.0"
|
||||
is-glob "^4.0.0"
|
||||
@ -9686,7 +9746,7 @@ react-style-proptype@^3.0.0:
|
||||
dependencies:
|
||||
prop-types "^15.5.4"
|
||||
|
||||
react-test-renderer@^16.0.0:
|
||||
react-test-renderer@^16.0.0, react-test-renderer@^16.0.0-0:
|
||||
version "16.0.0"
|
||||
resolved "https://registry.yarnpkg.com/react-test-renderer/-/react-test-renderer-16.0.0.tgz#9fe7b8308f2f71f29fc356d4102086f131c9cb15"
|
||||
dependencies:
|
||||
@ -12376,9 +12436,9 @@ webpack@^3.6.0:
|
||||
webpack-sources "^1.0.1"
|
||||
yargs "^8.0.2"
|
||||
|
||||
webpack@^3.7.1:
|
||||
version "3.7.1"
|
||||
resolved "https://registry.yarnpkg.com/webpack/-/webpack-3.7.1.tgz#6046b5c415ff7df7a0dc54c5b6b86098e8b952da"
|
||||
webpack@^3.8.1:
|
||||
version "3.8.1"
|
||||
resolved "https://registry.yarnpkg.com/webpack/-/webpack-3.8.1.tgz#b16968a81100abe61608b0153c9159ef8bb2bd83"
|
||||
dependencies:
|
||||
acorn "^5.0.0"
|
||||
acorn-dynamic-import "^2.0.0"
|
||||
|
Loading…
x
Reference in New Issue
Block a user