diff --git a/packages/light-react/config-overrides.js b/packages/light-react/config-overrides.js index a5fb965616be51727fbf4ca347d64d17f461c7bc..3718e65bb0f60ee8d5c645bef9d0899fc0690088 100644 --- a/packages/light-react/config-overrides.js +++ b/packages/light-react/config-overrides.js @@ -1,9 +1,9 @@ -const rewireMobX = require('react-app-rewire-mobx'); +const { injectBabelPlugin } = require('react-app-rewired'); /* config-overrides.js */ -module.exports = function override(config, env) { - // use the MobX rewire - config = rewireMobX(config, env); +module.exports = function override(config) { + // use the MobX rewire to use @decorators + config = injectBabelPlugin('transform-decorators-legacy', config); return config; }; diff --git a/packages/light-react/package.json b/packages/light-react/package.json index e23fccba45f45a3fe5acd262752993b684f5d659..e927674be735be1fbdab759696d56d5c7e262f83 100644 --- a/packages/light-react/package.json +++ b/packages/light-react/package.json @@ -36,17 +36,16 @@ }, "dependencies": { "@parity/api": "^2.1.22", - "@parity/light.js": "https://github.com/parity-js/light.js#99ee612acd7ee69554839a09d6c094251043bc3b", - "@parity/shared": "^3.0.1", + "@parity/light.js": "https://github.com/parity-js/light.js#165a97deb86d7b77a96b324b7d42d04a27a43b0b", + "@parity/shared": "^3.0.2", "is-electron": "^2.1.0", "light-hoc": "^0.1.0", "light-ui": "^0.1.0", "lodash": "^4.17.10", - "mobx": "^4.2.0", - "mobx-react": "^5.1.2", + "mobx": "^5.0.2", + "mobx-react": "^5.2.3", "react": "^16.3.2", "react-blockies": "^1.3.0", - "react-copy-to-clipboard": "^5.0.1", "react-dom": "^16.3.2", "react-router-dom": "^4.2.2", "react-scripts": "1.1.4", @@ -54,10 +53,10 @@ }, "devDependencies": { "babel-eslint": "^8.2.3", + "babel-plugin-transform-decorators-legacy": "^1.3.5", "node-sass": "^4.9.0", "node-sass-chokidar": "^1.2.2", "npm-run-all": "^4.1.2", - "react-app-rewire-mobx": "^1.0.8", "react-app-rewired": "^1.5.2", "semistandard": "^12.0.1" } diff --git a/packages/light-react/src/App/App.js b/packages/light-react/src/App/App.js index 3a779ef4b00554f202b468bd8bacf587418102f6..07aac79565da026d3bb653188b4f1c45471348fc 100644 --- a/packages/light-react/src/App/App.js +++ b/packages/light-react/src/App/App.js @@ -16,7 +16,6 @@ import { inject, observer } from 'mobx-react'; import Accounts from '../Accounts'; import Onboarding from '../Onboarding'; import Overlay from '../Overlay'; -import Receive from '../Receive'; import Send from '../Send'; import Settings from '../Settings'; import { STATUS } from '../stores/healthStore'; @@ -75,7 +74,6 @@ class App extends Component { /> - diff --git a/packages/light-react/src/Receive/Receive.js b/packages/light-react/src/Receive/Receive.js deleted file mode 100644 index 10b750a605d3c61742e1372f6ebab534932272d7..0000000000000000000000000000000000000000 --- a/packages/light-react/src/Receive/Receive.js +++ /dev/null @@ -1,70 +0,0 @@ -// Copyright 2015-2018 Parity Technologies (UK) Ltd. -// This file is part of Parity. -// -// SPDX-License-Identifier: MIT - -import React, { PureComponent } from 'react'; -import { accountsInfo$, defaultAccount$ } from '@parity/light.js'; -import Blockies from 'react-blockies'; -import { CopyToClipboard } from 'react-copy-to-clipboard'; -import { Header } from 'light-ui'; -import light from 'light-hoc'; -import { Link } from 'react-router-dom'; - -@light({ - accountsInfo: accountsInfo$, - defaultAccount: defaultAccount$ -}) -class Receive extends PureComponent { - render () { - const { accountsInfo, defaultAccount } = this.props; - - return ( -
-
- Close - - } - title={ - accountsInfo && - defaultAccount && - accountsInfo[defaultAccount] && ( -

- {' '} - {accountsInfo[defaultAccount].name} -

- ) - } - /> -
-
-
-
-

Your address is:

