Browse Source

Add pure component on Modal

master
Loëck Vézien 7 years ago
parent
commit
f55e1e1d8c
No known key found for this signature in database GPG Key ID: CBCDCE384E853AC4
  1. 12
      package.json
  2. 30
      src/components/base/Modal/index.js
  3. 30
      src/components/modals/AddAccount/index.js
  4. 72
      src/components/modals/Receive.js
  5. 50
      src/components/modals/Send.js
  6. 112
      src/components/modals/SettingsAccount.js
  7. 7
      src/renderer/events.js
  8. 143
      yarn.lock

12
package.json

@ -44,10 +44,10 @@
"@fortawesome/fontawesome-free-solid": "^5.0.6",
"@fortawesome/react-fontawesome": "^0.0.17",
"@ledgerhq/common": "2.1.3",
"@ledgerhq/hw-app-btc": "^2.1.3",
"@ledgerhq/hw-app-eth": "^2.1.3",
"@ledgerhq/hw-transport": "^2.1.3",
"@ledgerhq/hw-transport-node-hid": "^2.1.3",
"@ledgerhq/hw-app-btc": "^2.2.0",
"@ledgerhq/hw-app-eth": "^2.2.0",
"@ledgerhq/hw-transport": "^2.2.0",
"@ledgerhq/hw-transport-node-hid": "^2.2.0",
"axios": "^0.17.1",
"bcryptjs": "^2.4.3",
"bitcoinjs-lib": "^3.3.2",
@ -70,7 +70,7 @@
"react": "^16.2.0",
"react-dom": "^16.2.0",
"react-i18next": "^7.3.4",
"react-mortal": "^3.1.0",
"react-mortal": "^3.2.0",
"react-motion": "^0.5.2",
"react-qr-reader": "^2.0.1",
"react-redux": "^5.0.6",
@ -108,7 +108,7 @@
"concurrently": "^3.5.1",
"dotenv": "^5.0.0",
"electron": "1.7.12",
"electron-builder": "^19.55.3",
"electron-builder": "^19.56.0",
"electron-devtools-installer": "^2.2.3",
"electron-webpack": "1.12.1",
"eslint": "^4.17.0",

30
src/components/base/Modal/index.js

