From 92e9b29ccfa8ab9b385c9ba50b8b30ae0be34bee Mon Sep 17 00:00:00 2001 From: lukewalczak Date: Mon, 3 Dec 2018 14:08:55 +0100 Subject: [PATCH 1/9] Add slider component --- .storybook/webpack.config.js | 12 + package.json | 3 +- src/Slider/CompactSlider.js | 74 ++++++ src/Slider/Slider.js | 132 ++++++++++ src/Slider/Slider.stories.js | 26 ++ src/Slider/SliderLabels.js | 207 +++++++++++++++ src/Slider/index.js | 5 + storybook.native/story-loader.js | 45 ++++ yarn.lock | 425 +++++++++++++++++++------------ 9 files changed, 764 insertions(+), 165 deletions(-) create mode 100644 src/Slider/CompactSlider.js create mode 100644 src/Slider/Slider.js create mode 100644 src/Slider/Slider.stories.js create mode 100644 src/Slider/SliderLabels.js create mode 100644 src/Slider/index.js create mode 100644 storybook.native/story-loader.js diff --git a/.storybook/webpack.config.js b/.storybook/webpack.config.js index e496c13..c0b17b4 100644 --- a/.storybook/webpack.config.js +++ b/.storybook/webpack.config.js @@ -1,3 +1,5 @@ +const path = require('path'); + module.exports = { module: { rules: [ @@ -6,6 +8,16 @@ module.exports = { use: 'react-native-web-image-loader?name=[name].[ext]&scalings[@2x]=2&scalings[-3x]=3', }, + { + test: /\.js$/, + include: [ + path.join( + __dirname, + '../node_modules/@ptomasroos/react-native-multi-slider' + ), + ], + use: 'babel-loader', + }, ], }, resolve: { diff --git a/package.json b/package.json index cbd2714..1c994d4 100644 --- a/package.json +++ b/package.json @@ -32,7 +32,8 @@ "author": "kiwi.com", "license": "MIT", "dependencies": { - "@kiwicom/orbit-design-tokens": "^0.2.5" + "@kiwicom/orbit-design-tokens": "^0.2.5", + "@ptomasroos/react-native-multi-slider": "^1.0.0" }, "peerDependencies": { "react": "16.6.1", diff --git a/src/Slider/CompactSlider.js b/src/Slider/CompactSlider.js new file mode 100644 index 0000000..9fb1c8d --- /dev/null +++ b/src/Slider/CompactSlider.js @@ -0,0 +1,74 @@ +// @flow + +import * as React from 'react'; +import { View } from 'react-native'; +import Slider from './Slider'; +import SliderLabels from './SliderLabels'; +import Text from '../Text'; +import StyleSheet from '../PlatformStyleSheet'; + +type Props = {| + min: number, + max: number, + start: number, + end: number, + startLabel: React.Node, + endLabel: React.Node, +|}; + +type State = {| + start: number, + end: number, +|}; + +export default class CompactSlider extends React.Component { + constructor(props: Props) { + super(props); + + const { start, end } = this.props; + + this.state = { + start, + end, + }; + } + + handlePriceChanged = ([start, end]: number[]) => + this.setState({ + start, + end, + }); + + render() { + const { start, end } = this.state; + const { min, max, startLabel, endLabel } = this.props; + + return ( + + + + + + + ); + } +} + +const styles = StyleSheet.create({ + sliderContainer: { + paddingHorizontal: 10, + }, +}); diff --git a/src/Slider/Slider.js b/src/Slider/Slider.js new file mode 100644 index 0000000..862fa65 --- /dev/null +++ b/src/Slider/Slider.js @@ -0,0 +1,132 @@ +// @flow + +import * as React from 'react'; +import { View } from 'react-native'; +// import { type OnLayout } from '@kiwicom/mobile-shared'; +import MultiSlider from '@ptomasroos/react-native-multi-slider'; +import { defaultTokens } from '@kiwicom/orbit-design-tokens'; + +import StyleSheet from '../PlatformStyleSheet'; + +type Props = {| + +onChange: (number[]) => void, + +min: number, + +max: number, + +startValue: number, + +endValue?: number, + +step?: number, + +snapped?: boolean, + +style?: Object, +|}; + +type State = {| + width: number, +|}; + +export default class Slider extends React.Component { + state = { + width: 0, + }; + + onLayout = ({ nativeEvent }: OnLayout) => { + this.setState({ width: nativeEvent.layout.width }); + }; + + getMaxMinAndEnabled = () => { + const { max, min } = this.props; + + if ( + max === min && + max === this.props.startValue && + max === this.props.endValue + ) { + // If all values are equal, expand max and min values by one + // to make dot appear on the center and disable sliding. + return { + max: max + 1, + min: min - 1, + enabledOne: false, + enabledTwo: false, + }; + } + + return { + max, + min, + enabledOne: true, + enabledTwo: true, + }; + }; + + render() { + const { max, min, enabledOne, enabledTwo } = this.getMaxMinAndEnabled(); + const values = [this.props.startValue]; + + if (this.props.endValue) { + values.push(this.props.endValue); + } + + return ( + + + + ); + } +} + +const styles = StyleSheet.create({ + selected: { + backgroundColor: defaultTokens.paletteBlueNormal, + }, + unselected: { + backgroundColor: defaultTokens.paletteInkLighter, + }, + track: { + borderRadius: 5, + height: 4, + }, + marker: { + height: 30, + width: 30, + borderRadius: 15, + backgroundColor: defaultTokens.paletteWhite, + borderWidth: 1, + borderColor: defaultTokens.paletteInkLighter, + shadowColor: defaultTokens.paletteInkDark, + shadowOffset: { + width: 0, + height: 2, + }, + shadowOpacity: 0.1, + shadowRadius: 4, + margin: 3, // necessary to see the Android elevation properly + android: { + elevation: 1, + }, + }, + container: { + justifyContent: 'center', + }, +}); diff --git a/src/Slider/Slider.stories.js b/src/Slider/Slider.stories.js new file mode 100644 index 0000000..d9ee20a --- /dev/null +++ b/src/Slider/Slider.stories.js @@ -0,0 +1,26 @@ +// @flow + +import React from 'react'; +import { View } from 'react-native'; +import { storiesOf } from '@storybook/react-native'; +import { boolean, select, withKnobs } from '@storybook/addon-knobs'; +import Slider from './Slider'; +import SliderLabels from './SliderLabels'; +import CompactSlider from './CompactSlider'; + +import Text from '../Text'; + +storiesOf('Slider', module) + .addDecorator(withKnobs) + .add('Default', () => ( + + START} + endLabel={END} + /> + + )); diff --git a/src/Slider/SliderLabels.js b/src/Slider/SliderLabels.js new file mode 100644 index 0000000..9ed7b79 --- /dev/null +++ b/src/Slider/SliderLabels.js @@ -0,0 +1,207 @@ +// @flow + +import * as React from 'react'; +import { defaultTokens } from '@kiwicom/orbit-design-tokens'; +import { View } from 'react-native'; +// import type { OnLayout } from '@kiwicom/mobile-shared'; +// import { type TranslationType } from '@kiwicom/mobile-localization'; + +import Text from '../Text'; +import StyleSheet from '../PlatformStyleSheet'; + +type Props = {| + +startLabel: any, + +startValue: number, + +endLabel?: any, + +endValue?: number, + +max: number, + +min: number, +|}; + +type State = {| + width: number, + labelStartWidth: number, + labelStartAtMax: boolean, + labelEndWidth: number, + paddingLeft: number, + paddingRight: number, +|}; + +export default class SliderLabels extends React.Component { + constructor(props: Props) { + super(props); + this.state = { + width: 0, + labelStartWidth: 0, + labelStartAtMax: false, + labelEndWidth: 0, + paddingLeft: 0, + paddingRight: 0, + }; + } + + componentDidMount() { + if (this.props.endValue) { + requestAnimationFrame(this.setPaddingForTwoLabels); + } else { + requestAnimationFrame(this.setPaddingForOneLabel); + } + } + + getMaxPadding = (gap: number): number => + Math.floor( + this.state.width - + this.state.labelStartWidth - + this.state.labelEndWidth - + gap + ); + + calculateMarkerStartOffset = (): number => { + const { min, max, startValue } = this.props; + + let val; + if (startValue > max) { + val = max; + } else if (startValue < min) { + val = min; + } else { + val = startValue; + } + + return Math.round((val / (max - min)) * this.state.width); + }; + + calculateMarkerEndOffset = (): number => { + const { min, max, endValue } = this.props; + + if (!endValue) { + return 0; + } + + let val; + if (endValue > max) { + val = max; + } else if (endValue < min) { + val = min; + } else { + val = endValue; + } + + const w = (val / (max - min)) * this.state.width; + return Math.round(this.state.width - w); + }; + + getStartLabelOffset = (): number => { + const startMarkerOffset = this.calculateMarkerStartOffset(); + const startLabelHalf = this.state.labelStartWidth / 2; + + return startMarkerOffset < startLabelHalf + ? 0 + : startMarkerOffset - startLabelHalf; + }; + + isBelowMaxPadding = (value: number, gap: number = 0): boolean => { + const maxPadding = this.getMaxPadding(gap); + return value + gap < maxPadding; + }; + + setPaddingForTwoLabels = (): void => { + const startLabelOffset = this.getStartLabelOffset(); + const endMarkerOffset = this.calculateMarkerEndOffset(); + const endLabelHalf = this.state.labelEndWidth / 2; + const endLabelOffset = + endMarkerOffset < endLabelHalf ? 0 : endMarkerOffset - endLabelHalf; + + const isBelowMaxPadding = this.isBelowMaxPadding( + startLabelOffset + endLabelOffset, + 10 + ); + + const hasOffsetChanged = + this.state.paddingLeft !== startLabelOffset || + this.state.paddingRight !== endLabelOffset; + + if (isBelowMaxPadding && hasOffsetChanged) { + this.setState({ + paddingLeft: startLabelOffset, + paddingRight: endLabelOffset, + }); + } + + requestAnimationFrame(this.setPaddingForTwoLabels); + }; + + setPaddingForOneLabel = (): void => { + const startLabelOffset = this.getStartLabelOffset(); + const isBelowMaxPadding = this.isBelowMaxPadding(startLabelOffset); + const hasOffsetChanged = this.state.paddingLeft !== startLabelOffset; + + if (isBelowMaxPadding) { + if (hasOffsetChanged) { + this.setState({ + paddingLeft: startLabelOffset, + }); + } + + if (this.state.labelStartAtMax) { + this.setState({ labelStartAtMax: false }); + } + } else if (this.state.labelStartAtMax === false) { + this.setState({ labelStartAtMax: true }); + } + + requestAnimationFrame(this.setPaddingForOneLabel); + }; + + saveFullWidth = (e: OnLayout) => { + this.setState({ width: Math.floor(e.nativeEvent.layout.width) }); + }; + + saveLabelStartWidth = (e: OnLayout) => { + this.setState({ labelStartWidth: Math.floor(e.nativeEvent.layout.width) }); + }; + + saveLabelEndWidth = (e: OnLayout) => { + this.setState({ labelEndWidth: Math.floor(e.nativeEvent.layout.width) }); + }; + + render() { + return ( + + + {this.props.startLabel} + + {this.props.endLabel && ( + + {this.props.endLabel} + + )} + + ); + } +} + +const styles = StyleSheet.create({ + sliderLabels: { + width: '100%', + flexDirection: 'row', + marginTop: 10, + marginBottom: 5, + }, + label: { + fontSize: 14, + color: defaultTokens.paletteBlueNormal, + }, +}); diff --git a/src/Slider/index.js b/src/Slider/index.js new file mode 100644 index 0000000..9ffb25a --- /dev/null +++ b/src/Slider/index.js @@ -0,0 +1,5 @@ +// @flow + +export { default as Slider } from './Slider'; +// export { default as SliderLabels } from './SliderLabels'; +// export { default as SliderWithLabels } from './SliderWithLabels'; diff --git a/storybook.native/story-loader.js b/storybook.native/story-loader.js new file mode 100644 index 0000000..a18c4b5 --- /dev/null +++ b/storybook.native/story-loader.js @@ -0,0 +1,45 @@ +// @flow + +// Auto-generated file created by react-native-storybook-loader +// Do not edit. +// +// https://github.com/elderfo/react-native-storybook-loader.git + +function loadStories() { + require('../src/Slider/Slider.stories'); + require('../src/Badge/Badge.stories'); + require('../src/Button/Button.stories'); + require('../src/Card/Card.stories'); + require('../src/Checkbox/Checkbox.stories'); + require('../src/FilterButton/FilterButton.stories'); + require('../src/Icon/Icon.stories'); + require('../src/Loader/Loader.stories'); + require('../src/RadioButton/RadioButton.stories'); + require('../src/Rating/Rating.stories'); + require('../src/ServiceLogo/ServiceLogo.stories'); + require('../src/Stepper/Stepper.stories'); + require('../src/Text/Text.stories'); + require('../src/TextInput/TextInput.stories'); +} + +const stories = [ + '../src/Slider/Slider.stories', + '../src/Badge/Badge.stories', + '../src/Button/Button.stories', + '../src/Card/Card.stories', + '../src/Checkbox/Checkbox.stories', + '../src/FilterButton/FilterButton.stories', + '../src/Icon/Icon.stories', + '../src/Loader/Loader.stories', + '../src/RadioButton/RadioButton.stories', + '../src/Rating/Rating.stories', + '../src/ServiceLogo/ServiceLogo.stories', + '../src/Stepper/Stepper.stories', + '../src/Text/Text.stories', + '../src/TextInput/TextInput.stories', +]; + +module.exports = { + loadStories, + stories, +}; diff --git a/yarn.lock b/yarn.lock index 0ced4a7..39ead0c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -969,17 +969,22 @@ resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz#2b5a3ab3f918cca48a8c754c08168e3f03eba61b" integrity sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw== +"@ptomasroos/react-native-multi-slider@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@ptomasroos/react-native-multi-slider/-/react-native-multi-slider-1.0.0.tgz#a4ea27b1320b93a1db9f696c24789695df6c9f30" + integrity sha512-NpX22rQLArg9widwMzGf7XsInTDf6mfY/D1XaDVjglNkVphj3NSN37+nF6MofArCxC++1P+jHv0SGWbmJQwy4g== + "@storybook/addon-actions@^4.0.7": - version "4.0.8" - resolved "https://registry.yarnpkg.com/@storybook/addon-actions/-/addon-actions-4.0.8.tgz#7230a63ee98e2d61f806a7a8e1c5146daed6026e" - integrity sha512-lRwmi9icRyNiXamSY5JtRvOx1Pg3KNAMn7GZjn0saS86/9b4aq6jTLg8QpLHHSM3zckZ97SbXTyHcuP/M6LgZg== + version "4.0.11" + resolved "https://registry.yarnpkg.com/@storybook/addon-actions/-/addon-actions-4.0.11.tgz#4a329172baa8dc75a79af1dab72ed57ca2993440" + integrity sha512-YwJC3xfZP+CSG7M1AlnGlXQ8Mn9WbzMvgh1sh6CsvuRTKc9mOVAuWSdxkVw0cnfu1g44Ltb3MZ52+l/UFtTgkA== dependencies: "@emotion/core" "^0.13.1" "@emotion/provider" "^0.11.2" "@emotion/styled" "^0.10.6" - "@storybook/addons" "4.0.8" - "@storybook/components" "4.0.8" - "@storybook/core-events" "4.0.8" + "@storybook/addons" "4.0.11" + "@storybook/components" "4.0.11" + "@storybook/core-events" "4.0.11" deep-equal "^1.0.1" global "^4.3.2" lodash "^4.17.11" @@ -989,14 +994,14 @@ uuid "^3.3.2" "@storybook/addon-knobs@^4.0.7": - version "4.0.8" - resolved "https://registry.yarnpkg.com/@storybook/addon-knobs/-/addon-knobs-4.0.8.tgz#7d0a9fd47760fdcc629d9838447e441cb643005d" - integrity sha512-HKPvwNFylmwUOfeJHFq2ATu1gx7foVNupWjvalQm+upp5jNqY9scxblN+mpZxRh08wWZjXnSq6VP+BgKOy5buw== + version "4.0.11" + resolved "https://registry.yarnpkg.com/@storybook/addon-knobs/-/addon-knobs-4.0.11.tgz#14f0de5476e5429dbc745eb8d97d67d73497b937" + integrity sha512-bCWhUjqIzEoQ2YfLIE7pe16WpJ7sCf4P+HrqOyE7Cko/xo62S/jfFjuuspNbs6gB4jKyG/WAXdiS4BtxPMj1ZQ== dependencies: "@emotion/styled" "^0.10.6" - "@storybook/addons" "4.0.8" - "@storybook/components" "4.0.8" - "@storybook/core-events" "4.0.8" + "@storybook/addons" "4.0.11" + "@storybook/components" "4.0.11" + "@storybook/core-events" "4.0.11" copy-to-clipboard "^3.0.8" escape-html "^1.0.3" fast-deep-equal "^2.0.1" @@ -1008,20 +1013,20 @@ util-deprecate "^1.0.2" "@storybook/addon-links@^4.0.6": - version "4.0.8" - resolved "https://registry.yarnpkg.com/@storybook/addon-links/-/addon-links-4.0.8.tgz#a1fc616417c7427754714bce4e1cf5e80431597e" - integrity sha512-PrE88FXXVupX0mnoRzW2a8nTkP6bTVWoQIcF46UeFGhUrqMhN/9/Y7SoYGW3CbptYqXlIZ9S9tRW5ZDTF7dDpg== + version "4.0.11" + resolved "https://registry.yarnpkg.com/@storybook/addon-links/-/addon-links-4.0.11.tgz#2cc0e1e859febf0623b71e07ff9d3503fc212c9e" + integrity sha512-iVRpn7UxBI94SIEP5dTAvjNGYtZXwVRItAK0YxBbyOB+iafDqwpuMUweVmGMmL9jw4VsICu9xHRPCKxWr2Ckqw== dependencies: - "@storybook/addons" "4.0.8" - "@storybook/components" "4.0.8" - "@storybook/core-events" "4.0.8" + "@storybook/addons" "4.0.11" + "@storybook/components" "4.0.11" + "@storybook/core-events" "4.0.11" global "^4.3.2" prop-types "^15.6.2" "@storybook/addon-ondevice-knobs@^4.0.7": - version "4.0.8" - resolved "https://registry.yarnpkg.com/@storybook/addon-ondevice-knobs/-/addon-ondevice-knobs-4.0.8.tgz#90a3764b072f36965542d5a0823517d3b6213037" - integrity sha512-7YPUhadP52mDM3upJYxjQwrc7Km+nO/cxImxFt9qj9jukoj297zlK1cwF3XtpTUDyMxAVM0XU2s7qG+Xl+jgWQ== + version "4.0.11" + resolved "https://registry.yarnpkg.com/@storybook/addon-ondevice-knobs/-/addon-ondevice-knobs-4.0.11.tgz#62c14ae3a49b7957181c8681b98624824036cd54" + integrity sha512-URmGCWFq6vOwzAwnQTLA2aAUNKCBONB/XPHJFFGqZdXCEkjkYMDiG33mtBNOrLvVpbF/4/FO88uAVRx0eUsTRA== dependencies: "@storybook/addons" "4.0.8" deep-equal "^1.0.1" @@ -1031,6 +1036,16 @@ react-native-modal-selector "^0.0.29" react-native-switch "^1.5.0" +"@storybook/addons@4.0.11": + version "4.0.11" + resolved "https://registry.yarnpkg.com/@storybook/addons/-/addons-4.0.11.tgz#e02cb5084d65a0a6cfc4c5521031fde150b93e2f" + integrity sha512-b187r62kzYh2WPW3aa1BVP/YvKUqh1xIUFQx8Pw8iJ7Uo5evexkI7utiu2KzWk4hmn0IBavdDshM+NykOjWM7A== + dependencies: + "@storybook/channels" "4.0.11" + "@storybook/components" "4.0.11" + global "^4.3.2" + util-deprecate "^1.0.2" + "@storybook/addons@4.0.8": version "4.0.8" resolved "https://registry.yarnpkg.com/@storybook/addons/-/addons-4.0.8.tgz#841848c57406296f7b513708c15dc865f6b37fc7" @@ -1041,32 +1056,53 @@ global "^4.3.2" util-deprecate "^1.0.2" -"@storybook/channel-postmessage@4.0.8": - version "4.0.8" - resolved "https://registry.yarnpkg.com/@storybook/channel-postmessage/-/channel-postmessage-4.0.8.tgz#76fa539a8eab09f681c9134b3dbffb8233f97d36" - integrity sha512-qnjUgy4/vuFQpb/bt4UVTIZOzlgvGxS59IEE17qWULET8WrI4q2WS7XKQjLr7vmGzu6CFNKgoEKQ+h9G4npknA== +"@storybook/channel-postmessage@4.0.11": + version "4.0.11" + resolved "https://registry.yarnpkg.com/@storybook/channel-postmessage/-/channel-postmessage-4.0.11.tgz#45b4e522a32b51682e5a1105a3d1c16b6fb366df" + integrity sha512-adk4Ox93+cXC0Wkjo+1ANV26/FENTH52AZxCnwvtjEPiOCnZi7+qUgGj5rSZX5zkIHJV8dHeiXWwh4sgFqeWhA== dependencies: - "@storybook/channels" "4.0.8" + "@storybook/channels" "4.0.11" global "^4.3.2" json-stringify-safe "^5.0.1" -"@storybook/channel-websocket@4.0.8": - version "4.0.8" - resolved "https://registry.yarnpkg.com/@storybook/channel-websocket/-/channel-websocket-4.0.8.tgz#cc4fae9e4a837340d4acbd8cfeecd4ad7e695814" - integrity sha512-MFi61sHlQwkeSss2txuZglDlVg/4m1EPmK35YKEBw7qQQC6aOJNiINuKj4jPlFh1hkTvJK0HABR4KxZ9whulNA== +"@storybook/channel-websocket@4.0.11": + version "4.0.11" + resolved "https://registry.yarnpkg.com/@storybook/channel-websocket/-/channel-websocket-4.0.11.tgz#6ea0a970cfec17273af25a5c4ba84dcc9a02555a" + integrity sha512-NrBkJv5ySnGqwjXsDGDK+qWk1LLLmzihfNMOLgiFagmaA7jiiXK07DwoqaXQQM532TApbJElLJgQ8c9MuEWkQQ== dependencies: - "@storybook/channels" "4.0.8" + "@storybook/channels" "4.0.11" global "^4.3.2" +"@storybook/channels@4.0.11": + version "4.0.11" + resolved "https://registry.yarnpkg.com/@storybook/channels/-/channels-4.0.11.tgz#e6303959364d6d66918dbcbafe0c64df1c5b79d3" + integrity sha512-Rewcss3OW1gjgURNVEb4/NSrKGL/huJ+r/PxdXgi81AX1cafj+fMHRbL9AaG5/SNtPDY/6EfIGlC0uGCUbyVOw== + "@storybook/channels@4.0.8": version "4.0.8" resolved "https://registry.yarnpkg.com/@storybook/channels/-/channels-4.0.8.tgz#36d96ad714c685f144fd1f1e5394faf0e0291032" integrity sha512-nGMVPN4eOJlAXxS2u3a5aj7YJ4ChhlLx0+4HC6xaU5Uv+PaL6ba0gh84Zd9K73JnTSPPMq/4Mg3oncZumyeN9Q== -"@storybook/client-logger@4.0.8": - version "4.0.8" - resolved "https://registry.yarnpkg.com/@storybook/client-logger/-/client-logger-4.0.8.tgz#159bc1732811c543393d86e06a7c32b41047d217" - integrity sha512-q2PNkSVjQGLvJp9K8hTUjyRYtN8PDbLBddT2fmb/CFGFLXWTDe79+DuJGEFhUKfbtrvixIPXOeWeDYarwxnhAw== +"@storybook/client-logger@4.0.11": + version "4.0.11" + resolved "https://registry.yarnpkg.com/@storybook/client-logger/-/client-logger-4.0.11.tgz#955419cc13c8a77f14bd804adbb601c78b7b0128" + integrity sha512-DwPTGqkl18P1MlL+4d9tZTh/Urj2eor/0RJMmt3iy54SBRcwn7QoG14Pdsg3xVE7t9ojeKnBPQOYgsfa7J3SrQ== + +"@storybook/components@4.0.11": + version "4.0.11" + resolved "https://registry.yarnpkg.com/@storybook/components/-/components-4.0.11.tgz#a09a22120685e324831876a620112ca16a28bdcb" + integrity sha512-oAy9NqCgq9gJeQ+YO+IXHUq9rqmnUxGae+jbM8lGJlBS0yKx1vpOsZYO/jV3qhNPcGWZzKVxQdoWH5ej4sq5TA== + 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/components@4.0.8": version "4.0.8" @@ -1084,15 +1120,15 @@ react-textarea-autosize "^7.0.4" render-fragment "^0.1.1" -"@storybook/core-events@4.0.8": - version "4.0.8" - resolved "https://registry.yarnpkg.com/@storybook/core-events/-/core-events-4.0.8.tgz#7af80f1c3eb32ae0eafe789be651c684dcfefd7b" - integrity sha512-S7g2oGnJKvLDpwcHFJ+efXww6zS7W3krimsqApf3foBfi3CVPLNJ9hrag30UGtnxQ3LDpkMj/aU4bkCWY7NRYA== +"@storybook/core-events@4.0.11": + version "4.0.11" + resolved "https://registry.yarnpkg.com/@storybook/core-events/-/core-events-4.0.11.tgz#f524a3611e40baade2c5bacb309d37a6af9d952b" + integrity sha512-SHOyEeKa3Nb2RSaDChwpebZMkAlyEM/TkUOjhQUKFvwirXEzhlKg5O9JrNxEAkH5zZbtXNzYY4Vod3c+Fv03uA== -"@storybook/core@4.0.8": - version "4.0.8" - resolved "https://registry.yarnpkg.com/@storybook/core/-/core-4.0.8.tgz#10900288884ee975faf1dc8f19cfaaf99b55801a" - integrity sha512-zllGT8JwY/MGgPqHAB/zsWAYnTtrNxTMyR5dIlfAKEdt70EHokssFtR2RIEvR0388ye3Cw+AgM+tDLdfn8mYSg== +"@storybook/core@4.0.11": + version "4.0.11" + resolved "https://registry.yarnpkg.com/@storybook/core/-/core-4.0.11.tgz#40eb2861a8fdfbcb8071ba3fb2c1a509c12c36c3" + integrity sha512-/uo+yang8joX5uZeQWQel5dPMZzZg7VeIvMAfTtxCHyWOpltIgUg/Yb57GwoT2iQ+8sjxiurJjTW29XpNL1LRg== dependencies: "@babel/plugin-proposal-class-properties" "^7.1.0" "@babel/plugin-transform-regenerator" "^7.0.0" @@ -1102,12 +1138,12 @@ "@emotion/core" "^0.13.1" "@emotion/provider" "^0.11.2" "@emotion/styled" "^0.10.6" - "@storybook/addons" "4.0.8" - "@storybook/channel-postmessage" "4.0.8" - "@storybook/client-logger" "4.0.8" - "@storybook/core-events" "4.0.8" - "@storybook/node-logger" "4.0.8" - "@storybook/ui" "4.0.8" + "@storybook/addons" "4.0.11" + "@storybook/channel-postmessage" "4.0.11" + "@storybook/client-logger" "4.0.11" + "@storybook/core-events" "4.0.11" + "@storybook/node-logger" "4.0.11" + "@storybook/ui" "4.0.11" airbnb-js-shims "^1 || ^2" autoprefixer "^9.3.1" babel-plugin-macros "^2.4.2" @@ -1149,6 +1185,7 @@ shelljs "^0.8.2" style-loader "^0.23.1" svg-url-loader "^2.3.2" + terser-webpack-plugin "^1.1.0" url-loader "^1.1.2" webpack "^4.23.1" webpack-dev-middleware "^3.4.0" @@ -1163,10 +1200,10 @@ "@storybook/react-simple-di" "^1.2.1" babel-runtime "6.x.x" -"@storybook/node-logger@4.0.8": - version "4.0.8" - resolved "https://registry.yarnpkg.com/@storybook/node-logger/-/node-logger-4.0.8.tgz#b52a0a86f1c51940161a4938c6ed4acad8cdb617" - integrity sha512-TmBPctU+TPt0Oi4pA3JKfYaGkC7osgzdCFo3IgVbtLGA97X4CUjmLz8N0EEMHZdqdnHoQGgx94E5zhlJnvgMHQ== +"@storybook/node-logger@4.0.11": + version "4.0.11" + resolved "https://registry.yarnpkg.com/@storybook/node-logger/-/node-logger-4.0.11.tgz#8ab0caaa682065bf9631b134cf7cad841483982f" + integrity sha512-PpXESCRMbja+5BGyEBvcBL35XX9mrLA6CEQYLmqw7u1FLEFIcWgYZL33o5tSi2+0NsHZKvakRxsGw8DGcfxhpQ== dependencies: "@babel/runtime" "^7.1.2" npmlog "^4.1.2" @@ -1191,16 +1228,16 @@ shallowequal "^1.1.0" "@storybook/react-native@^4.0.6": - version "4.0.8" - resolved "https://registry.yarnpkg.com/@storybook/react-native/-/react-native-4.0.8.tgz#5e3d674f634a1ba568bc6f4c31c52666d7143024" - integrity sha512-bYRCJadQ4zAjABQ24+V42+ma0ahxAbC9Pwz6PIIvzM52DuC3ownbiIefHmVn21sJwa6M8uQcICxyPGnu7B0aVw== - dependencies: - "@storybook/addons" "4.0.8" - "@storybook/channel-websocket" "4.0.8" - "@storybook/channels" "4.0.8" - "@storybook/core" "4.0.8" - "@storybook/core-events" "4.0.8" - "@storybook/ui" "4.0.8" + version "4.0.11" + resolved "https://registry.yarnpkg.com/@storybook/react-native/-/react-native-4.0.11.tgz#ef50175c113e4a433931a31a80241c2280163c36" + integrity sha512-s7sekqLdPHo4uwCv2QF5KLnflN9eFhFBoT0dxsP8JPWfak5Vr7D9ZXbZ7eIHv24UqSIUQhEpyrmCZmHRmu7R0Q== + dependencies: + "@storybook/addons" "4.0.11" + "@storybook/channel-websocket" "4.0.11" + "@storybook/channels" "4.0.11" + "@storybook/core" "4.0.11" + "@storybook/core-events" "4.0.11" + "@storybook/ui" "4.0.11" babel-loader "^8.0.4" babel-plugin-macros "^2.4.2" babel-plugin-syntax-async-functions "^6.13.0" @@ -1253,16 +1290,16 @@ babel-runtime "^6.5.0" "@storybook/react@^4.0.6": - version "4.0.8" - resolved "https://registry.yarnpkg.com/@storybook/react/-/react-4.0.8.tgz#5b424d1f40e9bed0609abac30b79379f355f52c6" - integrity sha512-gN5P5RVul+qKLezKkvkFlj9qhBiL3Bw+CGTuXLccGQCxE0mXSW1idCM4izWYha9kwlDv/yjM6guDWQcfsLUldw== + version "4.0.11" + resolved "https://registry.yarnpkg.com/@storybook/react/-/react-4.0.11.tgz#2e7d93797ffcad518c82533c3ee1b7aa2c287dc6" + integrity sha512-HP2XlRQijL4ig5+Cp2YdxEgMxVPkZfy4lUwg8YXbwQpFJhAAVBBiyfd/iDj1zYeniBaZd6S9FJRMWHN0zX8oug== dependencies: "@babel/preset-flow" "^7.0.0" "@babel/preset-react" "^7.0.0" "@babel/runtime" "^7.1.2" "@emotion/styled" "^0.10.6" - "@storybook/core" "4.0.8" - "@storybook/node-logger" "4.0.8" + "@storybook/core" "4.0.11" + "@storybook/node-logger" "4.0.11" babel-plugin-react-docgen "^2.0.0" common-tags "^1.8.0" global "^4.3.2" @@ -1273,16 +1310,16 @@ semver "^5.6.0" webpack "^4.23.1" -"@storybook/ui@4.0.8": - version "4.0.8" - resolved "https://registry.yarnpkg.com/@storybook/ui/-/ui-4.0.8.tgz#2f3148086a0e6feae123d305f71cb3cf79b64a71" - integrity sha512-PpyyMskrwBq1P5K01dqc4t5UPHlLIRZJwNtFcgg/QFiGoCxb03Xx2pn9weOEsHazdRbs+yVzBKut9QTiVbLDVg== +"@storybook/ui@4.0.11": + version "4.0.11" + resolved "https://registry.yarnpkg.com/@storybook/ui/-/ui-4.0.11.tgz#20f85b159c9f42106a21c1184eef257eadde7ed4" + integrity sha512-gvIJB9shQoIe0/WWuXQSWElkC4Ho4DKgxRq2QV72kUIRZKnlAKC6ufOc40MhbNwIkvNWG9slPzbLn1NJTmL0eg== dependencies: "@emotion/core" "^0.13.1" "@emotion/provider" "^0.11.2" "@emotion/styled" "^0.10.6" - "@storybook/components" "4.0.8" - "@storybook/core-events" "4.0.8" + "@storybook/components" "4.0.11" + "@storybook/core-events" "4.0.11" "@storybook/mantra-core" "^1.7.2" "@storybook/podda" "^1.2.3" "@storybook/react-komposer" "^2.0.5" @@ -1573,10 +1610,10 @@ ajv@^5.2.3, ajv@^5.3.0: fast-json-stable-stringify "^2.0.0" json-schema-traverse "^0.3.0" -ajv@^6.1.0, ajv@^6.5.3, ajv@^6.5.5: - version "6.5.5" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.5.5.tgz#cf97cdade71c6399a92c6d6c4177381291b781a1" - integrity sha512-7q7gtRQDJSyuEHjuVgHoUa2VuemFiCMrfQc9Tc08XTAc4Zj/5U1buQJ0HU6i7fKjXU09SVgSmxa4sLvuvS8Iyg== +ajv@^6.1.0, ajv@^6.5.3, ajv@^6.5.5, ajv@^6.6.1: + version "6.6.1" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.6.1.tgz#6360f5ed0d80f232cc2b294c362d5dc2e538dd61" + integrity sha512-ZoJjft5B+EJBjUyu9C9Hc0OZyPZSSlOF+plzouTrg6UlA8f+e/n8NIgBFG/9tppJtpPWfthHakK7juJdNDODww== dependencies: fast-deep-equal "^2.0.1" fast-json-stable-stringify "^2.0.0" @@ -1927,15 +1964,15 @@ atob@^2.1.1: integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== autoprefixer@^9.3.1: - version "9.3.1" - resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.3.1.tgz#71b622174de2b783d5fd99f9ad617b7a3c78443e" - integrity sha512-DY9gOh8z3tnCbJ13JIWaeQsoYncTGdsrgCceBaQSIL4nvdrLxgbRSBPevg2XbX7u4QCSfLheSJEEIUUSlkbx6Q== + version "9.4.0" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.4.0.tgz#4264ee11fdde83e6a2fb0136e6954af6361bf0b6" + integrity sha512-gv1a1rzOyxmB2JuyXDLVNWyyUl1uelaKyxO1OP3UNWk7jAP+EhAT9rZdcDBH0C+ZEeTL56qNR4j2TjRZL68bXA== dependencies: - browserslist "^4.3.3" - caniuse-lite "^1.0.30000898" + browserslist "^4.3.5" + caniuse-lite "^1.0.30000912" normalize-range "^0.1.2" num2fraction "^1.2.2" - postcss "^7.0.5" + postcss "^7.0.6" postcss-value-parser "^3.3.1" aws-sign2@~0.7.0: @@ -2931,9 +2968,9 @@ bcrypt-pbkdf@^1.0.0: tweetnacl "^0.14.3" big-integer@^1.6.7: - version "1.6.36" - resolved "https://registry.yarnpkg.com/big-integer/-/big-integer-1.6.36.tgz#78631076265d4ae3555c04f85e7d9d2f3a071a36" - integrity sha512-t70bfa7HYEA1D9idDbmuv7YbsbVkQ+Hp+8KFSul4aE5e/i1bjCNIRYJZlA8Q8p0r9T8cF/RVvwUgRA//FydEyg== + version "1.6.38" + resolved "https://registry.yarnpkg.com/big-integer/-/big-integer-1.6.38.tgz#e5ae0a2d08a05bb194cf9e0c0641798eda4ea044" + integrity sha512-csPPkI8MBCIoFAs2D7RoX9Bn5jrHwvQ/6CMfdRzwkB5cmpw74zb6Lbc/VbT9xCWrkgdwJDxw/uLIvXGch74Lhg== big.js@^3.1.3: version "3.2.0" @@ -3139,14 +3176,14 @@ browserslist@^3.2.6: caniuse-lite "^1.0.30000844" electron-to-chromium "^1.3.47" -browserslist@^4.1.0, browserslist@^4.3.3: - version "4.3.4" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.3.4.tgz#4477b737db6a1b07077275b24791e680d4300425" - integrity sha512-u5iz+ijIMUlmV8blX82VGFrB9ecnUg5qEt55CMZ/YJEhha+d8qpBfOFuutJ6F/VKRXjZoD33b6uvarpPxcl3RA== +browserslist@^4.1.0, browserslist@^4.3.5: + version "4.3.5" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.3.5.tgz#1a917678acc07b55606748ea1adf9846ea8920f7" + integrity sha512-z9ZhGc3d9e/sJ9dIx5NFXkKoaiQTnrvrMsN3R1fGb1tkWWNSz12UewJn9TNxGo1l7J23h0MRaPmk7jfeTZYs1w== dependencies: - caniuse-lite "^1.0.30000899" - electron-to-chromium "^1.3.82" - node-releases "^1.0.1" + caniuse-lite "^1.0.30000912" + electron-to-chromium "^1.3.86" + node-releases "^1.0.5" bser@^2.0.0: version "2.0.0" @@ -3292,10 +3329,10 @@ camelcase@^5.0.0: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.0.0.tgz#03295527d58bd3cd4aa75363f35b2e8d97be2f42" integrity sha512-faqwZqnWxbxn+F1d399ygeamQNy3lPp/H9H6rNrqYh4FSVCtcY+3cub1MxA8o9mDd55mM8Aghuu/kuyYA6VTsA== -caniuse-lite@^1.0.30000844, caniuse-lite@^1.0.30000884, caniuse-lite@^1.0.30000898, caniuse-lite@^1.0.30000899: - version "1.0.30000910" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000910.tgz#755d5181d4b006e5a2b59b1ffa05d0a0470039f5" - integrity sha512-u/nxtHGAzCGZzIxt3dA/tpSPOcirBZFWKwz1EPz4aaupnBI2XR0Rbr74g0zc6Hzy41OEM4uMoZ38k56TpYAWjQ== +caniuse-lite@^1.0.30000844, caniuse-lite@^1.0.30000884, caniuse-lite@^1.0.30000912: + version "1.0.30000913" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000913.tgz#560311ecf242eaf12159b720e64b11ebd759b5e4" + integrity sha512-PP7Ypc35XY1mNduHqweGNOp0qfNUCmaQauGOYDByvirlFjrzRyY72pBRx7jnBidOB8zclg00DAzsy2H475BouQ== capture-exit@^1.2.0: version "1.2.0" @@ -4218,10 +4255,10 @@ ejs@^2.6.1: resolved "https://registry.yarnpkg.com/ejs/-/ejs-2.6.1.tgz#498ec0d495655abc6f23cd61868d926464071aa0" integrity sha512-0xy4A/twfrRCnkhfk8ErDi5DqdAsAqeGxht4xkCUrsvhhbQNs7E+4jV0CN7+NKIY0aHE72+XvqtBIXzD31ZbXQ== -electron-to-chromium@^1.3.47, electron-to-chromium@^1.3.62, electron-to-chromium@^1.3.82: - version "1.3.84" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.84.tgz#2e55df59e818f150a9f61b53471ebf4f0feecc65" - integrity sha512-IYhbzJYOopiTaNWMBp7RjbecUBsbnbDneOP86f3qvS0G0xfzwNSvMJpTrvi5/Y1gU7tg2NAgeg8a8rCYvW9Whw== +electron-to-chromium@^1.3.47, electron-to-chromium@^1.3.62, electron-to-chromium@^1.3.86: + version "1.3.87" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.87.tgz#f0481ca84824752bced51673396e9a6c74fe5ec7" + integrity sha512-EV5FZ68Hu+n9fHVhOc9AcG3Lvf+E1YqR36ulJUpwaQTkf4LwdvBqmGIazaIrt4kt6J8Gw3Kv7r9F+PQjAkjWeA== elliptic@^6.0.0: version "6.4.1" @@ -4891,12 +4928,13 @@ extsprintf@^1.2.0: integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8= fancy-log@^1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/fancy-log/-/fancy-log-1.3.2.tgz#f41125e3d84f2e7d89a43d06d958c8f78be16be1" - integrity sha1-9BEl49hPLn2JpD0G2VjI94vha+E= + version "1.3.3" + resolved "https://registry.yarnpkg.com/fancy-log/-/fancy-log-1.3.3.tgz#dbc19154f558690150a23953a0adbd035be45fc7" + integrity sha512-k9oEhlyc0FrVh25qYuSELjr8oxsCoc4/LEZfg2iJJrfEk/tZL9bCoJE47gqAvI2m/AUjluCS4+3I0eTx8n3AEw== dependencies: ansi-gray "^0.1.1" color-support "^1.1.3" + parse-node-version "^1.0.0" time-stamp "^1.0.0" fast-deep-equal@^1.0.0: @@ -5602,9 +5640,9 @@ hash-base@^3.0.0: safe-buffer "^5.0.1" hash.js@^1.0.0, hash.js@^1.0.3: - version "1.1.5" - resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.5.tgz#e38ab4b85dfb1e0c40fe9265c0e9b54854c23812" - integrity sha512-eWI5HG9Np+eHV1KQhisXWwM+4EPPYe5dFX1UZZH7k/E3JzDEazVH+VGlZi6R94ZqImq+A3D1mCEtrFIfg/E7sA== + version "1.1.7" + resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" + integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== dependencies: inherits "^2.0.3" minimalistic-assert "^1.0.1" @@ -5891,7 +5929,7 @@ inline-style-prefixer@^4.0.2: bowser "^1.7.3" css-in-js-utils "^2.0.0" -inquirer@6.2.0, inquirer@^6.1.0, inquirer@^6.2.0: +inquirer@6.2.0: version "6.2.0" resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-6.2.0.tgz#51adcd776f661369dc1e894859c2560a224abdd8" integrity sha512-QIEQG4YyQ2UYZGDC4srMZ7BjHOmNk1lR2JQj5UknBapklm6WHA+VVH7N+sUdX3A7NeCfGF8o4X1S3Ao7nAcIeg== @@ -5930,6 +5968,25 @@ inquirer@^3.0.6: strip-ansi "^4.0.0" through "^2.3.6" +inquirer@^6.1.0, inquirer@^6.2.0: + version "6.2.1" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-6.2.1.tgz#9943fc4882161bdb0b0c9276769c75b32dbfcd52" + integrity sha512-088kl3DRT2dLU5riVMKKr1DlImd6X7smDhpXUCkJDCKvTEJeRiXh0G132HG9u5a+6Ylw9plFRY7RuTnwohYSpg== + dependencies: + ansi-escapes "^3.0.0" + chalk "^2.0.0" + cli-cursor "^2.1.0" + cli-width "^2.0.0" + external-editor "^3.0.0" + figures "^2.0.0" + lodash "^4.17.10" + mute-stream "0.0.7" + run-async "^2.2.0" + rxjs "^6.1.0" + string-width "^2.1.0" + strip-ansi "^5.0.0" + through "^2.3.6" + interpret@^1.0.0, interpret@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.1.0.tgz#7ed1b1410c6a0e0f78cf95d3b8440c63f78b8614" @@ -7092,12 +7149,12 @@ lower-case@^1.1.1: integrity sha1-miyr0bno4K6ZOkv31YdcOcQujqw= lru-cache@^4.0.1, lru-cache@^4.1.3: - version "4.1.4" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.4.tgz#51cc46e8e6d9530771c857e24ccc720ecdbcc031" - integrity sha512-EPstzZ23znHUVLKj+lcXO1KvZkrlw+ZirdwvOmnAnA/1PB4ggyXJ77LRkCqkff+ShQ+cqoxCxLQOh4cKITO5iA== + version "4.1.5" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" + integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g== dependencies: pseudomap "^1.0.2" - yallist "^3.0.2" + yallist "^2.1.2" make-dir@^1.0.0: version "1.3.0" @@ -7531,9 +7588,9 @@ mime@^1.3.4: integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== mime@^2.0.3, mime@^2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/mime/-/mime-2.3.1.tgz#b1621c54d63b97c47d3cfe7f7215f7d64517c369" - integrity sha512-OEUllcVoydBHGN1z84yfQDimn58pZNNNXgZlHXSboxMlFvgI6MXSWpWKpFRra7H1HxpVhHTkrghfRW49k6yjeg== + version "2.4.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-2.4.0.tgz#e051fd881358585f3279df333fe694da0bcffdd6" + integrity sha512-ikBcWwyqXQSHKtciCcctu9YfPbFYZ4+gbHEmE0Q8jzcTYQg5dHCr3g2wwAZjPoJfQVXZq6KXAjpXOTf5/cjT7w== mimic-fn@^1.0.0: version "1.2.0" @@ -7815,10 +7872,10 @@ node-pre-gyp@^0.10.0: semver "^5.3.0" tar "^4" -node-releases@^1.0.0-alpha.11, node-releases@^1.0.1: - version "1.0.4" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.0.4.tgz#2d585de8c6c81d00017e063e7810a63889aa6756" - integrity sha512-GqRV9GcHw8JCRDaP/JoeNMNzEGzHAknMvIHqMb2VeTOmg1Cf9+ej8bkV12tHfzWHQMCkQ5zUFgwFUkfraynNCw== +node-releases@^1.0.0-alpha.11, node-releases@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.0.5.tgz#a641adcc968b039a27345d92ef10b093e5cbd41d" + integrity sha512-Ky7q0BO1BBkG/rQz6PkEZ59rwo+aSfhczHP1wwq8IowoVdN/FpiP7qp0XW0P2+BVCWe5fQUBozdbVd54q1RbCQ== dependencies: semver "^5.3.0" @@ -8181,9 +8238,9 @@ p-try@^2.0.0: integrity sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ== pako@~1.0.5: - version "1.0.6" - resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.6.tgz#0101211baa70c4bca4a0f63f2206e97b7dfaf258" - integrity sha512-lQe48YPsMJAig+yngZ87Lus+NF+3mtu7DVOBu6b/gHO1YpKwIj5AWjZ/TOS7i46HD/UixzWb1zeWDZfGZ3iYcg== + version "1.0.7" + resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.7.tgz#2473439021b57f1516c82f58be7275ad8ef1bb27" + integrity sha512-3HNK5tW4x8o5mO8RuHZp3Ydw9icZXx0RANAOMzlMzx7LVXhMJ4mo3MOBpzyd7r/+RUu8BmndP47LXT+vzjtWcQ== parallel-transform@^1.1.0: version "1.1.0" @@ -8237,6 +8294,11 @@ parse-json@^4.0.0: error-ex "^1.3.1" json-parse-better-errors "^1.0.1" +parse-node-version@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/parse-node-version/-/parse-node-version-1.0.0.tgz#33d9aa8920dcc3c0d33658ec18ce237009a56d53" + integrity sha512-02GTVHD1u0nWc20n2G7WX/PgdhNFG04j5fi1OkaJzPWLTcf6vh6229Lta1wTmXG/7Dg42tCssgkccVt7qvd8Kg== + parse-passwd@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" @@ -8519,7 +8581,7 @@ postcss@^6.0.1, postcss@^6.0.23: source-map "^0.6.1" supports-color "^5.4.0" -postcss@^7.0.0, postcss@^7.0.5: +postcss@^7.0.0, postcss@^7.0.6: version "7.0.6" resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.6.tgz#6dcaa1e999cdd4a255dcd7d4d9547f4ca010cdc2" integrity sha512-Nq/rNjnHFcKgCDDZYO0lNsl6YWe6U7tTy+ESN+PnLxebL8uBtYX59HZqvrj7YLK5UCyll2hqDsJOo3ndzEW8Ug== @@ -8589,9 +8651,9 @@ prettier-linter-helpers@^1.0.0: fast-diff "^1.1.2" prettier@^1.14.2, prettier@^1.15.2, prettier@^1.7.0: - version "1.15.2" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.15.2.tgz#d31abe22afa4351efa14c7f8b94b58bb7452205e" - integrity sha512-YgPLFFA0CdKL4Eg2IHtUSjzj/BWgszDHiNQAe0VAIBse34148whfdzLagRL+QiKS+YfK5ftB6X4v/MBw8yCoug== + version "1.15.3" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.15.3.tgz#1feaac5bdd181237b54dbe65d874e02a1472786a" + integrity sha512-gAU9AGAPMaKb3NNSUUuhhFAS7SCO4ALTN4nRIn6PJ075Qd28Yn2Ig2ahEJWdJwJmlEBTUfC7mMUSFy8MwsOCfg== pretty-error@^2.1.1: version "2.1.1" @@ -8694,7 +8756,7 @@ pseudomap@^1.0.2: resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM= -psl@^1.1.24: +psl@^1.1.24, psl@^1.1.28: version "1.1.29" resolved "https://registry.yarnpkg.com/psl/-/psl-1.1.29.tgz#60f580d360170bb722a797cc704411e6da850c67" integrity sha512-AeUmQ0oLN02flVHXWh9sSJF7mcdFq0ppid/JkErufc3hGIV/AMa8Fo9VgDo/cT2jFdOWoFvHp90qqBH54W+gjQ== @@ -8746,16 +8808,21 @@ punycode@^1.2.4, punycode@^1.4.1: resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" integrity sha1-wNWmOycYgArY4esPpSachN1BhF4= -punycode@^2.1.0: +punycode@^2.1.0, punycode@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== -qs@6.5.2, qs@^6.5.2, qs@~6.5.2: +qs@6.5.2, qs@~6.5.2: version "6.5.2" resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== +qs@^6.5.2: + version "6.6.0" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.6.0.tgz#a99c0f69a8d26bf7ef012f871cdabb0aee4424c2" + integrity sha512-KIJqT9jQJDQx5h5uAVPimw6yVg2SekOKu959OCtktD3FjzbpvaPr8i4zzg07DOMz+igA4W/aNM7OV8H37pFYfA== + querystring-es3@^0.2.0: version "0.2.1" resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" @@ -8903,7 +8970,7 @@ react-dev-utils@^6.1.0: strip-ansi "4.0.0" text-table "0.2.0" -react-devtools-core@^3.4.0: +react-devtools-core@^3.4.2: version "3.4.3" resolved "https://registry.yarnpkg.com/react-devtools-core/-/react-devtools-core-3.4.3.tgz#1a06b7dc546d41ecf8dc4fbabea2d79d339353cf" integrity sha512-t3f6cRH5YSKv8qjRl1Z+1e0OwBZwJSdOAhJ9QAJdVKML7SmqAKKv3DxF+Ue03pE1N2UipPsLmaNcPzzMjIdZQg== @@ -8950,12 +9017,13 @@ react-fuzzy@^0.5.2: prop-types "^15.5.9" react-inspector@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/react-inspector/-/react-inspector-2.3.0.tgz#fc9c1d38ab687fc0d190dcaf133ae40158968fc8" - integrity sha512-aIcbWb0fKFhEMB+RadoOYawlr1JoMMfrQ1oRgPUG/f/e4zERVJ6nYcIaQmrQmdHCZ63BOqe2cEkoeY0kyLBzNg== + version "2.3.1" + resolved "https://registry.yarnpkg.com/react-inspector/-/react-inspector-2.3.1.tgz#f0eb7f520669b545b441af9d38ec6d706e5f649c" + integrity sha512-tUUK7t3KWgZEIUktOYko5Ic/oYwvjEvQUFAGC1UeMeDaQ5za2yZFtItJa2RTwBJB//NxPr000WQK6sEbqC6y0Q== dependencies: babel-runtime "^6.26.0" is-dom "^1.0.9" + prop-types "^15.6.1" react-is@^16.6.1: version "16.6.3" @@ -9027,9 +9095,9 @@ react-native-storybook-loader@^1.8.0: yargs "^8.0.2" react-native-swipe-gestures@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/react-native-swipe-gestures/-/react-native-swipe-gestures-1.0.2.tgz#914e1a72a94bc55b322b4622a01103ab879296dd" - integrity sha1-kU4acqlLxVsyK0YioBEDq4eSlt0= + version "1.0.3" + resolved "https://registry.yarnpkg.com/react-native-swipe-gestures/-/react-native-swipe-gestures-1.0.3.tgz#4160f8d459627323f3a3d2770af4bcd82fd054f5" + integrity sha512-KOouRzPB2fHFjVombsSdRfYo8SFeNVa4Ho4B5il87DuuF26sPNOtb3je+qaT/xVptedOsCzRPJGbWFMsaBApgg== react-native-switch@^1.5.0: version "1.5.0" @@ -9039,9 +9107,9 @@ react-native-switch@^1.5.0: prop-types "^15.6.0" react-native-testing-library@^1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/react-native-testing-library/-/react-native-testing-library-1.4.1.tgz#caf8ccf5303180681a8f1251b74884a640746a73" - integrity sha512-9r43HAuWRJZ5nzLoOG23eSA7sNiUy9Zoq0LBdGfjkdrIb1KlxqgPPbb2fui7GtDnbpsmsf12WXYO3X1aNfbaOw== + version "1.4.2" + resolved "https://registry.yarnpkg.com/react-native-testing-library/-/react-native-testing-library-1.4.2.tgz#6d9005e4215701ae68659d1f53bce02c88dd5784" + integrity sha512-nG4v0a2styrDbObc/aQzzXpGpSLbvsZEv23ixz+mmDQzWjzAbL3Gu5gZYvHz03U4mZzdHN7QuEVL3QrYyFSwrQ== dependencies: pretty-format "^23.6.0" @@ -9070,9 +9138,9 @@ react-native-web@^0.9.7: react-timer-mixin "^0.13.3" react-native@^0.57.5: - version "0.57.5" - resolved "https://registry.yarnpkg.com/react-native/-/react-native-0.57.5.tgz#f1dbcbf1f889845fba954f3e0d47e61cf89d41d9" - integrity sha512-b/RNXcifPr4CrYZEAWmyD+W//KWZkEO4p6/TOZmLPP4M+vkqWqt0wmSW6JWn1bTEeZmRjx1JJZeVtYmtIVl/KA== + version "0.57.7" + resolved "https://registry.yarnpkg.com/react-native/-/react-native-0.57.7.tgz#5b3af1c43366c41d8d8d2540fea8ce590060bca1" + integrity sha512-mdNibV6NblH8gbbcWjLjH6lVOkrXuCiIi+RQ+6e2QlrOIJVsKC216VvBhHsvdDIRO94v1qD8LMnTYlBY09qzQQ== dependencies: "@babel/runtime" "^7.0.0" absolute-path "^0.0.0" @@ -9114,7 +9182,7 @@ react-native@^0.57.5: promise "^7.1.1" prop-types "^15.5.8" react-clone-referenced-element "^1.0.1" - react-devtools-core "^3.4.0" + react-devtools-core "^3.4.2" react-timer-mixin "^0.13.2" regenerator-runtime "^0.11.0" rimraf "^2.5.4" @@ -9959,6 +10027,15 @@ slice-ansi@1.0.0: dependencies: is-fullwidth-code-point "^2.0.0" +slice-ansi@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-2.0.0.tgz#5373bdb8559b45676e8541c66916cdd6251612e7" + integrity sha512-4j2WTWjp3GsZ+AOagyzVbzp4vWGtZ0hEZ/gDY/uTvm6MTxUfTUIsnMIFb1bn8o0RuXiqUw15H1bue8f22Vw2oQ== + dependencies: + ansi-styles "^3.2.0" + astral-regex "^1.0.0" + is-fullwidth-code-point "^2.0.0" + slide@^1.1.5: version "1.1.6" resolved "https://registry.yarnpkg.com/slide/-/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707" @@ -10251,10 +10328,10 @@ string.prototype.padstart@^3.0.0: es-abstract "^1.4.3" function-bind "^1.0.2" -string_decoder@^1.0.0, string_decoder@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" - integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== +string_decoder@^1.0.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.2.0.tgz#fe86e738b19544afe70469243b2a1ee9240eae8d" + integrity sha512-6YqyX6ZWEYguAxgZzHGL7SsCeGx3V2TtOTqZz1xSTSWnqsbWwbptafNyvf/ACquZUXV3DANr5BDIwNYe1mN42w== dependencies: safe-buffer "~5.1.0" @@ -10263,6 +10340,13 @@ string_decoder@~0.10.x: resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" integrity sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ= +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.0" + strip-ansi@4.0.0, strip-ansi@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" @@ -10383,19 +10467,19 @@ table@4.0.2: string-width "^2.1.1" table@^5.0.2: - version "5.1.0" - resolved "https://registry.yarnpkg.com/table/-/table-5.1.0.tgz#69a54644f6f01ad1628f8178715b408dc6bf11f7" - integrity sha512-e542in22ZLhD/fOIuXs/8yDZ9W61ltF8daM88rkRNtgTIct+vI2fTnAyu/Db2TCfEcI8i7mjZz6meLq0nW7TYg== + version "5.1.1" + resolved "https://registry.yarnpkg.com/table/-/table-5.1.1.tgz#92030192f1b7b51b6eeab23ed416862e47b70837" + integrity sha512-NUjapYb/qd4PeFW03HnAuOJ7OMcBkJlqeClWxeNlQ0lXGSb52oZXGzkO0/I0ARegQ2eUT1g2VDJH0eUxDRcHmw== dependencies: - ajv "^6.5.3" - lodash "^4.17.10" - slice-ansi "1.0.0" + ajv "^6.6.1" + lodash "^4.17.11" + slice-ansi "2.0.0" string-width "^2.1.1" tapable@^1.0.0, tapable@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.0.tgz#0d076a172e3d9ba088fd2272b2668fb8d194b78c" - integrity sha512-IlqtmLVaZA2qab8epUXbVWRn3aB1imbDMJtjB3nu4X0NqPkcY/JH9ZtCBWKHWPxs8Svi9tyo8w2dBoi07qZbBA== + version "1.1.1" + resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.1.tgz#4d297923c5a72a42360de2ab52dadfaaec00018e" + integrity sha512-9I2ydhj8Z9veORCw5PRm4u9uebCn0mcCa6scWoNcbZ6dAtoo2618u9UUzxgmsCOreJpqDDuv61LvwofW7hLcBA== tar@^4: version "4.4.8" @@ -10440,9 +10524,9 @@ terser-webpack-plugin@^1.1.0: worker-farm "^1.5.2" terser@^3.8.1: - version "3.10.12" - resolved "https://registry.yarnpkg.com/terser/-/terser-3.10.12.tgz#06d40765e40b33fd97977c0896c75b2b5d42142d" - integrity sha512-3ODPC1eVt25EVNb04s/PkHxOmzKBQUF6bwwuR6h2DbEF8/j265Y1UkwNtOk9am/pRxfJ5HPapOlUlO6c16mKQQ== + version "3.11.0" + resolved "https://registry.yarnpkg.com/terser/-/terser-3.11.0.tgz#60782893e1f4d6788acc696351f40636d0e37af0" + integrity sha512-5iLMdhEPIq3zFWskpmbzmKwMQixKmTYwY3Ox9pjtSklBLnHiuQ0GKJLhL1HSYtyffHM3/lDIFBnb82m9D7ewwQ== dependencies: commander "~2.17.1" source-map "~0.6.1" @@ -10556,7 +10640,15 @@ toggle-selection@^1.0.3: resolved "https://registry.yarnpkg.com/toggle-selection/-/toggle-selection-1.0.6.tgz#6e45b1263f2017fa0acc7d89d78b15b8bf77da32" integrity sha1-bkWxJj8gF/oKzH2J14sVuL932jI= -tough-cookie@>=2.3.3, tough-cookie@^2.3.4, tough-cookie@~2.4.3: +tough-cookie@>=2.3.3, tough-cookie@^2.3.4: + version "2.5.0" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" + integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== + dependencies: + psl "^1.1.28" + punycode "^2.1.1" + +tough-cookie@~2.4.3: version "2.4.3" resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.4.3.tgz#53f36da3f47783b0925afa06ff9f3b165280f781" integrity sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ== @@ -10964,9 +11056,9 @@ webpack-sources@^1.1.0, webpack-sources@^1.3.0: source-map "~0.6.1" webpack@^4.23.1, webpack@^4.25.1: - version "4.26.0" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.26.0.tgz#adbe80b869148c8d108b7d88965d00d72b3178de" - integrity sha512-J/dP9SJIc5OtX2FZ/+U9ikQtd6H6Mcbqt0xeXtmPwYGDKf8nkbOQQA9KL2Y0rJOsN1Al9Pdn+/j63X58ub8gvQ== + version "4.26.1" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.26.1.tgz#ff3a9283d363c07b3494dfa702d08f4f2ef6cb39" + integrity sha512-i2oOvEvuvLLSuSCkdVrknaxAhtUZ9g+nLSoHCWV0gDzqGX2DXaCrMmMUpbRsTSSLrUqAI56PoEiyMUZIZ1msug== dependencies: "@webassemblyjs/ast" "1.7.11" "@webassemblyjs/helper-module-context" "1.7.11" @@ -11209,6 +11301,11 @@ y18n@^4.0.0: resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w== +yallist@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" + integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= + yallist@^3.0.0, yallist@^3.0.2: version "3.0.3" resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.3.tgz#b4b049e314be545e3ce802236d6cd22cd91c3de9" From 0eaa2f63692dbb1174f4dd58c6668b192d7dacc1 Mon Sep 17 00:00:00 2001 From: lukewalczak Date: Mon, 3 Dec 2018 16:24:32 +0100 Subject: [PATCH 2/9] Adjust slider --- src/Slider/CompactSlider.js | 7 ++-- src/Slider/Slider.js | 41 ++++++++++++++---------- src/Slider/Slider.stories.js | 20 ++---------- src/Slider/SliderLabels.js | 62 +++++++++++++++++++----------------- src/Slider/SliderTypes.js | 12 +++++++ src/Slider/index.js | 4 +-- 6 files changed, 76 insertions(+), 70 deletions(-) create mode 100644 src/Slider/SliderTypes.js diff --git a/src/Slider/CompactSlider.js b/src/Slider/CompactSlider.js index 9fb1c8d..ea5a6dd 100644 --- a/src/Slider/CompactSlider.js +++ b/src/Slider/CompactSlider.js @@ -4,7 +4,6 @@ import * as React from 'react'; import { View } from 'react-native'; import Slider from './Slider'; import SliderLabels from './SliderLabels'; -import Text from '../Text'; import StyleSheet from '../PlatformStyleSheet'; type Props = {| @@ -12,8 +11,8 @@ type Props = {| max: number, start: number, end: number, - startLabel: React.Node, - endLabel: React.Node, + startLabel?: React.Node, + endLabel?: React.Node, |}; type State = {| @@ -41,7 +40,7 @@ export default class CompactSlider extends React.Component { render() { const { start, end } = this.state; - const { min, max, startLabel, endLabel } = this.props; + const { min, max, startLabel, endLabel, step } = this.props; return ( diff --git a/src/Slider/Slider.js b/src/Slider/Slider.js index 862fa65..b0af960 100644 --- a/src/Slider/Slider.js +++ b/src/Slider/Slider.js @@ -2,11 +2,11 @@ import * as React from 'react'; import { View } from 'react-native'; -// import { type OnLayout } from '@kiwicom/mobile-shared'; import MultiSlider from '@ptomasroos/react-native-multi-slider'; import { defaultTokens } from '@kiwicom/orbit-design-tokens'; import StyleSheet from '../PlatformStyleSheet'; +import type { StylePropType } from '../PlatformStyleSheet/StyleTypes'; type Props = {| +onChange: (number[]) => void, @@ -14,15 +14,25 @@ type Props = {| +max: number, +startValue: number, +endValue?: number, - +step?: number, +snapped?: boolean, - +style?: Object, + +style?: StylePropType, |}; type State = {| width: number, |}; +type OnLayout = { + +nativeEvent: { + +layout: { + +x: number, + +y: number, + +width: number, + +height: number, + }, + }, +}; + export default class Slider extends React.Component { state = { width: 0, @@ -33,13 +43,9 @@ export default class Slider extends React.Component { }; getMaxMinAndEnabled = () => { - const { max, min } = this.props; + const { max, min, startValue, endValue } = this.props; - if ( - max === min && - max === this.props.startValue && - max === this.props.endValue - ) { + if (max === min && max === startValue && max === endValue) { // If all values are equal, expand max and min values by one // to make dot appear on the center and disable sliding. return { @@ -59,11 +65,14 @@ export default class Slider extends React.Component { }; render() { + const { startValue, endValue, snapped, style, onChange } = this.props; + const { width } = this.state; + const { max, min, enabledOne, enabledTwo } = this.getMaxMinAndEnabled(); - const values = [this.props.startValue]; + const values = [startValue]; - if (this.props.endValue) { - values.push(this.props.endValue); + if (endValue) { + values.push(endValue); } return ( @@ -72,10 +81,10 @@ export default class Slider extends React.Component { values={values} min={min} max={max} - snapped={this.props.snapped} + snapped={snapped} allowOverlap selectedStyle={styles.selected} - sliderLength={this.state.width} + sliderLength={width} touchDimensions={{ height: 30, width: 30, @@ -86,8 +95,8 @@ export default class Slider extends React.Component { trackStyle={styles.track} markerStyle={styles.marker} pressedMarkerStyle={styles.marker} - containerStyle={[styles.container, this.props.style]} - onValuesChange={this.props.onChange} + containerStyle={[styles.container, style]} + onValuesChange={onChange} enabledOne={enabledOne} enabledTwo={enabledTwo} /> diff --git a/src/Slider/Slider.stories.js b/src/Slider/Slider.stories.js index d9ee20a..3bd414d 100644 --- a/src/Slider/Slider.stories.js +++ b/src/Slider/Slider.stories.js @@ -1,26 +1,10 @@ // @flow import React from 'react'; -import { View } from 'react-native'; import { storiesOf } from '@storybook/react-native'; -import { boolean, select, withKnobs } from '@storybook/addon-knobs'; -import Slider from './Slider'; -import SliderLabels from './SliderLabels'; +import { withKnobs } from '@storybook/addon-knobs'; import CompactSlider from './CompactSlider'; -import Text from '../Text'; - storiesOf('Slider', module) .addDecorator(withKnobs) - .add('Default', () => ( - - START} - endLabel={END} - /> - - )); + .add('Default', () => ); diff --git a/src/Slider/SliderLabels.js b/src/Slider/SliderLabels.js index 9ed7b79..144e309 100644 --- a/src/Slider/SliderLabels.js +++ b/src/Slider/SliderLabels.js @@ -3,16 +3,16 @@ import * as React from 'react'; import { defaultTokens } from '@kiwicom/orbit-design-tokens'; import { View } from 'react-native'; -// import type { OnLayout } from '@kiwicom/mobile-shared'; -// import { type TranslationType } from '@kiwicom/mobile-localization'; import Text from '../Text'; import StyleSheet from '../PlatformStyleSheet'; +import { type OnLayout } from './SliderTypes'; + type Props = {| - +startLabel: any, + +startLabel?: React.Node, +startValue: number, - +endLabel?: any, + +endLabel?: React.Node, +endValue?: number, +max: number, +min: number, @@ -41,22 +41,21 @@ export default class SliderLabels extends React.Component { } componentDidMount() { - if (this.props.endValue) { + const { endValue } = this.props; + if (endValue) { requestAnimationFrame(this.setPaddingForTwoLabels); } else { requestAnimationFrame(this.setPaddingForOneLabel); } } - getMaxPadding = (gap: number): number => - Math.floor( - this.state.width - - this.state.labelStartWidth - - this.state.labelEndWidth - - gap - ); + getMaxPadding = (gap: number): number => { + const { width, labelStartWidth, labelEndWidth } = this.state; + return Math.floor(width - labelStartWidth - labelEndWidth - gap); + }; calculateMarkerStartOffset = (): number => { + const { width } = this.state; const { min, max, startValue } = this.props; let val; @@ -68,10 +67,11 @@ export default class SliderLabels extends React.Component { val = startValue; } - return Math.round((val / (max - min)) * this.state.width); + return Math.round((val / (max - min)) * width); }; calculateMarkerEndOffset = (): number => { + const { width } = this.state; const { min, max, endValue } = this.props; if (!endValue) { @@ -87,13 +87,14 @@ export default class SliderLabels extends React.Component { val = endValue; } - const w = (val / (max - min)) * this.state.width; - return Math.round(this.state.width - w); + const w = (val / (max - min)) * width; + return Math.round(width - w); }; getStartLabelOffset = (): number => { + const { labelStartWidth } = this.state; const startMarkerOffset = this.calculateMarkerStartOffset(); - const startLabelHalf = this.state.labelStartWidth / 2; + const startLabelHalf = labelStartWidth / 2; return startMarkerOffset < startLabelHalf ? 0 @@ -106,9 +107,10 @@ export default class SliderLabels extends React.Component { }; setPaddingForTwoLabels = (): void => { + const { labelEndWidth, paddingLeft, paddingRight } = this.state; const startLabelOffset = this.getStartLabelOffset(); const endMarkerOffset = this.calculateMarkerEndOffset(); - const endLabelHalf = this.state.labelEndWidth / 2; + const endLabelHalf = labelEndWidth / 2; const endLabelOffset = endMarkerOffset < endLabelHalf ? 0 : endMarkerOffset - endLabelHalf; @@ -118,8 +120,7 @@ export default class SliderLabels extends React.Component { ); const hasOffsetChanged = - this.state.paddingLeft !== startLabelOffset || - this.state.paddingRight !== endLabelOffset; + paddingLeft !== startLabelOffset || paddingRight !== endLabelOffset; if (isBelowMaxPadding && hasOffsetChanged) { this.setState({ @@ -132,9 +133,10 @@ export default class SliderLabels extends React.Component { }; setPaddingForOneLabel = (): void => { + const { paddingLeft, labelStartAtMax } = this.state; const startLabelOffset = this.getStartLabelOffset(); const isBelowMaxPadding = this.isBelowMaxPadding(startLabelOffset); - const hasOffsetChanged = this.state.paddingLeft !== startLabelOffset; + const hasOffsetChanged = paddingLeft !== startLabelOffset; if (isBelowMaxPadding) { if (hasOffsetChanged) { @@ -143,10 +145,10 @@ export default class SliderLabels extends React.Component { }); } - if (this.state.labelStartAtMax) { + if (labelStartAtMax) { this.setState({ labelStartAtMax: false }); } - } else if (this.state.labelStartAtMax === false) { + } else if (labelStartAtMax === false) { this.setState({ labelStartAtMax: true }); } @@ -166,26 +168,26 @@ export default class SliderLabels extends React.Component { }; render() { + const { paddingLeft, paddingRight, labelStartAtMax } = this.state; + const { startLabel, startValue, endLabel, endValue } = this.props; return ( - {this.props.startLabel} + {startLabel || startValue} - {this.props.endLabel && ( + {endValue && ( - {this.props.endLabel} + {endLabel || endValue} )} diff --git a/src/Slider/SliderTypes.js b/src/Slider/SliderTypes.js new file mode 100644 index 0000000..96f52d4 --- /dev/null +++ b/src/Slider/SliderTypes.js @@ -0,0 +1,12 @@ +// @flow + +export type OnLayout = { + +nativeEvent: { + +layout: { + +x: number, + +y: number, + +width: number, + +height: number, + }, + }, +}; diff --git a/src/Slider/index.js b/src/Slider/index.js index 9ffb25a..170e3ec 100644 --- a/src/Slider/index.js +++ b/src/Slider/index.js @@ -1,5 +1,5 @@ // @flow export { default as Slider } from './Slider'; -// export { default as SliderLabels } from './SliderLabels'; -// export { default as SliderWithLabels } from './SliderWithLabels'; +export { default as SliderLabels } from './SliderLabels'; +export { default as CompactSlider } from './CompactSlider'; From a43fff2856ecd48474c60ac5a8fe45838f8b6510 Mon Sep 17 00:00:00 2001 From: lukewalczak Date: Mon, 3 Dec 2018 16:28:32 +0100 Subject: [PATCH 3/9] Fix CI --- src/Slider/CompactSlider.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Slider/CompactSlider.js b/src/Slider/CompactSlider.js index ea5a6dd..5062fec 100644 --- a/src/Slider/CompactSlider.js +++ b/src/Slider/CompactSlider.js @@ -40,7 +40,7 @@ export default class CompactSlider extends React.Component { render() { const { start, end } = this.state; - const { min, max, startLabel, endLabel, step } = this.props; + const { min, max, startLabel, endLabel } = this.props; return ( From 6ff44dce092bfe8367b544ba3b5b8c77bccc5f94 Mon Sep 17 00:00:00 2001 From: lukewalczak Date: Wed, 5 Dec 2018 11:55:54 +0100 Subject: [PATCH 4/9] Patch slider lib --- package.json | 5 +- .../react-native-multi-slider+1.0.0.patch | 629 ++++++++++++ src/Slider/CompactSlider.js | 26 +- src/Slider/Slider.js | 14 +- src/Slider/Slider.stories.js | 4 +- yarn.lock | 953 +++++++++++------- 6 files changed, 1256 insertions(+), 375 deletions(-) create mode 100644 patches/@ptomasroos/react-native-multi-slider+1.0.0.patch diff --git a/package.json b/package.json index 1c994d4..319acae 100644 --- a/package.json +++ b/package.json @@ -16,7 +16,8 @@ "rnstl": "rnstl", "ios": "rnstl && react-native run-ios", "android": "rnstl && react-native run-android", - "npm-publish": "yarn babel-node scripts/createPackage.js && yarn pack" + "npm-publish": "yarn babel-node scripts/createPackage.js && yarn pack", + "prepare": "patch-package" }, "files": [ "/lib", @@ -62,6 +63,8 @@ "flow-bin": "0.78.0", "jest": "^23.6.0", "metro-react-native-babel-preset": "^0.49.1", + "patch-package": "^5.1.1", + "postinstall-prepare": "^1.0.1", "prettier": "^1.15.2", "prettier-eslint-cli": "^4.7.1", "react": "16.6.1", diff --git a/patches/@ptomasroos/react-native-multi-slider+1.0.0.patch b/patches/@ptomasroos/react-native-multi-slider+1.0.0.patch new file mode 100644 index 0000000..2863e69 --- /dev/null +++ b/patches/@ptomasroos/react-native-multi-slider+1.0.0.patch @@ -0,0 +1,629 @@ +patch-package +--- a/node_modules/@ptomasroos/react-native-multi-slider/MultiSlider.js ++++ b/node_modules/@ptomasroos/react-native-multi-slider/MultiSlider.js +@@ -1,3 +1,5 @@ ++// @flow ++ + import React from 'react'; + import PropTypes from 'prop-types'; + +@@ -7,7 +9,8 @@ import { + View, + TouchableHighlight, + Platform, +- I18nManager ++ I18nManager, ++ Text, + } from 'react-native'; + + import DefaultMarker from './DefaultMarker'; +@@ -59,12 +62,9 @@ export default class MultiSlider extends React.Component { + + static defaultProps = { + values: [0], +- onValuesChangeStart: () => { +- }, +- onValuesChange: values => { +- }, +- onValuesChangeFinish: values => { +- }, ++ onValuesChangeStart: () => {}, ++ onValuesChange: values => {}, ++ onValuesChangeFinish: values => {}, + step: 1, + min: 0, + max: 10, +@@ -93,12 +93,14 @@ export default class MultiSlider extends React.Component { + constructor(props) { + super(props); + +- this.optionsArray = this.props.optionsArray || ++ this.optionsArray = ++ this.props.optionsArray || + createArray(this.props.min, this.props.max, this.props.step); + this.stepLength = this.props.sliderLength / this.optionsArray.length; + +- var initialValues = this.props.values.map(value => +- valueToPosition(value, this.optionsArray, this.props.sliderLength)); ++ const initialValues = this.props.values.map(value => ++ valueToPosition(value, this.optionsArray, this.props.sliderLength) ++ ); + + this.state = { + pressedOne: true, +@@ -108,12 +110,14 @@ export default class MultiSlider extends React.Component { + pastTwo: initialValues[1], + positionOne: initialValues[0], + positionTwo: initialValues[1], ++ labelEndWidth: 0, ++ labelStartWidth: 0, + }; + } + + componentWillMount() { +- var customPanResponder = (start, move, end) => { +- return PanResponder.create({ ++ const customPanResponder = (start, move, end) => ++ PanResponder.create({ + onStartShouldSetPanResponder: (evt, gestureState) => true, + onStartShouldSetPanResponderCapture: (evt, gestureState) => true, + onMoveShouldSetPanResponder: (evt, gestureState) => true, +@@ -125,17 +129,16 @@ export default class MultiSlider extends React.Component { + onPanResponderTerminate: (evt, gestureState) => end(gestureState), + onShouldBlockNativeResponder: (evt, gestureState) => true, + }); +- }; + + this._panResponderOne = customPanResponder( + this.startOne, + this.moveOne, +- this.endOne, ++ this.endOne + ); + this._panResponderTwo = customPanResponder( + this.startTwo, + this.moveTwo, +- this.endTwo, ++ this.endTwo + ); + } + +@@ -144,33 +147,35 @@ export default class MultiSlider extends React.Component { + return; + } + +- let nextState = {}; +- if (nextProps.min !== this.props.min || +- nextProps.max !== this.props.max || +- nextProps.values[0] !== this.state.valueOne || +- nextProps.sliderLength !== this.props.sliderLength || +- nextProps.values[1] !== this.state.valueTwo || +- (nextProps.sliderLength !== this.props.sliderLength && +- nextProps.values[1]) ++ const nextState = {}; ++ if ( ++ nextProps.min !== this.props.min || ++ nextProps.max !== this.props.max || ++ nextProps.values[0] !== this.state.valueOne || ++ nextProps.sliderLength !== this.props.sliderLength || ++ nextProps.values[1] !== this.state.valueTwo || ++ (nextProps.sliderLength !== this.props.sliderLength && ++ nextProps.values[1]) + ) { +- this.optionsArray = this.props.optionsArray || ++ this.optionsArray = ++ this.props.optionsArray || + createArray(nextProps.min, nextProps.max, nextProps.step); + + this.stepLength = this.props.sliderLength / this.optionsArray.length; + +- var positionOne = valueToPosition( ++ const positionOne = valueToPosition( + nextProps.values[0], + this.optionsArray, +- nextProps.sliderLength, ++ nextProps.sliderLength + ); + nextState.valueOne = nextProps.values[0]; + nextState.pastOne = positionOne; + nextState.positionOne = positionOne; + +- var positionTwo = valueToPosition( ++ const positionTwo = valueToPosition( + nextProps.values[1], + this.optionsArray, +- nextProps.sliderLength, ++ nextProps.sliderLength + ); + nextState.valueTwo = nextProps.values[1]; + nextState.pastTwo = positionTwo; +@@ -204,25 +209,27 @@ export default class MultiSlider extends React.Component { + if (!this.props.enabledOne) { + return; + } +- const unconfined = I18nManager.isRTL ? this.state.pastOne - gestureState.dx : gestureState.dx + this.state.pastOne; +- var bottom = 0; +- var trueTop = this.state.positionTwo - (this.props.allowOverlap ? 0 : this.stepLength); +- var top = trueTop === 0 ? 0 : trueTop || this.props.sliderLength; +- var confined = unconfined < bottom +- ? bottom +- : unconfined > top ? top : unconfined; +- var slipDisplacement = this.props.touchDimensions.slipDisplacement; ++ const unconfined = I18nManager.isRTL ++ ? this.state.pastOne - gestureState.dx ++ : gestureState.dx + this.state.pastOne; ++ const bottom = 0; ++ const trueTop = ++ this.state.positionTwo - (this.props.allowOverlap ? 0 : this.stepLength); ++ const top = trueTop === 0 ? 0 : trueTop || this.props.sliderLength; ++ const confined = ++ unconfined < bottom ? bottom : unconfined > top ? top : unconfined; ++ const slipDisplacement = this.props.touchDimensions.slipDisplacement; + + if (Math.abs(gestureState.dy) < slipDisplacement || !slipDisplacement) { +- var value = positionToValue( ++ const value = positionToValue( + confined, + this.optionsArray, +- this.props.sliderLength, ++ this.props.sliderLength + ); +- var snapped = valueToPosition( ++ const snapped = valueToPosition( + value, + this.optionsArray, +- this.props.sliderLength, ++ this.props.sliderLength + ); + this.setState({ + positionOne: this.props.snapped ? snapped : confined, +@@ -231,15 +238,17 @@ export default class MultiSlider extends React.Component { + if (value !== this.state.valueOne) { + this.setState( + { ++ activeOne: true, ++ activeTwo: false, + valueOne: value, + }, + () => { +- var change = [this.state.valueOne]; ++ const change = [this.state.valueOne]; + if (this.state.valueTwo) { + change.push(this.state.valueTwo); + } + this.props.onValuesChange(change); +- }, ++ } + ); + } + } +@@ -249,24 +258,26 @@ export default class MultiSlider extends React.Component { + if (!this.props.enabledTwo) { + return; + } +- const unconfined = I18nManager.isRTL ? this.state.pastTwo - gestureState.dx : gestureState.dx + this.state.pastTwo; +- var bottom = this.state.positionOne + (this.props.allowOverlap ? 0 : this.stepLength); +- var top = this.props.sliderLength; +- var confined = unconfined < bottom +- ? bottom +- : unconfined > top ? top : unconfined; +- var slipDisplacement = this.props.touchDimensions.slipDisplacement; ++ const unconfined = I18nManager.isRTL ++ ? this.state.pastTwo - gestureState.dx ++ : gestureState.dx + this.state.pastTwo; ++ const bottom = ++ this.state.positionOne + (this.props.allowOverlap ? 0 : this.stepLength); ++ const top = this.props.sliderLength; ++ const confined = ++ unconfined < bottom ? bottom : unconfined > top ? top : unconfined; ++ const slipDisplacement = this.props.touchDimensions.slipDisplacement; + + if (Math.abs(gestureState.dy) < slipDisplacement || !slipDisplacement) { +- var value = positionToValue( ++ const value = positionToValue( + confined, + this.optionsArray, +- this.props.sliderLength, ++ this.props.sliderLength + ); +- var snapped = valueToPosition( ++ const snapped = valueToPosition( + value, + this.optionsArray, +- this.props.sliderLength, ++ this.props.sliderLength + ); + + this.setState({ +@@ -276,11 +287,16 @@ export default class MultiSlider extends React.Component { + if (value !== this.state.valueTwo) { + this.setState( + { ++ activeTwo: true, ++ activeOne: false, + valueTwo: value, + }, + () => { +- this.props.onValuesChange([this.state.valueOne, this.state.valueTwo]); +- }, ++ this.props.onValuesChange([ ++ this.state.valueOne, ++ this.state.valueTwo, ++ ]); ++ } + ); + } + } +@@ -292,18 +308,22 @@ export default class MultiSlider extends React.Component { + return; + } + ++ const lastOnePosition = ++ Math.min(this.state.positionTwo - this.state.positionOne, 50) - 50; ++ + this.setState( + { ++ lastOnePosition, + pastOne: this.state.positionOne, + onePressed: !this.state.onePressed, + }, + () => { +- var change = [this.state.valueOne]; ++ const change = [this.state.valueOne]; + if (this.state.valueTwo) { + change.push(this.state.valueTwo); + } + this.props.onValuesChangeFinish(change); +- }, ++ } + ); + }; + +@@ -313,8 +333,12 @@ export default class MultiSlider extends React.Component { + return; + } + ++ const lastTwoPosition = ++ Math.min(this.state.positionOne - this.state.positionTwo, 50) + 50; ++ + this.setState( + { ++ lastTwoPosition, + twoPressed: !this.state.twoPressed, + pastTwo: this.state.positionTwo, + }, +@@ -323,14 +347,107 @@ export default class MultiSlider extends React.Component { + this.state.valueOne, + this.state.valueTwo, + ]); +- }, ++ } + ); + }; + ++ getTranslateOne = () => { ++ const { ++ positionOne, ++ positionTwo, ++ labelEndWidth, ++ labelStartWidth, ++ } = this.state; ++ ++ const twoEndCondition = ++ positionTwo + labelEndWidth / 2 > this.props.sliderLength; ++ ++ if (positionOne - labelStartWidth / 2 < 0) { ++ return 0; ++ } ++ ++ const defaultPosition = positionOne - labelStartWidth / 2; ++ ++ const markersGap = positionTwo - positionOne; ++ const diff = twoEndCondition ++ ? markersGap - (labelEndWidth / 2 + labelStartWidth / 2) - 10 ++ : markersGap - (labelEndWidth + labelStartWidth / 2) - 10; ++ ++ if ( ++ twoEndCondition && ++ markersGap - (labelEndWidth + labelStartWidth / 2) - 10 < 0 ++ ) { ++ // collision with marker one stick to left ++ return ( ++ defaultPosition + ++ markersGap - ++ (labelEndWidth + labelStartWidth / 2) - ++ 10 ++ ); ++ } ++ ++ if (diff < 0) { ++ // collision ++ return defaultPosition + diff / 2; ++ } ++ ++ return defaultPosition; ++ }; ++ ++ getTranslateTwo = () => { ++ const { ++ positionOne, ++ positionTwo, ++ labelEndWidth, ++ labelStartWidth, ++ } = this.state; ++ ++ const oneEndCondition = positionOne - labelStartWidth / 2 < 0; ++ ++ if (positionTwo + labelEndWidth / 2 > this.props.sliderLength) { ++ return ( ++ positionTwo - ++ labelEndWidth / 2 - ++ (positionTwo + labelEndWidth / 2 - this.props.sliderLength) ++ ); ++ } ++ ++ const defaultPosition = positionTwo - labelEndWidth / 2; ++ ++ const markersGap = positionTwo - positionOne; ++ const diff = markersGap - (labelEndWidth / 2 + labelStartWidth / 2) - 20; ++ ++ if (diff < 0 && oneEndCondition) { ++ // collision with marker one stick to left ++ return defaultPosition - diff; ++ } ++ ++ if (diff < 0) { ++ // collision ++ return defaultPosition - diff / 2; ++ } ++ ++ return defaultPosition; ++ }; ++ ++ saveLabelEndWidth = (e: OnLayout) => { ++ this.setState({ labelEndWidth: Math.floor(e.nativeEvent.layout.width) }); ++ }; ++ ++ saveLabelStartWidth = (e: OnLayout) => { ++ this.setState({ labelStartWidth: Math.floor(e.nativeEvent.layout.width) }); ++ }; ++ + render() { + const { positionOne, positionTwo } = this.state; +- const { selectedStyle, unselectedStyle, sliderLength, markerOffsetX, markerOffsetY } = this.props; +- const twoMarkers = this.props.values.length == 2; // when allowOverlap, positionTwo could be 0, identified as string '0' and throwing 'RawText 0 needs to be wrapped in ' error ++ const { ++ selectedStyle, ++ unselectedStyle, ++ sliderLength, ++ markerOffsetX, ++ markerOffsetY, ++ } = this.props; ++ const twoMarkers = this.props.values.length == 2; // when allowOverlap, positionTwo could be 0, identified as string '0' and throwing 'RawText 0 needs to be wrapped in ' error + + const trackOneLength = positionOne; + const trackOneStyle = twoMarkers +@@ -358,9 +475,15 @@ export default class MultiSlider extends React.Component { + borderRadius: borderRadius || 0, + }; + +- const markerContainerOne = { top: markerOffsetY - 24, left : trackOneLength + markerOffsetX - 24 } ++ const markerContainerOne = { ++ top: markerOffsetY - 24, ++ left: trackOneLength + markerOffsetX - 24, ++ }; + +- const markerContainerTwo = { top: markerOffsetY - 24, right: trackThreeLength + markerOffsetX - 24 }; ++ const markerContainerTwo = { ++ top: markerOffsetY - 24, ++ right: trackThreeLength + markerOffsetX - 24, ++ }; + + return ( + +@@ -381,15 +504,60 @@ export default class MultiSlider extends React.Component { + { width: trackTwoLength }, + ]} + /> +- {twoMarkers && ++ {twoMarkers && ( ++ ++ )} + } ++ style={{ ++ position: 'absolute', ++ bottom: 18, ++ transform: [ ++ { ++ translateX: this.getTranslateOne(), ++ }, ++ ], ++ }} ++ onLayout={this.saveLabelStartWidth} ++ > ++ ++ {this.state.startLabel || this.state.valueOne} ++ ++ ++ ++ ++ {this.props.endLabel || this.state.valueTwo} ++ ++ + + this._markerOne = component} +- {...this._panResponderOne.panHandlers} ++ style={{ ++ justifyContent: 'center', ++ alignItems: 'center', ++ }} + > +- {isMarkersSeparated === false ? +- (this._markerOne = component)} ++ {...this._panResponderOne.panHandlers} ++ > ++ {isMarkersSeparated === false ? ( ++ +- : +- ++ ) : ( ++ +- } +- ++ /> ++ )} ++ + + +- {twoMarkers && +- positionOne !== this.props.sliderLength && +- +- this._markerTwo = component} +- {...this._panResponderTwo.panHandlers} +- > +- {isMarkersSeparated === false ? +- +- : +- +- } ++ {twoMarkers && positionOne !== this.props.sliderLength && ( ++ ++ ++ ++ (this._markerTwo = component)} ++ {...this._panResponderTwo.panHandlers} ++ > ++ {isMarkersSeparated === false ? ( ++ ++ ) : ( ++ ++ )} ++ ++ ++ + +- } ++ )} + + + ); +@@ -468,7 +657,7 @@ const styles = StyleSheet.create({ + container: { + position: 'relative', + height: 50, +- justifyContent: 'center' ++ justifyContent: 'center', + }, + fullTrack: { + flexDirection: 'row', diff --git a/src/Slider/CompactSlider.js b/src/Slider/CompactSlider.js index 5062fec..5cac2a2 100644 --- a/src/Slider/CompactSlider.js +++ b/src/Slider/CompactSlider.js @@ -2,17 +2,17 @@ import * as React from 'react'; import { View } from 'react-native'; + import Slider from './Slider'; -import SliderLabels from './SliderLabels'; import StyleSheet from '../PlatformStyleSheet'; type Props = {| - min: number, - max: number, - start: number, - end: number, - startLabel?: React.Node, - endLabel?: React.Node, + +min: number, + +max: number, + +start: number, + +end: number, + +startLabel?: React.Node, + +endLabel?: React.Node, |}; type State = {| @@ -44,14 +44,6 @@ export default class CompactSlider extends React.Component { return ( - { min={min} max={max} onChange={this.handlePriceChanged} + startLabel={startLabel} + endLabel={endLabel} /> @@ -68,6 +62,6 @@ export default class CompactSlider extends React.Component { const styles = StyleSheet.create({ sliderContainer: { - paddingHorizontal: 10, + paddingHorizontal: 20, }, }); diff --git a/src/Slider/Slider.js b/src/Slider/Slider.js index b0af960..0fe0f72 100644 --- a/src/Slider/Slider.js +++ b/src/Slider/Slider.js @@ -16,6 +16,8 @@ type Props = {| +endValue?: number, +snapped?: boolean, +style?: StylePropType, + +startLabel?: React.Node, + +endLabel?: React.Node, |}; type State = {| @@ -65,7 +67,15 @@ export default class Slider extends React.Component { }; render() { - const { startValue, endValue, snapped, style, onChange } = this.props; + const { + startValue, + endValue, + snapped, + style, + onChange, + startLabel, + endLabel, + } = this.props; const { width } = this.state; const { max, min, enabledOne, enabledTwo } = this.getMaxMinAndEnabled(); @@ -99,6 +109,8 @@ export default class Slider extends React.Component { onValuesChange={onChange} enabledOne={enabledOne} enabledTwo={enabledTwo} + startLabel={startLabel} + endLabel={endLabel} /> ); diff --git a/src/Slider/Slider.stories.js b/src/Slider/Slider.stories.js index 3bd414d..4a844bd 100644 --- a/src/Slider/Slider.stories.js +++ b/src/Slider/Slider.stories.js @@ -7,4 +7,6 @@ import CompactSlider from './CompactSlider'; storiesOf('Slider', module) .addDecorator(withKnobs) - .add('Default', () => ); + .add('Default', () => ( + + )); diff --git a/yarn.lock b/yarn.lock index 39ead0c..2b81c37 100644 --- a/yarn.lock +++ b/yarn.lock @@ -10,17 +10,17 @@ "@babel/highlight" "^7.0.0" "@babel/core@^7.0.0", "@babel/core@^7.1.6": - version "7.1.6" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.1.6.tgz#3733cbee4317429bc87c62b29cf8587dba7baeb3" - integrity sha512-Hz6PJT6e44iUNpAn8AoyAs6B3bl60g7MJQaI0rZEar6ECzh6+srYO1xlIdssio34mPaUtAb1y+XlkkSJzok3yw== + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.2.0.tgz#a4dd3814901998e93340f0086e9867fefa163ada" + integrity sha512-7pvAdC4B+iKjFFp9Ztj0QgBndJ++qaMeonT185wAqUnhipw8idm9Rv1UMyBuKtYjfl6ORNkgEgcsYLfHX/GpLw== dependencies: "@babel/code-frame" "^7.0.0" - "@babel/generator" "^7.1.6" - "@babel/helpers" "^7.1.5" - "@babel/parser" "^7.1.6" + "@babel/generator" "^7.2.0" + "@babel/helpers" "^7.2.0" + "@babel/parser" "^7.2.0" "@babel/template" "^7.1.2" "@babel/traverse" "^7.1.6" - "@babel/types" "^7.1.6" + "@babel/types" "^7.2.0" convert-source-map "^1.1.0" debug "^4.1.0" json5 "^2.1.0" @@ -29,12 +29,12 @@ semver "^5.4.1" source-map "^0.5.0" -"@babel/generator@^7.0.0", "@babel/generator@^7.1.6": - version "7.1.6" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.1.6.tgz#001303cf87a5b9d093494a4bf251d7b5d03d3999" - integrity sha512-brwPBtVvdYdGxtenbQgfCdDPmtkmUBZPjUoK5SXJEBuHaA5BCubh9ly65fzXz7R6o5rA76Rs22ES8Z+HCc0YIQ== +"@babel/generator@^7.0.0", "@babel/generator@^7.1.6", "@babel/generator@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.2.0.tgz#eaf3821fa0301d9d4aef88e63d4bcc19b73ba16c" + integrity sha512-BA75MVfRlFQG2EZgFYIwyT1r6xSkwfP2bdkY/kLZusEYWiJs4xCowab/alaEaT0wSvmVuXGqiefeBlP+7V1yKg== dependencies: - "@babel/types" "^7.1.6" + "@babel/types" "^7.2.0" jsesc "^2.5.1" lodash "^4.17.10" source-map "^0.5.0" @@ -72,6 +72,17 @@ "@babel/traverse" "^7.1.0" "@babel/types" "^7.0.0" +"@babel/helper-create-class-features-plugin@^7.2.1": + version "7.2.1" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.2.1.tgz#f6e8027291669ef64433220dc8327531233f1161" + integrity sha512-EsEP7XLFmcJHjcuFYBxYD1FkP0irC8C9fsrt2tX/jrAi/eTnFI6DOPgVFb+WREeg1GboF+Ib+nCHbGBodyAXSg== + dependencies: + "@babel/helper-function-name" "^7.1.0" + "@babel/helper-member-expression-to-functions" "^7.0.0" + "@babel/helper-optimise-call-expression" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-replace-supers" "^7.1.0" + "@babel/helper-define-map@^7.1.0": version "7.1.0" resolved "https://registry.yarnpkg.com/@babel/helper-define-map/-/helper-define-map-7.1.0.tgz#3b74caec329b3c80c116290887c0dd9ae468c20c" @@ -194,23 +205,23 @@ "@babel/types" "^7.0.0" "@babel/helper-wrap-function@^7.1.0": - version "7.1.0" - resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.1.0.tgz#8cf54e9190706067f016af8f75cb3df829cc8c66" - integrity sha512-R6HU3dete+rwsdAfrOzTlE9Mcpk4RjU3aX3gi9grtmugQY0u79X7eogUvfXA5sI81Mfq1cn6AgxihfN33STjJA== + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.2.0.tgz#c4e0012445769e2815b55296ead43a958549f6fa" + integrity sha512-o9fP1BZLLSrYlxYEYyl2aS+Flun5gtjTIG8iln+XuEzQTs0PLagAGSXUcqruJwD5fM48jzIEggCKpIfWTcR7pQ== dependencies: "@babel/helper-function-name" "^7.1.0" "@babel/template" "^7.1.0" "@babel/traverse" "^7.1.0" - "@babel/types" "^7.0.0" + "@babel/types" "^7.2.0" -"@babel/helpers@^7.1.5": - version "7.1.5" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.1.5.tgz#68bfc1895d685f2b8f1995e788dbfe1f6ccb1996" - integrity sha512-2jkcdL02ywNBry1YNFAH/fViq4fXG0vdckHqeJk+75fpQ2OH+Az6076tX/M0835zA45E0Cqa6pV5Kiv9YOqjEg== +"@babel/helpers@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.2.0.tgz#8335f3140f3144270dc63c4732a4f8b0a50b7a21" + integrity sha512-Fr07N+ea0dMcMN8nFpuK6dUIT7/ivt9yKQdEEnjVS83tG2pHwPi03gYmk/tyuwONnZ+sY+GFFPlWGgCtW1hF9A== dependencies: "@babel/template" "^7.1.2" "@babel/traverse" "^7.1.5" - "@babel/types" "^7.1.5" + "@babel/types" "^7.2.0" "@babel/highlight@^7.0.0": version "7.0.0" @@ -222,227 +233,221 @@ js-tokens "^4.0.0" "@babel/node@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/node/-/node-7.0.0.tgz#20e55bb0e015700a0f6ff281c712de7619ad56f4" - integrity sha512-mKbN8Bb1TzH9YnKMWMhBRX+o5MVJHtUSalNcsiGa4FRgVfY7ozqkbttuIDWqeXxZ3rwI9ZqmCUr9XsPV2VYlSw== + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/node/-/node-7.2.0.tgz#0b601be8ef03897923e3908dc18129836d44e6fa" + integrity sha512-RFwVH5xWpwd4SfkOI0WsK9AnF5o+C9iMTvUkkTb7jUNaiDieV8BGK38t74bTPjgc4FCxSAWNKqaqgDW4fenkyA== dependencies: "@babel/polyfill" "^7.0.0" "@babel/register" "^7.0.0" commander "^2.8.1" - fs-readdir-recursive "^1.0.0" lodash "^4.17.10" - output-file-sync "^2.0.0" v8flags "^3.1.1" -"@babel/parser@^7.0.0", "@babel/parser@^7.1.2", "@babel/parser@^7.1.3", "@babel/parser@^7.1.6": - version "7.1.6" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.1.6.tgz#16e97aca1ec1062324a01c5a6a7d0df8dd189854" - integrity sha512-dWP6LJm9nKT6ALaa+bnL247GHHMWir3vSlZ2+IHgHgktZQx0L3Uvq2uAWcuzIe+fujRsYWBW2q622C5UvGK9iQ== +"@babel/parser@^7.0.0", "@babel/parser@^7.1.2", "@babel/parser@^7.1.3", "@babel/parser@^7.1.6", "@babel/parser@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.2.0.tgz#02d01dbc330b6cbf36b76ac93c50752c69027065" + integrity sha512-M74+GvK4hn1eejD9lZ7967qAwvqTZayQa3g10ag4s9uewgR7TKjeaT0YMyoq+gVfKYABiWZ4MQD701/t5e1Jhg== "@babel/plugin-external-helpers@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-external-helpers/-/plugin-external-helpers-7.0.0.tgz#61ee7ba5dba27d7cad72a13d46bec23c060b762e" - integrity sha512-tZKTMdhZvTy0KCEX5EGQQm1RHr7jUa36q/yax1baEA0yZapVYmu10yW7LTqijITgSq416gPVjrcexiA6y4pJlA== + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-external-helpers/-/plugin-external-helpers-7.2.0.tgz#7f4cb7dee651cd380d2034847d914288467a6be4" + integrity sha512-QFmtcCShFkyAsNtdCM3lJPmRe1iB+vPZymlB4LnDIKEBj2yKQLQKtoxXxJ8ePT5fwMl4QGg303p4mB0UsSI2/g== dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-proposal-async-generator-functions@^7.1.0": - version "7.1.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.1.0.tgz#41c1a702e10081456e23a7b74d891922dd1bb6ce" - integrity sha512-Fq803F3Jcxo20MXUSDdmZZXrPe6BWyGcWBPPNB/M7WaUYESKDeKMOGIxEzQOjGSmW/NWb6UaPZrtTB2ekhB/ew== +"@babel/plugin-proposal-async-generator-functions@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.2.0.tgz#b289b306669dce4ad20b0252889a15768c9d417e" + integrity sha512-+Dfo/SCQqrwx48ptLVGLdE39YtWRuKc/Y9I5Fy0P1DDBB9lsAHpjcEJQt+4IifuSOSTLBKJObJqMvaO1pIE8LQ== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@babel/helper-remap-async-to-generator" "^7.1.0" - "@babel/plugin-syntax-async-generators" "^7.0.0" + "@babel/plugin-syntax-async-generators" "^7.2.0" "@babel/plugin-proposal-class-properties@^7.0.0", "@babel/plugin-proposal-class-properties@^7.1.0": - version "7.1.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.1.0.tgz#9af01856b1241db60ec8838d84691aa0bd1e8df4" - integrity sha512-/PCJWN+CKt5v1xcGn4vnuu13QDoV+P7NcICP44BoonAJoPSGwVkgrXihFIQGiEjjPlUDBIw1cM7wYFLARS2/hw== + version "7.2.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.2.1.tgz#c734a53e0a1ec40fe5c22ee5069d26da3b187d05" + integrity sha512-/4FKFChkQ2Jgb8lBDsvFX496YTi7UWTetVgS8oJUpX1e/DlaoeEK57At27ug8Hu2zI2g8bzkJ+8k9qrHZRPGPA== dependencies: - "@babel/helper-function-name" "^7.1.0" - "@babel/helper-member-expression-to-functions" "^7.0.0" - "@babel/helper-optimise-call-expression" "^7.0.0" + "@babel/helper-create-class-features-plugin" "^7.2.1" "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-replace-supers" "^7.1.0" - "@babel/plugin-syntax-class-properties" "^7.0.0" "@babel/plugin-proposal-export-default-from@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-default-from/-/plugin-proposal-export-default-from-7.0.0.tgz#a057bbfd4649facfe39f33a537e18554bdd2b5da" - integrity sha512-cWhkx6SyjZ4caFOanoPmDNgQCuYYTmou4QXy886JsyLTw/vhWQbop2gLKsWyyswrJkKTB7fSNxVYbP/oEsoySA== + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-default-from/-/plugin-proposal-export-default-from-7.2.0.tgz#737b0da44b9254b6152fe29bb99c64e5691f6f68" + integrity sha512-NVfNe7F6nsasG1FnvcFxh2FN0l04ZNe75qTOAVOILWPam0tw9a63RtT/Dab8dPjedZa4fTQaQ83yMMywF9OSug== dependencies: "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-syntax-export-default-from" "^7.0.0" + "@babel/plugin-syntax-export-default-from" "^7.2.0" -"@babel/plugin-proposal-json-strings@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.0.0.tgz#3b4d7b5cf51e1f2e70f52351d28d44fc2970d01e" - integrity sha512-kfVdUkIAGJIVmHmtS/40i/fg/AGnw/rsZBCaapY5yjeO5RA9m165Xbw9KMOu2nqXP5dTFjEjHdfNdoVcHv133Q== +"@babel/plugin-proposal-json-strings@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.2.0.tgz#568ecc446c6148ae6b267f02551130891e29f317" + integrity sha512-MAFV1CA/YVmYwZG0fBQyXhmj0BHCB5egZHCKWIFVv/XCxAeVGIHfos3SwDck4LvCllENIAg7xMKOG5kH0dzyUg== dependencies: "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-syntax-json-strings" "^7.0.0" + "@babel/plugin-syntax-json-strings" "^7.2.0" "@babel/plugin-proposal-nullish-coalescing-operator@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.0.0.tgz#b72ec31adf612d062dc0348316246127a451e45f" - integrity sha512-QIN3UFo1ul4ruAsjIqK43PeXedo1qY74zeGrODJl1KfCGeMc6qJC4rb5Ylml/smzxibqsDeVZGH+TmWHCldRQQ== + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.2.0.tgz#c3fda766187b2f2162657354407247a758ee9cf9" + integrity sha512-QXj/YjFuFJd68oDvoc1e8aqLr2wz7Kofzvp6Ekd/o7MWZl+nZ0/cpStxND+hlZ7DpRWAp7OmuyT2areZ2V3YUA== dependencies: "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.0.0" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.2.0" -"@babel/plugin-proposal-object-rest-spread@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.0.0.tgz#9a17b547f64d0676b6c9cecd4edf74a82ab85e7e" - integrity sha512-14fhfoPcNu7itSen7Py1iGN0gEm87hX/B+8nZPqkdmANyyYWYMY2pjA3r8WXbWVKMzfnSNS0xY8GVS0IjXi/iw== +"@babel/plugin-proposal-object-rest-spread@^7.0.0", "@babel/plugin-proposal-object-rest-spread@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.2.0.tgz#88f5fec3e7ad019014c97f7ee3c992f0adbf7fb8" + integrity sha512-1L5mWLSvR76XYUQJXkd/EEQgjq8HHRP6lQuZTTg0VA4tTGPpGemmCdAfQIz1rzEuWAm+ecP8PyyEm30jC1eQCg== dependencies: "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-syntax-object-rest-spread" "^7.0.0" + "@babel/plugin-syntax-object-rest-spread" "^7.2.0" -"@babel/plugin-proposal-optional-catch-binding@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.0.0.tgz#b610d928fe551ff7117d42c8bb410eec312a6425" - integrity sha512-JPqAvLG1s13B/AuoBjdBYvn38RqW6n1TzrQO839/sIpqLpbnXKacsAgpZHzLD83Sm8SDXMkkrAvEnJ25+0yIpw== +"@babel/plugin-proposal-optional-catch-binding@^7.0.0", "@babel/plugin-proposal-optional-catch-binding@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.2.0.tgz#135d81edb68a081e55e56ec48541ece8065c38f5" + integrity sha512-mgYj3jCcxug6KUcX4OBoOJz3CMrwRfQELPQ5560F70YQUBZB7uac9fqaWamKR1iWUzGiK2t0ygzjTScZnVz75g== dependencies: "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-syntax-optional-catch-binding" "^7.0.0" + "@babel/plugin-syntax-optional-catch-binding" "^7.2.0" "@babel/plugin-proposal-optional-chaining@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.0.0.tgz#3d344d4152253379b8758e7d041148e8787c4a9d" - integrity sha512-7x8HLa71OzNiofbQUVakS0Kmg++6a+cXNfS7QKHbbv03SuSaumJyaWsfNgw+T7aqrJlqurYpZqrkPgXu0iZK0w== + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.2.0.tgz#ae454f4c21c6c2ce8cb2397dc332ae8b420c5441" + integrity sha512-ea3Q6edZC/55wEBVZAEz42v528VulyO0eir+7uky/sT4XRcdkWJcFi1aPtitTlwUzGnECWJNExWww1SStt+yWw== dependencies: "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-syntax-optional-chaining" "^7.0.0" + "@babel/plugin-syntax-optional-chaining" "^7.2.0" -"@babel/plugin-proposal-unicode-property-regex@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.0.0.tgz#498b39cd72536cd7c4b26177d030226eba08cd33" - integrity sha512-tM3icA6GhC3ch2SkmSxv7J/hCWKISzwycub6eGsDrFDgukD4dZ/I+x81XgW0YslS6mzNuQ1Cbzh5osjIMgepPQ== +"@babel/plugin-proposal-unicode-property-regex@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.2.0.tgz#abe7281fe46c95ddc143a65e5358647792039520" + integrity sha512-LvRVYb7kikuOtIoUeWTkOxQEV1kYvL5B6U3iWEGCzPNRus1MzJweFqORTj+0jkxozkTSYNJozPOddxmqdqsRpw== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@babel/helper-regex" "^7.0.0" regexpu-core "^4.2.0" -"@babel/plugin-syntax-async-generators@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.0.0.tgz#bf0891dcdbf59558359d0c626fdc9490e20bc13c" - integrity sha512-im7ged00ddGKAjcZgewXmp1vxSZQQywuQXe2B1A7kajjZmDeY/ekMPmWr9zJgveSaQH0k7BcGrojQhcK06l0zA== +"@babel/plugin-syntax-async-generators@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.2.0.tgz#69e1f0db34c6f5a0cf7e2b3323bf159a76c8cb7f" + integrity sha512-1ZrIRBv2t0GSlcwVoQ6VgSLpLgiN/FVQUzt9znxo7v2Ov4jJrs8RY8tv0wvDmFN3qIdMKWrmMMW6yZ0G19MfGg== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-syntax-class-properties@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.0.0.tgz#e051af5d300cbfbcec4a7476e37a803489881634" - integrity sha512-cR12g0Qzn4sgkjrbrzWy2GE7m9vMl/sFkqZ3gIpAQdrvPDnLM8180i+ANDFIXfjHo9aqp0ccJlQ0QNZcFUbf9w== + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.2.0.tgz#23b3b7b9bcdabd73672a9149f728cd3be6214812" + integrity sha512-UxYaGXYQ7rrKJS/PxIKRkv3exi05oH7rokBAsmCSsCxz1sVPZ7Fu6FzKoGgUvmY+0YgSkYHgUoCh5R5bCNBQlw== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-syntax-dynamic-import@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.0.0.tgz#6dfb7d8b6c3be14ce952962f658f3b7eb54c33ee" - integrity sha512-Gt9xNyRrCHCiyX/ZxDGOcBnlJl0I3IWicpZRC4CdC0P5a/I07Ya2OAMEBU+J7GmRFVmIetqEYRko6QYRuKOESw== + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.2.0.tgz#69c159ffaf4998122161ad8ebc5e6d1f55df8612" + integrity sha512-mVxuJ0YroI/h/tbFTPGZR8cv6ai+STMKNBq0f8hFxsxWjl94qqhsb+wXbpNMDPU3cfR1TIsVFzU3nXyZMqyK4w== dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-syntax-export-default-from@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-export-default-from/-/plugin-syntax-export-default-from-7.0.0.tgz#084b639bce3d42f3c5bf3f68ccb42220bb2d729d" - integrity sha512-HNnjg/fFFbnuLAqr/Ocp1Y3GB4AjmXcu1xxn3ql3bS2kGrB/qi+Povshb8i3hOkE5jNozzh8r/0/lq1w8oOWbQ== +"@babel/plugin-syntax-export-default-from@^7.0.0", "@babel/plugin-syntax-export-default-from@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-export-default-from/-/plugin-syntax-export-default-from-7.2.0.tgz#edd83b7adc2e0d059e2467ca96c650ab6d2f3820" + integrity sha512-c7nqUnNST97BWPtoe+Ssi+fJukc9P9/JMZ71IOMNQWza2E+Psrd46N6AEvtw6pqK+gt7ChjXyrw4SPDO79f3Lw== dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-syntax-flow@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.0.0.tgz#70638aeaad9ee426bc532e51523cff8ff02f6f17" - integrity sha512-zGcuZWiWWDa5qTZ6iAnpG0fnX/GOu49pGR5PFvkQ9GmKNaSphXQnlNXh/LG20sqWtNrx/eB6krzfEzcwvUyeFA== +"@babel/plugin-syntax-flow@^7.0.0", "@babel/plugin-syntax-flow@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.2.0.tgz#a765f061f803bc48f240c26f8747faf97c26bf7c" + integrity sha512-r6YMuZDWLtLlu0kqIim5o/3TNRAlWb073HwT3e2nKf9I8IIvOggPrnILYPsrrKilmn/mYEMCf/Z07w3yQJF6dg== dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-syntax-json-strings@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.0.0.tgz#0d259a68090e15b383ce3710e01d5b23f3770cbd" - integrity sha512-UlSfNydC+XLj4bw7ijpldc1uZ/HB84vw+U6BTuqMdIEmz/LDe63w/GHtpQMdXWdqQZFeAI9PjnHe/vDhwirhKA== +"@babel/plugin-syntax-json-strings@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.2.0.tgz#72bd13f6ffe1d25938129d2a186b11fd62951470" + integrity sha512-5UGYnMSLRE1dqqZwug+1LISpA403HzlSfsg6P9VXU6TBjcSHeNlw4DxDx7LgpF+iKZoOG/+uzqoRHTdcUpiZNg== dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-syntax-jsx@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.0.0.tgz#034d5e2b4e14ccaea2e4c137af7e4afb39375ffd" - integrity sha512-PdmL2AoPsCLWxhIr3kG2+F9v4WH06Q3z+NoGVpQgnUNGcagXHq5sB3OXxkSahKq9TLdNMN/AJzFYSOo8UKDMHg== +"@babel/plugin-syntax-jsx@^7.0.0", "@babel/plugin-syntax-jsx@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.2.0.tgz#0b85a3b4bc7cdf4cc4b8bf236335b907ca22e7c7" + integrity sha512-VyN4QANJkRW6lDBmENzRszvZf3/4AXaj9YR7GwrWeeN9tEBPuXbmDYVU9bYBN0D70zCWVwUy0HWq2553VCb6Hw== dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-syntax-nullish-coalescing-operator@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.0.0.tgz#b60931d5a15da82625fff6657c39419969598743" - integrity sha512-oAJmMsAvTSIk9y0sZdU2S/nY44PEUuHN7EzNDMgbuR4e/OwyfR9lSmoBJBZ2lslFZIqhksrTt4i+av7uKfNYDw== +"@babel/plugin-syntax-nullish-coalescing-operator@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.2.0.tgz#f75083dfd5ade73e783db729bbd87e7b9efb7624" + integrity sha512-lRCEaKE+LTxDQtgbYajI04ddt6WW0WJq57xqkAZ+s11h4YgfRHhVA/Y2VhfPzzFD4qeLHWg32DMp9HooY4Kqlg== dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-syntax-object-rest-spread@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.0.0.tgz#37d8fbcaf216bd658ea1aebbeb8b75e88ebc549b" - integrity sha512-5A0n4p6bIiVe5OvQPxBnesezsgFJdHhSs3uFSvaPdMqtsovajLZ+G2vZyvNe10EzJBWWo3AcHGKhAFUxqwp2dw== +"@babel/plugin-syntax-object-rest-spread@^7.0.0", "@babel/plugin-syntax-object-rest-spread@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.2.0.tgz#3b7a3e733510c57e820b9142a6579ac8b0dfad2e" + integrity sha512-t0JKGgqk2We+9may3t0xDdmneaXmyxq0xieYcKHxIsrJO64n1OiMWNUtc5gQK1PA0NpdCRrtZp4z+IUaKugrSA== dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-syntax-optional-catch-binding@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.0.0.tgz#886f72008b3a8b185977f7cb70713b45e51ee475" - integrity sha512-Wc+HVvwjcq5qBg1w5RG9o9RVzmCaAg/Vp0erHCKpAYV8La6I94o4GQAmFYNmkzoMO6gzoOSulpKeSSz6mPEoZw== +"@babel/plugin-syntax-optional-catch-binding@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.2.0.tgz#a94013d6eda8908dfe6a477e7f9eda85656ecf5c" + integrity sha512-bDe4xKNhb0LI7IvZHiA13kff0KEfaGX/Hv4lMA9+7TEc63hMNvfKo6ZFpXhKuEp+II/q35Gc4NoMeDZyaUbj9w== dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-syntax-optional-chaining@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.0.0.tgz#1e6ecba124310b5d3a8fc1e00d50b1c4c2e05e68" - integrity sha512-QXedQsZf8yua1nNrXSePT0TsGSQH9A1iK08m9dhCMdZeJaaxYcQfXdgHWVV6Cp7WE/afPVvSKIsAHK5wP+yxDA== +"@babel/plugin-syntax-optional-chaining@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.2.0.tgz#a59d6ae8c167e7608eaa443fda9fa8fa6bf21dff" + integrity sha512-HtGCtvp5Uq/jH/WNUPkK6b7rufnCPLLlDAFN7cmACoIjaOOiXxUt3SswU5loHqrhtqTsa/WoLQ1OQ1AGuZqaWA== dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-syntax-typescript@^7.0.0": - version "7.1.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.1.5.tgz#956a1f43dec8a9d6b36221f5c865335555fdcb98" - integrity sha512-VqK5DFcS6/T8mT5CcJv1BwZLYFxkHiGZmP7Hs87F53lSToE/qfL7TpPrqFSaKyZi9w7Z/b/tmOGZZDupcJjFvw== +"@babel/plugin-syntax-typescript@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.2.0.tgz#55d240536bd314dcbbec70fd949c5cabaed1de29" + integrity sha512-WhKr6yu6yGpGcNMVgIBuI9MkredpVc7Y3YR4UzEZmDztHoL6wV56YBHLhWnjO1EvId1B32HrD3DRFc+zSoKI1g== dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-arrow-functions@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.0.0.tgz#a6c14875848c68a3b4b3163a486535ef25c7e749" - integrity sha512-2EZDBl1WIO/q4DIkIp4s86sdp4ZifL51MoIviLY/gG/mLSuOIEg7J8o6mhbxOTvUJkaN50n+8u41FVsr5KLy/w== +"@babel/plugin-transform-arrow-functions@^7.0.0", "@babel/plugin-transform-arrow-functions@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.2.0.tgz#9aeafbe4d6ffc6563bf8f8372091628f00779550" + integrity sha512-ER77Cax1+8/8jCB9fo4Ud161OZzWN5qawi4GusDuRLcDbDG+bIGYY20zb2dfAFdTRGzrfq2xZPvF0R64EHnimg== dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-async-to-generator@^7.0.0", "@babel/plugin-transform-async-to-generator@^7.1.0": - version "7.1.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.1.0.tgz#109e036496c51dd65857e16acab3bafdf3c57811" - integrity sha512-rNmcmoQ78IrvNCIt/R9U+cixUHeYAzgusTFgIAv+wQb9HJU4szhpDD6e5GCACmj/JP5KxuCwM96bX3L9v4ZN/g== +"@babel/plugin-transform-async-to-generator@^7.0.0", "@babel/plugin-transform-async-to-generator@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.2.0.tgz#68b8a438663e88519e65b776f8938f3445b1a2ff" + integrity sha512-CEHzg4g5UraReozI9D4fblBYABs7IM6UerAVG7EJVrTLC5keh00aEuLUT+O40+mJCEzaXkYfTCUKIyeDfMOFFQ== dependencies: "@babel/helper-module-imports" "^7.0.0" "@babel/helper-plugin-utils" "^7.0.0" "@babel/helper-remap-async-to-generator" "^7.1.0" -"@babel/plugin-transform-block-scoped-functions@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.0.0.tgz#482b3f75103927e37288b3b67b65f848e2aa0d07" - integrity sha512-AOBiyUp7vYTqz2Jibe1UaAWL0Hl9JUXEgjFvvvcSc9MVDItv46ViXFw2F7SVt1B5k+KWjl44eeXOAk3UDEaJjQ== +"@babel/plugin-transform-block-scoped-functions@^7.0.0", "@babel/plugin-transform-block-scoped-functions@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.2.0.tgz#5d3cc11e8d5ddd752aa64c9148d0db6cb79fd190" + integrity sha512-ntQPR6q1/NKuphly49+QiQiTN0O63uOwjdD6dhIjSWBI5xlrbUFh720TIpzBhpnrLfv2tNH/BXvLIab1+BAI0w== dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-block-scoping@^7.0.0", "@babel/plugin-transform-block-scoping@^7.1.5": - version "7.1.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.1.5.tgz#3e8e0bc9a5104519923302a24f748f72f2f61f37" - integrity sha512-jlYcDrz+5ayWC7mxgpn1Wj8zj0mmjCT2w0mPIMSwO926eXBRxpEgoN/uQVRBfjtr8ayjcmS+xk2G1jaP8JjMJQ== +"@babel/plugin-transform-block-scoping@^7.0.0", "@babel/plugin-transform-block-scoping@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.2.0.tgz#f17c49d91eedbcdf5dd50597d16f5f2f770132d4" + integrity sha512-vDTgf19ZEV6mx35yiPJe4fS02mPQUUcBNwWQSZFXSzTSbsJFQvHt7DqyS3LK8oOWALFOsJ+8bbqBgkirZteD5Q== dependencies: "@babel/helper-plugin-utils" "^7.0.0" lodash "^4.17.10" -"@babel/plugin-transform-classes@^7.0.0", "@babel/plugin-transform-classes@^7.1.0": - version "7.1.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.1.0.tgz#ab3f8a564361800cbc8ab1ca6f21108038432249" - integrity sha512-rNaqoD+4OCBZjM7VaskladgqnZ1LO6o2UxuWSDzljzW21pN1KXkB7BstAVweZdxQkHAujps5QMNOTWesBciKFg== +"@babel/plugin-transform-classes@^7.0.0", "@babel/plugin-transform-classes@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.2.0.tgz#374f8876075d7d21fea55aeb5c53561259163f96" + integrity sha512-aPCEkrhJYebDXcGTAP+cdUENkH7zqOlgbKwLbghjjHpJRJBWM/FSlCjMoPGA8oUdiMfOrk3+8EFPLLb5r7zj2w== dependencies: "@babel/helper-annotate-as-pure" "^7.0.0" "@babel/helper-define-map" "^7.1.0" @@ -453,110 +458,110 @@ "@babel/helper-split-export-declaration" "^7.0.0" globals "^11.1.0" -"@babel/plugin-transform-computed-properties@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.0.0.tgz#2fbb8900cd3e8258f2a2ede909b90e7556185e31" - integrity sha512-ubouZdChNAv4AAWAgU7QKbB93NU5sHwInEWfp+/OzJKA02E6Woh9RVoX4sZrbRwtybky/d7baTUqwFx+HgbvMA== +"@babel/plugin-transform-computed-properties@^7.0.0", "@babel/plugin-transform-computed-properties@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.2.0.tgz#83a7df6a658865b1c8f641d510c6f3af220216da" + integrity sha512-kP/drqTxY6Xt3NNpKiMomfgkNn4o7+vKxK2DDKcBG9sHj51vHqMBGy8wbDS/J4lMxnqs153/T3+DmCEAkC5cpA== dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-destructuring@^7.0.0": - version "7.1.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.1.3.tgz#e69ff50ca01fac6cb72863c544e516c2b193012f" - integrity sha512-Mb9M4DGIOspH1ExHOUnn2UUXFOyVTiX84fXCd+6B5iWrQg/QMeeRmSwpZ9lnjYLSXtZwiw80ytVMr3zue0ucYw== +"@babel/plugin-transform-destructuring@^7.0.0", "@babel/plugin-transform-destructuring@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.2.0.tgz#e75269b4b7889ec3a332cd0d0c8cff8fed0dc6f3" + integrity sha512-coVO2Ayv7g0qdDbrNiadE4bU7lvCd9H539m2gMknyVjjMdwF/iCOM7R+E8PkntoqLkltO0rk+3axhpp/0v68VQ== dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-dotall-regex@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.0.0.tgz#73a24da69bc3c370251f43a3d048198546115e58" - integrity sha512-00THs8eJxOJUFVx1w8i1MBF4XH4PsAjKjQ1eqN/uCH3YKwP21GCKfrn6YZFZswbOk9+0cw1zGQPHVc1KBlSxig== +"@babel/plugin-transform-dotall-regex@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.2.0.tgz#f0aabb93d120a8ac61e925ea0ba440812dbe0e49" + integrity sha512-sKxnyHfizweTgKZf7XsXu/CNupKhzijptfTM+bozonIuyVrLWVUvYjE2bhuSBML8VQeMxq4Mm63Q9qvcvUcciQ== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@babel/helper-regex" "^7.0.0" regexpu-core "^4.1.3" -"@babel/plugin-transform-duplicate-keys@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.0.0.tgz#a0601e580991e7cace080e4cf919cfd58da74e86" - integrity sha512-w2vfPkMqRkdxx+C71ATLJG30PpwtTpW7DDdLqYt2acXU7YjztzeWW2Jk1T6hKqCLYCcEA5UQM/+xTAm+QCSnuQ== +"@babel/plugin-transform-duplicate-keys@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.2.0.tgz#d952c4930f312a4dbfff18f0b2914e60c35530b3" + integrity sha512-q+yuxW4DsTjNceUiTzK0L+AfQ0zD9rWaTLiUqHA8p0gxx7lu1EylenfzjeIWNkPy6e/0VG/Wjw9uf9LueQwLOw== dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-exponentiation-operator@^7.0.0", "@babel/plugin-transform-exponentiation-operator@^7.1.0": - version "7.1.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.1.0.tgz#9c34c2ee7fd77e02779cfa37e403a2e1003ccc73" - integrity sha512-uZt9kD1Pp/JubkukOGQml9tqAeI8NkE98oZnHZ2qHRElmeKCodbTZgOEUtujSCSLhHSBWbzNiFSDIMC4/RBTLQ== +"@babel/plugin-transform-exponentiation-operator@^7.0.0", "@babel/plugin-transform-exponentiation-operator@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.2.0.tgz#a63868289e5b4007f7054d46491af51435766008" + integrity sha512-umh4hR6N7mu4Elq9GG8TOu9M0bakvlsREEC+ialrQN6ABS4oDQ69qJv1VtR3uxlKMCQMCvzk7vr17RHKcjx68A== dependencies: "@babel/helper-builder-binary-assignment-operator-visitor" "^7.1.0" "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-transform-flow-strip-types@^7.0.0": - version "7.1.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.1.6.tgz#4b7be62604d39e63cfe23b1d00d63e9fb7e763ba" - integrity sha512-0tyFAAjJmnRlr8MVJV39ASn1hv+PbdVP71hf7aAseqLfQ0o9QXk9htbMbq7/ZYXnUIp6gDw0lUUP0+PQMbbtmg== + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.2.0.tgz#db6180d098caaabdd609a8da3800f5204e66b69b" + integrity sha512-xhQp0lyXA5vk8z1kJitdMozQYEWfo4MgC6neNXrb5euqHiTIGhj5ZWfFPkVESInQSk9WZz1bbNmIRz6zKfWGVA== dependencies: "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-syntax-flow" "^7.0.0" + "@babel/plugin-syntax-flow" "^7.2.0" -"@babel/plugin-transform-for-of@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.0.0.tgz#f2ba4eadb83bd17dc3c7e9b30f4707365e1c3e39" - integrity sha512-TlxKecN20X2tt2UEr2LNE6aqA0oPeMT1Y3cgz8k4Dn1j5ObT8M3nl9aA37LLklx0PBZKETC9ZAf9n/6SujTuXA== +"@babel/plugin-transform-for-of@^7.0.0", "@babel/plugin-transform-for-of@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.2.0.tgz#ab7468befa80f764bb03d3cb5eef8cc998e1cad9" + integrity sha512-Kz7Mt0SsV2tQk6jG5bBv5phVbkd0gd27SgYD4hH1aLMJRchM0dzHaXvrWhVZ+WxAlDoAKZ7Uy3jVTW2mKXQ1WQ== dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-function-name@^7.0.0", "@babel/plugin-transform-function-name@^7.1.0": - version "7.1.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.1.0.tgz#29c5550d5c46208e7f730516d41eeddd4affadbb" - integrity sha512-VxOa1TMlFMtqPW2IDYZQaHsFrq/dDoIjgN098NowhexhZcz3UGlvPgZXuE1jEvNygyWyxRacqDpCZt+par1FNg== +"@babel/plugin-transform-function-name@^7.0.0", "@babel/plugin-transform-function-name@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.2.0.tgz#f7930362829ff99a3174c39f0afcc024ef59731a" + integrity sha512-kWgksow9lHdvBC2Z4mxTsvc7YdY7w/V6B2vy9cTIPtLEE9NhwoWivaxdNM/S37elu5bqlLP/qOY906LukO9lkQ== dependencies: "@babel/helper-function-name" "^7.1.0" "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-literals@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.0.0.tgz#2aec1d29cdd24c407359c930cdd89e914ee8ff86" - integrity sha512-1NTDBWkeNXgpUcyoVFxbr9hS57EpZYXpje92zv0SUzjdu3enaRwF/l3cmyRnXLtIdyJASyiS6PtybK+CgKf7jA== +"@babel/plugin-transform-literals@^7.0.0", "@babel/plugin-transform-literals@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.2.0.tgz#690353e81f9267dad4fd8cfd77eafa86aba53ea1" + integrity sha512-2ThDhm4lI4oV7fVQ6pNNK+sx+c/GM5/SaML0w/r4ZB7sAneD/piDJtwdKlNckXeyGK7wlwg2E2w33C/Hh+VFCg== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-transform-member-expression-literals@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.0.0.tgz#96a265bf61a9ed6f75c39db0c30d41ef7aabf072" - integrity sha512-kgAGWcjVdflNPSaRb9rDPdGJ9/gF80VPmxx80gdKz6NSofHvxA2LofECQ+7GrDVzzH8zBJzTn1xlV4xnmWj/nw== + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.2.0.tgz#fa10aa5c58a2cb6afcf2c9ffa8cb4d8b3d489a2d" + integrity sha512-HiU3zKkSU6scTidmnFJ0bMX8hz5ixC93b4MHMiYebmk2lUVNGOboPsqQvx5LzooihijUoLR/v7Nc1rbBtnc7FA== dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-modules-amd@^7.1.0": - version "7.1.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.1.0.tgz#f9e0a7072c12e296079b5a59f408ff5b97bf86a8" - integrity sha512-wt8P+xQ85rrnGNr2x1iV3DW32W8zrB6ctuBkYBbf5/ZzJY99Ob4MFgsZDFgczNU76iy9PWsy4EuxOliDjdKw6A== +"@babel/plugin-transform-modules-amd@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.2.0.tgz#82a9bce45b95441f617a24011dc89d12da7f4ee6" + integrity sha512-mK2A8ucqz1qhrdqjS9VMIDfIvvT2thrEsIQzbaTdc5QFzhDjQv2CkJJ5f6BXIkgbmaoax3zBr2RyvV/8zeoUZw== dependencies: "@babel/helper-module-transforms" "^7.1.0" "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-modules-commonjs@^7.0.0", "@babel/plugin-transform-modules-commonjs@^7.1.0": - version "7.1.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.1.0.tgz#0a9d86451cbbfb29bd15186306897c67f6f9a05c" - integrity sha512-wtNwtMjn1XGwM0AXPspQgvmE6msSJP15CX2RVfpTSTNPLhKhaOjaIfBaVfj4iUZ/VrFSodcFedwtPg/NxwQlPA== +"@babel/plugin-transform-modules-commonjs@^7.0.0", "@babel/plugin-transform-modules-commonjs@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.2.0.tgz#c4f1933f5991d5145e9cfad1dfd848ea1727f404" + integrity sha512-V6y0uaUQrQPXUrmj+hgnks8va2L0zcZymeU7TtWEgdRLNkceafKXEduv7QzgQAE4lT+suwooG9dC7LFhdRAbVQ== dependencies: "@babel/helper-module-transforms" "^7.1.0" "@babel/helper-plugin-utils" "^7.0.0" "@babel/helper-simple-access" "^7.1.0" -"@babel/plugin-transform-modules-systemjs@^7.0.0": - version "7.1.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.1.3.tgz#2119a3e3db612fd74a19d88652efbfe9613a5db0" - integrity sha512-PvTxgjxQAq4pvVUZF3mD5gEtVDuId8NtWkJsZLEJZMZAW3TvgQl1pmydLLN1bM8huHFVVU43lf0uvjQj9FRkKw== +"@babel/plugin-transform-modules-systemjs@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.2.0.tgz#912bfe9e5ff982924c81d0937c92d24994bb9068" + integrity sha512-aYJwpAhoK9a+1+O625WIjvMY11wkB/ok0WClVwmeo3mCjcNRjt+/8gHWrB5i+00mUju0gWsBkQnPpdvQ7PImmQ== dependencies: "@babel/helper-hoist-variables" "^7.0.0" "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-modules-umd@^7.1.0": - version "7.1.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.1.0.tgz#a29a7d85d6f28c3561c33964442257cc6a21f2a8" - integrity sha512-enrRtn5TfRhMmbRwm7F8qOj0qEYByqUvTttPEGimcBH4CJHphjyK1Vg7sdU7JjeEmgSpM890IT/efS2nMHwYig== +"@babel/plugin-transform-modules-umd@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.2.0.tgz#7678ce75169f0877b8eb2235538c074268dd01ae" + integrity sha512-BV3bw6MyUH1iIsGhXlOK6sXhmSarZjtJ/vMiD9dNmpY8QXFFQTj+6v92pcfy1iqa8DeAfJFwoxcrS/TUZda6sw== dependencies: "@babel/helper-module-transforms" "^7.1.0" "@babel/helper-plugin-utils" "^7.0.0" @@ -569,67 +574,67 @@ "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-transform-object-assign@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-assign/-/plugin-transform-object-assign-7.0.0.tgz#fca6d7500d9675c42868b8f3882979201b9a5ad8" - integrity sha512-Dag8mxx7/03oj8F8PkNso8GEMhwGfeT0TL6KfMsa9Brjx4IpwZVl3WBvEmYks8BMhPmrvM5NQ/tjaMbwEj5ijA== + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-assign/-/plugin-transform-object-assign-7.2.0.tgz#6fdeea42be17040f119e38e23ea0f49f31968bde" + integrity sha512-nmE55cZBPFgUktbF2OuoZgPRadfxosLOpSgzEPYotKSls9J4pEPcembi8r78RU37Rph6UApCpNmsQA4QMWK9Ng== dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-object-super@^7.0.0", "@babel/plugin-transform-object-super@^7.1.0": - version "7.1.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.1.0.tgz#b1ae194a054b826d8d4ba7ca91486d4ada0f91bb" - integrity sha512-/O02Je1CRTSk2SSJaq0xjwQ8hG4zhZGNjE8psTsSNPXyLRCODv7/PBozqT5AmQMzp7MI3ndvMhGdqp9c96tTEw== +"@babel/plugin-transform-object-super@^7.0.0", "@babel/plugin-transform-object-super@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.2.0.tgz#b35d4c10f56bab5d650047dad0f1d8e8814b6598" + integrity sha512-VMyhPYZISFZAqAPVkiYb7dUe2AsVi2/wCT5+wZdsNO31FojQJa9ns40hzZ6U9f50Jlq4w6qwzdBB2uwqZ00ebg== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@babel/helper-replace-supers" "^7.1.0" -"@babel/plugin-transform-parameters@^7.0.0", "@babel/plugin-transform-parameters@^7.1.0": - version "7.1.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.1.0.tgz#44f492f9d618c9124026e62301c296bf606a7aed" - integrity sha512-vHV7oxkEJ8IHxTfRr3hNGzV446GAb+0hgbA7o/0Jd76s+YzccdWuTU296FOCOl/xweU4t/Ya4g41yWz80RFCRw== +"@babel/plugin-transform-parameters@^7.0.0", "@babel/plugin-transform-parameters@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.2.0.tgz#0d5ad15dc805e2ea866df4dd6682bfe76d1408c2" + integrity sha512-kB9+hhUidIgUoBQ0MsxMewhzr8i60nMa2KgeJKQWYrqQpqcBYtnpR+JgkadZVZoaEZ/eKu9mclFaVwhRpLNSzA== dependencies: "@babel/helper-call-delegate" "^7.1.0" "@babel/helper-get-function-arity" "^7.0.0" "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-transform-property-literals@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.0.0.tgz#0b95a91dbd1f0be5b5a99ed86571ef5b5ae77009" - integrity sha512-7HK6/jB4MLpwQUJQ3diaX0pbCRcoL9asJscQfU3D1HpDwYdrH6yAUKleUNFHFyGNYBI9UeJrS2Jpx2JhtPKu5g== + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.2.0.tgz#03e33f653f5b25c4eb572c98b9485055b389e905" + integrity sha512-9q7Dbk4RhgcLp8ebduOpCbtjh7C0itoLYHXd9ueASKAG/is5PQtMR5VJGka9NKqGhYEGn5ITahd4h9QeBMylWQ== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-transform-react-display-name@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.0.0.tgz#93759e6c023782e52c2da3b75eca60d4f10533ee" - integrity sha512-BX8xKuQTO0HzINxT6j/GiCwoJB0AOMs0HmLbEnAvcte8U8rSkNa/eSCAY+l1OA4JnCVq2jw2p6U8QQryy2fTPg== + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.2.0.tgz#ebfaed87834ce8dc4279609a4f0c324c156e3eb0" + integrity sha512-Htf/tPa5haZvRMiNSQSFifK12gtr/8vwfr+A9y69uF0QcU77AVu4K7MiHEkTxF7lQoHOL0F9ErqgfNEAKgXj7A== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-transform-react-jsx-self@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.0.0.tgz#a84bb70fea302d915ea81d9809e628266bb0bc11" - integrity sha512-pymy+AK12WO4safW1HmBpwagUQRl9cevNX+82AIAtU1pIdugqcH+nuYP03Ja6B+N4gliAaKWAegIBL/ymALPHA== + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.2.0.tgz#461e21ad9478f1031dd5e276108d027f1b5240ba" + integrity sha512-v6S5L/myicZEy+jr6ielB0OR8h+EH/1QFx/YJ7c7Ua+7lqsjj/vW6fD5FR9hB/6y7mGbfT4vAURn3xqBxsUcdg== dependencies: "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-syntax-jsx" "^7.0.0" + "@babel/plugin-syntax-jsx" "^7.2.0" "@babel/plugin-transform-react-jsx-source@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.0.0.tgz#28e00584f9598c0dd279f6280eee213fa0121c3c" - integrity sha512-OSeEpFJEH5dw/TtxTg4nijl4nHBbhqbKL94Xo/Y17WKIf2qJWeIk/QeXACF19lG1vMezkxqruwnTjVizaW7u7w== + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.2.0.tgz#20c8c60f0140f5dd3cd63418d452801cf3f7180f" + integrity sha512-A32OkKTp4i5U6aE88GwwcuV4HAprUgHcTq0sSafLxjr6AW0QahrCRCjxogkbbcdtpbXkuTOlgpjophCxb6sh5g== dependencies: "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-syntax-jsx" "^7.0.0" + "@babel/plugin-syntax-jsx" "^7.2.0" "@babel/plugin-transform-react-jsx@^7.0.0": - version "7.1.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.1.6.tgz#e6188e7d2a2dcd2796d45a87f8b0a8c906f57d1a" - integrity sha512-iU/IUlPEYDRwuqLwqVobzPAZkBOQoZ9xRTBmj6ANuk5g/Egn/zdNGnXlSoKeNmKoYVeIRxx5GZhWmMhLik8dag== + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.2.0.tgz#ca36b6561c4d3b45524f8efb6f0fbc9a0d1d622f" + integrity sha512-h/fZRel5wAfCqcKgq3OhbmYaReo7KkoJBpt8XnvpS7wqaNMqtw5xhxutzcm35iMUWucfAdT/nvGTsWln0JTg2Q== dependencies: "@babel/helper-builder-react-jsx" "^7.0.0" "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-syntax-jsx" "^7.0.0" + "@babel/plugin-syntax-jsx" "^7.2.0" "@babel/plugin-transform-regenerator@^7.0.0": version "7.0.0" @@ -639,64 +644,64 @@ regenerator-transform "^0.13.3" "@babel/plugin-transform-runtime@^7.0.0", "@babel/plugin-transform-runtime@^7.1.0": - version "7.1.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.1.0.tgz#9f76920d42551bb577e2dc594df229b5f7624b63" - integrity sha512-WFLMgzu5DLQEah0lKTJzYb14vd6UiES7PTnXcvrPZ1VrwFeJ+mTbvr65fFAsXYMt2bIoOoC0jk76zY1S7HZjUg== + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.2.0.tgz#566bc43f7d0aedc880eaddbd29168d0f248966ea" + integrity sha512-jIgkljDdq4RYDnJyQsiWbdvGeei/0MOTtSHKO/rfbd/mXBxNpdlulMx49L0HQ4pug1fXannxoqCI+fYSle9eSw== dependencies: "@babel/helper-module-imports" "^7.0.0" "@babel/helper-plugin-utils" "^7.0.0" resolve "^1.8.1" semver "^5.5.1" -"@babel/plugin-transform-shorthand-properties@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.0.0.tgz#85f8af592dcc07647541a0350e8c95c7bf419d15" - integrity sha512-g/99LI4vm5iOf5r1Gdxq5Xmu91zvjhEG5+yZDJW268AZELAu4J1EiFLnkSG3yuUsZyOipVOVUKoGPYwfsTymhw== +"@babel/plugin-transform-shorthand-properties@^7.0.0", "@babel/plugin-transform-shorthand-properties@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.2.0.tgz#6333aee2f8d6ee7e28615457298934a3b46198f0" + integrity sha512-QP4eUM83ha9zmYtpbnyjTLAGKQritA5XW/iG9cjtuOI8s1RuL/3V6a3DeSHfKutJQ+ayUfeZJPcnCYEQzaPQqg== dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-spread@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.0.0.tgz#93583ce48dd8c85e53f3a46056c856e4af30b49b" - integrity sha512-L702YFy2EvirrR4shTj0g2xQp7aNwZoWNCkNu2mcoU0uyzMl0XRwDSwzB/xp6DSUFiBmEXuyAyEN16LsgVqGGQ== +"@babel/plugin-transform-spread@^7.0.0", "@babel/plugin-transform-spread@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.2.0.tgz#0c76c12a3b5826130078ee8ec84a7a8e4afd79c4" + integrity sha512-7TtPIdwjS/i5ZBlNiQePQCovDh9pAhVbp/nGVRBZuUdBiVRThyyLend3OHobc0G+RLCPPAN70+z/MAMhsgJd/A== dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-sticky-regex@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.0.0.tgz#30a9d64ac2ab46eec087b8530535becd90e73366" - integrity sha512-LFUToxiyS/WD+XEWpkx/XJBrUXKewSZpzX68s+yEOtIbdnsRjpryDw9U06gYc6klYEij/+KQVRnD3nz3AoKmjw== +"@babel/plugin-transform-sticky-regex@^7.0.0", "@babel/plugin-transform-sticky-regex@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.2.0.tgz#a1e454b5995560a9c1e0d537dfc15061fd2687e1" + integrity sha512-KKYCoGaRAf+ckH8gEL3JHUaFVyNHKe3ASNsZ+AlktgHevvxGigoIttrEJb8iKN03Q7Eazlv1s6cx2B2cQ3Jabw== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@babel/helper-regex" "^7.0.0" -"@babel/plugin-transform-template-literals@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.0.0.tgz#084f1952efe5b153ddae69eb8945f882c7a97c65" - integrity sha512-vA6rkTCabRZu7Nbl9DfLZE1imj4tzdWcg5vtdQGvj+OH9itNNB6hxuRMHuIY8SGnEt1T9g5foqs9LnrHzsqEFg== +"@babel/plugin-transform-template-literals@^7.0.0", "@babel/plugin-transform-template-literals@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.2.0.tgz#d87ed01b8eaac7a92473f608c97c089de2ba1e5b" + integrity sha512-FkPix00J9A/XWXv4VoKJBMeSkyY9x/TqIh76wzcdfl57RJJcf8CehQ08uwfhCDNtRQYtHQKBTwKZDEyjE13Lwg== dependencies: "@babel/helper-annotate-as-pure" "^7.0.0" "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-typeof-symbol@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.0.0.tgz#4dcf1e52e943e5267b7313bff347fdbe0f81cec9" - integrity sha512-1r1X5DO78WnaAIvs5uC48t41LLckxsYklJrZjNKcevyz83sF2l4RHbw29qrCPr/6ksFsdfRpT/ZgxNWHXRnffg== +"@babel/plugin-transform-typeof-symbol@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.2.0.tgz#117d2bcec2fbf64b4b59d1f9819894682d29f2b2" + integrity sha512-2LNhETWYxiYysBtrBTqL8+La0jIoQQnIScUJc74OYvUGRmkskNY4EzLCnjHBzdmb38wqtTaixpo1NctEcvMDZw== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-transform-typescript@^7.0.0": - version "7.1.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.1.0.tgz#81e7b4be90e7317cbd04bf1163ebf06b2adee60b" - integrity sha512-TOTtVeT+fekAesiCHnPz+PSkYSdOSLyLn42DI45nxg6iCdlQY6LIj/tYqpMB0y+YicoTUiYiXqF8rG6SKfhw6Q== + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.2.0.tgz#bce7c06300434de6a860ae8acf6a442ef74a99d1" + integrity sha512-EnI7i2/gJ7ZNr2MuyvN2Hu+BHJENlxWte5XygPvfj/MbvtOkWor9zcnHpMMQL2YYaaCcqtIvJUyJ7QVfoGs7ew== dependencies: "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-syntax-typescript" "^7.0.0" + "@babel/plugin-syntax-typescript" "^7.2.0" -"@babel/plugin-transform-unicode-regex@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.0.0.tgz#c6780e5b1863a76fe792d90eded9fcd5b51d68fc" - integrity sha512-uJBrJhBOEa3D033P95nPHu3nbFwFE9ZgXsfEitzoIXIwqAZWk7uXcg06yFKXz9FSxBH5ucgU/cYdX0IV8ldHKw== +"@babel/plugin-transform-unicode-regex@^7.0.0", "@babel/plugin-transform-unicode-regex@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.2.0.tgz#4eb8db16f972f8abb5062c161b8b115546ade08b" + integrity sha512-m48Y0lMhrbXEJnVUaYly29jRXbQ3ksxPrS1Tg8t+MHqzXhtBYAvI51euOBaoAlZLPHsieY9XPVMf80a5x0cPcA== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@babel/helper-regex" "^7.0.0" @@ -711,48 +716,48 @@ regenerator-runtime "^0.11.1" "@babel/preset-env@^7.1.0": - version "7.1.6" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.1.6.tgz#a0bf4b96b6bfcf6e000afc5b72b4abe7cc13ae97" - integrity sha512-YIBfpJNQMBkb6MCkjz/A9J76SNCSuGVamOVBgoUkLzpJD/z8ghHi9I42LQ4pulVX68N/MmImz6ZTixt7Azgexw== + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.2.0.tgz#a5030e7e4306af5a295dd5d7c78dc5464af3fee2" + integrity sha512-haGR38j5vOGVeBatrQPr3l0xHbs14505DcM57cbJy48kgMFvvHHoYEhHuRV+7vi559yyAUAVbTWzbK/B/pzJng== dependencies: "@babel/helper-module-imports" "^7.0.0" "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-proposal-async-generator-functions" "^7.1.0" - "@babel/plugin-proposal-json-strings" "^7.0.0" - "@babel/plugin-proposal-object-rest-spread" "^7.0.0" - "@babel/plugin-proposal-optional-catch-binding" "^7.0.0" - "@babel/plugin-proposal-unicode-property-regex" "^7.0.0" - "@babel/plugin-syntax-async-generators" "^7.0.0" - "@babel/plugin-syntax-object-rest-spread" "^7.0.0" - "@babel/plugin-syntax-optional-catch-binding" "^7.0.0" - "@babel/plugin-transform-arrow-functions" "^7.0.0" - "@babel/plugin-transform-async-to-generator" "^7.1.0" - "@babel/plugin-transform-block-scoped-functions" "^7.0.0" - "@babel/plugin-transform-block-scoping" "^7.1.5" - "@babel/plugin-transform-classes" "^7.1.0" - "@babel/plugin-transform-computed-properties" "^7.0.0" - "@babel/plugin-transform-destructuring" "^7.0.0" - "@babel/plugin-transform-dotall-regex" "^7.0.0" - "@babel/plugin-transform-duplicate-keys" "^7.0.0" - "@babel/plugin-transform-exponentiation-operator" "^7.1.0" - "@babel/plugin-transform-for-of" "^7.0.0" - "@babel/plugin-transform-function-name" "^7.1.0" - "@babel/plugin-transform-literals" "^7.0.0" - "@babel/plugin-transform-modules-amd" "^7.1.0" - "@babel/plugin-transform-modules-commonjs" "^7.1.0" - "@babel/plugin-transform-modules-systemjs" "^7.0.0" - "@babel/plugin-transform-modules-umd" "^7.1.0" + "@babel/plugin-proposal-async-generator-functions" "^7.2.0" + "@babel/plugin-proposal-json-strings" "^7.2.0" + "@babel/plugin-proposal-object-rest-spread" "^7.2.0" + "@babel/plugin-proposal-optional-catch-binding" "^7.2.0" + "@babel/plugin-proposal-unicode-property-regex" "^7.2.0" + "@babel/plugin-syntax-async-generators" "^7.2.0" + "@babel/plugin-syntax-object-rest-spread" "^7.2.0" + "@babel/plugin-syntax-optional-catch-binding" "^7.2.0" + "@babel/plugin-transform-arrow-functions" "^7.2.0" + "@babel/plugin-transform-async-to-generator" "^7.2.0" + "@babel/plugin-transform-block-scoped-functions" "^7.2.0" + "@babel/plugin-transform-block-scoping" "^7.2.0" + "@babel/plugin-transform-classes" "^7.2.0" + "@babel/plugin-transform-computed-properties" "^7.2.0" + "@babel/plugin-transform-destructuring" "^7.2.0" + "@babel/plugin-transform-dotall-regex" "^7.2.0" + "@babel/plugin-transform-duplicate-keys" "^7.2.0" + "@babel/plugin-transform-exponentiation-operator" "^7.2.0" + "@babel/plugin-transform-for-of" "^7.2.0" + "@babel/plugin-transform-function-name" "^7.2.0" + "@babel/plugin-transform-literals" "^7.2.0" + "@babel/plugin-transform-modules-amd" "^7.2.0" + "@babel/plugin-transform-modules-commonjs" "^7.2.0" + "@babel/plugin-transform-modules-systemjs" "^7.2.0" + "@babel/plugin-transform-modules-umd" "^7.2.0" "@babel/plugin-transform-new-target" "^7.0.0" - "@babel/plugin-transform-object-super" "^7.1.0" - "@babel/plugin-transform-parameters" "^7.1.0" + "@babel/plugin-transform-object-super" "^7.2.0" + "@babel/plugin-transform-parameters" "^7.2.0" "@babel/plugin-transform-regenerator" "^7.0.0" - "@babel/plugin-transform-shorthand-properties" "^7.0.0" - "@babel/plugin-transform-spread" "^7.0.0" - "@babel/plugin-transform-sticky-regex" "^7.0.0" - "@babel/plugin-transform-template-literals" "^7.0.0" - "@babel/plugin-transform-typeof-symbol" "^7.0.0" - "@babel/plugin-transform-unicode-regex" "^7.0.0" - browserslist "^4.1.0" + "@babel/plugin-transform-shorthand-properties" "^7.2.0" + "@babel/plugin-transform-spread" "^7.2.0" + "@babel/plugin-transform-sticky-regex" "^7.2.0" + "@babel/plugin-transform-template-literals" "^7.2.0" + "@babel/plugin-transform-typeof-symbol" "^7.2.0" + "@babel/plugin-transform-unicode-regex" "^7.2.0" + browserslist "^4.3.4" invariant "^2.2.2" js-levenshtein "^1.1.3" semver "^5.3.0" @@ -790,9 +795,9 @@ source-map-support "^0.5.9" "@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2": - version "7.1.5" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.1.5.tgz#4170907641cf1f61508f563ece3725150cc6fe39" - integrity sha512-xKnPpXG/pvK1B90JkwwxSGii90rQGKtzcMt2gI5G6+M0REXaq6rOHsGC2ay6/d0Uje7zzvSzjEzfR3ENhFlrfA== + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.2.0.tgz#b03e42eeddf5898e00646e4c840fa07ba8dcad7f" + integrity sha512-oouEibCbHMVdZSDlJBO6bZmID/zA/G/Qx3H1d3rSNPTD+L8UNKvCat7aKWSJ74zYbm5zWGh0GQN0hKj8zYFTCg== dependencies: regenerator-runtime "^0.12.0" @@ -820,10 +825,10 @@ globals "^11.1.0" lodash "^4.17.10" -"@babel/types@^7.0.0", "@babel/types@^7.1.2", "@babel/types@^7.1.5", "@babel/types@^7.1.6": - version "7.1.6" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.1.6.tgz#0adb330c3a281348a190263aceb540e10f04bcce" - integrity sha512-DMiUzlY9DSjVsOylJssxLHSgj6tWM9PRFJOGW/RaOglVOK9nzTxoOMfTfRQXGUCUQ/HmlG2efwC+XqUEJ5ay4w== +"@babel/types@^7.0.0", "@babel/types@^7.1.2", "@babel/types@^7.1.6", "@babel/types@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.2.0.tgz#7941c5b2d8060e06f9601d6be7c223eef906d5d8" + integrity sha512-b4v7dyfApuKDvmPb+O488UlGuR1WbwMXFsO/cyqMrnfvRAChZKJAYeeglWTjUO1b9UghKKgepAQM5tsvBJca6A== dependencies: esutils "^2.0.2" lodash "^4.17.10" @@ -1635,9 +1640,9 @@ ansi-colors@^1.0.1: ansi-wrap "^0.1.0" ansi-colors@^3.0.0: - version "3.2.1" - resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.1.tgz#9638047e4213f3428a11944a7d4b31cba0a3ff95" - integrity sha512-Xt+zb6nqgvV9SWAVp0EG3lRsHcbq5DDgqjPPz6pwgtj6RKz65zGXMNa82oJfOSBA/to6GmRP7Dr+6o+kbApTzQ== + version "3.2.2" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.2.tgz#e49349137dbeb6d381b91e607c189915e53265ba" + integrity sha512-kJmcp4PrviBBEx95fC3dYRiC/QSN3EBd0GU1XoNEk/IuUa92rsB6o90zP3w5VAyNznR38Vkc9i8vk5zK6T7TxA== ansi-cyan@^0.1.1: version "0.1.1" @@ -1964,12 +1969,12 @@ atob@^2.1.1: integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== autoprefixer@^9.3.1: - version "9.4.0" - resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.4.0.tgz#4264ee11fdde83e6a2fb0136e6954af6361bf0b6" - integrity sha512-gv1a1rzOyxmB2JuyXDLVNWyyUl1uelaKyxO1OP3UNWk7jAP+EhAT9rZdcDBH0C+ZEeTL56qNR4j2TjRZL68bXA== + version "9.4.2" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.4.2.tgz#0234d20900684fc4bfb67926493deb68384067f5" + integrity sha512-tYQYJvZvqlJCzF+BLC//uAcdT/Yy4ik9bwZRXr/EehUJ/bjjpTthsWTy8dpowdoIE1sLCDf1ch4Eb2cOSzZC9w== dependencies: browserslist "^4.3.5" - caniuse-lite "^1.0.30000912" + caniuse-lite "^1.0.30000914" normalize-range "^0.1.2" num2fraction "^1.2.2" postcss "^7.0.6" @@ -2968,9 +2973,9 @@ bcrypt-pbkdf@^1.0.0: tweetnacl "^0.14.3" big-integer@^1.6.7: - version "1.6.38" - resolved "https://registry.yarnpkg.com/big-integer/-/big-integer-1.6.38.tgz#e5ae0a2d08a05bb194cf9e0c0641798eda4ea044" - integrity sha512-csPPkI8MBCIoFAs2D7RoX9Bn5jrHwvQ/6CMfdRzwkB5cmpw74zb6Lbc/VbT9xCWrkgdwJDxw/uLIvXGch74Lhg== + version "1.6.39" + resolved "https://registry.yarnpkg.com/big-integer/-/big-integer-1.6.39.tgz#57dffd6b8008cfc429e1b8b3fcd32d77f6694ecf" + integrity sha512-JgwrfTfdSxDQGRPx3j9hHrag/Ih2oCQwE/kMHW5tujSyjLFLk3hbum5ZJhaginvQ2LBw2YxGgP73AquAWNW/ZA== big.js@^3.1.3: version "3.2.0" @@ -3023,6 +3028,19 @@ bowser@^1.7.3: resolved "https://registry.yarnpkg.com/bowser/-/bowser-1.9.4.tgz#890c58a2813a9d3243704334fa81b96a5c150c9a" integrity sha512-9IdMmj2KjigRq6oWhmwv1W36pDuA4STQZ8q6YO9um+x07xgYNCD3Oou+WP/3L1HNz7iqythGet3/p4wvc8AAwQ== +boxen@^1.2.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/boxen/-/boxen-1.3.0.tgz#55c6c39a8ba58d9c61ad22cd877532deb665a20b" + integrity sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw== + dependencies: + ansi-align "^2.0.0" + camelcase "^4.0.0" + chalk "^2.0.1" + cli-boxes "^1.0.0" + string-width "^2.0.0" + term-size "^1.2.0" + widest-line "^2.0.0" + boxen@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/boxen/-/boxen-2.0.0.tgz#46ba3953b1a3d99aaf89ad8c7104a32874934a58" @@ -3176,7 +3194,7 @@ browserslist@^3.2.6: caniuse-lite "^1.0.30000844" electron-to-chromium "^1.3.47" -browserslist@^4.1.0, browserslist@^4.3.5: +browserslist@^4.3.4, browserslist@^4.3.5: version "4.3.5" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.3.5.tgz#1a917678acc07b55606748ea1adf9846ea8920f7" integrity sha512-z9ZhGc3d9e/sJ9dIx5NFXkKoaiQTnrvrMsN3R1fGb1tkWWNSz12UewJn9TNxGo1l7J23h0MRaPmk7jfeTZYs1w== @@ -3319,7 +3337,7 @@ camelcase-keys@^4.1.0: map-obj "^2.0.0" quick-lru "^1.0.0" -camelcase@^4.1.0: +camelcase@^4.0.0, camelcase@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" integrity sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0= @@ -3329,10 +3347,10 @@ camelcase@^5.0.0: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.0.0.tgz#03295527d58bd3cd4aa75363f35b2e8d97be2f42" integrity sha512-faqwZqnWxbxn+F1d399ygeamQNy3lPp/H9H6rNrqYh4FSVCtcY+3cub1MxA8o9mDd55mM8Aghuu/kuyYA6VTsA== -caniuse-lite@^1.0.30000844, caniuse-lite@^1.0.30000884, caniuse-lite@^1.0.30000912: - version "1.0.30000913" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000913.tgz#560311ecf242eaf12159b720e64b11ebd759b5e4" - integrity sha512-PP7Ypc35XY1mNduHqweGNOp0qfNUCmaQauGOYDByvirlFjrzRyY72pBRx7jnBidOB8zclg00DAzsy2H475BouQ== +caniuse-lite@^1.0.30000844, caniuse-lite@^1.0.30000884, caniuse-lite@^1.0.30000912, caniuse-lite@^1.0.30000914: + version "1.0.30000914" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000914.tgz#f802b4667c24d0255f54a95818dcf8e1aa41f624" + integrity sha512-qqj0CL1xANgg6iDOybiPTIxtsmAnfIky9mBC35qgWrnK4WwmhqfpmkDYMYgwXJ8LRZ3/2jXlCntulO8mBaAgSg== capture-exit@^1.2.0: version "1.2.0" @@ -3341,6 +3359,11 @@ capture-exit@^1.2.0: dependencies: rsvp "^3.3.3" +capture-stack-trace@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/capture-stack-trace/-/capture-stack-trace-1.0.1.tgz#a6c0bbe1f38f3aa0b92238ecb6ff42c344d4135d" + integrity sha512-mYQLZnx5Qt1JgB1WEiMCf2647plpGeQ2NMR/5L0HNZzGQo4fuSPnK+wjfPnKZV0aiJDgzmWqqkV/g7JD+DW0qw== + case-sensitive-paths-webpack-plugin@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.1.2.tgz#c899b52175763689224571dad778742e133f0192" @@ -3629,6 +3652,18 @@ concat-stream@^1.5.0, concat-stream@^1.6.0: readable-stream "^2.2.2" typedarray "^0.0.6" +configstore@^3.0.0: + version "3.1.2" + resolved "https://registry.yarnpkg.com/configstore/-/configstore-3.1.2.tgz#c6f25defaeef26df12dd33414b001fe81a543f8f" + integrity sha512-vtv5HtGjcYUgFrXc6Kx747B83MRRVS5R1VTEQoXvuP+kMI+if6uywV0nDGoiydJRy4yk7h9od5Og0kxx4zUXmw== + dependencies: + dot-prop "^4.1.0" + graceful-fs "^4.1.2" + make-dir "^1.0.0" + unique-string "^1.0.0" + write-file-atomic "^2.0.0" + xdg-basedir "^3.0.0" + connect@^3.6.5: version "3.6.6" resolved "https://registry.yarnpkg.com/connect/-/connect-3.6.6.tgz#09eff6c55af7236e137135a72574858b6786f524" @@ -3755,6 +3790,13 @@ create-ecdh@^4.0.0: bn.js "^4.1.0" elliptic "^6.0.0" +create-error-class@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/create-error-class/-/create-error-class-3.0.2.tgz#06be7abef947a3f14a30fd610671d401bca8b7b6" + integrity sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y= + dependencies: + capture-stack-trace "^1.0.0" + create-hash@^1.1.0, create-hash@^1.1.2: version "1.2.0" resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" @@ -3824,6 +3866,11 @@ crypto-browserify@^3.11.0: randombytes "^2.0.0" randomfill "^1.0.3" +crypto-random-string@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-1.0.0.tgz#a230f64f568310e1498009940790ec99545bca7e" + integrity sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4= + css-in-js-utils@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/css-in-js-utils/-/css-in-js-utils-2.0.1.tgz#3b472b398787291b47cfe3e44fecfdd9e914ba99" @@ -4195,6 +4242,13 @@ domutils@1.5.1: dom-serializer "0" domelementtype "1" +dot-prop@^4.1.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-4.2.0.tgz#1f19e0c2e1aa0e32797c49799f2837ac6af69c57" + integrity sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ== + dependencies: + is-obj "^1.0.0" + dot@^1.1.1: version "1.1.2" resolved "https://registry.yarnpkg.com/dot/-/dot-1.1.2.tgz#c7377019fc4e550798928b2b9afeb66abfa1f2f9" @@ -4222,6 +4276,11 @@ dotenv@^6.0.0: resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-6.1.0.tgz#9853b6ca98292acb7dec67a95018fa40bccff42c" integrity sha512-/veDn2ztgRlB7gKmE3i9f6CmDIyXAy6d5nBq+whO9SLX+Zs1sXEgFLPi+aSuWqUuusMfbi84fT8j34fs1HaYUw== +duplexer3@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" + integrity sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI= + duplexer@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1" @@ -4256,9 +4315,9 @@ ejs@^2.6.1: integrity sha512-0xy4A/twfrRCnkhfk8ErDi5DqdAsAqeGxht4xkCUrsvhhbQNs7E+4jV0CN7+NKIY0aHE72+XvqtBIXzD31ZbXQ== electron-to-chromium@^1.3.47, electron-to-chromium@^1.3.62, electron-to-chromium@^1.3.86: - version "1.3.87" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.87.tgz#f0481ca84824752bced51673396e9a6c74fe5ec7" - integrity sha512-EV5FZ68Hu+n9fHVhOc9AcG3Lvf+E1YqR36ulJUpwaQTkf4LwdvBqmGIazaIrt4kt6J8Gw3Kv7r9F+PQjAkjWeA== + version "1.3.88" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.88.tgz#f36ab32634f49ef2b0fdc1e82e2d1cc17feb29e7" + integrity sha512-UPV4NuQMKeUh1S0OWRvwg0PI8ASHN9kBC8yDTk1ROXLC85W5GnhTRu/MZu3Teqx3JjlQYuckuHYXSUSgtb3J+A== elliptic@^6.0.0: version "6.4.1" @@ -5293,6 +5352,15 @@ fs-extra@^1.0.0: jsonfile "^2.1.0" klaw "^1.0.0" +fs-extra@^4.0.1: + version "4.0.3" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-4.0.3.tgz#0d852122e5bc5beb453fb028e9c0c9bf36340c94" + integrity sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg== + dependencies: + graceful-fs "^4.1.2" + jsonfile "^4.0.0" + universalify "^0.1.0" + fs-minipass@^1.2.5: version "1.2.5" resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.5.tgz#06c277218454ec288df77ada54a03b8702aacb9d" @@ -5300,11 +5368,6 @@ fs-minipass@^1.2.5: dependencies: minipass "^2.2.1" -fs-readdir-recursive@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz#e32fc030a2ccee44a6b5371308da54be0b397d27" - integrity sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA== - fs-write-stream-atomic@^1.0.8: version "1.0.10" resolved "https://registry.yarnpkg.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz#b47df53493ef911df75731e70a9ded0189db40c9" @@ -5468,6 +5531,13 @@ glob@~7.0.6: once "^1.3.0" path-is-absolute "^1.0.0" +global-dirs@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-0.1.1.tgz#b319c0dd4607f353f3be9cca4c72fc148c49f445" + integrity sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU= + dependencies: + ini "^1.3.4" + global-modules@1.0.0, global-modules@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-1.0.0.tgz#6d770f0eb523ac78164d72b5e71a8877265cc3ea" @@ -5519,6 +5589,23 @@ globby@8.0.1: pify "^3.0.0" slash "^1.0.0" +got@^6.7.1: + version "6.7.1" + resolved "https://registry.yarnpkg.com/got/-/got-6.7.1.tgz#240cd05785a9a18e561dc1b44b41c763ef1e8db0" + integrity sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA= + dependencies: + create-error-class "^3.0.0" + duplexer3 "^0.1.4" + get-stream "^3.0.0" + is-redirect "^1.0.0" + is-retry-allowed "^1.0.0" + is-stream "^1.0.0" + lowercase-keys "^1.0.0" + safe-buffer "^5.0.1" + timed-out "^4.0.0" + unzip-response "^2.0.1" + url-parse-lax "^1.0.0" + graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.3, graceful-fs@^4.1.6, graceful-fs@^4.1.9: version "4.1.15" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.15.tgz#ffb703e1066e8a0eeaa4c8b80ba9253eeefbfb00" @@ -5867,6 +5954,11 @@ import-from@^2.1.0: dependencies: resolve-from "^3.0.0" +import-lazy@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-2.1.0.tgz#05698e3d45c88e8d7e9d92cb0584e77f096f3e43" + integrity sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM= + import-local@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/import-local/-/import-local-1.0.0.tgz#5e4ffdc03f4fe6c009c6729beb29631c2f8227bc" @@ -6190,6 +6282,19 @@ is-glob@^4.0.0: dependencies: is-extglob "^2.1.1" +is-installed-globally@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.1.0.tgz#0dfd98f5a9111716dd535dda6492f67bf3d25a80" + integrity sha1-Df2Y9akRFxbdU13aZJL2e/PSWoA= + dependencies: + global-dirs "^0.1.0" + is-path-inside "^1.0.0" + +is-npm@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-1.0.0.tgz#f2fb63a65e4905b406c86072765a1a4dc793b9f4" + integrity sha1-8vtjpl5JBbQGyGBydloaTceTufQ= + is-number@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f" @@ -6214,10 +6319,12 @@ is-obj@^1.0.0: resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" integrity sha1-PkcprB9f3gJc19g6iW2rn09n2w8= -is-plain-obj@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" - integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4= +is-path-inside@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-1.0.1.tgz#8ef5b7de50437a3fdca6b4e865ef7aa55cb48036" + integrity sha1-jvW33lBDej/cprToZe96pVy0gDY= + dependencies: + path-is-inside "^1.0.1" is-plain-object@^2.0.1, is-plain-object@^2.0.3, is-plain-object@^2.0.4: version "2.0.4" @@ -6241,6 +6348,11 @@ is-promise@^2.1.0: resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" integrity sha1-eaKp7OfwlugPNtKy87wWwf9L8/o= +is-redirect@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-redirect/-/is-redirect-1.0.0.tgz#1d03dded53bd8db0f30c26e4f95d36fc7c87dc24" + integrity sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ= + is-regex@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491" @@ -6253,12 +6365,17 @@ is-resolvable@^1.0.0, is-resolvable@^1.1.0: resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.1.0.tgz#fb18f87ce1feb925169c9a407c19318a3206ed88" integrity sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg== +is-retry-allowed@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz#11a060568b67339444033d0125a61a20d564fb34" + integrity sha1-EaBgVotnM5REAz0BJaYaINVk+zQ= + is-root@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/is-root/-/is-root-2.0.0.tgz#838d1e82318144e5a6f77819d90207645acc7019" integrity sha512-F/pJIk8QD6OX5DNhRB7hWamLsUilmkDGho48KbgZ6xg/lmAZXHxzXQ91jzB3yRSw5kdQGGGc4yz8HYhTYIMWPg== -is-stream@^1.0.1, is-stream@^1.1.0: +is-stream@^1.0.0, is-stream@^1.0.1, is-stream@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= @@ -6898,6 +7015,13 @@ jsonfile@^2.1.0: optionalDependencies: graceful-fs "^4.1.6" +jsonfile@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" + integrity sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss= + optionalDependencies: + graceful-fs "^4.1.6" + jsonify@~0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" @@ -6966,6 +7090,13 @@ kleur@^2.0.1: resolved "https://registry.yarnpkg.com/kleur/-/kleur-2.0.2.tgz#b704f4944d95e255d038f0cb05fb8a602c55a300" integrity sha512-77XF9iTllATmG9lSlIv0qdQ2BQ/h9t0bJllHlbvsQ0zUWfU7Yi0S8L5JXzPZgkefIiajLmBJJ4BsMJmqcf7oxQ== +latest-version@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-3.1.0.tgz#a205383fea322b33b5ae3b18abee0dc2f356ee15" + integrity sha1-ogU4P+oyKzO1rjsYq+4NwvNW7hU= + dependencies: + package-json "^4.0.0" + lazy-universal-dotenv@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/lazy-universal-dotenv/-/lazy-universal-dotenv-2.0.0.tgz#e015ad9f77be9ef811956d53ea9519b1c0ab0214" @@ -7148,6 +7279,11 @@ lower-case@^1.1.1: resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-1.1.4.tgz#9a2cabd1b9e8e0ae993a4bf7d5875c39c42e8eac" integrity sha1-miyr0bno4K6ZOkv31YdcOcQujqw= +lowercase-keys@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f" + integrity sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA== + lru-cache@^4.0.1, lru-cache@^4.1.3: version "4.1.5" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" @@ -8172,7 +8308,7 @@ os-locale@^2.0.0: lcid "^1.0.0" mem "^1.1.0" -os-tmpdir@^1.0.0, os-tmpdir@^1.0.1, os-tmpdir@~1.0.2: +os-tmpdir@^1.0.0, os-tmpdir@^1.0.1, os-tmpdir@~1.0.1, os-tmpdir@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= @@ -8185,15 +8321,6 @@ osenv@^0.1.4: os-homedir "^1.0.0" os-tmpdir "^1.0.0" -output-file-sync@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/output-file-sync/-/output-file-sync-2.0.1.tgz#f53118282f5f553c2799541792b723a4c71430c0" - integrity sha512-mDho4qm7WgIXIGf4eYU1RHN2UU5tPfVYVSRwDJw0uTmj35DQUt/eNp19N7v6T3SrR0ESTEf2up2CGO73qI35zQ== - dependencies: - graceful-fs "^4.1.11" - is-plain-obj "^1.1.0" - mkdirp "^0.5.1" - p-finally@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" @@ -8237,6 +8364,16 @@ p-try@^2.0.0: resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.0.0.tgz#85080bb87c64688fa47996fe8f7dfbe8211760b1" integrity sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ== +package-json@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/package-json/-/package-json-4.0.1.tgz#8869a0401253661c4c4ca3da6c2121ed555f5eed" + integrity sha1-iGmgQBJTZhxMTKPabCEh7VVfXu0= + dependencies: + got "^6.7.1" + registry-auth-token "^3.0.1" + registry-url "^3.0.3" + semver "^5.1.0" + pako@~1.0.5: version "1.0.7" resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.7.tgz#2473439021b57f1516c82f58be7275ad8ef1bb27" @@ -8319,6 +8456,20 @@ pascalcase@^0.1.1: resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= +patch-package@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/patch-package/-/patch-package-5.1.1.tgz#e5e82fe08bed760b773b8eb73a7bcb7c1634f802" + integrity sha512-bO+vfFGgTVTtv89kXWGEMIPnrYhhhMtbOnJKStfIhNWUxperVjlI++1ixksi0YPCMPGuFy9W3zsKHxIITV2r2A== + dependencies: + chalk "^1.1.3" + cross-spawn "^5.1.0" + fs-extra "^4.0.1" + minimist "^1.2.0" + rimraf "^2.6.1" + slash "^1.0.0" + tmp "^0.0.31" + update-notifier "^2.2.0" + path-browserify@0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.0.tgz#a0b870729aae214005b7d5032ec2cbbb0fb4451a" @@ -8346,7 +8497,7 @@ path-is-absolute@^1.0.0, path-is-absolute@^1.0.1: resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= -path-is-inside@^1.0.2: +path-is-inside@^1.0.1, path-is-inside@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" integrity sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM= @@ -8590,11 +8741,21 @@ postcss@^7.0.0, postcss@^7.0.6: source-map "^0.6.1" supports-color "^5.5.0" +postinstall-prepare@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/postinstall-prepare/-/postinstall-prepare-1.0.1.tgz#dac9b5d91b054389141b13c0192eb68a0aa002b5" + integrity sha512-4zxO4DjrV0XfD+ABUFEP0MiQmhKOGBnov5LfLsra/XVOUcQ5gMLLMcV3b8K8wJUfNDv1ozleGblYb06gPbjVUQ== + prelude-ls@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= +prepend-http@^1.0.1: + version "1.0.4" + resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" + integrity sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw= + preserve@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" @@ -8697,9 +8858,9 @@ process@~0.5.1: integrity sha1-FjjYqONML0QKkduVq5rrZ3/Bhc8= progress@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.1.tgz#c9242169342b1c29d275889c95734621b1952e31" - integrity sha512-OE+a6vzqazc+K6LxJrX5UPyKFvGnL5CYmq2jFGNIBWHpc4QyE49/YOumcrpQFJpfejmvRtbJzgO1zPmMCqlbBg== + version "2.0.2" + resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.2.tgz#db9476f916bcc9ebe8a04efb22b18b0740376c61" + integrity sha512-/OLz5F9beZUWwSHZDreXgap1XShX6W+DCHQCqwCF7uZ88s6uTlD2cR3JBE77SegCmNtb1Idst+NfmwcdU6KVhw== promise-inflight@^1.0.1: version "1.0.1" @@ -8897,7 +9058,7 @@ raw-loader@^0.5.1: resolved "https://registry.yarnpkg.com/raw-loader/-/raw-loader-0.5.1.tgz#0c3d0beaed8a01c966d9787bf778281252a979aa" integrity sha1-DD0L6u2KAclm2Xh793goElKpeao= -rc@^1.2.7: +rc@^1.0.1, rc@^1.1.6, rc@^1.2.7: version "1.2.8" resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== @@ -9231,10 +9392,11 @@ react-test-renderer@16.6.1: scheduler "^0.11.0" react-textarea-autosize@^7.0.4: - version "7.0.4" - resolved "https://registry.yarnpkg.com/react-textarea-autosize/-/react-textarea-autosize-7.0.4.tgz#4e4be649b544a88713e7b5043f76950f35d3d503" - integrity sha512-1cC8pFSrIVH92aE+UKxGQ2Gqq43qdIcMscJKScEFeBNemn6gHa+NwKqdXkHxxg5H6uuvW+cPpJPTes6zh90M+A== + version "7.1.0" + resolved "https://registry.yarnpkg.com/react-textarea-autosize/-/react-textarea-autosize-7.1.0.tgz#3132cb77e65d94417558d37c0bfe415a5afd3445" + integrity sha512-c2FlR/fP0qbxmlrW96SdrbgP/v0XZMTupqB90zybvmDVDutytUgPl7beU35klwcTeMepUIQEpQUn3P3bdshGPg== dependencies: + "@babel/runtime" "^7.1.2" prop-types "^15.6.0" react-timer-mixin@^0.13.2, react-timer-mixin@^0.13.3: @@ -9495,6 +9657,21 @@ regexpu-core@^4.1.3, regexpu-core@^4.2.0: unicode-match-property-ecmascript "^1.0.4" unicode-match-property-value-ecmascript "^1.0.2" +registry-auth-token@^3.0.1: + version "3.3.2" + resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-3.3.2.tgz#851fd49038eecb586911115af845260eec983f20" + integrity sha512-JL39c60XlzCVgNrO+qq68FoNb56w/m7JYvGR2jT5iR1xBrUA3Mfx5Twk5rqTThPmQKMWydGmq8oFtDlxfrmxnQ== + dependencies: + rc "^1.1.6" + safe-buffer "^5.0.1" + +registry-url@^3.0.3: + version "3.1.0" + resolved "https://registry.yarnpkg.com/registry-url/-/registry-url-3.1.0.tgz#3d4ef870f73dde1d77f0cf9a381432444e174942" + integrity sha1-PU74cPc93h138M+aOBQyRE4XSUI= + dependencies: + rc "^1.0.1" + regjsgen@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.2.0.tgz#6c016adeac554f75823fe37ac05b92d5a4edb1f7" @@ -9828,9 +10005,9 @@ sax@~1.1.1: integrity sha1-XWFr6KXmB9VOEUr65Vt+ry/MMkA= scheduler@^0.11.0: - version "0.11.2" - resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.11.2.tgz#a8db5399d06eba5abac51b705b7151d2319d33d3" - integrity sha512-+WCP3s3wOaW4S7C1tl3TEXp4l9lJn0ZK8G3W3WKRWmw77Z2cIFUW2MiNTMHn5sCjxN+t7N43HAOOgMjyAg5hlg== + version "0.11.3" + resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.11.3.tgz#b5769b90cf8b1464f3f3cfcafe8e3cd7555a2d6b" + integrity sha512-i9X9VRRVZDd3xZw10NY5Z2cVMbdYg6gqFecfj79USv1CFN+YrJ3gIPRKf1qlY+Sxly4djoKdfx1T+m9dnRB8kQ== dependencies: loose-envify "^1.1.0" object-assign "^4.1.1" @@ -9852,6 +10029,13 @@ schema-utils@^1.0.0: ajv-errors "^1.0.0" ajv-keywords "^3.1.0" +semver-diff@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-2.1.0.tgz#4bbb8437c8d37e4b0cf1a68fd726ec6d645d6d36" + integrity sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY= + dependencies: + semver "^5.0.3" + "semver@2 || 3 || 4 || 5", semver@^5.0.3, semver@^5.1.0, semver@^5.3.0, semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0: version "5.6.0" resolved "https://registry.yarnpkg.com/semver/-/semver-5.6.0.tgz#7e74256fbaa49c75aa7c7a205cc22799cac80004" @@ -10571,6 +10755,11 @@ time-stamp@^1.0.0: resolved "https://registry.yarnpkg.com/time-stamp/-/time-stamp-1.1.0.tgz#764a5a11af50561921b133f3b44e618687e0f5c3" integrity sha1-dkpaEa9QVhkhsTPztE5hhofg9cM= +timed-out@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f" + integrity sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8= + timers-browserify@^2.0.4: version "2.0.10" resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.10.tgz#1d28e3d2aadf1d5a5996c4e9f95601cd053480ae" @@ -10583,6 +10772,13 @@ tinycolor2@^1.4.1: resolved "https://registry.yarnpkg.com/tinycolor2/-/tinycolor2-1.4.1.tgz#f4fad333447bc0b07d4dc8e9209d8f39a8ac77e8" integrity sha1-9PrTM0R7wLB9TcjpIJ2POaisd+g= +tmp@^0.0.31: + version "0.0.31" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.31.tgz#8f38ab9438e17315e5dbd8b3657e8bfb277ae4a7" + integrity sha1-jzirlDjhcxXl29izZX6L+yd65Kc= + dependencies: + os-tmpdir "~1.0.1" + tmp@^0.0.33: version "0.0.33" resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" @@ -10801,6 +10997,18 @@ unique-slug@^2.0.0: dependencies: imurmurhash "^0.1.4" +unique-string@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-1.0.0.tgz#9e1057cca851abb93398f8b33ae187b99caec11a" + integrity sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo= + dependencies: + crypto-random-string "^1.0.0" + +universalify@^0.1.0: + version "0.1.2" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" + integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== + unpipe@1.0.0, unpipe@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" @@ -10814,11 +11022,32 @@ unset-value@^1.0.0: has-value "^0.3.1" isobject "^3.0.0" +unzip-response@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/unzip-response/-/unzip-response-2.0.1.tgz#d2f0f737d16b0615e72a6935ed04214572d56f97" + integrity sha1-0vD3N9FrBhXnKmk17QQhRXLVb5c= + upath@^1.0.5: version "1.1.0" resolved "https://registry.yarnpkg.com/upath/-/upath-1.1.0.tgz#35256597e46a581db4793d0ce47fa9aebfc9fabd" integrity sha512-bzpH/oBhoS/QI/YtbkqCg6VEiPYjSZtrHQM6/QnJS6OL9pKUFLqb3aFh4Scvwm45+7iAgiMkLhSbaZxUqmrprw== +update-notifier@^2.2.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-2.5.0.tgz#d0744593e13f161e406acb1d9408b72cad08aff6" + integrity sha512-gwMdhgJHGuj/+wHJJs9e6PcCszpxR1b236igrOkUofGhqJuG+amlIKwApH1IW1WWl7ovZxsX49lMBWLxSdm5Dw== + dependencies: + boxen "^1.2.1" + chalk "^2.0.1" + configstore "^3.0.0" + import-lazy "^2.1.0" + is-ci "^1.0.10" + is-installed-globally "^0.1.0" + is-npm "^1.0.0" + latest-version "^3.0.0" + semver-diff "^2.0.0" + xdg-basedir "^3.0.0" + upper-case@^1.1.1: version "1.1.3" resolved "https://registry.yarnpkg.com/upper-case/-/upper-case-1.1.3.tgz#f6b4501c2ec4cdd26ba78be7222961de77621598" @@ -10845,6 +11074,13 @@ url-loader@^1.1.2: mime "^2.0.3" schema-utils "^1.0.0" +url-parse-lax@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-1.0.0.tgz#7af8f303645e9bd79a272e7a14ac68bc0609da73" + integrity sha1-evjzA2Rem9eaJy56FKxovAYJ2nM= + dependencies: + prepend-http "^1.0.1" + url-parse@^1.1.8, url-parse@^1.4.3: version "1.4.4" resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.4.4.tgz#cac1556e95faa0303691fec5cf9d5a1bc34648f8" @@ -11056,9 +11292,9 @@ webpack-sources@^1.1.0, webpack-sources@^1.3.0: source-map "~0.6.1" webpack@^4.23.1, webpack@^4.25.1: - version "4.26.1" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.26.1.tgz#ff3a9283d363c07b3494dfa702d08f4f2ef6cb39" - integrity sha512-i2oOvEvuvLLSuSCkdVrknaxAhtUZ9g+nLSoHCWV0gDzqGX2DXaCrMmMUpbRsTSSLrUqAI56PoEiyMUZIZ1msug== + version "4.27.0" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.27.0.tgz#1db66f03f0239bf797827f0580f53a41abd4067c" + integrity sha512-y77EQNIlsB9fUGgpLv/ZzmH+Yd9DgyIF9omX9RFavR5ZFM6HxFm6sqkbBXYxpjbKej9K6hD+Y8qEVg2rWdI2gg== dependencies: "@webassemblyjs/ast" "1.7.11" "@webassemblyjs/helper-module-context" "1.7.11" @@ -11198,7 +11434,7 @@ write-file-atomic@^1.2.0: imurmurhash "^0.1.4" slide "^1.1.5" -write-file-atomic@^2.1.0: +write-file-atomic@^2.0.0, write-file-atomic@^2.1.0: version "2.3.0" resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.3.0.tgz#1ff61575c2e2a4e8e510d6fa4e243cce183999ab" integrity sha512-xuPeK4OdjWqtfi59ylvVL0Yn35SF3zgcAcv7rBPFHVaEapaDr4GdGgm3j7ckTwH9wHL7fGmgfAnb0+THrHb8tA== @@ -11254,6 +11490,11 @@ xcode@^1.0.0: simple-plist "^0.2.1" uuid "3.0.1" +xdg-basedir@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-3.0.0.tgz#496b2cc109eca8dbacfe2dc72b603c17c5870ad4" + integrity sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ= + xml-name-validator@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a" From 159dbdfd16bdbd7e920e090b1d1cfda7f38455e2 Mon Sep 17 00:00:00 2001 From: lukewalczak Date: Wed, 5 Dec 2018 12:55:53 +0100 Subject: [PATCH 5/9] Adjust patched slider --- .../react-native-multi-slider+1.0.0.patch | 95 +++----- src/Slider/CompactSlider.js | 67 ------ src/Slider/Slider.js | 6 +- src/Slider/Slider.stories.js | 28 ++- src/Slider/SliderLabels.js | 209 ------------------ src/Slider/index.js | 2 - 6 files changed, 62 insertions(+), 345 deletions(-) delete mode 100644 src/Slider/CompactSlider.js delete mode 100644 src/Slider/SliderLabels.js diff --git a/patches/@ptomasroos/react-native-multi-slider+1.0.0.patch b/patches/@ptomasroos/react-native-multi-slider+1.0.0.patch index 2863e69..cb3d960 100644 --- a/patches/@ptomasroos/react-native-multi-slider+1.0.0.patch +++ b/patches/@ptomasroos/react-native-multi-slider+1.0.0.patch @@ -177,12 +177,7 @@ patch-package ); this.setState({ positionOne: this.props.snapped ? snapped : confined, -@@ -231,15 +238,17 @@ export default class MultiSlider extends React.Component { - if (value !== this.state.valueOne) { - this.setState( - { -+ activeOne: true, -+ activeTwo: false, +@@ -234,12 +241,12 @@ export default class MultiSlider extends React.Component { valueOne: value, }, () => { @@ -197,7 +192,7 @@ patch-package ); } } -@@ -249,24 +258,26 @@ export default class MultiSlider extends React.Component { +@@ -249,24 +256,26 @@ export default class MultiSlider extends React.Component { if (!this.props.enabledTwo) { return; } @@ -235,12 +230,7 @@ patch-package ); this.setState({ -@@ -276,11 +287,16 @@ export default class MultiSlider extends React.Component { - if (value !== this.state.valueTwo) { - this.setState( - { -+ activeTwo: true, -+ activeOne: false, +@@ -279,8 +288,11 @@ export default class MultiSlider extends React.Component { valueTwo: value, }, () => { @@ -254,17 +244,7 @@ patch-package ); } } -@@ -292,18 +308,22 @@ export default class MultiSlider extends React.Component { - return; - } - -+ const lastOnePosition = -+ Math.min(this.state.positionTwo - this.state.positionOne, 50) - 50; -+ - this.setState( - { -+ lastOnePosition, - pastOne: this.state.positionOne, +@@ -298,12 +310,12 @@ export default class MultiSlider extends React.Component { onePressed: !this.state.onePressed, }, () => { @@ -279,20 +259,7 @@ patch-package ); }; -@@ -313,8 +333,12 @@ export default class MultiSlider extends React.Component { - return; - } - -+ const lastTwoPosition = -+ Math.min(this.state.positionOne - this.state.positionTwo, 50) + 50; -+ - this.setState( - { -+ lastTwoPosition, - twoPressed: !this.state.twoPressed, - pastTwo: this.state.positionTwo, - }, -@@ -323,14 +347,107 @@ export default class MultiSlider extends React.Component { +@@ -323,14 +335,107 @@ export default class MultiSlider extends React.Component { this.state.valueOne, this.state.valueTwo, ]); @@ -403,7 +370,7 @@ patch-package const trackOneLength = positionOne; const trackOneStyle = twoMarkers -@@ -358,9 +475,15 @@ export default class MultiSlider extends React.Component { +@@ -358,9 +463,15 @@ export default class MultiSlider extends React.Component { borderRadius: borderRadius || 0, }; @@ -421,7 +388,7 @@ patch-package return ( -@@ -381,15 +504,60 @@ export default class MultiSlider extends React.Component { +@@ -381,15 +492,62 @@ export default class MultiSlider extends React.Component { { width: trackTwoLength }, ]} /> @@ -465,32 +432,34 @@ patch-package + {this.state.startLabel || this.state.valueOne} + + -+ -+ -+ {this.props.endLabel || this.state.valueTwo} -+ -+ ++ ++ {this.props.endLabel || this.state.valueTwo} ++ ++ ++ )} ); -@@ -468,7 +657,7 @@ const styles = StyleSheet.create({ +@@ -468,7 +647,7 @@ const styles = StyleSheet.create({ container: { position: 'relative', height: 50, diff --git a/src/Slider/CompactSlider.js b/src/Slider/CompactSlider.js deleted file mode 100644 index 5cac2a2..0000000 --- a/src/Slider/CompactSlider.js +++ /dev/null @@ -1,67 +0,0 @@ -// @flow - -import * as React from 'react'; -import { View } from 'react-native'; - -import Slider from './Slider'; -import StyleSheet from '../PlatformStyleSheet'; - -type Props = {| - +min: number, - +max: number, - +start: number, - +end: number, - +startLabel?: React.Node, - +endLabel?: React.Node, -|}; - -type State = {| - start: number, - end: number, -|}; - -export default class CompactSlider extends React.Component { - constructor(props: Props) { - super(props); - - const { start, end } = this.props; - - this.state = { - start, - end, - }; - } - - handlePriceChanged = ([start, end]: number[]) => - this.setState({ - start, - end, - }); - - render() { - const { start, end } = this.state; - const { min, max, startLabel, endLabel } = this.props; - - return ( - - - - - - ); - } -} - -const styles = StyleSheet.create({ - sliderContainer: { - paddingHorizontal: 20, - }, -}); diff --git a/src/Slider/Slider.js b/src/Slider/Slider.js index 0fe0f72..c8b7150 100644 --- a/src/Slider/Slider.js +++ b/src/Slider/Slider.js @@ -86,7 +86,7 @@ export default class Slider extends React.Component { } return ( - + { } const styles = StyleSheet.create({ + sliderContainer: { + alignSelf: 'center', + width: '85%', + }, selected: { backgroundColor: defaultTokens.paletteBlueNormal, }, diff --git a/src/Slider/Slider.stories.js b/src/Slider/Slider.stories.js index 4a844bd..4287e2f 100644 --- a/src/Slider/Slider.stories.js +++ b/src/Slider/Slider.stories.js @@ -2,11 +2,33 @@ import React from 'react'; import { storiesOf } from '@storybook/react-native'; -import { withKnobs } from '@storybook/addon-knobs'; -import CompactSlider from './CompactSlider'; +import { withKnobs, number, boolean } from '@storybook/addon-knobs'; +import Slider from './Slider'; +const noop = () => {}; storiesOf('Slider', module) .addDecorator(withKnobs) + .add('Playground', () => { + const min = number('Min value', 0); + const max = number('Max value', 100000); + const start = number('Start value', 20000); + const end = number('End value', 80000); + const snapped = boolean('Snapped', false); + + return ( + + ); + }) .add('Default', () => ( - + + )) + .add('Only one marker', () => ( + )); diff --git a/src/Slider/SliderLabels.js b/src/Slider/SliderLabels.js deleted file mode 100644 index 144e309..0000000 --- a/src/Slider/SliderLabels.js +++ /dev/null @@ -1,209 +0,0 @@ -// @flow - -import * as React from 'react'; -import { defaultTokens } from '@kiwicom/orbit-design-tokens'; -import { View } from 'react-native'; - -import Text from '../Text'; -import StyleSheet from '../PlatformStyleSheet'; - -import { type OnLayout } from './SliderTypes'; - -type Props = {| - +startLabel?: React.Node, - +startValue: number, - +endLabel?: React.Node, - +endValue?: number, - +max: number, - +min: number, -|}; - -type State = {| - width: number, - labelStartWidth: number, - labelStartAtMax: boolean, - labelEndWidth: number, - paddingLeft: number, - paddingRight: number, -|}; - -export default class SliderLabels extends React.Component { - constructor(props: Props) { - super(props); - this.state = { - width: 0, - labelStartWidth: 0, - labelStartAtMax: false, - labelEndWidth: 0, - paddingLeft: 0, - paddingRight: 0, - }; - } - - componentDidMount() { - const { endValue } = this.props; - if (endValue) { - requestAnimationFrame(this.setPaddingForTwoLabels); - } else { - requestAnimationFrame(this.setPaddingForOneLabel); - } - } - - getMaxPadding = (gap: number): number => { - const { width, labelStartWidth, labelEndWidth } = this.state; - return Math.floor(width - labelStartWidth - labelEndWidth - gap); - }; - - calculateMarkerStartOffset = (): number => { - const { width } = this.state; - const { min, max, startValue } = this.props; - - let val; - if (startValue > max) { - val = max; - } else if (startValue < min) { - val = min; - } else { - val = startValue; - } - - return Math.round((val / (max - min)) * width); - }; - - calculateMarkerEndOffset = (): number => { - const { width } = this.state; - const { min, max, endValue } = this.props; - - if (!endValue) { - return 0; - } - - let val; - if (endValue > max) { - val = max; - } else if (endValue < min) { - val = min; - } else { - val = endValue; - } - - const w = (val / (max - min)) * width; - return Math.round(width - w); - }; - - getStartLabelOffset = (): number => { - const { labelStartWidth } = this.state; - const startMarkerOffset = this.calculateMarkerStartOffset(); - const startLabelHalf = labelStartWidth / 2; - - return startMarkerOffset < startLabelHalf - ? 0 - : startMarkerOffset - startLabelHalf; - }; - - isBelowMaxPadding = (value: number, gap: number = 0): boolean => { - const maxPadding = this.getMaxPadding(gap); - return value + gap < maxPadding; - }; - - setPaddingForTwoLabels = (): void => { - const { labelEndWidth, paddingLeft, paddingRight } = this.state; - const startLabelOffset = this.getStartLabelOffset(); - const endMarkerOffset = this.calculateMarkerEndOffset(); - const endLabelHalf = labelEndWidth / 2; - const endLabelOffset = - endMarkerOffset < endLabelHalf ? 0 : endMarkerOffset - endLabelHalf; - - const isBelowMaxPadding = this.isBelowMaxPadding( - startLabelOffset + endLabelOffset, - 10 - ); - - const hasOffsetChanged = - paddingLeft !== startLabelOffset || paddingRight !== endLabelOffset; - - if (isBelowMaxPadding && hasOffsetChanged) { - this.setState({ - paddingLeft: startLabelOffset, - paddingRight: endLabelOffset, - }); - } - - requestAnimationFrame(this.setPaddingForTwoLabels); - }; - - setPaddingForOneLabel = (): void => { - const { paddingLeft, labelStartAtMax } = this.state; - const startLabelOffset = this.getStartLabelOffset(); - const isBelowMaxPadding = this.isBelowMaxPadding(startLabelOffset); - const hasOffsetChanged = paddingLeft !== startLabelOffset; - - if (isBelowMaxPadding) { - if (hasOffsetChanged) { - this.setState({ - paddingLeft: startLabelOffset, - }); - } - - if (labelStartAtMax) { - this.setState({ labelStartAtMax: false }); - } - } else if (labelStartAtMax === false) { - this.setState({ labelStartAtMax: true }); - } - - requestAnimationFrame(this.setPaddingForOneLabel); - }; - - saveFullWidth = (e: OnLayout) => { - this.setState({ width: Math.floor(e.nativeEvent.layout.width) }); - }; - - saveLabelStartWidth = (e: OnLayout) => { - this.setState({ labelStartWidth: Math.floor(e.nativeEvent.layout.width) }); - }; - - saveLabelEndWidth = (e: OnLayout) => { - this.setState({ labelEndWidth: Math.floor(e.nativeEvent.layout.width) }); - }; - - render() { - const { paddingLeft, paddingRight, labelStartAtMax } = this.state; - const { startLabel, startValue, endLabel, endValue } = this.props; - return ( - - - {startLabel || startValue} - - {endValue && ( - - {endLabel || endValue} - - )} - - ); - } -} - -const styles = StyleSheet.create({ - sliderLabels: { - width: '100%', - flexDirection: 'row', - marginTop: 10, - marginBottom: 5, - }, - label: { - fontSize: 14, - color: defaultTokens.paletteBlueNormal, - }, -}); diff --git a/src/Slider/index.js b/src/Slider/index.js index 170e3ec..a04f1af 100644 --- a/src/Slider/index.js +++ b/src/Slider/index.js @@ -1,5 +1,3 @@ // @flow export { default as Slider } from './Slider'; -export { default as SliderLabels } from './SliderLabels'; -export { default as CompactSlider } from './CompactSlider'; From d7b47afec0adab92c44abb60983b4680bc1fddc4 Mon Sep 17 00:00:00 2001 From: lukewalczak Date: Wed, 5 Dec 2018 12:58:32 +0100 Subject: [PATCH 6/9] Re-patch multi slider lib --- .../react-native-multi-slider+1.0.0.patch | 42 ++++++++----------- 1 file changed, 18 insertions(+), 24 deletions(-) diff --git a/patches/@ptomasroos/react-native-multi-slider+1.0.0.patch b/patches/@ptomasroos/react-native-multi-slider+1.0.0.patch index cb3d960..bc3479c 100644 --- a/patches/@ptomasroos/react-native-multi-slider+1.0.0.patch +++ b/patches/@ptomasroos/react-native-multi-slider+1.0.0.patch @@ -1,13 +1,7 @@ patch-package --- a/node_modules/@ptomasroos/react-native-multi-slider/MultiSlider.js +++ b/node_modules/@ptomasroos/react-native-multi-slider/MultiSlider.js -@@ -1,3 +1,5 @@ -+// @flow -+ - import React from 'react'; - import PropTypes from 'prop-types'; - -@@ -7,7 +9,8 @@ import { +@@ -7,7 +7,8 @@ import { View, TouchableHighlight, Platform, @@ -17,7 +11,7 @@ patch-package } from 'react-native'; import DefaultMarker from './DefaultMarker'; -@@ -59,12 +62,9 @@ export default class MultiSlider extends React.Component { +@@ -59,12 +60,9 @@ export default class MultiSlider extends React.Component { static defaultProps = { values: [0], @@ -33,7 +27,7 @@ patch-package step: 1, min: 0, max: 10, -@@ -93,12 +93,14 @@ export default class MultiSlider extends React.Component { +@@ -93,12 +91,14 @@ export default class MultiSlider extends React.Component { constructor(props) { super(props); @@ -51,7 +45,7 @@ patch-package this.state = { pressedOne: true, -@@ -108,12 +110,14 @@ export default class MultiSlider extends React.Component { +@@ -108,12 +108,14 @@ export default class MultiSlider extends React.Component { pastTwo: initialValues[1], positionOne: initialValues[0], positionTwo: initialValues[1], @@ -68,7 +62,7 @@ patch-package onStartShouldSetPanResponder: (evt, gestureState) => true, onStartShouldSetPanResponderCapture: (evt, gestureState) => true, onMoveShouldSetPanResponder: (evt, gestureState) => true, -@@ -125,17 +129,16 @@ export default class MultiSlider extends React.Component { +@@ -125,17 +127,16 @@ export default class MultiSlider extends React.Component { onPanResponderTerminate: (evt, gestureState) => end(gestureState), onShouldBlockNativeResponder: (evt, gestureState) => true, }); @@ -88,7 +82,7 @@ patch-package ); } -@@ -144,33 +147,35 @@ export default class MultiSlider extends React.Component { +@@ -144,33 +145,35 @@ export default class MultiSlider extends React.Component { return; } @@ -137,7 +131,7 @@ patch-package ); nextState.valueTwo = nextProps.values[1]; nextState.pastTwo = positionTwo; -@@ -204,25 +209,27 @@ export default class MultiSlider extends React.Component { +@@ -204,25 +207,27 @@ export default class MultiSlider extends React.Component { if (!this.props.enabledOne) { return; } @@ -177,7 +171,7 @@ patch-package ); this.setState({ positionOne: this.props.snapped ? snapped : confined, -@@ -234,12 +241,12 @@ export default class MultiSlider extends React.Component { +@@ -234,12 +239,12 @@ export default class MultiSlider extends React.Component { valueOne: value, }, () => { @@ -192,7 +186,7 @@ patch-package ); } } -@@ -249,24 +256,26 @@ export default class MultiSlider extends React.Component { +@@ -249,24 +254,26 @@ export default class MultiSlider extends React.Component { if (!this.props.enabledTwo) { return; } @@ -230,7 +224,7 @@ patch-package ); this.setState({ -@@ -279,8 +288,11 @@ export default class MultiSlider extends React.Component { +@@ -279,8 +286,11 @@ export default class MultiSlider extends React.Component { valueTwo: value, }, () => { @@ -244,7 +238,7 @@ patch-package ); } } -@@ -298,12 +310,12 @@ export default class MultiSlider extends React.Component { +@@ -298,12 +308,12 @@ export default class MultiSlider extends React.Component { onePressed: !this.state.onePressed, }, () => { @@ -259,7 +253,7 @@ patch-package ); }; -@@ -323,14 +335,107 @@ export default class MultiSlider extends React.Component { +@@ -323,14 +333,107 @@ export default class MultiSlider extends React.Component { this.state.valueOne, this.state.valueTwo, ]); @@ -370,7 +364,7 @@ patch-package const trackOneLength = positionOne; const trackOneStyle = twoMarkers -@@ -358,9 +463,15 @@ export default class MultiSlider extends React.Component { +@@ -358,9 +461,15 @@ export default class MultiSlider extends React.Component { borderRadius: borderRadius || 0, }; @@ -388,7 +382,7 @@ patch-package return ( -@@ -381,15 +492,62 @@ export default class MultiSlider extends React.Component { +@@ -381,15 +490,62 @@ export default class MultiSlider extends React.Component { { width: trackTwoLength }, ]} /> @@ -459,7 +453,7 @@ patch-package ); -@@ -468,7 +647,7 @@ const styles = StyleSheet.create({ +@@ -468,7 +645,7 @@ const styles = StyleSheet.create({ container: { position: 'relative', height: 50, From ebbe1f02f2ff5bc7a2888b2b66efaea596878414 Mon Sep 17 00:00:00 2001 From: lukewalczak Date: Wed, 5 Dec 2018 16:44:15 +0100 Subject: [PATCH 7/9] Replace patch with fork --- package.json | 5 +- .../react-native-multi-slider+1.0.0.patch | 592 ------------------ src/Slider/Slider.js | 2 +- storybook.native/story-loader.js | 7 +- yarn.lock | 47 +- 5 files changed, 30 insertions(+), 623 deletions(-) delete mode 100644 patches/@ptomasroos/react-native-multi-slider+1.0.0.patch diff --git a/package.json b/package.json index 319acae..06d63c5 100644 --- a/package.json +++ b/package.json @@ -16,8 +16,7 @@ "rnstl": "rnstl", "ios": "rnstl && react-native run-ios", "android": "rnstl && react-native run-android", - "npm-publish": "yarn babel-node scripts/createPackage.js && yarn pack", - "prepare": "patch-package" + "npm-publish": "yarn babel-node scripts/createPackage.js && yarn pack" }, "files": [ "/lib", @@ -34,7 +33,7 @@ "license": "MIT", "dependencies": { "@kiwicom/orbit-design-tokens": "^0.2.5", - "@ptomasroos/react-native-multi-slider": "^1.0.0" + "react-native-multi-slider": "https://github.com/lukewalczak/react-native-multi-slider.git#feat/labels" }, "peerDependencies": { "react": "16.6.1", diff --git a/patches/@ptomasroos/react-native-multi-slider+1.0.0.patch b/patches/@ptomasroos/react-native-multi-slider+1.0.0.patch deleted file mode 100644 index bc3479c..0000000 --- a/patches/@ptomasroos/react-native-multi-slider+1.0.0.patch +++ /dev/null @@ -1,592 +0,0 @@ -patch-package ---- a/node_modules/@ptomasroos/react-native-multi-slider/MultiSlider.js -+++ b/node_modules/@ptomasroos/react-native-multi-slider/MultiSlider.js -@@ -7,7 +7,8 @@ import { - View, - TouchableHighlight, - Platform, -- I18nManager -+ I18nManager, -+ Text, - } from 'react-native'; - - import DefaultMarker from './DefaultMarker'; -@@ -59,12 +60,9 @@ export default class MultiSlider extends React.Component { - - static defaultProps = { - values: [0], -- onValuesChangeStart: () => { -- }, -- onValuesChange: values => { -- }, -- onValuesChangeFinish: values => { -- }, -+ onValuesChangeStart: () => {}, -+ onValuesChange: values => {}, -+ onValuesChangeFinish: values => {}, - step: 1, - min: 0, - max: 10, -@@ -93,12 +91,14 @@ export default class MultiSlider extends React.Component { - constructor(props) { - super(props); - -- this.optionsArray = this.props.optionsArray || -+ this.optionsArray = -+ this.props.optionsArray || - createArray(this.props.min, this.props.max, this.props.step); - this.stepLength = this.props.sliderLength / this.optionsArray.length; - -- var initialValues = this.props.values.map(value => -- valueToPosition(value, this.optionsArray, this.props.sliderLength)); -+ const initialValues = this.props.values.map(value => -+ valueToPosition(value, this.optionsArray, this.props.sliderLength) -+ ); - - this.state = { - pressedOne: true, -@@ -108,12 +108,14 @@ export default class MultiSlider extends React.Component { - pastTwo: initialValues[1], - positionOne: initialValues[0], - positionTwo: initialValues[1], -+ labelEndWidth: 0, -+ labelStartWidth: 0, - }; - } - - componentWillMount() { -- var customPanResponder = (start, move, end) => { -- return PanResponder.create({ -+ const customPanResponder = (start, move, end) => -+ PanResponder.create({ - onStartShouldSetPanResponder: (evt, gestureState) => true, - onStartShouldSetPanResponderCapture: (evt, gestureState) => true, - onMoveShouldSetPanResponder: (evt, gestureState) => true, -@@ -125,17 +127,16 @@ export default class MultiSlider extends React.Component { - onPanResponderTerminate: (evt, gestureState) => end(gestureState), - onShouldBlockNativeResponder: (evt, gestureState) => true, - }); -- }; - - this._panResponderOne = customPanResponder( - this.startOne, - this.moveOne, -- this.endOne, -+ this.endOne - ); - this._panResponderTwo = customPanResponder( - this.startTwo, - this.moveTwo, -- this.endTwo, -+ this.endTwo - ); - } - -@@ -144,33 +145,35 @@ export default class MultiSlider extends React.Component { - return; - } - -- let nextState = {}; -- if (nextProps.min !== this.props.min || -- nextProps.max !== this.props.max || -- nextProps.values[0] !== this.state.valueOne || -- nextProps.sliderLength !== this.props.sliderLength || -- nextProps.values[1] !== this.state.valueTwo || -- (nextProps.sliderLength !== this.props.sliderLength && -- nextProps.values[1]) -+ const nextState = {}; -+ if ( -+ nextProps.min !== this.props.min || -+ nextProps.max !== this.props.max || -+ nextProps.values[0] !== this.state.valueOne || -+ nextProps.sliderLength !== this.props.sliderLength || -+ nextProps.values[1] !== this.state.valueTwo || -+ (nextProps.sliderLength !== this.props.sliderLength && -+ nextProps.values[1]) - ) { -- this.optionsArray = this.props.optionsArray || -+ this.optionsArray = -+ this.props.optionsArray || - createArray(nextProps.min, nextProps.max, nextProps.step); - - this.stepLength = this.props.sliderLength / this.optionsArray.length; - -- var positionOne = valueToPosition( -+ const positionOne = valueToPosition( - nextProps.values[0], - this.optionsArray, -- nextProps.sliderLength, -+ nextProps.sliderLength - ); - nextState.valueOne = nextProps.values[0]; - nextState.pastOne = positionOne; - nextState.positionOne = positionOne; - -- var positionTwo = valueToPosition( -+ const positionTwo = valueToPosition( - nextProps.values[1], - this.optionsArray, -- nextProps.sliderLength, -+ nextProps.sliderLength - ); - nextState.valueTwo = nextProps.values[1]; - nextState.pastTwo = positionTwo; -@@ -204,25 +207,27 @@ export default class MultiSlider extends React.Component { - if (!this.props.enabledOne) { - return; - } -- const unconfined = I18nManager.isRTL ? this.state.pastOne - gestureState.dx : gestureState.dx + this.state.pastOne; -- var bottom = 0; -- var trueTop = this.state.positionTwo - (this.props.allowOverlap ? 0 : this.stepLength); -- var top = trueTop === 0 ? 0 : trueTop || this.props.sliderLength; -- var confined = unconfined < bottom -- ? bottom -- : unconfined > top ? top : unconfined; -- var slipDisplacement = this.props.touchDimensions.slipDisplacement; -+ const unconfined = I18nManager.isRTL -+ ? this.state.pastOne - gestureState.dx -+ : gestureState.dx + this.state.pastOne; -+ const bottom = 0; -+ const trueTop = -+ this.state.positionTwo - (this.props.allowOverlap ? 0 : this.stepLength); -+ const top = trueTop === 0 ? 0 : trueTop || this.props.sliderLength; -+ const confined = -+ unconfined < bottom ? bottom : unconfined > top ? top : unconfined; -+ const slipDisplacement = this.props.touchDimensions.slipDisplacement; - - if (Math.abs(gestureState.dy) < slipDisplacement || !slipDisplacement) { -- var value = positionToValue( -+ const value = positionToValue( - confined, - this.optionsArray, -- this.props.sliderLength, -+ this.props.sliderLength - ); -- var snapped = valueToPosition( -+ const snapped = valueToPosition( - value, - this.optionsArray, -- this.props.sliderLength, -+ this.props.sliderLength - ); - this.setState({ - positionOne: this.props.snapped ? snapped : confined, -@@ -234,12 +239,12 @@ export default class MultiSlider extends React.Component { - valueOne: value, - }, - () => { -- var change = [this.state.valueOne]; -+ const change = [this.state.valueOne]; - if (this.state.valueTwo) { - change.push(this.state.valueTwo); - } - this.props.onValuesChange(change); -- }, -+ } - ); - } - } -@@ -249,24 +254,26 @@ export default class MultiSlider extends React.Component { - if (!this.props.enabledTwo) { - return; - } -- const unconfined = I18nManager.isRTL ? this.state.pastTwo - gestureState.dx : gestureState.dx + this.state.pastTwo; -- var bottom = this.state.positionOne + (this.props.allowOverlap ? 0 : this.stepLength); -- var top = this.props.sliderLength; -- var confined = unconfined < bottom -- ? bottom -- : unconfined > top ? top : unconfined; -- var slipDisplacement = this.props.touchDimensions.slipDisplacement; -+ const unconfined = I18nManager.isRTL -+ ? this.state.pastTwo - gestureState.dx -+ : gestureState.dx + this.state.pastTwo; -+ const bottom = -+ this.state.positionOne + (this.props.allowOverlap ? 0 : this.stepLength); -+ const top = this.props.sliderLength; -+ const confined = -+ unconfined < bottom ? bottom : unconfined > top ? top : unconfined; -+ const slipDisplacement = this.props.touchDimensions.slipDisplacement; - - if (Math.abs(gestureState.dy) < slipDisplacement || !slipDisplacement) { -- var value = positionToValue( -+ const value = positionToValue( - confined, - this.optionsArray, -- this.props.sliderLength, -+ this.props.sliderLength - ); -- var snapped = valueToPosition( -+ const snapped = valueToPosition( - value, - this.optionsArray, -- this.props.sliderLength, -+ this.props.sliderLength - ); - - this.setState({ -@@ -279,8 +286,11 @@ export default class MultiSlider extends React.Component { - valueTwo: value, - }, - () => { -- this.props.onValuesChange([this.state.valueOne, this.state.valueTwo]); -- }, -+ this.props.onValuesChange([ -+ this.state.valueOne, -+ this.state.valueTwo, -+ ]); -+ } - ); - } - } -@@ -298,12 +308,12 @@ export default class MultiSlider extends React.Component { - onePressed: !this.state.onePressed, - }, - () => { -- var change = [this.state.valueOne]; -+ const change = [this.state.valueOne]; - if (this.state.valueTwo) { - change.push(this.state.valueTwo); - } - this.props.onValuesChangeFinish(change); -- }, -+ } - ); - }; - -@@ -323,14 +333,107 @@ export default class MultiSlider extends React.Component { - this.state.valueOne, - this.state.valueTwo, - ]); -- }, -+ } - ); - }; - -+ getTranslateOne = () => { -+ const { -+ positionOne, -+ positionTwo, -+ labelEndWidth, -+ labelStartWidth, -+ } = this.state; -+ -+ const twoEndCondition = -+ positionTwo + labelEndWidth / 2 > this.props.sliderLength; -+ -+ if (positionOne - labelStartWidth / 2 < 0) { -+ return 0; -+ } -+ -+ const defaultPosition = positionOne - labelStartWidth / 2; -+ -+ const markersGap = positionTwo - positionOne; -+ const diff = twoEndCondition -+ ? markersGap - (labelEndWidth / 2 + labelStartWidth / 2) - 10 -+ : markersGap - (labelEndWidth + labelStartWidth / 2) - 10; -+ -+ if ( -+ twoEndCondition && -+ markersGap - (labelEndWidth + labelStartWidth / 2) - 10 < 0 -+ ) { -+ // collision with marker one stick to left -+ return ( -+ defaultPosition + -+ markersGap - -+ (labelEndWidth + labelStartWidth / 2) - -+ 10 -+ ); -+ } -+ -+ if (diff < 0) { -+ // collision -+ return defaultPosition + diff / 2; -+ } -+ -+ return defaultPosition; -+ }; -+ -+ getTranslateTwo = () => { -+ const { -+ positionOne, -+ positionTwo, -+ labelEndWidth, -+ labelStartWidth, -+ } = this.state; -+ -+ const oneEndCondition = positionOne - labelStartWidth / 2 < 0; -+ -+ if (positionTwo + labelEndWidth / 2 > this.props.sliderLength) { -+ return ( -+ positionTwo - -+ labelEndWidth / 2 - -+ (positionTwo + labelEndWidth / 2 - this.props.sliderLength) -+ ); -+ } -+ -+ const defaultPosition = positionTwo - labelEndWidth / 2; -+ -+ const markersGap = positionTwo - positionOne; -+ const diff = markersGap - (labelEndWidth / 2 + labelStartWidth / 2) - 20; -+ -+ if (diff < 0 && oneEndCondition) { -+ // collision with marker one stick to left -+ return defaultPosition - diff; -+ } -+ -+ if (diff < 0) { -+ // collision -+ return defaultPosition - diff / 2; -+ } -+ -+ return defaultPosition; -+ }; -+ -+ saveLabelEndWidth = (e: OnLayout) => { -+ this.setState({ labelEndWidth: Math.floor(e.nativeEvent.layout.width) }); -+ }; -+ -+ saveLabelStartWidth = (e: OnLayout) => { -+ this.setState({ labelStartWidth: Math.floor(e.nativeEvent.layout.width) }); -+ }; -+ - render() { - const { positionOne, positionTwo } = this.state; -- const { selectedStyle, unselectedStyle, sliderLength, markerOffsetX, markerOffsetY } = this.props; -- const twoMarkers = this.props.values.length == 2; // when allowOverlap, positionTwo could be 0, identified as string '0' and throwing 'RawText 0 needs to be wrapped in ' error -+ const { -+ selectedStyle, -+ unselectedStyle, -+ sliderLength, -+ markerOffsetX, -+ markerOffsetY, -+ } = this.props; -+ const twoMarkers = this.props.values.length == 2; // when allowOverlap, positionTwo could be 0, identified as string '0' and throwing 'RawText 0 needs to be wrapped in ' error - - const trackOneLength = positionOne; - const trackOneStyle = twoMarkers -@@ -358,9 +461,15 @@ export default class MultiSlider extends React.Component { - borderRadius: borderRadius || 0, - }; - -- const markerContainerOne = { top: markerOffsetY - 24, left : trackOneLength + markerOffsetX - 24 } -+ const markerContainerOne = { -+ top: markerOffsetY - 24, -+ left: trackOneLength + markerOffsetX - 24, -+ }; - -- const markerContainerTwo = { top: markerOffsetY - 24, right: trackThreeLength + markerOffsetX - 24 }; -+ const markerContainerTwo = { -+ top: markerOffsetY - 24, -+ right: trackThreeLength + markerOffsetX - 24, -+ }; - - return ( - -@@ -381,15 +490,62 @@ export default class MultiSlider extends React.Component { - { width: trackTwoLength }, - ]} - /> -- {twoMarkers && -+ {twoMarkers && ( -+ -+ )} - } -+ style={{ -+ position: 'absolute', -+ bottom: 18, -+ transform: [ -+ { -+ translateX: this.getTranslateOne(), -+ }, -+ ], -+ }} -+ onLayout={this.saveLabelStartWidth} -+ > -+ -+ {this.state.startLabel || this.state.valueOne} -+ -+ -+ {this.state.valueTwo !== undefined && ( -+ -+ -+ {this.props.endLabel || this.state.valueTwo} -+ -+ -+ )} - - this._markerOne = component} -- {...this._panResponderOne.panHandlers} -+ style={{ -+ justifyContent: 'center', -+ alignItems: 'center', -+ }} - > -- {isMarkersSeparated === false ? -- (this._markerOne = component)} -+ {...this._panResponderOne.panHandlers} -+ > -+ {isMarkersSeparated === false ? ( -+ -- : -- -+ ) : ( -+ -- } -- -+ /> -+ )} -+ - - -- {twoMarkers && -- positionOne !== this.props.sliderLength && -- -- this._markerTwo = component} -- {...this._panResponderTwo.panHandlers} -- > -- {isMarkersSeparated === false ? -- -- : -- -- } -+ {twoMarkers && positionOne !== this.props.sliderLength && ( -+ -+ -+ -+ (this._markerTwo = component)} -+ {...this._panResponderTwo.panHandlers} -+ > -+ {isMarkersSeparated === false ? ( -+ -+ ) : ( -+ -+ )} -+ -+ -+ - -- } -+ )} - - - ); -@@ -468,7 +645,7 @@ const styles = StyleSheet.create({ - container: { - position: 'relative', - height: 50, -- justifyContent: 'center' -+ justifyContent: 'center', - }, - fullTrack: { - flexDirection: 'row', diff --git a/src/Slider/Slider.js b/src/Slider/Slider.js index c8b7150..4e5ff93 100644 --- a/src/Slider/Slider.js +++ b/src/Slider/Slider.js @@ -2,7 +2,7 @@ import * as React from 'react'; import { View } from 'react-native'; -import MultiSlider from '@ptomasroos/react-native-multi-slider'; +import MultiSlider from 'react-native-multi-slider'; import { defaultTokens } from '@kiwicom/orbit-design-tokens'; import StyleSheet from '../PlatformStyleSheet'; diff --git a/storybook.native/story-loader.js b/storybook.native/story-loader.js index a18c4b5..5137683 100644 --- a/storybook.native/story-loader.js +++ b/storybook.native/story-loader.js @@ -1,4 +1,3 @@ -// @flow // Auto-generated file created by react-native-storybook-loader // Do not edit. @@ -6,7 +5,6 @@ // https://github.com/elderfo/react-native-storybook-loader.git function loadStories() { - require('../src/Slider/Slider.stories'); require('../src/Badge/Badge.stories'); require('../src/Button/Button.stories'); require('../src/Card/Card.stories'); @@ -17,13 +15,14 @@ function loadStories() { require('../src/RadioButton/RadioButton.stories'); require('../src/Rating/Rating.stories'); require('../src/ServiceLogo/ServiceLogo.stories'); + require('../src/Slider/Slider.stories'); require('../src/Stepper/Stepper.stories'); require('../src/Text/Text.stories'); require('../src/TextInput/TextInput.stories'); + } const stories = [ - '../src/Slider/Slider.stories', '../src/Badge/Badge.stories', '../src/Button/Button.stories', '../src/Card/Card.stories', @@ -34,9 +33,11 @@ const stories = [ '../src/RadioButton/RadioButton.stories', '../src/Rating/Rating.stories', '../src/ServiceLogo/ServiceLogo.stories', + '../src/Slider/Slider.stories', '../src/Stepper/Stepper.stories', '../src/Text/Text.stories', '../src/TextInput/TextInput.stories', + ]; module.exports = { diff --git a/yarn.lock b/yarn.lock index 2b81c37..99dba6b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -974,11 +974,6 @@ resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz#2b5a3ab3f918cca48a8c754c08168e3f03eba61b" integrity sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw== -"@ptomasroos/react-native-multi-slider@^1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@ptomasroos/react-native-multi-slider/-/react-native-multi-slider-1.0.0.tgz#a4ea27b1320b93a1db9f696c24789695df6c9f30" - integrity sha512-NpX22rQLArg9widwMzGf7XsInTDf6mfY/D1XaDVjglNkVphj3NSN37+nF6MofArCxC++1P+jHv0SGWbmJQwy4g== - "@storybook/addon-actions@^4.0.7": version "4.0.11" resolved "https://registry.yarnpkg.com/@storybook/addon-actions/-/addon-actions-4.0.11.tgz#4a329172baa8dc75a79af1dab72ed57ca2993440" @@ -2973,9 +2968,9 @@ bcrypt-pbkdf@^1.0.0: tweetnacl "^0.14.3" big-integer@^1.6.7: - version "1.6.39" - resolved "https://registry.yarnpkg.com/big-integer/-/big-integer-1.6.39.tgz#57dffd6b8008cfc429e1b8b3fcd32d77f6694ecf" - integrity sha512-JgwrfTfdSxDQGRPx3j9hHrag/Ih2oCQwE/kMHW5tujSyjLFLk3hbum5ZJhaginvQ2LBw2YxGgP73AquAWNW/ZA== + version "1.6.40" + resolved "https://registry.yarnpkg.com/big-integer/-/big-integer-1.6.40.tgz#02e4cd4d6e266c4d9ece2469c05cb6439149fc78" + integrity sha512-CjhtJp0BViLzP1ZkEnoywjgtFQXS2pomKjAJtIISTCnuHILkLcAXLdFLG/nxsHc4s9kJfc+82Xpg8WNyhfACzQ== big.js@^3.1.3: version "3.2.0" @@ -3753,9 +3748,9 @@ core-js@^1.0.0: integrity sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY= core-js@^2.2.2, core-js@^2.4.0, core-js@^2.4.1, core-js@^2.5.0, core-js@^2.5.7: - version "2.5.7" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.7.tgz#f972608ff0cead68b841a16a932d0b183791814e" - integrity sha512-RszJCAxg/PP6uzXVXL6BsxSXx/B05oJAQ2vkJRjyjrEcNVycaqOmNb5OTxZPE3xa5gwZduqza6L9JOCenh/Ecw== + version "2.6.0" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.0.tgz#1e30793e9ee5782b307e37ffa22da0eacddd84d4" + integrity sha512-kLRC6ncVpuEW/1kwrOXYX6KQASCVtrh1gQr/UiaVgFlf9WE5Vp+lNe5+h3LuMr5PAucWnnEXwH0nQHRH/gpGtw== core-util-is@1.0.2, core-util-is@~1.0.0: version "1.0.2" @@ -9244,6 +9239,10 @@ react-native-modal@^5.4.0: prop-types "^15.6.1" react-native-animatable "^1.2.4" +"react-native-multi-slider@https://github.com/lukewalczak/react-native-multi-slider.git#feat/labels": + version "2.0.0" + resolved "https://github.com/lukewalczak/react-native-multi-slider.git#9196042b3d170ebb56b05ff8266105aadfa36839" + react-native-storybook-loader@^1.8.0: version "1.8.0" resolved "https://registry.yarnpkg.com/react-native-storybook-loader/-/react-native-storybook-loader-1.8.0.tgz#35056d62f01019af8692d540fd404a855464d4f3" @@ -9646,14 +9645,14 @@ regexpu-core@^2.0.0: regjsparser "^0.1.4" regexpu-core@^4.1.3, regexpu-core@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.2.0.tgz#a3744fa03806cffe146dea4421a3e73bdcc47b1d" - integrity sha512-Z835VSnJJ46CNBttalHD/dB+Sj2ezmY6Xp38npwU87peK6mqOzOpV8eYktdkLTEkzzD+JsTcxd84ozd8I14+rw== + version "4.4.0" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.4.0.tgz#8d43e0d1266883969720345e70c275ee0aec0d32" + integrity sha512-eDDWElbwwI3K0Lo6CqbQbA6FwgtCz4kYTarrri1okfkRLZAqstU+B3voZBCjg8Fl6iq0gXrJG6MvRgLthfvgOA== dependencies: regenerate "^1.4.0" regenerate-unicode-properties "^7.0.0" - regjsgen "^0.4.0" - regjsparser "^0.3.0" + regjsgen "^0.5.0" + regjsparser "^0.6.0" unicode-match-property-ecmascript "^1.0.4" unicode-match-property-value-ecmascript "^1.0.2" @@ -9677,10 +9676,10 @@ regjsgen@^0.2.0: resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.2.0.tgz#6c016adeac554f75823fe37ac05b92d5a4edb1f7" integrity sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc= -regjsgen@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.4.0.tgz#c1eb4c89a209263f8717c782591523913ede2561" - integrity sha512-X51Lte1gCYUdlwhF28+2YMO0U6WeN0GLpgpA7LK7mbdDnkQYiwvEpmpe0F/cv5L14EbxgrdayAG3JETBv0dbXA== +regjsgen@^0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.0.tgz#a7634dc08f89209c2049adda3525711fb97265dd" + integrity sha512-RnIrLhrXCX5ow/E5/Mh2O4e/oa1/jW0eaBKTSy3LaCj+M3Bqvm97GWDp2yUtzIs4LEn65zR2yiYGFqb2ApnzDA== regjsparser@^0.1.4: version "0.1.5" @@ -9689,10 +9688,10 @@ regjsparser@^0.1.4: dependencies: jsesc "~0.5.0" -regjsparser@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.3.0.tgz#3c326da7fcfd69fa0d332575a41c8c0cdf588c96" - integrity sha512-zza72oZBBHzt64G7DxdqrOo/30bhHkwMUoT0WqfGu98XLd7N+1tsy5MJ96Bk4MD0y74n629RhmrGW6XlnLLwCA== +regjsparser@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.6.0.tgz#f1e6ae8b7da2bae96c99399b868cd6c933a2ba9c" + integrity sha512-RQ7YyokLiQBomUJuUG8iGVvkgOLxwyZM8k6d3q5SAXpg4r5TZJZigKFvC6PpD+qQ98bCDC5YelPeA3EucDoNeQ== dependencies: jsesc "~0.5.0" From 9a06e832dd378449ae1a6704b29b23d8a1ba39da Mon Sep 17 00:00:00 2001 From: lukewalczak Date: Thu, 6 Dec 2018 15:15:57 +0100 Subject: [PATCH 8/9] Fix webpack config --- .storybook/webpack.config.js | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/.storybook/webpack.config.js b/.storybook/webpack.config.js index c0b17b4..d932a4e 100644 --- a/.storybook/webpack.config.js +++ b/.storybook/webpack.config.js @@ -11,10 +11,7 @@ module.exports = { { test: /\.js$/, include: [ - path.join( - __dirname, - '../node_modules/@ptomasroos/react-native-multi-slider' - ), + path.join(__dirname, '../node_modules/react-native-multi-slider'), ], use: 'babel-loader', }, From 14ccd081976f91b267e001e1efc6656cf958795f Mon Sep 17 00:00:00 2001 From: lukewalczak Date: Thu, 6 Dec 2018 15:17:32 +0100 Subject: [PATCH 9/9] Fix web slider --- src/Slider/Slider.js | 2 +- src/Slider/Slider.stories.js | 38 ++++++++++++++++++++++++------------ 2 files changed, 27 insertions(+), 13 deletions(-) diff --git a/src/Slider/Slider.js b/src/Slider/Slider.js index 4e5ff93..051d73f 100644 --- a/src/Slider/Slider.js +++ b/src/Slider/Slider.js @@ -152,6 +152,6 @@ const styles = StyleSheet.create({ }, }, container: { - justifyContent: 'center', + paddingTop: 15, }, }); diff --git a/src/Slider/Slider.stories.js b/src/Slider/Slider.stories.js index 4287e2f..c209efb 100644 --- a/src/Slider/Slider.stories.js +++ b/src/Slider/Slider.stories.js @@ -1,6 +1,7 @@ // @flow import React from 'react'; +import { View } from 'react-native'; import { storiesOf } from '@storybook/react-native'; import { withKnobs, number, boolean } from '@storybook/addon-knobs'; import Slider from './Slider'; @@ -8,6 +9,17 @@ import Slider from './Slider'; const noop = () => {}; storiesOf('Slider', module) .addDecorator(withKnobs) + .add('Default', () => ( + + + + )) .add('Playground', () => { const min = number('Min value', 0); const max = number('Max value', 100000); @@ -16,19 +28,21 @@ storiesOf('Slider', module) const snapped = boolean('Snapped', false); return ( - + + + ); }) - .add('Default', () => ( - - )) + .add('Only one marker', () => ( - + + + ));