-
-
{defaultAccount}
-
- - - -
-
-
-
-
- ); - } -} - -export default Receive; diff --git a/packages/light-react/src/Send/Signer/Signer.js b/packages/light-react/src/Send/Signer/Signer.js index e7946fe04286ad39d750f83b2681f63a66b50155..91c9cfb78399311e85fa2a03f20cc3291d08926e 100644 --- a/packages/light-react/src/Send/Signer/Signer.js +++ b/packages/light-react/src/Send/Signer/Signer.js @@ -5,7 +5,6 @@ import React, { Component } from 'react'; import { FormField, Header } from 'light-ui'; -import { fromWei } from '@parity/api/lib/util/wei'; import { inject, observer } from 'mobx-react'; import { Link } from 'react-router-dom'; @@ -15,6 +14,7 @@ import TokenBalance from '../../Tokens/TokensList/TokenBalance'; @observer class Signer extends Component { state = { + isSending: false, password: '' }; @@ -24,7 +24,12 @@ class Signer extends Component { e.preventDefault(); - sendStore.acceptRequest(password).then(() => history.push('/send/sent')); + this.setState({ isSending: true }, () => { + sendStore + .acceptRequest(password) + .then(() => history.push('/send/sent')) + .catch(() => this.setState({ isSending: false })); + }); }; handleChangePassword = ({ target: { value } }) => { @@ -33,17 +38,20 @@ class Signer extends Component { handleReject = () => { const { history, sendStore } = this.props; - sendStore - .rejectRequest() - .then(() => history.goBack()) - .catch(() => history.goBack()); + + this.setState({ isSending: true }, () => { + sendStore + .rejectRequest() + .then(() => history.goBack()) + .catch(() => history.goBack()); + }); }; render () { const { sendStore: { token, tx, txStatus } } = this.props; - const { password } = this.state; + const { isSending, password } = this.state; return (
@@ -64,7 +72,7 @@ class Signer extends Component {
- {+fromWei(tx.value)} {token.symbol} + {tx.amount} {token.symbol}
@@ -95,7 +103,7 @@ class Signer extends Component { diff --git a/packages/light-react/src/Send/TxForm/TxForm.js b/packages/light-react/src/Send/TxForm/TxForm.js index dcbe332af992002890f8bffec11642bc942250af..ef3325aa8f4808311a48b6889babdfafdd4b87f5 100644 --- a/packages/light-react/src/Send/TxForm/TxForm.js +++ b/packages/light-react/src/Send/TxForm/TxForm.js @@ -4,11 +4,9 @@ // SPDX-License-Identifier: MIT import React, { Component } from 'react'; -import { defaultAccount$ } from '@parity/light.js'; import { fromWei, toWei } from '@parity/api/lib/util/wei'; import { FormField, Header } from 'light-ui'; import { inject, observer } from 'mobx-react'; -import light from 'light-hoc'; import { Link } from 'react-router-dom'; import TokenBalance from '../../Tokens/TokensList/TokenBalance'; @@ -16,53 +14,43 @@ import TokenBalance from '../../Tokens/TokensList/TokenBalance'; const MAX_GAS_PRICE = 40; // In Gwei const MIN_GAS_PRICE = 3; // Safelow gas price from GasStation, in Gwei -@light({ - defaultAccount: defaultAccount$ -}) @inject('sendStore') @observer class Send extends Component { - state = { - amount: 0.01, // In Ether or in token - gasPrice: 4, // in Gwei - to: '0x00Ae02834e91810B223E54ce3f9B7875258a1747' - }; + componentDidMount () { + this.props.sendStore.estimateGas(); + } handleChangeAmount = ({ target: { value } }) => - this.setState({ amount: value }); + this.props.sendStore.setTxAmount(value); handleChangeGasPrice = ({ target: { value } }) => - this.setState({ gasPrice: value }); + this.props.sendStore.setTxGasPrice(value); handleChangeTo = ({ target: { value } }) => { - this.setState({ to: value }, () => { - // Estimate the gas to this address. - this.props.sendStore.estimateGas(this.state); - }); + const { sendStore } = this.props; + sendStore.setTxTo(value); + // Estimate the gas to this address, if we're sending ETH. + if (sendStore.tokenAddress === 'ETH') { + sendStore.estimateGas(); + } }; handleSubmit = e => { e.preventDefault(); - const { defaultAccount, history, sendStore } = this.props; - const { amount, gasPrice, to } = this.state; + const { history, sendStore } = this.props; // Post a request to the transaction. There is a next step to sign this // request. - sendStore.postTx({ - from: defaultAccount, - gasPrice: toWei(gasPrice, 'shannon'), // shannon == gwei - to, - value: toWei(amount) - }); + sendStore.send(); history.push('/send/signer'); }; render () { const { - sendStore: { estimated, token } + sendStore: { estimated, token, tx } } = this.props; - const { amount, gasPrice, to } = this.state; return (
@@ -93,7 +81,7 @@ class Send extends Component { onChange={this.handleChangeAmount} required type='number' - value={amount} + value={tx.amount} />
-
+ ); } diff --git a/packages/light-react/src/Settings/Settings.js b/packages/light-react/src/Settings/Settings.js index da4f8d0ac9090d5f07dd11aec3cae7c8dfab72b2..fc7375df96a03178ed2754e274057ab36e9c389c 100644 --- a/packages/light-react/src/Settings/Settings.js +++ b/packages/light-react/src/Settings/Settings.js @@ -11,6 +11,7 @@ import { inject, observer } from 'mobx-react'; import light from 'light-hoc'; import { Link } from 'react-router-dom'; +import Health from '../Health'; import NewTokenItem from './NewTokenItem'; @light({ @@ -133,6 +134,12 @@ class Settings extends Component {
+ + ); } diff --git a/packages/light-react/src/Tokens/Tokens.js b/packages/light-react/src/Tokens/Tokens.js index 6a16799dd4613aa08d41676ee93b55ce9bf6cfbb..31f9d177e77584a0e5581c9edae4b995974197d5 100644 --- a/packages/light-react/src/Tokens/Tokens.js +++ b/packages/light-react/src/Tokens/Tokens.js @@ -4,9 +4,8 @@ // SPDX-License-Identifier: MIT import React, { PureComponent } from 'react'; +import { AccountHeader } from 'light-ui'; import { accountsInfo$, defaultAccount$ } from '@parity/light.js'; -import Blockies from 'react-blockies'; -import { Header } from 'light-ui'; import light from 'light-hoc'; import { Link } from 'react-router-dom'; @@ -23,26 +22,20 @@ class Tokens extends PureComponent { return (
-
Back } - title={ - accountsInfo && - defaultAccount && - accountsInfo[defaultAccount] && ( - - {' '} - {accountsInfo[defaultAccount].name} - - ) - } /> diff --git a/packages/light-react/src/assets/sass/components/_placeholder.scss b/packages/light-react/src/assets/sass/components/_placeholder.scss new file mode 100644 index 0000000000000000000000000000000000000000..4d75fae9583f7f13bd52036f069ac5ea5c694e9a --- /dev/null +++ b/packages/light-react/src/assets/sass/components/_placeholder.scss @@ -0,0 +1,3 @@ +.placeholder { + vertical-align: middle; +} diff --git a/packages/light-react/src/index.sass b/packages/light-react/src/index.sass index b99eba674a95ee917d0e939378c4e9e0d54fbb5b..370b1515c05e0c68293edea9c00647f538ce6e4c 100644 --- a/packages/light-react/src/index.sass +++ b/packages/light-react/src/index.sass @@ -25,6 +25,7 @@ @import './assets/sass/components/status' @import './assets/sass/components/header-nav' @import './assets/sass/components/footer-nav' +@import './assets/sass/components/placeholder' @import './assets/sass/components/progress-indicator' @import './assets/sass/components/form-nav' @import './assets/sass/components/alert-screen' diff --git a/packages/light-react/src/stores/sendStore.js b/packages/light-react/src/stores/sendStore.js index 0db483bb40d0ae5f27ccba65a1cb6799950a73bc..136c166c37d9fd73a3a8ae4f56080bf4ee0464e7 100644 --- a/packages/light-react/src/stores/sendStore.js +++ b/packages/light-react/src/stores/sendStore.js @@ -3,10 +3,12 @@ // // SPDX-License-Identifier: MIT +import abi from '@parity/shared/lib/contracts/abi/eip20'; import { action, computed, observable } from 'mobx'; -import { blockNumber$, post$ } from '@parity/light.js'; +import { blockNumber$, makeContract$, post$ } from '@parity/light.js'; import { isAddress } from '@parity/api/lib/util/address'; import noop from 'lodash/noop'; +import { toWei } from '@parity/api/lib/util/wei'; import parityStore from './parityStore'; import tokensStore from './tokensStore'; @@ -14,9 +16,15 @@ import tokensStore from './tokensStore'; const DEFAULT_GAS = 21000; // Default gas amount to show class SendStore { - @observable blockNumber; // Current block number, used to calculate confirmations. + @observable blockNumber; // Current block number, used to calculate tx confirmations. @observable estimated = DEFAULT_GAS; // Estimated gas amount for this transaction. - tx; // The actual tx we are sending. No need to be observable. + @observable tokenAddress; // 'ETH', or the token contract address + @observable + tx = { + amount: 0.01, // In Ether or in token + gasPrice: 4, // in Gwei + to: '0x00Ae02834e91810B223E54ce3f9B7875258a1747' + }; // The actual tx we are sending. No need to be observable. @observable txStatus; // Status of the tx, see wiki for details. constructor () { @@ -33,49 +41,83 @@ class SendStore { // Since we accepted this request, we also start to listen to blockNumber, // to calculate the number of confirmations - blockNumber$().subscribe(this.setBlockNumber); + this.subscription = blockNumber$().subscribe(this.setBlockNumber); return this.api.signer.confirmRequest(this.requestId, null, password); }; + /** + * Back to defaults. + */ + clear = () => { + this.tx.amount = 0; + this.tx.to = ''; + if (this.subscription) { + this.subscription.unsubscribe(); + } + }; + /** * Get the number of confirmations our transaction has. */ @computed get confirmations () { - if (!this.txStatus.confirmed) { + if (!this.txStatus || !this.txStatus.confirmed) { return -1; } return this.blockNumber - +this.txStatus.confirmed.blockNumber; } /** - * Estimate the amount of gas for a particular transaction. Note: at the time - * we're estimating, this.tx has not been set yet (only set at postTx stage), - * that's why we're not using this.tx here, but a tx passed as argument. + * If it's a token, then return the makeContract$ object. + */ + @computed + get contract () { + if (this.tokenAddress === 'ETH') { + return null; + } + return makeContract$(this.tokenAddress, abi); + } + + /** + * Estimate the amount of gas for our transaction. */ - estimateGas = tx => { - // We only estimate txs to a correct address - if (!tx || !isAddress(tx.to)) { - return Promise.resolve(DEFAULT_GAS); + estimateGas = () => { + if (this.tokenAddress === 'ETH') { + // We only estimate txs to a correct address + if (!this.tx || !isAddress(this.tx.to)) { + return Promise.resolve(DEFAULT_GAS); + } + return this.api.eth + .estimateGas(this.txForEth) + .then(this.setEstimated) + .catch(noop); + } else { + return this.contract.contractObject.instance.transfer + .estimateGas(this.txForErc20.options, this.txForErc20.args) + .then(this.setEstimated) + .catch(noop); } - return this.api.eth - .estimateGas(tx) - .then(this.setEstimated) - .catch(noop); }; /** * Create a transaction. */ - postTx = tx => { - if (!tx) { + send = () => { + if (!this.tx) { + console.error('Cannot send empty transaction.'); return; } - this.setTx(tx); - // Subscribe to this transaction's status - post$(tx).subscribe(txStatus => { + const send$ = + this.tokenAddress === 'ETH' + ? post$(this.txForEth) + : this.contract.transfer$( + ...this.txForErc20.args, + this.txForErc20.options + ); + + send$.subscribe(txStatus => { if (txStatus.requested) { this.requestId = txStatus.requested; } @@ -83,7 +125,7 @@ class SendStore { }); }; - rejectRequest = (requestId, password) => { + rejectRequest = () => { // Avoid calling this method from a random place if (!this.requestId) { return Promise.reject( @@ -95,17 +137,61 @@ class SendStore { @computed get token () { - return tokensStore.tokens.get(this.tokenAddress); + return tokensStore.tokens[this.tokenAddress]; + } + + /** + * This.tx is a user-friendly tx object. We convert it now as it can be + * passed to post$(tx). + */ + @computed + get txForEth () { + return { + gasPrice: toWei(this.tx.gasPrice, 'shannon'), // shannon == gwei + to: this.tx.to, + value: toWei(this.tx.amount) + }; } + /** + * This.tx is a user-friendly tx object. We convert it now as it can be + * passed to makeContract$(...). + */ + @computed + get txForErc20 () { + return { + args: [this.tx.to, this.tx.amount * 10 ** this.token.decimals], + options: { + gasPrice: toWei(this.tx.gasPrice, 'shannon') // shannon == gwei + } + }; + } + + @action setTokenAddress = tokenAddress => { this.tokenAddress = tokenAddress; }; + @action setTx = tx => { this.tx = tx; }; + @action + setTxAmount = amount => { + this.tx.amount = amount; + }; + + @action + setTxGasPrice = gasPrice => { + this.tx.gasPrice = gasPrice; + }; + + @action + setTxTo = to => { + this.tx.to = to; + }; + @action setBlockNumber = blockNumber => { this.blockNumber = blockNumber; diff --git a/packages/light-react/src/stores/tokensStore.js b/packages/light-react/src/stores/tokensStore.js index 562b0bcc90b6dc8057c36e2c268cb6add9e7a8c1..c9d9c8b9e6456fa93ed82ee4556dd0621b2f6b32 100644 --- a/packages/light-react/src/stores/tokensStore.js +++ b/packages/light-react/src/stores/tokensStore.js @@ -14,7 +14,7 @@ import LS_PREFIX from './utils/lsPrefix'; const LS_KEY = `${LS_PREFIX}::tokens`; class TokensStore { - @observable tokens = new Map(); + @observable tokens = {}; constructor () { combineLatest(chainName$(), defaultAccount$()).subscribe( @@ -27,7 +27,7 @@ class TokensStore { @action addToken = (address, token) => { - this.tokens.set(address, token); + this.tokens[address] = token; this.updateLS(); }; @@ -43,33 +43,34 @@ class TokensStore { if (!tokens) { // If there's nothing in the localStorage, we add be default only // Ethereum. We consider Ethereum as a token, with address 'ETH' - this.tokens.replace({ + + this.tokens = { ETH: { address: 'ETH', logo: ethereumIcon, name: 'Ethereum', symbol: 'ETH' } - }); + }; } else { - this.tokens.replace(tokens); + this.tokens = tokens; } }; @action removeToken = address => { - this.tokens.delete(address); + delete this.tokens[address]; this.updateLS(); }; @computed get tokensArray () { - return Array.from(this.tokens.values()); + return Object.values(this.tokens); } @computed get tokensArrayWithoutEth () { - return Array.from(this.tokens.values()).filter( + return this.tokensArray.filter( ({ address }) => address !== 'ETH' // Ethereum is the only token without address, has 'ETH' instead ); } diff --git a/packages/light-ui/babel.config.js b/packages/light-ui/babel.config.js index 4c40e97bd0609323b2121eb43b053ac377582ff9..3d8c7f40a7efb0a6491870d7c433ece9fc7c89ec 100644 --- a/packages/light-ui/babel.config.js +++ b/packages/light-ui/babel.config.js @@ -1,8 +1,5 @@ module.exports = { - plugins: [ - '@babel/plugin-proposal-class-properties', - ['emotion', { sourceMap: true, autoLabel: true }] - ], + plugins: ['@babel/plugin-proposal-class-properties'], presets: [ '@babel/preset-env', '@babel/preset-react', diff --git a/packages/light-ui/package.json b/packages/light-ui/package.json index 211ba23357a62e8de82f2dfdd1878eba7f322858..112271eb96f09f0a4c6e6b36bfc6b5d551c51397 100644 --- a/packages/light-ui/package.json +++ b/packages/light-ui/package.json @@ -32,8 +32,11 @@ "start": "yarn build --watch" }, "dependencies": { + "rc-tooltip": "^3.7.2", "react-blockies": "^1.3.0", - "react-content-loader": "^3.1.2" + "react-content-loader": "^3.1.2", + "react-copy-to-clipboard": "^5.0.1", + "react-tooltip": "^3.6.1" }, "devDependencies": { "@babel/cli": "^7.0.0-beta.49", @@ -42,7 +45,6 @@ "@babel/preset-react": "^7.0.0-beta.49", "@babel/preset-stage-0": "^7.0.0-beta.49", "babel-eslint": "^8.2.3", - "babel-plugin-emotion": "^9.2.0", "prop-types": "^15.6.1", "react": "^16.4.0", "rimraf": "^2.6.2", diff --git a/packages/light-ui/src/AccountHeader/AccountHeader.js b/packages/light-ui/src/AccountHeader/AccountHeader.js new file mode 100644 index 0000000000000000000000000000000000000000..29baa2e5352975fba0e213236e72c1f4804e62a1 --- /dev/null +++ b/packages/light-ui/src/AccountHeader/AccountHeader.js @@ -0,0 +1,60 @@ +// Copyright 2015-2018 Parity Technologies (UK) Ltd. +// This file is part of Parity. +// +// SPDX-License-Identifier: MIT + +import React from 'react'; +import Blockies from 'react-blockies'; +import { CopyToClipboard } from 'react-copy-to-clipboard'; +import PropTypes from 'prop-types'; +import ReactTooltip from 'react-tooltip'; + +import Header from '../Header'; + +const NormalContainer = ({ children }) => ( +

{children}

+); +const CopyContainer = ({ address, children, ...otherProps }) => ( + + + {children} + + + +); + +const AccountHeader = ({ address, copyAddress, name, ...otherProps }) => { + const Container = copyAddress ? CopyContainer : NormalContainer; + + return ( +
+
+ {' '} + {name}{' '} + + {address.slice(0, 4)}..{address.slice(-2)} + + + ) + } + {...otherProps} + /> +
+ ); +}; + +AccountHeader.propTypes = { + address: PropTypes.string, + name: PropTypes.string +}; + +export default AccountHeader; diff --git a/packages/light-react/src/Receive/index.js b/packages/light-ui/src/AccountHeader/index.js similarity index 61% rename from packages/light-react/src/Receive/index.js rename to packages/light-ui/src/AccountHeader/index.js index 3c3aa857650e35ff62854dcaad9612ddbbd4ba74..8c885bc60861408e2bda2df6fbcde1f66dace4d7 100644 --- a/packages/light-react/src/Receive/index.js +++ b/packages/light-ui/src/AccountHeader/index.js @@ -3,6 +3,6 @@ // // SPDX-License-Identifier: MIT -import Receive from './Receive'; +import AccountHeader from './AccountHeader'; -export default Receive; +export default AccountHeader; diff --git a/packages/light-ui/src/Placeholder/Placeholder.js b/packages/light-ui/src/Placeholder/Placeholder.js index 8827031cad1229db4f0fdc924a1af6f5029a18b2..a2228029b59d3995675b3f11524ccca5ab14c791 100644 --- a/packages/light-ui/src/Placeholder/Placeholder.js +++ b/packages/light-ui/src/Placeholder/Placeholder.js @@ -8,7 +8,12 @@ import ContentLoader from 'react-content-loader'; import PropTypes from 'prop-types'; const Placeholder = ({ height, width }) => ( - + ); diff --git a/packages/light-ui/src/TokenCard/TokenCard.js b/packages/light-ui/src/TokenCard/TokenCard.js index 0e7e950b27d1fe61c13c138234aa90e247a6acdd..efc7fb9a86295da64cd5a3112242125c43d2487b 100644 --- a/packages/light-ui/src/TokenCard/TokenCard.js +++ b/packages/light-ui/src/TokenCard/TokenCard.js @@ -9,7 +9,7 @@ import PropTypes from 'prop-types'; import Card from '../Card'; import Placeholder from '../Placeholder'; -const TokenCard = ({ balance, decimals, token, ...otherProps }) => ( +const TokenCard = ({ balance, children, decimals, token, ...otherProps }) => (
@@ -24,14 +24,13 @@ const TokenCard = ({ balance, decimals, token, ...otherProps }) => (
{Number.isFinite(balance) ? ( - - {balance.toFixed(decimals)}{' '} - {token.symbol} - - ) : ( - + {balance.toFixed(decimals)} + ) : balance === null ? null : ( + )} + {token.symbol}
+ {children}
); diff --git a/packages/light-ui/src/index.js b/packages/light-ui/src/index.js index ad5abb724e06f7b67bc3d4fe44c4caccfe3a7755..4553c192ede0fc67c10b9b494f82a0909bd75dbf 100644 --- a/packages/light-ui/src/index.js +++ b/packages/light-ui/src/index.js @@ -4,10 +4,19 @@ // SPDX-License-Identifier: MIT import AccountCard from './AccountCard'; +import AccountHeader from './AccountHeader'; import Card from './Card'; import FormField from './FormField'; import Header from './Header'; import Placeholder from './Placeholder'; import TokenCard from './TokenCard'; -export { AccountCard, Card, FormField, Header, Placeholder, TokenCard }; +export { + AccountCard, + AccountHeader, + Card, + FormField, + Header, + Placeholder, + TokenCard +}; diff --git a/yarn.lock b/yarn.lock index 3b118382be3adb880ebb3460bfe45336559e7eda..7f3d271a6a01527acc4ba2180be7bdec262b6b22 100644 --- a/yarn.lock +++ b/yarn.lock @@ -167,13 +167,6 @@ "@babel/types" "7.0.0-beta.35" lodash "^4.2.0" -"@babel/helper-module-imports@7.0.0-beta.40": - version "7.0.0-beta.40" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.0.0-beta.40.tgz#251cbb6404599282e8f7356a5b32c9381bef5d2d" - dependencies: - "@babel/types" "7.0.0-beta.40" - lodash "^4.2.0" - "@babel/helper-module-imports@7.0.0-beta.49": version "7.0.0-beta.49" resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.0.0-beta.49.tgz#41d7d59891016c493432a46f7464446552890c75" @@ -855,10 +848,10 @@ "@babel/plugin-syntax-import-meta" "7.0.0-beta.49" "@babel/runtime@^7.0.0-beta.49": - version "7.0.0-beta.49" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.0.0-beta.49.tgz#03b3bf07eb982072c8e851dd2ddd5110282e61bf" + version "7.0.0-beta.51" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.0.0-beta.51.tgz#48b8ed18307034c6620f643514650ca2ccc0165a" dependencies: - core-js "^2.5.6" + core-js "^2.5.7" regenerator-runtime "^0.11.1" "@babel/template@7.0.0-beta.44": @@ -917,14 +910,6 @@ lodash "^4.2.0" to-fast-properties "^2.0.0" -"@babel/types@7.0.0-beta.40": - version "7.0.0-beta.40" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.0.0-beta.40.tgz#25c3d7aae14126abe05fcb098c65a66b6d6b8c14" - dependencies: - esutils "^2.0.2" - lodash "^4.2.0" - to-fast-properties "^2.0.0" - "@babel/types@7.0.0-beta.44": version "7.0.0-beta.44" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.0.0-beta.44.tgz#6b1b164591f77dec0a0342aca995f2d046b3a757" @@ -941,22 +926,6 @@ lodash "^4.17.5" to-fast-properties "^2.0.0" -"@emotion/babel-utils@^0.5.3": - version "0.5.3" - resolved "https://registry.yarnpkg.com/@emotion/babel-utils/-/babel-utils-0.5.3.tgz#6be6dd7a480fdbdfb6cbba7f4f6d9361744b8d6e" - -"@emotion/hash@^0.6.2": - version "0.6.3" - resolved "https://registry.yarnpkg.com/@emotion/hash/-/hash-0.6.3.tgz#0e7a5604626fc6c6d4ac4061a2f5ac80d50262a4" - -"@emotion/memoize@^0.6.1": - version "0.6.2" - resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.6.2.tgz#138e00b332d519b4e307bded6159e5ba48aba3ae" - -"@emotion/stylis@^0.6.5": - version "0.6.8" - resolved "https://registry.yarnpkg.com/@emotion/stylis/-/stylis-0.6.8.tgz#6ad4e8d32b19b440efa4481bbbcb98a8c12765bb" - "@mrmlnc/readdir-enhanced@^2.2.1": version "2.2.1" resolved "https://registry.yarnpkg.com/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz#524af240d1a360527b730475ecfa1344aa540dde" @@ -1007,24 +976,22 @@ u2f-api "0.0.9" u2f-api-polyfill "0.4.3" -"@parity/light.js@https://github.com/parity-js/light.js#99ee612acd7ee69554839a09d6c094251043bc3b": +"@parity/light.js@https://github.com/parity-js/light.js#165a97deb86d7b77a96b324b7d42d04a27a43b0b": version "1.0.0" - resolved "https://github.com/parity-js/light.js#99ee612acd7ee69554839a09d6c094251043bc3b" + resolved "https://github.com/parity-js/light.js#165a97deb86d7b77a96b324b7d42d04a27a43b0b" dependencies: "@babel/runtime" "^7.0.0-beta.49" "@parity/api" "^2.1.23" memoizee "^0.4.12" -"@parity/shared@^3.0.1": - version "3.0.1" - resolved "https://registry.yarnpkg.com/@parity/shared/-/shared-3.0.1.tgz#3506cc235ed9e73f88e20dca1d7300746ec050ff" +"@parity/shared@^3.0.2": + version "3.0.2" + resolved "https://registry.yarnpkg.com/@parity/shared/-/shared-3.0.2.tgz#458a68c921a361a5b148aaed4e9a5e610ebc7082" dependencies: "@parity/ledger" "~2.1.3" bignumber.js "4.1.0" eventemitter3 "^2.0.3" loglevel "1.4.1" - mobx "2.6.4" - mobx-react "4.0.3" push.js "0.0.11" react-redux "4.4.6" redux "3.6.0" @@ -1255,6 +1222,12 @@ acorn@^5.0.0, acorn@^5.5.0, acorn@^5.6.2: version "5.6.2" resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.6.2.tgz#b1da1d7be2ac1b4a327fb9eab851702c5045b4e7" +add-dom-event-listener@1.x: + version "1.0.2" + resolved "https://registry.yarnpkg.com/add-dom-event-listener/-/add-dom-event-listener-1.0.2.tgz#8faed2c41008721cf111da1d30d995b85be42bed" + dependencies: + object-assign "4.x" + add-stream@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/add-stream/-/add-stream-1.0.0.tgz#6a7990437ca736d5e1288db92bd3266d5f5cb2aa" @@ -1890,23 +1863,6 @@ babel-plugin-dynamic-import-node@1.1.0: babel-template "^6.26.0" babel-types "^6.26.0" -babel-plugin-emotion@^9.2.0: - version "9.2.0" - resolved "https://registry.yarnpkg.com/babel-plugin-emotion/-/babel-plugin-emotion-9.2.0.tgz#43543dd02c7b5cd89d464aeedef864edb754b852" - dependencies: - "@babel/helper-module-imports" "7.0.0-beta.40" - "@emotion/babel-utils" "^0.5.3" - "@emotion/hash" "^0.6.2" - "@emotion/memoize" "^0.6.1" - "@emotion/stylis" "^0.6.5" - babel-plugin-macros "^2.0.0" - babel-plugin-syntax-jsx "^6.18.0" - convert-source-map "^1.5.0" - find-root "^1.1.0" - mkdirp "^0.5.1" - source-map "^0.5.7" - touch "^1.0.0" - babel-plugin-istanbul@^4.0.0: version "4.1.6" resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-4.1.6.tgz#36c59b2192efce81c5b378321b74175add1c9a45" @@ -1920,12 +1876,6 @@ babel-plugin-jest-hoist@^20.0.3: version "20.0.3" resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-20.0.3.tgz#afedc853bd3f8dc3548ea671fbe69d03cc2c1767" -babel-plugin-macros@^2.0.0: - version "2.2.2" - resolved "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-2.2.2.tgz#049c93f4b934453688a6ec38bba529c55bf0fa1f" - dependencies: - cosmiconfig "^4.0.0" - babel-plugin-syntax-async-functions@^6.8.0: version "6.13.0" resolved "https://registry.yarnpkg.com/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz#cad9cad1191b5ad634bf30ae0872391e0647be95" @@ -1966,7 +1916,7 @@ babel-plugin-syntax-flow@^6.18.0: version "6.18.0" resolved "https://registry.yarnpkg.com/babel-plugin-syntax-flow/-/babel-plugin-syntax-flow-6.18.0.tgz#4c3ab20a2af26aa20cd25995c398c4eb70310c8d" -babel-plugin-syntax-jsx@^6.18.0, babel-plugin-syntax-jsx@^6.3.13, babel-plugin-syntax-jsx@^6.8.0: +babel-plugin-syntax-jsx@^6.3.13, babel-plugin-syntax-jsx@^6.8.0: version "6.18.0" resolved "https://registry.yarnpkg.com/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz#0af32a9a6e13ca7a3fd5069e62d7b0f58d0d8946" @@ -2011,9 +1961,9 @@ babel-plugin-transform-class-properties@6.24.1, babel-plugin-transform-class-pro babel-runtime "^6.22.0" babel-template "^6.24.1" -babel-plugin-transform-decorators-legacy@1.3.4: - version "1.3.4" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-decorators-legacy/-/babel-plugin-transform-decorators-legacy-1.3.4.tgz#741b58f6c5bce9e6027e0882d9c994f04f366925" +babel-plugin-transform-decorators-legacy@^1.3.5: + version "1.3.5" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-decorators-legacy/-/babel-plugin-transform-decorators-legacy-1.3.5.tgz#0e492dffa0edd70529072887f8aa86d4dd8b40a1" dependencies: babel-plugin-syntax-decorators "^6.1.18" babel-runtime "^6.2.0" @@ -2423,7 +2373,7 @@ babel-register@^6.26.0, babel-register@^6.9.0: mkdirp "^0.5.1" source-map-support "^0.4.15" -babel-runtime@6.26.0, babel-runtime@^6.18.0, babel-runtime@^6.2.0, babel-runtime@^6.22.0, babel-runtime@^6.26.0: +babel-runtime@6.26.0, babel-runtime@6.x, babel-runtime@^6.18.0, babel-runtime@^6.2.0, babel-runtime@^6.22.0, babel-runtime@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" dependencies: @@ -3091,6 +3041,10 @@ class-utils@^0.3.5: isobject "^3.0.0" static-extend "^0.1.1" +classnames@^2.2.5, classnames@^2.2.6: + version "2.2.6" + resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.2.6.tgz#43935bffdd291f326dad0a205309b38d00f650ce" + clean-css@4.1.x: version "4.1.11" resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.1.11.tgz#2ecdf145aba38f54740f26cefd0ff3e03e125d6a" @@ -3326,10 +3280,20 @@ compare-versions@^3.1.0: version "3.3.0" resolved "https://registry.yarnpkg.com/compare-versions/-/compare-versions-3.3.0.tgz#af93ea705a96943f622ab309578b9b90586f39c3" +component-classes@^1.2.5: + version "1.2.6" + resolved "https://registry.yarnpkg.com/component-classes/-/component-classes-1.2.6.tgz#c642394c3618a4d8b0b8919efccbbd930e5cd691" + dependencies: + component-indexof "0.0.3" + component-emitter@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6" +component-indexof@0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/component-indexof/-/component-indexof-0.0.3.tgz#11d091312239eb8f32c8f25ae9cb002ffe8d3c24" + compressible@~2.0.13: version "2.0.14" resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.14.tgz#326c5f507fbb055f54116782b969a81b67a29da7" @@ -3604,7 +3568,7 @@ core-js@^1.0.0: version "1.2.7" resolved "https://registry.yarnpkg.com/core-js/-/core-js-1.2.7.tgz#652294c14651db28fa93bd2d5ff2983a4f08c636" -core-js@^2.4.0, core-js@^2.4.1, core-js@^2.5.0, core-js@^2.5.6: +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" @@ -3624,15 +3588,6 @@ cosmiconfig@^2.1.0, cosmiconfig@^2.1.1: parse-json "^2.2.0" require-from-string "^1.1.0" -cosmiconfig@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-4.0.0.tgz#760391549580bbd2df1e562bc177b13c290972dc" - dependencies: - is-directory "^0.3.1" - js-yaml "^3.9.0" - parse-json "^4.0.0" - require-from-string "^2.0.1" - create-ecdh@^4.0.0: version "4.0.3" resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.3.tgz#c9111b6f33045c4697f144787f9254cdc77c45ff" @@ -3735,6 +3690,13 @@ 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" +css-animation@^1.3.2: + version "1.4.1" + resolved "https://registry.yarnpkg.com/css-animation/-/css-animation-1.4.1.tgz#5b8813125de0fbbbb0bbe1b472ae84221469b7a8" + dependencies: + babel-runtime "6.x" + component-classes "^1.2.5" + css-color-names@0.0.4: version "0.0.4" resolved "https://registry.yarnpkg.com/css-color-names/-/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0" @@ -4200,6 +4162,10 @@ doctrine@^2.0.0, doctrine@^2.0.2, doctrine@^2.1.0: dependencies: esutils "^2.0.2" +dom-align@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/dom-align/-/dom-align-1.7.0.tgz#95a8f91a8c6aaaef5908366c1c2c6271461bf2c3" + dom-converter@~0.1: version "0.1.4" resolved "https://registry.yarnpkg.com/dom-converter/-/dom-converter-0.1.4.tgz#a45ef5727b890c9bffe6d7c876e7b19cb0e17f3b" @@ -5417,7 +5383,7 @@ find-cache-dir@^1.0.0: make-dir "^1.0.0" pkg-dir "^2.0.0" -find-root@^1.0.0, find-root@^1.1.0: +find-root@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/find-root/-/find-root-1.1.0.tgz#abcfc8ba76f708c42a97b3d685b7e9450bfb9ce4" @@ -6102,7 +6068,7 @@ hoek@2.x.x: version "2.16.3" resolved "https://registry.yarnpkg.com/hoek/-/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed" -hoist-non-react-statics@^1.0.3, hoist-non-react-statics@^1.2.0: +hoist-non-react-statics@^1.0.3: version "1.2.0" resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-1.2.0.tgz#aa448cf0986d55cc40773b17174b7dd066cb7cfb" @@ -7151,7 +7117,7 @@ js-tokens@^3.0.0, js-tokens@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" -js-yaml@^3.11.0, js-yaml@^3.4.3, js-yaml@^3.7.0, js-yaml@^3.9.0, js-yaml@^3.9.1: +js-yaml@^3.11.0, js-yaml@^3.4.3, js-yaml@^3.7.0, js-yaml@^3.9.1: version "3.12.0" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.12.0.tgz#eaed656ec8344f10f527c6bfa1b6e2244de167d1" dependencies: @@ -7591,6 +7557,10 @@ lodash-es@^4.2.1: version "4.17.10" resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.17.10.tgz#62cd7104cdf5dd87f235a837f0ede0e8e5117e05" +lodash._getnative@^3.0.0: + version "3.9.1" + resolved "https://registry.yarnpkg.com/lodash._getnative/-/lodash._getnative-3.9.1.tgz#570bc7dede46d61cdcde687d65d3eecbaa3aaff5" + lodash._reinterpolate@~3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d" @@ -7615,6 +7585,22 @@ lodash.defaults@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-4.2.0.tgz#d09178716ffea4dde9e5fb7b37f6f0802274580c" +lodash.isarguments@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz#2f573d85c6a24289ff00663b491c1d338ff3458a" + +lodash.isarray@^3.0.0: + version "3.0.4" + resolved "https://registry.yarnpkg.com/lodash.isarray/-/lodash.isarray-3.0.4.tgz#79e4eb88c36a8122af86f844aa9bcd851b5fbb55" + +lodash.keys@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/lodash.keys/-/lodash.keys-3.1.2.tgz#4dbc0472b156be50a0b286855d1bd0b0c656098a" + dependencies: + lodash._getnative "^3.0.0" + lodash.isarguments "^3.0.0" + lodash.isarray "^3.0.0" + lodash.memoize@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" @@ -8052,26 +8038,16 @@ mkdirp@0.5.1, mkdirp@0.5.x, "mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdi dependencies: minimist "0.0.8" -mobx-react@4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/mobx-react/-/mobx-react-4.0.3.tgz#40eb31d25e0b8d63048eda2376cc56bfabd14f75" - dependencies: - hoist-non-react-statics "^1.2.0" - -mobx-react@^5.1.2: +mobx-react@^5.2.3: version "5.2.3" resolved "https://registry.yarnpkg.com/mobx-react/-/mobx-react-5.2.3.tgz#cdf6141c2fe63377c5813cbd254e8ce0d4676631" dependencies: hoist-non-react-statics "^2.5.0" react-lifecycles-compat "^3.0.2" -mobx@2.6.4: - version "2.6.4" - resolved "https://registry.yarnpkg.com/mobx/-/mobx-2.6.4.tgz#e05a91a5b2c97dac3fdab34024e6b74a7f4311ab" - -mobx@^4.2.0: - version "4.3.1" - resolved "https://registry.yarnpkg.com/mobx/-/mobx-4.3.1.tgz#334e5aab4916b1d43f0faf3605a64b1b4b3ccb8d" +mobx@^5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/mobx/-/mobx-5.0.2.tgz#ea8d208eb36e9443707230d77a250f2fdd295dfb" modify-filename@^1.1.0: version "1.1.0" @@ -8335,12 +8311,6 @@ nopt@^4.0.1: abbrev "1" osenv "^0.1.4" -nopt@~1.0.10: - version "1.0.10" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-1.0.10.tgz#6ddd21bd2a31417b92727dd585f8a6f37608ebee" - dependencies: - abbrev "1" - normalize-package-data@^2.3.0, normalize-package-data@^2.3.2, normalize-package-data@^2.3.4, normalize-package-data@^2.3.5, normalize-package-data@^2.4.0: version "2.4.0" resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.4.0.tgz#12f95a307d58352075a04907b84ac8be98ac012f" @@ -8451,7 +8421,7 @@ oauth-sign@~0.8.1, oauth-sign@~0.8.2: version "0.8.2" resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43" -object-assign@4.1.1, object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: +object-assign@4.1.1, object-assign@4.x, object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" @@ -9381,7 +9351,7 @@ promise@^7.1.1: dependencies: asap "~2.0.3" -prop-types@^15.5.10, prop-types@^15.5.8, prop-types@^15.6.0, prop-types@^15.6.1: +prop-types@15.x, prop-types@^15.5.10, prop-types@^15.5.8, prop-types@^15.6.0, prop-types@^15.6.1: version "15.6.1" resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.6.1.tgz#36644453564255ddda391191fb3a125cbdf654ca" dependencies: @@ -9563,6 +9533,51 @@ raw-body@2.3.2: iconv-lite "0.4.19" unpipe "1.0.0" +rc-align@^2.4.0: + version "2.4.2" + resolved "https://registry.yarnpkg.com/rc-align/-/rc-align-2.4.2.tgz#338696c755b443ac10233e8703935b1d6f8ff194" + dependencies: + babel-runtime "^6.26.0" + dom-align "^1.7.0" + prop-types "^15.5.8" + rc-util "^4.0.4" + +rc-animate@2.x: + version "2.4.4" + resolved "https://registry.yarnpkg.com/rc-animate/-/rc-animate-2.4.4.tgz#a05a784c747beef140d99ff52b6117711bef4b1e" + dependencies: + babel-runtime "6.x" + css-animation "^1.3.2" + prop-types "15.x" + +rc-tooltip@^3.7.2: + version "3.7.2" + resolved "https://registry.yarnpkg.com/rc-tooltip/-/rc-tooltip-3.7.2.tgz#3698656d4bacd51b72d9e327bed15d1d5a9f1b27" + dependencies: + babel-runtime "6.x" + prop-types "^15.5.8" + rc-trigger "^2.2.2" + +rc-trigger@^2.2.2: + version "2.5.3" + resolved "https://registry.yarnpkg.com/rc-trigger/-/rc-trigger-2.5.3.tgz#aa3d9a9b20c51d05f6f35d36fa41074f70f6cd64" + dependencies: + babel-runtime "6.x" + classnames "^2.2.6" + prop-types "15.x" + rc-align "^2.4.0" + rc-animate "2.x" + rc-util "^4.4.0" + +rc-util@^4.0.4, rc-util@^4.4.0: + version "4.5.1" + resolved "https://registry.yarnpkg.com/rc-util/-/rc-util-4.5.1.tgz#0e435057174c024901c7600ba8903dd03da3ab39" + dependencies: + add-dom-event-listener "1.x" + babel-runtime "6.x" + prop-types "^15.5.10" + shallowequal "^0.2.2" + rc@^1.0.1, rc@^1.1.2, rc@^1.1.6, rc@^1.1.7, rc@^1.2.1: version "1.2.8" resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" @@ -9572,12 +9587,6 @@ rc@^1.0.1, rc@^1.1.2, rc@^1.1.6, rc@^1.1.7, rc@^1.2.1: minimist "^1.2.0" strip-json-comments "~2.0.1" -react-app-rewire-mobx@^1.0.8: - version "1.0.8" - resolved "https://registry.yarnpkg.com/react-app-rewire-mobx/-/react-app-rewire-mobx-1.0.8.tgz#f7612bf871d6a8a801be9c12e950d7a29696e354" - dependencies: - babel-plugin-transform-decorators-legacy "1.3.4" - react-app-rewired@^1.5.2: version "1.5.2" resolved "https://registry.yarnpkg.com/react-app-rewired/-/react-app-rewired-1.5.2.tgz#0f5cdbc92f47f166bb0bcadf8a5d00999b90f68f" @@ -9719,6 +9728,13 @@ react-scripts@1.1.4: optionalDependencies: fsevents "^1.1.3" +react-tooltip@^3.6.1: + version "3.6.1" + resolved "https://registry.yarnpkg.com/react-tooltip/-/react-tooltip-3.6.1.tgz#2ca993baa50d7e0271b8d13c6024445a883842eb" + dependencies: + classnames "^2.2.5" + prop-types "^15.6.0" + react@^16.3.2, react@^16.4.0: version "16.4.0" resolved "https://registry.yarnpkg.com/react/-/react-16.4.0.tgz#402c2db83335336fba1962c08b98c6272617d585" @@ -10149,10 +10165,6 @@ require-from-string@^1.1.0: version "1.2.1" resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-1.2.1.tgz#529c9ccef27380adfec9a2f965b649bbee636418" -require-from-string@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" - require-main-filename@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" @@ -10527,6 +10539,12 @@ sha.js@^2.4.0, sha.js@^2.4.8: inherits "^2.0.1" safe-buffer "^5.0.1" +shallowequal@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/shallowequal/-/shallowequal-0.2.2.tgz#1e32fd5bcab6ad688a4812cb0cc04efc75c7014e" + dependencies: + lodash.keys "^3.1.2" + shebang-command@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" @@ -11354,12 +11372,6 @@ toposort@^1.0.0: version "1.0.7" resolved "https://registry.yarnpkg.com/toposort/-/toposort-1.0.7.tgz#2e68442d9f64ec720b8cc89e6443ac6caa950029" -touch@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/touch/-/touch-1.0.0.tgz#449cbe2dbae5a8c8038e30d71fa0ff464947c4de" - dependencies: - nopt "~1.0.10" - tough-cookie@^2.3.2: version "2.4.2" resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.4.2.tgz#aa9133154518b494efab98a58247bfc38818c00c"