@ -2,8 +2,9 @@
/* eslint-disable jsx-a11y/click-events-have-key-events */
/* eslint-disable jsx-a11y/no-static-element-interactions */
/* eslint-disable react/no-multi-comp */
import React, { PureComponent } from 'react'
import React, { Component, PureComponent } from 'react'
import { findDOMNode } from 'react-dom'
import { connect } from 'react-redux'
import Mortal from 'react-mortal'
@ -31,7 +32,7 @@ const springConfig = {
stiffness: 350,
}
const mapStateToProps = (state, { name, isOpened }) => ({
const mapStateToProps = (state, { name, isOpened }: { name: string, isOpened?: boolean }) => ({
isOpened: isOpened || (name && isModalOpened(state, name)),
data: getModalData(state, name),
})
@ -104,11 +105,29 @@ const CloseContainer = styled(Box).attrs({
}
`
class Pure extends Component<any> {
shouldComponentUpdate(nextProps) {
if (nextProps.isAnimated) {
return false
}
return true
}
render() {
const { data, onClose, render } = this.props
return render({ data, onClose })
}
}
export class Modal extends PureComponent<Props> {
static defaultProps = {
data: undefined,
isOpened: false,
onClose: noop,
onHide: noop,
preventBackdropClick: false,
isOpened: false,
}
componentDidUpdate(prevProps: Props) {
@ -138,6 +157,7 @@ export class Modal extends PureComponent<Props> {
render() {
const { preventBackdropClick, isOpened, onClose, onHide, render, data } = this.props
return (
<Mortal
isOpened={isOpened}
@ -148,7 +168,7 @@ export class Modal extends PureComponent<Props> {
y: spring(isVisible ? 0 : 20, springConfig),
})}
>
{(m, isVisible) => (
{(m, isVisible, isAnimated) => (
<Container isVisible={isVisible}>
<Backdrop op={m.opacity} />
<GrowScroll full align="center" onClick={preventBackdropClick ? undefined : onClose}>
@ -158,7 +178,7 @@ export class Modal extends PureComponent<Props> {
onClick={e => e.stopPropagation()}
innerRef={n => (this._wrapper = n)}
>
{render({ data, onClose })}
<Pure isAnimated={isAnimated} render={render} data={data} onClose={onClose} />
</Wrapper>
</GrowScroll>
</Container>

30
src/components/modals/AddAccount/index.js

@ -286,31 +286,27 @@ class AddAccountModal extends PureComponent<Props, State> {
_timeout = undefined
renderModal = ({ onClose }) => {
const { step } = this.state
const { t } = this.props
const Step = Steps[step]
return (
<ModalBody onClose={onClose} flow={3}>
<Text fontSize={4} color="steel">
{t('addAccount.title')}
</Text>
<Step {...this.getStepProps()} />
</ModalBody>
)
}
render() {
const { step } = this.state
const { t } = this.props
return (
<Modal
name={MODAL_ADD_ACCOUNT}
preventBackdropClick={step !== 'chooseWallet'}
onHide={this.handleHide}
render={this.renderModal}
render={({ onClose }) => {
const Step = Steps[step]
return (
<ModalBody onClose={onClose} flow={3}>
<Text fontSize={4} color="steel">
{t('addAccount.title')}
</Text>
<Step {...this.getStepProps()} />
</ModalBody>
)
}}
/>
)
}

72
src/components/modals/Receive.js

@ -52,48 +52,52 @@ class ReceiveModal extends PureComponent<Props, State> {
...defaultState,
})
renderModal = ({ data, onClose }) => {
render() {
const { amount } = this.state
const { t } = this.props
const account = this.getAccount(data)
return (
<ModalBody onClose={onClose} flow={3}>
<Text fontSize={4} color="steel">
{t('receive.title')}
</Text>
<Box flow={1}>
<Label>Account</Label>
<SelectAccount value={account} onChange={this.handleChangeInput('account')} />
</Box>
{account &&
account.data && (
<Fragment>
<Modal
name={MODAL_RECEIVE}
onHide={this.handleHide}
render={({ data, onClose }) => {
const account = this.getAccount(data)
return (
<ModalBody onClose={onClose} flow={3}>
<Text fontSize={4} color="steel">
{t('receive.title')}
</Text>
<Box flow={1}>
<Label>Request amount</Label>
<Input
type="number"
min={0}
max={account.data.balance / 1e8}
onChange={this.handleChangeInput('amount')}
/>
<Label>Account</Label>
<SelectAccount value={account} onChange={this.handleChangeInput('account')} />
</Box>
{account &&
account.data && (
<Fragment>
<Box flow={1}>
<Label>Request amount</Label>
<Input
type="number"
min={0}
max={account.data.balance / 1e8}
onChange={this.handleChangeInput('amount')}
/>
</Box>
<ReceiveBox amount={amount} address={get(account, 'data.address', '')} />
</Fragment>
)}
<Box horizontal justify="center">
<Button primary onClick={onClose}>
Close
</Button>
</Box>
<ReceiveBox amount={amount} address={get(account, 'data.address', '')} />
</Fragment>
)}
<Box horizontal justify="center">
<Button primary onClick={onClose}>
Close
</Button>
</Box>
</ModalBody>
</ModalBody>
)
}}
/>
)
}
render() {
return <Modal name={MODAL_RECEIVE} onHide={this.handleHide} render={this.renderModal} />
}
}
export default translate()(ReceiveModal)

50
src/components/modals/Send.js

@ -145,34 +145,38 @@ class Send extends PureComponent<Props, State> {
...defaultState,
})
renderModal = ({ data, onClose }) => {
render() {
const { step } = this.state
const Step = Steps[step]
return (
<Fragment>
<ModalBody p={2}>
<Breadcrumb
currentStep={step}
items={[
{ label: 'Amount' },
{ label: 'Summary' },
{ label: 'Secure validation' },
{ label: 'Confirmation' },
]}
/>
</ModalBody>
<ModalBody onClose={onClose}>
<Step {...this.getStepProps(data)} />
</ModalBody>
</Fragment>
<Modal
name={MODAL_SEND}
onHide={this.handleHide}
render={({ data, onClose }) => {
const Step = Steps[step]
return (
<Fragment>
<ModalBody p={2}>
<Breadcrumb
currentStep={step}
items={[
{ label: 'Amount' },
{ label: 'Summary' },
{ label: 'Secure validation' },
{ label: 'Confirmation' },
]}
/>
</ModalBody>
<ModalBody onClose={onClose}>
<Step {...this.getStepProps(data)} />
</ModalBody>
</Fragment>
)
}}
/>
)
}
render() {
return <Modal name={MODAL_SEND} onHide={this.handleHide} render={this.renderModal} />
}
}
export default translate()(Send)

112
src/components/modals/SettingsAccount.js

@ -118,66 +118,68 @@ class SettingsAccount extends PureComponent<Props, State> {
...defaultState,
})
renderModal = ({ data, onClose }) => {
render() {
const { editName, nameHovered } = this.state
const account = this.getAccount(data)
return (
<ModalBody onClose={onClose} flow={3}>
<Text fontSize={4} color="steel">
Account settings
</Text>
<Box
align="center"
flow={2}
horizontal
onMouseEnter={this.handleHoveredName(true)}
onMouseLeave={this.handleHoveredName(false)}
>
<Box>
{editName ? (
<form onSubmit={this.handleSubmitName(account)}>
<Box align="center" horizontal flow={2}>
<Box>
<Input value={account.name} onChange={this.handleChangeName} />
</Box>
<Box flow={2} horizontal>
<Button type="button" onClick={this.handleCancelEditName(data)}>
Cancel
</Button>
<Button type="submit" primary>
Ok
</Button>
</Box>
<Modal
name={MODAL_SETTINGS_ACCOUNT}
onHide={this.handleHide}
render={({ data, onClose }) => {
const account = this.getAccount(data)
return (
<ModalBody onClose={onClose} flow={3}>
<Text fontSize={4} color="steel">
Account settings
</Text>
<Box
align="center"
flow={2}
horizontal
onMouseEnter={this.handleHoveredName(true)}
onMouseLeave={this.handleHoveredName(false)}
>
<Box>
{editName ? (
<form onSubmit={this.handleSubmitName(account)}>
<Box align="center" horizontal flow={2}>
<Box>
<Input value={account.name} onChange={this.handleChangeName} />
</Box>
<Box flow={2} horizontal>
<Button type="button" onClick={this.handleCancelEditName(data)}>
Cancel
</Button>
<Button type="submit" primary>
Ok
</Button>
</Box>
</Box>
</form>
) : (
account.name
)}
</Box>
</form>
) : (
account.name
)}
</Box>
{!editName &&
nameHovered && (
<Box onClick={this.handleEditName(true)} style={{ cursor: 'pointer' }}>
<Icon name="edit" />
{!editName &&
nameHovered && (
<Box onClick={this.handleEditName(true)} style={{ cursor: 'pointer' }}>
<Icon name="edit" />
</Box>
)}
</Box>
)}
</Box>
<Box horizontal grow align="flex-end" flow={2}>
<Box grow>
<Button onClick={this.handleArchiveAccount(account)}>Archive account</Button>
</Box>
<Box grow>
<Button primary>Go to account</Button>
</Box>
</Box>
</ModalBody>
)
}
render() {
return (
<Modal name={MODAL_SETTINGS_ACCOUNT} onHide={this.handleHide} render={this.renderModal} />
<Box horizontal grow align="flex-end" flow={2}>
<Box grow>
<Button onClick={this.handleArchiveAccount(account)}>Archive account</Button>
</Box>
<Box grow>
<Button primary>Go to account</Button>
</Box>
</Box>
</ModalBody>
)
}}
/>
)
}
}

7
src/renderer/events.js

@ -14,6 +14,8 @@ import { syncAccount } from 'actions/accounts'
import { setUpdateStatus } from 'reducers/update'
import { getAccountData, getAccounts } from 'reducers/accounts'
const { DISABLED_SYNC, DISABLED_AUTO_SYNC } = process.env
type MsgPayload = {
type: string,
data: any,
@ -38,7 +40,6 @@ export function sendSyncEvent(channel: string, msgType: string, data: any): any
export function startSyncAccounts(accounts: Accounts) {
syncAccounts = true
sendEvent('accounts', 'sync.all', {
accounts: Object.entries(accounts).map(([id, account]: [string, any]) => {
const currentIndex = get(account, 'data.currentIndex', 0)
@ -83,7 +84,7 @@ export default ({ store, locked }: { store: Object, locked: boolean }) => {
accounts: {
sync: {
success: () => {
if (syncAccounts) {
if (syncAccounts && !DISABLED_AUTO_SYNC) {
syncTimeout = setTimeout(() => {
const accounts = getAccounts(store.getState())
startSyncAccounts(accounts)
@ -123,7 +124,7 @@ export default ({ store, locked }: { store: Object, locked: boolean }) => {
// Start detection when we plug/unplug devices
sendEvent('usb', 'devices.listen')
if (!locked) {
if (!locked && !DISABLED_SYNC) {
const accounts = getAccounts(store.getState())
// Start accounts sync

143
yarn.lock

@ -22,6 +22,10 @@
"7zip-bin-mac" "~1.0.1"
"7zip-bin-win" "~2.1.1"
"7zip-bin@~3.0.0":
version "3.0.0"
resolved "https://registry.yarnpkg.com/7zip-bin/-/7zip-bin-3.0.0.tgz#17416dc542f41511b26a9667b92847d75ef150fe"
"7zip@0.0.6":
version "0.0.6"
resolved "https://registry.yarnpkg.com/7zip/-/7zip-0.0.6.tgz#9cafb171af82329490353b4816f03347aa150a30"
@ -142,28 +146,29 @@
redux "^3.7.2"
redux-thunk "^2.2.0"
"@ledgerhq/hw-app-btc@^2.1.3":
version "2.1.3"
resolved "https://registry.yarnpkg.com/@ledgerhq/hw-app-btc/-/hw-app-btc-2.1.3.tgz#13eb7fef76b4a1ea027d276207fd53721403fb15"
"@ledgerhq/hw-app-btc@^2.2.0":
version "2.2.0"
resolved "https://registry.yarnpkg.com/@ledgerhq/hw-app-btc/-/hw-app-btc-2.2.0.tgz#c5c99c8974ab8df378f773c5b03052304ce3812b"
dependencies:
"@ledgerhq/hw-transport" "^2.1.3"
"@ledgerhq/hw-transport" "^2.2.0"
create-hash "^1.1.3"
"@ledgerhq/hw-app-eth@^2.1.3":
version "2.1.3"
resolved "https://registry.yarnpkg.com/@ledgerhq/hw-app-eth/-/hw-app-eth-2.1.3.tgz#77026c248154234352747865b728e495590017c0"
"@ledgerhq/hw-app-eth@^2.2.0":
version "2.2.0"
resolved "https://registry.yarnpkg.com/@ledgerhq/hw-app-eth/-/hw-app-eth-2.2.0.tgz#e8b3591ebb24565d5bacbca5d4c2a0ab99eb965a"
dependencies:
"@ledgerhq/hw-transport" "^2.1.3"
"@ledgerhq/hw-transport" "^2.2.0"
"@ledgerhq/hw-transport-node-hid@^2.1.3":
version "2.1.3"
resolved "https://registry.yarnpkg.com/@ledgerhq/hw-transport-node-hid/-/hw-transport-node-hid-2.1.3.tgz#a42b6c04af54fe5659622158f9c61a2ba713422e"
"@ledgerhq/hw-transport-node-hid@^2.2.0":
version "2.2.0"
resolved "https://registry.yarnpkg.com/@ledgerhq/hw-transport-node-hid/-/hw-transport-node-hid-2.2.0.tgz#da24caf79401f4d3fd841a724e71928c841ae84c"
dependencies:
"@ledgerhq/hw-transport" "^2.1.3"
"@ledgerhq/hw-transport" "^2.2.0"
node-hid "^0.7.2"
"@ledgerhq/hw-transport@^2.1.3":
version "2.1.3"
resolved "https://registry.yarnpkg.com/@ledgerhq/hw-transport/-/hw-transport-2.1.3.tgz#d9cca5fe70629eebd23fac5b85b8720f54d806ff"
"@ledgerhq/hw-transport@^2.2.0":
version "2.2.0"
resolved "https://registry.yarnpkg.com/@ledgerhq/hw-transport/-/hw-transport-2.2.0.tgz#32d6374e6cfacbb4b9b0a545cdd2f6bf3d64623f"
dependencies:
events "^1.1.1"
@ -2057,7 +2062,25 @@ buffers@~0.1.1:
version "0.1.1"
resolved "https://registry.yarnpkg.com/buffers/-/buffers-0.1.1.tgz#b24579c3bed4d6d396aeee6d9a8ae7f5482ab7bb"
builder-util-runtime@4.0.3, builder-util-runtime@^4.0.3, builder-util-runtime@~4.0.3:
builder-util-runtime@4.0.4:
version "4.0.4"
resolved "https://registry.yarnpkg.com/builder-util-runtime/-/builder-util-runtime-4.0.4.tgz#c92c352097006a07f3324ea200fa815440cba198"
dependencies:
bluebird-lst "^1.0.5"
debug "^3.1.0"
fs-extra-p "^4.5.0"
sax "^1.2.4"
builder-util-runtime@^4.0.4, builder-util-runtime@^4.0.5:
version "4.0.5"
resolved "https://registry.yarnpkg.com/builder-util-runtime/-/builder-util-runtime-4.0.5.tgz#5340cf9886b9283ea6e5b20dc09b5e3e461aef62"
dependencies:
bluebird-lst "^1.0.5"
debug "^3.1.0"
fs-extra-p "^4.5.0"
sax "^1.2.4"
builder-util-runtime@~4.0.3:
version "4.0.3"
resolved "https://registry.yarnpkg.com/builder-util-runtime/-/builder-util-runtime-4.0.3.tgz#c9f1959598e3fb534cdbe9ce4160e985af11a0fe"
dependencies:
@ -2066,13 +2089,33 @@ builder-util-runtime@4.0.3, builder-util-runtime@^4.0.3, builder-util-runtime@~4
fs-extra-p "^4.5.0"
sax "^1.2.4"
builder-util@4.2.1, builder-util@^4.2.1:
version "4.2.1"
resolved "https://registry.yarnpkg.com/builder-util/-/builder-util-4.2.1.tgz#ca9f0ddb5af1da5fe432129f7c6cbd447b552016"
builder-util@4.2.2:
version "4.2.2"
resolved "https://registry.yarnpkg.com/builder-util/-/builder-util-4.2.2.tgz#366b2bc32324bfe5565a7e4f13f86238fef5e92b"
dependencies:
"7zip-bin" "^2.4.1"
bluebird-lst "^1.0.5"
builder-util-runtime "^4.0.3"
builder-util-runtime "^4.0.4"
chalk "^2.3.0"
debug "^3.1.0"
fs-extra-p "^4.5.0"
ini "^1.3.5"
is-ci "^1.1.0"
js-yaml "^3.10.0"
lazy-val "^1.0.3"
semver "^5.5.0"
source-map-support "^0.5.3"
stat-mode "^0.2.2"
temp-file "^3.1.1"
tunnel-agent "^0.6.0"
builder-util@^4.2.2:
version "4.2.5"
resolved "https://registry.yarnpkg.com/builder-util/-/builder-util-4.2.5.tgz#babc190e2f2c3681497632b5cc274f1543aa9264"
dependencies:
"7zip-bin" "~3.0.0"
bluebird-lst "^1.0.5"
builder-util-runtime "^4.0.5"
chalk "^2.3.0"
debug "^3.1.0"
fs-extra-p "^4.5.0"
@ -2081,7 +2124,7 @@ builder-util@4.2.1, builder-util@^4.2.1:
js-yaml "^3.10.0"
lazy-val "^1.0.3"
semver "^5.5.0"
source-map-support "^0.5.1"
source-map-support "^0.5.3"
stat-mode "^0.2.2"
temp-file "^3.1.1"
tunnel-agent "^0.6.0"
@ -2683,7 +2726,7 @@ create-error-class@^3.0.0:
dependencies:
capture-stack-trace "^1.0.0"
create-hash@^1.1.0, create-hash@^1.1.2:
create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.1.3:
version "1.1.3"
resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.1.3.tgz#606042ac8b9262750f483caddab0f5819172d8fd"
dependencies:
@ -3137,12 +3180,12 @@ dijkstrajs@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/dijkstrajs/-/dijkstrajs-1.0.1.tgz#d3cd81221e3ea40742cfcde556d4e99e98ddc71b"
dmg-builder@3.1.3:
version "3.1.3"
resolved "https://registry.yarnpkg.com/dmg-builder/-/dmg-builder-3.1.3.tgz#aa296f4be369e7ff013e67923adc70258bc0a510"
dmg-builder@3.1.4:
version "3.1.4"
resolved "https://registry.yarnpkg.com/dmg-builder/-/dmg-builder-3.1.4.tgz#57c53a2b5a1e28526a837430b6ecc7110cadcf63"
dependencies:
bluebird-lst "^1.0.5"
builder-util "^4.2.1"
builder-util "^4.2.2"
fs-extra-p "^4.5.0"
iconv-lite "^0.4.19"
js-yaml "^3.10.0"
@ -3292,22 +3335,22 @@ ejs@^2.5.7:
version "2.5.7"
resolved "https://registry.yarnpkg.com/ejs/-/ejs-2.5.7.tgz#cc872c168880ae3c7189762fd5ffc00896c9518a"
electron-builder-lib@19.55.3:
version "19.55.3"
resolved "https://registry.yarnpkg.com/electron-builder-lib/-/electron-builder-lib-19.55.3.tgz#06fd10374c3c2315eade512c408f857baa5921e5"
electron-builder-lib@19.56.0:
version "19.56.0"
resolved "https://registry.yarnpkg.com/electron-builder-lib/-/electron-builder-lib-19.56.0.tgz#26a6754f89c3e732afbd97868f1fc3f666884149"
dependencies:
"7zip-bin" "^2.4.1"
asar-integrity "0.2.4"
async-exit-hook "^2.0.1"
bluebird-lst "^1.0.5"
builder-util "4.2.1"
builder-util-runtime "4.0.3"
builder-util "4.2.2"
builder-util-runtime "4.0.4"
chromium-pickle-js "^0.2.0"
debug "^3.1.0"
dmg-builder "3.1.3"
dmg-builder "3.1.4"
ejs "^2.5.7"
electron-osx-sign "0.4.8"
electron-publish "19.55.2"
electron-publish "19.56.0"
fs-extra-p "^4.5.0"
hosted-git-info "^2.5.0"
is-ci "^1.1.0"
@ -3322,15 +3365,15 @@ electron-builder-lib@19.55.3:
semver "^5.5.0"
temp-file "^3.1.1"
electron-builder@^19.55.3:
version "19.55.3"
resolved "https://registry.yarnpkg.com/electron-builder/-/electron-builder-19.55.3.tgz#01d3070af8a2eb97d91e6d029f28104b4bf8a068"
electron-builder@^19.56.0:
version "19.56.0"
resolved "https://registry.yarnpkg.com/electron-builder/-/electron-builder-19.56.0.tgz#ad5a64c73ce50b561fc8e2bcf9309de0f6ad4e5e"
dependencies:
bluebird-lst "^1.0.5"
builder-util "4.2.1"
builder-util-runtime "4.0.3"
builder-util "4.2.2"
builder-util-runtime "4.0.4"
chalk "^2.3.0"
electron-builder-lib "19.55.3"
electron-builder-lib "19.56.0"
electron-download-tf "4.3.4"
fs-extra-p "^4.5.0"
is-ci "^1.1.0"
@ -3392,13 +3435,13 @@ electron-osx-sign@0.4.8:
minimist "^1.2.0"
plist "^2.1.0"
electron-publish@19.55.2:
version "19.55.2"
resolved "https://registry.yarnpkg.com/electron-publish/-/electron-publish-19.55.2.tgz#773b6d13bc11312095848c08b3287f98c91ccc7e"
electron-publish@19.56.0:
version "19.56.0"
resolved "https://registry.yarnpkg.com/electron-publish/-/electron-publish-19.56.0.tgz#1a0446e69b3085a905c0abdf16125c1c97d108d9"
dependencies:
bluebird-lst "^1.0.5"
builder-util "^4.2.1"
builder-util-runtime "^4.0.3"
builder-util "^4.2.2"
builder-util-runtime "^4.0.4"
chalk "^2.3.0"
fs-extra-p "^4.5.0"
mime "^2.2.0"
@ -7506,9 +7549,9 @@ react-modal@^3.1.10:
prop-types "^15.5.10"
warning "^3.0.0"
react-mortal@^3.1.0:
version "3.1.0"
resolved "https://registry.yarnpkg.com/react-mortal/-/react-mortal-3.1.0.tgz#8dc4eaa0cf267a3614a07e8cef5e130840942fb3"
react-mortal@^3.2.0:
version "3.2.0"
resolved "https://registry.yarnpkg.com/react-mortal/-/react-mortal-3.2.0.tgz#76f31d3e870c0c3218526f3bd9a07cbc9e66cf34"
dependencies:
prop-types "^15.6.0"
react "^16.2.0"
@ -8461,12 +8504,6 @@ source-map-support@^0.4.15:
dependencies:
source-map "^0.5.6"
source-map-support@^0.5.1:
version "0.5.1"
resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.1.tgz#72291517d1fd0cb9542cee6c27520884b5da1a07"
dependencies:
source-map "^0.6.0"
source-map-support@^0.5.2:
version "0.5.2"
resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.2.tgz#1a6297fd5b2e762b39688c7fc91233b60984f0a5"

Loading…
Cancel
Save