Merge pull request #2026 from 0xProject/feature/what_is_0x_video_embed
Add sandwich video to landing page
This commit is contained in:
@@ -46,13 +46,13 @@
|
||||
"ethereumjs-util": "^5.1.1",
|
||||
"find-versions": "^2.0.0",
|
||||
"is-mobile": "^0.2.2",
|
||||
"valid-url": "^1.0.9",
|
||||
"jsonschema": "^1.2.0",
|
||||
"less": "^2.7.2",
|
||||
"lodash": "^4.17.11",
|
||||
"material-ui": "^0.20.0",
|
||||
"moment": "2.21.0",
|
||||
"moment-precise-range-plugin": "^1.3.0",
|
||||
"node-sass": "^4.12.0",
|
||||
"numeral": "^2.0.6",
|
||||
"polished": "^1.9.2",
|
||||
"query-string": "^6.0.0",
|
||||
@@ -75,15 +75,18 @@
|
||||
"react-scrollable-anchor": "^0.6.1",
|
||||
"react-syntax-highlighter": "^10.1.1",
|
||||
"react-tooltip": "^3.2.7",
|
||||
"react-transition-group": "^4.2.1",
|
||||
"react-typist": "^2.0.4",
|
||||
"redux": "^3.6.0",
|
||||
"redux-devtools-extension": "^2.13.2",
|
||||
"rollbar": "^2.4.7",
|
||||
"semver-sort": "0.0.4",
|
||||
"sass-loader": "^7.1.0",
|
||||
"semver": "5.5.0",
|
||||
"semver-sort": "0.0.4",
|
||||
"styled-components": "^4.1.1",
|
||||
"thenby": "^1.2.3",
|
||||
"truffle-contract": "2.0.1",
|
||||
"valid-url": "^1.0.9",
|
||||
"web3-provider-engine": "14.0.6",
|
||||
"xml-js": "^1.6.4"
|
||||
},
|
||||
@@ -94,7 +97,6 @@
|
||||
"@types/deep-equal": "^1.0.0",
|
||||
"@types/find-versions": "^2.0.0",
|
||||
"@types/is-mobile": "0.3.0",
|
||||
"@types/valid-url": "^1.0.2",
|
||||
"@types/jsonschema": "^1.1.1",
|
||||
"@types/lodash": "4.14.104",
|
||||
"@types/material-ui": "^0.20.0",
|
||||
@@ -110,7 +112,9 @@
|
||||
"@types/react-scroll": "1.5.3",
|
||||
"@types/react-syntax-highlighter": "^0.0.8",
|
||||
"@types/react-tap-event-plugin": "0.0.30",
|
||||
"@types/react-transition-group": "^4.2.0",
|
||||
"@types/redux": "^3.6.0",
|
||||
"@types/valid-url": "^1.0.2",
|
||||
"@types/web3-provider-engine": "^14.0.0",
|
||||
"awesome-typescript-loader": "^5.2.1",
|
||||
"css-loader": "0.23.x",
|
||||
|
||||
134
packages/website/sass/modal_video.scss
Normal file
134
packages/website/sass/modal_video.scss
Normal file
@@ -0,0 +1,134 @@
|
||||
$animation-speed: 0.3s;
|
||||
$animation-function: ease-out;
|
||||
$backdrop-color: rgba(0, 0, 0, 0.5);
|
||||
|
||||
@keyframes modal-video {
|
||||
from {
|
||||
opacity: 0;
|
||||
}
|
||||
|
||||
to {
|
||||
opacity: 1;
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes modal-video-inner {
|
||||
from {
|
||||
transform: translate(0, 100px);
|
||||
}
|
||||
|
||||
to {
|
||||
transform: translate(0, 0);
|
||||
}
|
||||
}
|
||||
|
||||
.modal-video {
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background-color: $backdrop-color;
|
||||
z-index: 1000000;
|
||||
cursor: pointer;
|
||||
opacity: 1;
|
||||
animation-timing-function: $animation-function;
|
||||
animation-duration: $animation-speed;
|
||||
animation-name: modal-video;
|
||||
-webkit-transition: opacity $animation-speed $animation-function;
|
||||
-moz-transition: opacity $animation-speed $animation-function;
|
||||
-ms-transition: opacity $animation-speed $animation-function;
|
||||
-o-transition: opacity $animation-speed $animation-function;
|
||||
transition: opacity $animation-speed $animation-function;
|
||||
}
|
||||
|
||||
.modal-video-effect-exit {
|
||||
opacity: 0;
|
||||
|
||||
& .modal-video-movie-wrap {
|
||||
-webkit-transform: translate(0, 100px);
|
||||
-moz-transform: translate(0, 100px);
|
||||
-ms-transform: translate(0, 100px);
|
||||
-o-transform: translate(0, 100px);
|
||||
transform: translate(0, 100px);
|
||||
}
|
||||
}
|
||||
|
||||
.modal-video-body {
|
||||
max-width: 1300px;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
margin: 0 auto;
|
||||
display: table;
|
||||
}
|
||||
|
||||
.modal-video-inner {
|
||||
display: table-cell;
|
||||
vertical-align: middle;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.modal-video-movie-wrap {
|
||||
width: 100%;
|
||||
height: 0;
|
||||
position: relative;
|
||||
padding-bottom: 56.25%;
|
||||
background-color: #333;
|
||||
animation-timing-function: $animation-function;
|
||||
animation-duration: $animation-speed;
|
||||
animation-name: modal-video-inner;
|
||||
-webkit-transform: translate(0, 0);
|
||||
-moz-transform: translate(0, 0);
|
||||
-ms-transform: translate(0, 0);
|
||||
-o-transform: translate(0, 0);
|
||||
transform: translate(0, 0);
|
||||
-webkit-transition: -webkit-transform $animation-speed $animation-function;
|
||||
-moz-transition: -moz-transform $animation-speed $animation-function;
|
||||
-ms-transition: -ms-transform $animation-speed $animation-function;
|
||||
-o-transition: -o-transform $animation-speed $animation-function;
|
||||
transition: transform $animation-speed $animation-function;
|
||||
|
||||
& iframe {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
.modal-video-close-btn {
|
||||
position: absolute;
|
||||
z-index: 2;
|
||||
top: -35px;
|
||||
right: -35px;
|
||||
display: inline-block;
|
||||
width: 35px;
|
||||
height: 35px;
|
||||
overflow: hidden;
|
||||
border: none;
|
||||
background: transparent;
|
||||
|
||||
&:before {
|
||||
transform: rotate(45deg);
|
||||
}
|
||||
|
||||
&:after {
|
||||
transform: rotate(-45deg);
|
||||
}
|
||||
|
||||
&:before,
|
||||
&:after {
|
||||
content: '';
|
||||
position: absolute;
|
||||
height: 2px;
|
||||
width: 100%;
|
||||
top: 50%;
|
||||
left: 0;
|
||||
margin-top: -1px;
|
||||
background: #fff;
|
||||
border-radius: 5px;
|
||||
margin-top: -6px;
|
||||
}
|
||||
}
|
||||
@@ -108,7 +108,7 @@ const ButtonBase = styled.button<ButtonInterface>`
|
||||
border-color: ${props => props.isTransparent && !props.isNoBorder && !props.isWithArrow && '#00AE99'};
|
||||
|
||||
svg {
|
||||
transform: translate3d(2px, -2px, 0);
|
||||
transform: ${props => (props.isWithArrow ? 'translate3d(2px, -2px, 0)' : '')};
|
||||
}
|
||||
}
|
||||
`;
|
||||
|
||||
@@ -117,7 +117,7 @@ const ButtonWrap = styled.div`
|
||||
flex-direction: column;
|
||||
justify-content: center;
|
||||
|
||||
* {
|
||||
> * {
|
||||
padding-left: 20px;
|
||||
padding-right: 20px;
|
||||
}
|
||||
@@ -138,26 +138,39 @@ const BackgroundWrap = styled.div`
|
||||
top: 0;
|
||||
`;
|
||||
|
||||
export const Hero: React.StatelessComponent<Props> = (props: Props) => (
|
||||
<Section padding={props.sectionPadding} isAnnouncement={!!props.announcement}>
|
||||
{!!props.background && <BackgroundWrap>{props.background}</BackgroundWrap>}
|
||||
<Wrap isCentered={!props.figure} isFullWidth={props.isFullWidth} isCenteredMobile={props.isCenteredMobile}>
|
||||
{props.figure && <Content width="400px">{props.figure}</Content>}
|
||||
export class Hero extends React.Component<Props> {
|
||||
public static defaultProps = {
|
||||
isCenteredMobile: true,
|
||||
};
|
||||
public shouldComponentUpdate(): boolean {
|
||||
// The hero is a static component with animations.
|
||||
// We do not want state changes in parent components to re-trigger animations.
|
||||
return false;
|
||||
}
|
||||
public render(): React.ReactNode {
|
||||
const props = this.props;
|
||||
return (
|
||||
<Section padding={props.sectionPadding} isAnnouncement={!!props.announcement}>
|
||||
{!!props.background && <BackgroundWrap>{props.background}</BackgroundWrap>}
|
||||
<Wrap
|
||||
isCentered={!props.figure}
|
||||
isFullWidth={props.isFullWidth}
|
||||
isCenteredMobile={props.isCenteredMobile}
|
||||
>
|
||||
{props.figure && <Content width="400px">{props.figure}</Content>}
|
||||
|
||||
<Content width={props.maxWidth ? props.maxWidth : props.figure ? '546px' : '678px'}>
|
||||
{!!props.announcement && <Announcement {...props.announcement} />}
|
||||
<Title isLarge={props.isLargeTitle} maxWidth={props.maxWidthHeading}>
|
||||
{props.title}
|
||||
</Title>
|
||||
<Content width={props.maxWidth ? props.maxWidth : props.figure ? '546px' : '678px'}>
|
||||
{!!props.announcement && <Announcement {...props.announcement} />}
|
||||
<Title isLarge={props.isLargeTitle} maxWidth={props.maxWidthHeading}>
|
||||
{props.title}
|
||||
</Title>
|
||||
|
||||
<Description>{props.description}</Description>
|
||||
<Description>{props.description}</Description>
|
||||
|
||||
{props.actions && <ButtonWrap>{props.actions}</ButtonWrap>}
|
||||
</Content>
|
||||
</Wrap>
|
||||
</Section>
|
||||
);
|
||||
|
||||
Hero.defaultProps = {
|
||||
isCenteredMobile: true,
|
||||
};
|
||||
{props.actions && <ButtonWrap>{props.actions}</ButtonWrap>}
|
||||
</Content>
|
||||
</Wrap>
|
||||
</Section>
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
257
packages/website/ts/components/modals/modal_video.tsx
Normal file
257
packages/website/ts/components/modals/modal_video.tsx
Normal file
@@ -0,0 +1,257 @@
|
||||
import React from 'react';
|
||||
import CSSTransition from 'react-transition-group/CSSTransition';
|
||||
|
||||
interface ModalVideoClassnames {
|
||||
modalVideoEffect: string;
|
||||
modalVideo: string;
|
||||
modalVideoClose: string;
|
||||
modalVideoBody: string;
|
||||
modalVideoInner: string;
|
||||
modalVideoIframeWrap: string;
|
||||
modalVideoCloseBtn: string;
|
||||
}
|
||||
|
||||
interface Aria {
|
||||
openMessage: string;
|
||||
dismissBtnMessage: string;
|
||||
}
|
||||
|
||||
export interface ModalVideoProps {
|
||||
onClose?: () => void;
|
||||
isOpen: boolean;
|
||||
classNames?: ModalVideoClassnames;
|
||||
ratio?: string;
|
||||
animationSpeed?: number;
|
||||
allowFullScreen?: boolean;
|
||||
aria?: Aria;
|
||||
videoId?: string;
|
||||
channel?: string;
|
||||
youtube?: any;
|
||||
vimeo?: any;
|
||||
youku?: any;
|
||||
}
|
||||
|
||||
export interface ModalVideoState {
|
||||
isOpen: boolean;
|
||||
}
|
||||
|
||||
export class ModalVideo extends React.Component<ModalVideoProps, ModalVideoState> {
|
||||
public static defaultProps: ModalVideoProps = {
|
||||
channel: 'youtube',
|
||||
isOpen: false,
|
||||
youtube: {
|
||||
autoplay: 1,
|
||||
cc_load_policy: 1,
|
||||
color: null,
|
||||
controls: 1,
|
||||
disablekb: 0,
|
||||
enablejsapi: 0,
|
||||
end: null,
|
||||
fs: 1,
|
||||
h1: null,
|
||||
iv_load_policy: 1,
|
||||
list: null,
|
||||
listType: null,
|
||||
loop: 0,
|
||||
modestbranding: null,
|
||||
origin: null,
|
||||
playlist: null,
|
||||
playsinline: null,
|
||||
rel: 0,
|
||||
showinfo: 1,
|
||||
start: 0,
|
||||
wmode: 'transparent',
|
||||
theme: 'dark',
|
||||
},
|
||||
ratio: '16:9',
|
||||
vimeo: {
|
||||
api: false,
|
||||
autopause: true,
|
||||
autoplay: true,
|
||||
byline: true,
|
||||
callback: null,
|
||||
color: null,
|
||||
height: null,
|
||||
loop: false,
|
||||
maxheight: null,
|
||||
maxwidth: null,
|
||||
player_id: null,
|
||||
portrait: true,
|
||||
title: true,
|
||||
width: null,
|
||||
xhtml: false,
|
||||
},
|
||||
youku: {
|
||||
autoplay: 1,
|
||||
show_related: 0,
|
||||
},
|
||||
allowFullScreen: true,
|
||||
animationSpeed: 300,
|
||||
classNames: {
|
||||
modalVideoEffect: 'modal-video-effect',
|
||||
modalVideo: 'modal-video',
|
||||
modalVideoClose: 'modal-video-close',
|
||||
modalVideoBody: 'modal-video-body',
|
||||
modalVideoInner: 'modal-video-inner',
|
||||
modalVideoIframeWrap: 'modal-video-movie-wrap',
|
||||
modalVideoCloseBtn: 'modal-video-close-btn',
|
||||
},
|
||||
aria: {
|
||||
openMessage: 'You just openned the modal video',
|
||||
dismissBtnMessage: 'Close the modal by clicking here',
|
||||
},
|
||||
};
|
||||
public modal: any;
|
||||
public modalbtn: any;
|
||||
constructor(props: ModalVideoProps) {
|
||||
super(props);
|
||||
this.state = {
|
||||
isOpen: false,
|
||||
};
|
||||
}
|
||||
|
||||
public openModal = (): void => {
|
||||
this.setState({ isOpen: true });
|
||||
};
|
||||
|
||||
public closeModal = (): void => {
|
||||
this.setState({ isOpen: false });
|
||||
if (typeof this.props.onClose === 'function') {
|
||||
this.props.onClose();
|
||||
}
|
||||
};
|
||||
|
||||
public keydownHandler(e: any): void {
|
||||
if (e.keyCode === 27) {
|
||||
this.closeModal();
|
||||
}
|
||||
}
|
||||
|
||||
public componentDidMount(): void {
|
||||
document.addEventListener('keydown', this.keydownHandler.bind(this));
|
||||
}
|
||||
|
||||
public componentWillUnmount(): void {
|
||||
document.removeEventListener('keydown', this.keydownHandler.bind(this));
|
||||
}
|
||||
|
||||
public componentWillReceiveProps(nextProps: ModalVideoProps): void {
|
||||
this.setState({ isOpen: nextProps.isOpen });
|
||||
}
|
||||
|
||||
public componentDidUpdate(): void {
|
||||
if (this.state.isOpen && this.modal) {
|
||||
this.modal.focus();
|
||||
}
|
||||
}
|
||||
|
||||
public updateFocus = (e: any): void => {
|
||||
if (e.keyCode === 9) {
|
||||
e.preventDefault();
|
||||
e.stopPropagation();
|
||||
if (this.modal === document.activeElement) {
|
||||
this.modalbtn.focus();
|
||||
} else {
|
||||
this.modal.focus();
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
public getQueryString(obj: any): string {
|
||||
let url = '';
|
||||
for (const key of Object.keys(obj)) {
|
||||
if (obj.hasOwnProperty(key)) {
|
||||
if (obj[key] !== null) {
|
||||
url += `${key}=${obj[key]}&`;
|
||||
}
|
||||
}
|
||||
}
|
||||
return url.substr(0, url.length - 1);
|
||||
}
|
||||
|
||||
public getYoutubeUrl(youtube: any, videoId: string): string {
|
||||
const query = this.getQueryString(youtube);
|
||||
return `//www.youtube.com/embed/${videoId}?${query}`;
|
||||
}
|
||||
|
||||
public getVimeoUrl(vimeo: any, videoId: string): string {
|
||||
const query = this.getQueryString(vimeo);
|
||||
return `//play.vimeo.com/video/${videoId}?${query}`;
|
||||
}
|
||||
|
||||
public getYoukuUrl(youku: any, videoId: string): string {
|
||||
const query = this.getQueryString(youku);
|
||||
return `//player.youku.com/embed/${videoId}?${query}`;
|
||||
}
|
||||
|
||||
public getVideoUrl(opt: any, videoId: string): string {
|
||||
if (opt.channel === 'youtube') {
|
||||
return this.getYoutubeUrl(opt.youtube, videoId);
|
||||
} else if (opt.channel === 'vimeo') {
|
||||
return this.getVimeoUrl(opt.vimeo, videoId);
|
||||
} else if (opt.channel === 'youku') {
|
||||
return this.getYoukuUrl(opt.youku, videoId);
|
||||
}
|
||||
return '';
|
||||
}
|
||||
|
||||
public getPadding(ratio: string): string {
|
||||
const arr = ratio.split(':');
|
||||
const width = Number(arr[0]);
|
||||
const height = Number(arr[1]);
|
||||
const padding = (height * 100) / width;
|
||||
return `${padding}%`;
|
||||
}
|
||||
|
||||
public render(): React.ReactNode {
|
||||
const style = {
|
||||
paddingBottom: this.getPadding(this.props.ratio),
|
||||
};
|
||||
return (
|
||||
<CSSTransition classNames={this.props.classNames.modalVideoEffect} timeout={this.props.animationSpeed}>
|
||||
{() => {
|
||||
if (!this.state.isOpen) {
|
||||
return null;
|
||||
}
|
||||
return (
|
||||
<div
|
||||
className={this.props.classNames.modalVideo}
|
||||
tabIndex={-1}
|
||||
role="dialog"
|
||||
aria-label={this.props.aria.openMessage}
|
||||
onClick={this.closeModal}
|
||||
ref={node => {
|
||||
this.modal = node;
|
||||
}}
|
||||
onKeyDown={this.updateFocus}
|
||||
>
|
||||
<div className={this.props.classNames.modalVideoBody}>
|
||||
<div className={this.props.classNames.modalVideoInner}>
|
||||
<div className={this.props.classNames.modalVideoIframeWrap} style={style}>
|
||||
<button
|
||||
className={this.props.classNames.modalVideoCloseBtn}
|
||||
aria-label={this.props.aria.dismissBtnMessage}
|
||||
ref={node => {
|
||||
this.modalbtn = node;
|
||||
}}
|
||||
onKeyDown={this.updateFocus}
|
||||
/>
|
||||
<iframe
|
||||
width="920"
|
||||
height="460"
|
||||
allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture"
|
||||
src={this.getVideoUrl(this.props, this.props.videoId)}
|
||||
frameBorder="0"
|
||||
allowFullScreen={this.props.allowFullScreen}
|
||||
tabIndex={-1}
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
}}
|
||||
</CSSTransition>
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -3,9 +3,10 @@ import * as React from 'react';
|
||||
import { Button } from 'ts/components/button';
|
||||
import { Hero } from 'ts/components/hero';
|
||||
import { LandingAnimation } from 'ts/components/heroImage';
|
||||
import { Icon } from 'ts/components/icon';
|
||||
|
||||
import { HeroAnimation } from 'ts/components/heroAnimation';
|
||||
import { WebsitePaths } from 'ts/types';
|
||||
import { ModalVideo } from 'ts/components/modals/modal_video';
|
||||
|
||||
// const announcement = {
|
||||
// headline: 'Vote on ZEIP-24 & ZEIP-39',
|
||||
@@ -13,26 +14,68 @@ import { WebsitePaths } from 'ts/types';
|
||||
// shouldOpenInNewTab: false,
|
||||
// };
|
||||
|
||||
export const SectionLandingHero = () => (
|
||||
<Hero
|
||||
title="Powering Decentralized Exchange"
|
||||
isLargeTitle={true}
|
||||
isFullWidth={true}
|
||||
description="0x is an open protocol that enables the peer-to-peer exchange of assets on the Ethereum blockchain."
|
||||
figure={<LandingAnimation image={<HeroAnimation />} />}
|
||||
actions={<HeroActions />}
|
||||
// announcement={announcement}
|
||||
/>
|
||||
);
|
||||
export interface SectionlandingHeroProps {}
|
||||
export interface SectionLandingHeroState {
|
||||
isVideoOpen: boolean;
|
||||
}
|
||||
|
||||
const HeroActions = () => (
|
||||
export class SectionLandingHero extends React.Component<SectionlandingHeroProps, SectionLandingHeroState> {
|
||||
public state: SectionLandingHeroState = {
|
||||
isVideoOpen: false,
|
||||
};
|
||||
|
||||
public render(): React.ReactNode {
|
||||
const { isVideoOpen } = this.state;
|
||||
return (
|
||||
<>
|
||||
<Hero
|
||||
title="Powering Decentralized Exchange"
|
||||
isLargeTitle={true}
|
||||
isFullWidth={true}
|
||||
description="0x is an open protocol that enables the peer-to-peer exchange of assets on the Ethereum blockchain."
|
||||
figure={<LandingAnimation image={<HeroAnimation />} />}
|
||||
actions={<HeroActions onPlayVideoClick={this._openModalVideo} />}
|
||||
// announcement={announcement}
|
||||
/>
|
||||
<ModalVideo
|
||||
channel="youtube"
|
||||
isOpen={isVideoOpen}
|
||||
videoId="c04eIt3FQ5I"
|
||||
onClose={this._closeModalVideo}
|
||||
youtube={{
|
||||
autoplay: 1,
|
||||
controls: 0,
|
||||
showinfo: 0,
|
||||
modestbranding: 1,
|
||||
}}
|
||||
ratio="21:9"
|
||||
/>
|
||||
</>
|
||||
);
|
||||
}
|
||||
|
||||
private readonly _closeModalVideo = (): void => {
|
||||
this.setState({ isVideoOpen: false });
|
||||
};
|
||||
|
||||
private readonly _openModalVideo = (): void => {
|
||||
this.setState({ isVideoOpen: true });
|
||||
};
|
||||
}
|
||||
|
||||
interface HeroActionsProps {
|
||||
onPlayVideoClick: () => void;
|
||||
}
|
||||
|
||||
const HeroActions: React.FC<HeroActionsProps> = props => (
|
||||
<>
|
||||
<Button href="https://0x.org/docs" isInline={true}>
|
||||
Get Started
|
||||
</Button>
|
||||
|
||||
<Button to={WebsitePaths.Why} isTransparent={true} isInline={true}>
|
||||
Learn More
|
||||
<Button shouldUseAnchorTag={true} onClick={props.onPlayVideoClick} isTransparent={true} isInline={true}>
|
||||
<Icon name="play" size={16} margin={[0, 16, 0, -16]} />
|
||||
Play Video
|
||||
</Button>
|
||||
</>
|
||||
);
|
||||
|
||||
3
packages/website/ts/icons/illustrations/play.svg
generated
Normal file
3
packages/website/ts/icons/illustrations/play.svg
generated
Normal file
@@ -0,0 +1,3 @@
|
||||
<svg width="14" height="16" viewBox="0 0 14 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M0 16V0L13.3333 7.56757L0 16Z" fill="white"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 158 B |
@@ -38,6 +38,7 @@ tradeHistoryStorage.clearIfRequired();
|
||||
trackedTokenStorage.clearIfRequired();
|
||||
|
||||
import 'less/all.less';
|
||||
import 'sass/modal_video.scss';
|
||||
|
||||
// We pass modulePromise returning lambda instead of module promise,
|
||||
// cause we only want to import the module when the user navigates to the page.
|
||||
|
||||
@@ -19,7 +19,7 @@ const config = {
|
||||
publicPath: '/',
|
||||
},
|
||||
externals: {
|
||||
zeroExInstant: 'zeroExInstant'
|
||||
zeroExInstant: 'zeroExInstant',
|
||||
},
|
||||
devtool: 'source-map',
|
||||
resolve: {
|
||||
@@ -28,6 +28,7 @@ const config = {
|
||||
alias: {
|
||||
ts: path.join(__dirname, '/ts'),
|
||||
less: path.join(__dirname, '/less'),
|
||||
sass: path.join(__dirname, '/sass'),
|
||||
md: path.join(__dirname, '/md'),
|
||||
},
|
||||
},
|
||||
@@ -55,6 +56,10 @@ const config = {
|
||||
loader: 'style-loader!css-loader!less-loader',
|
||||
exclude: /node_modules/,
|
||||
},
|
||||
{
|
||||
test: /\.scss$/,
|
||||
use: ['style-loader', 'css-loader', 'sass-loader'],
|
||||
},
|
||||
{
|
||||
test: /\.css$/,
|
||||
loaders: ['style-loader', 'css-loader'],
|
||||
@@ -63,16 +68,14 @@ const config = {
|
||||
test: /\.svg$/,
|
||||
use: [
|
||||
{
|
||||
loader: "react-svg-loader",
|
||||
loader: 'react-svg-loader',
|
||||
options: {
|
||||
svgo: {
|
||||
plugins: [
|
||||
{ removeViewBox: false }
|
||||
],
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
plugins: [{ removeViewBox: false }],
|
||||
},
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
},
|
||||
@@ -109,8 +112,8 @@ const config = {
|
||||
// Source: https://github.com/webpack/webpack-dev-server/issues/1491
|
||||
https: {
|
||||
spdy: {
|
||||
protocols: ['http/1.1']
|
||||
}
|
||||
protocols: ['http/1.1'],
|
||||
},
|
||||
},
|
||||
},
|
||||
};
|
||||
@@ -119,9 +122,7 @@ module.exports = (_env, argv) => {
|
||||
let plugins = [];
|
||||
if (argv.mode === 'development') {
|
||||
config.mode = 'development';
|
||||
plugins.concat([
|
||||
new BundleAnalyzerPlugin(),
|
||||
]);
|
||||
plugins.concat([new BundleAnalyzerPlugin()]);
|
||||
} else {
|
||||
config.mode = 'production';
|
||||
plugins = plugins.concat([
|
||||
|
||||
222
yarn.lock
222
yarn.lock
@@ -931,6 +931,13 @@
|
||||
dependencies:
|
||||
regenerator-runtime "^0.12.0"
|
||||
|
||||
"@babel/runtime@^7.4.5":
|
||||
version "7.5.5"
|
||||
resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.5.5.tgz#74fba56d35efbeca444091c7850ccd494fd2f132"
|
||||
integrity sha512-28QvEGyQyNkB0/m2B4FU7IEZGK2NUrcMtT6BZEFALTguLk+AUT6ofsHtPk5QyjAdUkpMJ+/Em+quwz4HOt30AQ==
|
||||
dependencies:
|
||||
regenerator-runtime "^0.13.2"
|
||||
|
||||
"@babel/types@^7.0.0":
|
||||
version "7.1.3"
|
||||
resolved "https://registry.npmjs.org/@babel/types/-/types-7.1.3.tgz#3a767004567060c2f40fca49a304712c525ee37d"
|
||||
@@ -2095,6 +2102,13 @@
|
||||
version "0.0.30"
|
||||
resolved "https://registry.yarnpkg.com/@types/react-tap-event-plugin/-/react-tap-event-plugin-0.0.30.tgz#123f35080412f489b6770c5a65c159ff96654cb5"
|
||||
|
||||
"@types/react-transition-group@^4.2.0":
|
||||
version "4.2.0"
|
||||
resolved "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.2.0.tgz#86ddb509ce3de27341c7cb7797abb99b1c4676bf"
|
||||
integrity sha512-8KkpFRwqS9U1dtVVw1kt/MmWgLmbd5iK5TgqsaeC7fAm74J4j/HiBiRC8eETvwjGGju48RAwyZ3l5iv1H1x93Q==
|
||||
dependencies:
|
||||
"@types/react" "*"
|
||||
|
||||
"@types/react@*", "@types/react@16.4.16":
|
||||
version "16.4.16"
|
||||
resolved "https://registry.npmjs.org/@types/react/-/react-16.4.16.tgz#99f91b1200ae8c2062030402006d3b3c3a177043"
|
||||
@@ -2890,6 +2904,11 @@ async-eventemitter@ahultgren/async-eventemitter#fa06e39e56786ba541c180061dbf2c0a
|
||||
dependencies:
|
||||
async "^2.4.0"
|
||||
|
||||
async-foreach@^0.1.3:
|
||||
version "0.1.3"
|
||||
resolved "https://registry.npmjs.org/async-foreach/-/async-foreach-0.1.3.tgz#36121f845c0578172de419a97dbeb1d16ec34542"
|
||||
integrity sha1-NhIfhFwFeBct5Bmpfb6x0W7DRUI=
|
||||
|
||||
async-limiter@~1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.0.tgz#78faed8c3d074ab81f22b4e985d79e8738f720f8"
|
||||
@@ -4947,6 +4966,16 @@ clone-buffer@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/clone-buffer/-/clone-buffer-1.0.0.tgz#e3e25b207ac4e701af721e2cb5a16792cac3dc58"
|
||||
|
||||
clone-deep@^2.0.1:
|
||||
version "2.0.2"
|
||||
resolved "https://registry.npmjs.org/clone-deep/-/clone-deep-2.0.2.tgz#00db3a1e173656730d1188c3d6aced6d7ea97713"
|
||||
integrity sha512-SZegPTKjCgpQH63E+eN6mVEEPdQBOUzjyJm5Pora4lrwWRFS8I0QAxV/KD6vV/i0WuijHZWQC1fMsPEdxfdVCQ==
|
||||
dependencies:
|
||||
for-own "^1.0.0"
|
||||
is-plain-object "^2.0.4"
|
||||
kind-of "^6.0.0"
|
||||
shallow-clone "^1.0.0"
|
||||
|
||||
clone-stats@^0.0.1:
|
||||
version "0.0.1"
|
||||
resolved "https://registry.yarnpkg.com/clone-stats/-/clone-stats-0.0.1.tgz#b88f94a82cf38b8791d58046ea4029ad88ca99d1"
|
||||
@@ -5592,6 +5621,14 @@ cross-fetch@^2.1.0:
|
||||
node-fetch "2.1.1"
|
||||
whatwg-fetch "2.0.3"
|
||||
|
||||
cross-spawn@^3.0.0:
|
||||
version "3.0.1"
|
||||
resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-3.0.1.tgz#1256037ecb9f0c5f79e3d6ef135e30770184b982"
|
||||
integrity sha1-ElYDfsufDF9549bvE14wdwGEuYI=
|
||||
dependencies:
|
||||
lru-cache "^4.0.1"
|
||||
which "^1.2.9"
|
||||
|
||||
cross-spawn@^4, cross-spawn@^4.0.0:
|
||||
version "4.0.2"
|
||||
resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-4.0.2.tgz#7b9247621c23adfdd3856004a823cbe397424d41"
|
||||
@@ -6324,6 +6361,13 @@ dom-helpers@^3.2.0:
|
||||
version "3.3.1"
|
||||
resolved "https://registry.yarnpkg.com/dom-helpers/-/dom-helpers-3.3.1.tgz#fc1a4e15ffdf60ddde03a480a9c0fece821dd4a6"
|
||||
|
||||
dom-helpers@^3.4.0:
|
||||
version "3.4.0"
|
||||
resolved "https://registry.npmjs.org/dom-helpers/-/dom-helpers-3.4.0.tgz#e9b369700f959f62ecde5a6babde4bccd9169af8"
|
||||
integrity sha512-LnuPJ+dwqKDIyotW1VzmOZ5TONUN7CwkCR5hrgawTUbkBGYdeoNLZo6nNfGkCrjtE1nXXaj7iMMpDa8/d9WoIA==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.1.2"
|
||||
|
||||
dom-serializer@0, dom-serializer@~0.1.0:
|
||||
version "0.1.0"
|
||||
resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.1.0.tgz#073c697546ce0780ce23be4a28e293e40bc30c82"
|
||||
@@ -8089,6 +8133,11 @@ for-each@^0.3.2, for-each@~0.3.2:
|
||||
dependencies:
|
||||
is-function "~1.0.0"
|
||||
|
||||
for-in@^0.1.3:
|
||||
version "0.1.8"
|
||||
resolved "https://registry.npmjs.org/for-in/-/for-in-0.1.8.tgz#d8773908e31256109952b1fdb9b3fa867d2775e1"
|
||||
integrity sha1-2Hc5COMSVhCZUrH9ubP6hn0ndeE=
|
||||
|
||||
for-in@^1.0.1, for-in@^1.0.2:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80"
|
||||
@@ -8415,6 +8464,13 @@ gaze@^0.5.1:
|
||||
dependencies:
|
||||
globule "~0.1.0"
|
||||
|
||||
gaze@^1.0.0:
|
||||
version "1.1.3"
|
||||
resolved "https://registry.npmjs.org/gaze/-/gaze-1.1.3.tgz#c441733e13b927ac8c0ff0b4c3b033f28812924a"
|
||||
integrity sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g==
|
||||
dependencies:
|
||||
globule "^1.0.0"
|
||||
|
||||
genfun@^4.0.1:
|
||||
version "4.0.1"
|
||||
resolved "https://registry.yarnpkg.com/genfun/-/genfun-4.0.1.tgz#ed10041f2e4a7f1b0a38466d17a5c3e27df1dfc1"
|
||||
@@ -8683,7 +8739,7 @@ glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.0.6, glob@^7.1.1, glob@^7.1.2, gl
|
||||
once "^1.3.0"
|
||||
path-is-absolute "^1.0.0"
|
||||
|
||||
glob@^7.1.4:
|
||||
glob@^7.1.4, glob@~7.1.1:
|
||||
version "7.1.4"
|
||||
resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.4.tgz#aa608a2f6c577ad357e1ae5a5c26d9a8d1969255"
|
||||
dependencies:
|
||||
@@ -8802,6 +8858,15 @@ globby@^9.2.0:
|
||||
pify "^4.0.1"
|
||||
slash "^2.0.0"
|
||||
|
||||
globule@^1.0.0:
|
||||
version "1.2.1"
|
||||
resolved "https://registry.npmjs.org/globule/-/globule-1.2.1.tgz#5dffb1b191f22d20797a9369b49eab4e9839696d"
|
||||
integrity sha512-g7QtgWF4uYSL5/dn71WxubOrS7JVGCnFPEnoeChJmBnyR9Mw8nGoEwOgJL/RC2Te0WhbsEUCejfH8SZNJ+adYQ==
|
||||
dependencies:
|
||||
glob "~7.1.1"
|
||||
lodash "~4.17.10"
|
||||
minimatch "~3.0.2"
|
||||
|
||||
globule@~0.1.0:
|
||||
version "0.1.0"
|
||||
resolved "https://registry.yarnpkg.com/globule/-/globule-0.1.0.tgz#d9c8edde1da79d125a151b79533b978676346ae5"
|
||||
@@ -9564,6 +9629,11 @@ imurmurhash@^0.1.4:
|
||||
version "0.1.4"
|
||||
resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea"
|
||||
|
||||
in-publish@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.npmjs.org/in-publish/-/in-publish-2.0.0.tgz#e20ff5e3a2afc2690320b6dc552682a9c7fadf51"
|
||||
integrity sha1-4g/146KvwmkDILbcVSaCqcf631E=
|
||||
|
||||
indent-string@^2.1.0:
|
||||
version "2.1.0"
|
||||
resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-2.1.0.tgz#8e2d48348742121b4a8218b7a137e9a52049dc80"
|
||||
@@ -10641,6 +10711,11 @@ jmespath@0.15.0:
|
||||
version "0.15.0"
|
||||
resolved "https://registry.npmjs.org/jmespath/-/jmespath-0.15.0.tgz#a3f222a9aae9f966f5d27c796510e28091764217"
|
||||
|
||||
js-base64@^2.1.8:
|
||||
version "2.5.1"
|
||||
resolved "https://registry.npmjs.org/js-base64/-/js-base64-2.5.1.tgz#1efa39ef2c5f7980bb1784ade4a8af2de3291121"
|
||||
integrity sha512-M7kLczedRMYX4L8Mdh4MzyAMM9O5osx+4FcOQuTvr3A9F2D9S5JXheN0ewNbrvK2UatkTRhL5ejGmGSjNMiZuw==
|
||||
|
||||
js-base64@^2.1.9:
|
||||
version "2.4.3"
|
||||
resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.4.3.tgz#2e545ec2b0f2957f41356510205214e98fad6582"
|
||||
@@ -10669,7 +10744,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-tokens@^4.0.0:
|
||||
"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0:
|
||||
version "4.0.0"
|
||||
resolved "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499"
|
||||
|
||||
@@ -11341,7 +11416,7 @@ loader-utils@^0.2.16, loader-utils@~0.2.2:
|
||||
json5 "^0.5.0"
|
||||
object-assign "^4.0.1"
|
||||
|
||||
loader-utils@^1.0.2:
|
||||
loader-utils@^1.0.1, loader-utils@^1.0.2:
|
||||
version "1.2.3"
|
||||
resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.2.3.tgz#1ff5dc6911c9f0a062531a4c04b609406108c2c7"
|
||||
dependencies:
|
||||
@@ -11541,6 +11616,11 @@ lodash.sortby@^4.7.0:
|
||||
version "4.7.0"
|
||||
resolved "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438"
|
||||
|
||||
lodash.tail@^4.1.1:
|
||||
version "4.1.1"
|
||||
resolved "https://registry.npmjs.org/lodash.tail/-/lodash.tail-4.1.1.tgz#d2333a36d9e7717c8ad2f7cacafec7c32b444664"
|
||||
integrity sha1-0jM6NtnncXyK0vfKyv7HwytERmQ=
|
||||
|
||||
lodash.template@^3.0.0:
|
||||
version "3.6.2"
|
||||
resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-3.6.2.tgz#f8cdecc6169a255be9098ae8b0c53d378931d14f"
|
||||
@@ -11615,7 +11695,7 @@ lodash@=4.17.4:
|
||||
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae"
|
||||
integrity sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=
|
||||
|
||||
lodash@^4.0.0, lodash@^4.13.1, lodash@^4.14.0, lodash@^4.15.0, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.3, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.2.1, lodash@^4.3.0, lodash@^4.5.1:
|
||||
lodash@^4.0.0, lodash@^4.13.1, lodash@^4.14.0, lodash@^4.15.0, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.3, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.2.1, lodash@^4.3.0, lodash@^4.5.1, lodash@~4.17.10:
|
||||
version "4.17.15"
|
||||
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548"
|
||||
integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==
|
||||
@@ -11677,6 +11757,13 @@ loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.2.0, loose-envify@^1.3
|
||||
dependencies:
|
||||
js-tokens "^3.0.0"
|
||||
|
||||
loose-envify@^1.4.0:
|
||||
version "1.4.0"
|
||||
resolved "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf"
|
||||
integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==
|
||||
dependencies:
|
||||
js-tokens "^3.0.0 || ^4.0.0"
|
||||
|
||||
lottie-web@^5.1.3:
|
||||
version "5.4.1"
|
||||
resolved "https://registry.yarnpkg.com/lottie-web/-/lottie-web-5.4.1.tgz#98465741d4907293656cab31e395d79d0546ef26"
|
||||
@@ -12290,6 +12377,14 @@ mixin-deep@^1.2.0:
|
||||
for-in "^1.0.2"
|
||||
is-extendable "^1.0.1"
|
||||
|
||||
mixin-object@^2.0.1:
|
||||
version "2.0.1"
|
||||
resolved "https://registry.npmjs.org/mixin-object/-/mixin-object-2.0.1.tgz#4fb949441dab182540f1fe035ba60e1947a5e57e"
|
||||
integrity sha1-T7lJRB2rGCVA8f4DW6YOGUel5X4=
|
||||
dependencies:
|
||||
for-in "^0.1.3"
|
||||
is-extendable "^0.1.1"
|
||||
|
||||
mkdirp-promise@^5.0.1:
|
||||
version "5.0.1"
|
||||
resolved "https://registry.yarnpkg.com/mkdirp-promise/-/mkdirp-promise-5.0.1.tgz#e9b8f68e552c68a9c1713b84883f7a1dd039b8a1"
|
||||
@@ -12444,7 +12539,7 @@ nan@^2.11.0:
|
||||
version "2.12.1"
|
||||
resolved "https://registry.yarnpkg.com/nan/-/nan-2.12.1.tgz#7b1aa193e9aa86057e3c7bbd0ac448e770925552"
|
||||
|
||||
nan@^2.12.1:
|
||||
nan@^2.12.1, nan@^2.13.2:
|
||||
version "2.14.0"
|
||||
resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.0.tgz#7818f722027b2459a86f0295d434d1fc2336c52c"
|
||||
|
||||
@@ -12614,6 +12709,24 @@ node-gyp@^3.6.2:
|
||||
tar "^2.0.0"
|
||||
which "1"
|
||||
|
||||
node-gyp@^3.8.0:
|
||||
version "3.8.0"
|
||||
resolved "https://registry.npmjs.org/node-gyp/-/node-gyp-3.8.0.tgz#540304261c330e80d0d5edce253a68cb3964218c"
|
||||
integrity sha512-3g8lYefrRRzvGeSowdJKAKyks8oUpLEd/DyPV4eMhVlhJ0aNaZqIrNUIPuEWWTAoPqyFkfGrM67MC69baqn6vA==
|
||||
dependencies:
|
||||
fstream "^1.0.0"
|
||||
glob "^7.0.3"
|
||||
graceful-fs "^4.1.2"
|
||||
mkdirp "^0.5.0"
|
||||
nopt "2 || 3"
|
||||
npmlog "0 || 1 || 2 || 3 || 4"
|
||||
osenv "0"
|
||||
request "^2.87.0"
|
||||
rimraf "2"
|
||||
semver "~5.3.0"
|
||||
tar "^2.0.0"
|
||||
which "1"
|
||||
|
||||
node-gyp@^5.0.2:
|
||||
version "5.0.3"
|
||||
resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-5.0.3.tgz#80d64c23790244991b6d44532f0a351bedd3dd45"
|
||||
@@ -12709,6 +12822,29 @@ node-pre-gyp@^0.12.0:
|
||||
semver "^5.3.0"
|
||||
tar "^4"
|
||||
|
||||
node-sass@^4.12.0:
|
||||
version "4.12.0"
|
||||
resolved "https://registry.npmjs.org/node-sass/-/node-sass-4.12.0.tgz#0914f531932380114a30cc5fa4fa63233a25f017"
|
||||
integrity sha512-A1Iv4oN+Iel6EPv77/HddXErL2a+gZ4uBeZUy+a8O35CFYTXhgA8MgLCWBtwpGZdCvTvQ9d+bQxX/QC36GDPpQ==
|
||||
dependencies:
|
||||
async-foreach "^0.1.3"
|
||||
chalk "^1.1.1"
|
||||
cross-spawn "^3.0.0"
|
||||
gaze "^1.0.0"
|
||||
get-stdin "^4.0.1"
|
||||
glob "^7.0.3"
|
||||
in-publish "^2.0.0"
|
||||
lodash "^4.17.11"
|
||||
meow "^3.7.0"
|
||||
mkdirp "^0.5.1"
|
||||
nan "^2.13.2"
|
||||
node-gyp "^3.8.0"
|
||||
npmlog "^4.0.0"
|
||||
request "^2.88.0"
|
||||
sass-graph "^2.2.4"
|
||||
stdout-stream "^1.4.0"
|
||||
"true-case-path" "^1.0.2"
|
||||
|
||||
nodemon@^1.11.0:
|
||||
version "1.17.3"
|
||||
resolved "https://registry.yarnpkg.com/nodemon/-/nodemon-1.17.3.tgz#3b0bbc2ee05ccb43b1aef15ba05c63c7bc9b8530"
|
||||
@@ -12944,7 +13080,7 @@ npm-run-path@^2.0.0:
|
||||
dependencies:
|
||||
path-key "^2.0.0"
|
||||
|
||||
"npmlog@0 || 1 || 2 || 3 || 4", npmlog@^4.0.1, npmlog@^4.0.2, npmlog@^4.1.2:
|
||||
"npmlog@0 || 1 || 2 || 3 || 4", npmlog@^4.0.0, npmlog@^4.0.1, npmlog@^4.0.2, npmlog@^4.1.2:
|
||||
version "4.1.2"
|
||||
resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b"
|
||||
dependencies:
|
||||
@@ -15029,6 +15165,16 @@ react-transition-group@^1.2.1:
|
||||
prop-types "^15.5.6"
|
||||
warning "^3.0.0"
|
||||
|
||||
react-transition-group@^4.2.1:
|
||||
version "4.2.1"
|
||||
resolved "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.2.1.tgz#61fc9e36568bff9a1fe4e60fae323c8a6dbc0680"
|
||||
integrity sha512-IXrPr93VzCPupwm2O6n6C2kJIofJ/Rp5Ltihhm9UfE8lkuVX2ng/SUUl/oWjblybK9Fq2Io7LGa6maVqPB762Q==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.4.5"
|
||||
dom-helpers "^3.4.0"
|
||||
loose-envify "^1.4.0"
|
||||
prop-types "^15.6.2"
|
||||
|
||||
react-typist@^2.0.4:
|
||||
version "2.0.4"
|
||||
resolved "https://registry.npmjs.org/react-typist/-/react-typist-2.0.4.tgz#e7ee4de53ead913d363d38f07b700c00ce271be0"
|
||||
@@ -15553,7 +15699,7 @@ request@2.81.0, "request@>=2.9.0 <2.82.0":
|
||||
tunnel-agent "^0.6.0"
|
||||
uuid "^3.0.0"
|
||||
|
||||
request@^2.47.0, request@^2.87.0:
|
||||
request@^2.47.0, request@^2.87.0, request@^2.88.0:
|
||||
version "2.88.0"
|
||||
resolved "https://registry.yarnpkg.com/request/-/request-2.88.0.tgz#9c2fca4f7d35b592efe57c7f0a55e81052124fef"
|
||||
dependencies:
|
||||
@@ -15935,6 +16081,28 @@ sane@^2.0.0:
|
||||
optionalDependencies:
|
||||
fsevents "^1.2.3"
|
||||
|
||||
sass-graph@^2.2.4:
|
||||
version "2.2.4"
|
||||
resolved "https://registry.npmjs.org/sass-graph/-/sass-graph-2.2.4.tgz#13fbd63cd1caf0908b9fd93476ad43a51d1e0b49"
|
||||
integrity sha1-E/vWPNHK8JCLn9k0dq1DpR0eC0k=
|
||||
dependencies:
|
||||
glob "^7.0.0"
|
||||
lodash "^4.0.0"
|
||||
scss-tokenizer "^0.2.3"
|
||||
yargs "^7.0.0"
|
||||
|
||||
sass-loader@^7.1.0:
|
||||
version "7.1.0"
|
||||
resolved "https://registry.npmjs.org/sass-loader/-/sass-loader-7.1.0.tgz#16fd5138cb8b424bf8a759528a1972d72aad069d"
|
||||
integrity sha512-+G+BKGglmZM2GUSfT9TLuEp6tzehHPjAMoRRItOojWIqIGPloVCMhNIQuG639eJ+y033PaGTSjLaTHts8Kw79w==
|
||||
dependencies:
|
||||
clone-deep "^2.0.1"
|
||||
loader-utils "^1.0.1"
|
||||
lodash.tail "^4.1.1"
|
||||
neo-async "^2.5.0"
|
||||
pify "^3.0.0"
|
||||
semver "^5.5.0"
|
||||
|
||||
sax@1.2.1:
|
||||
version "1.2.1"
|
||||
resolved "https://registry.npmjs.org/sax/-/sax-1.2.1.tgz#7b8e656190b228e81a66aea748480d828cd2d37a"
|
||||
@@ -16008,6 +16176,14 @@ scryptsy@^1.2.1:
|
||||
dependencies:
|
||||
pbkdf2 "^3.0.3"
|
||||
|
||||
scss-tokenizer@^0.2.3:
|
||||
version "0.2.3"
|
||||
resolved "https://registry.npmjs.org/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz#8eb06db9a9723333824d3f5530641149847ce5d1"
|
||||
integrity sha1-jrBtualyMzOCTT9VMGQRSYR85dE=
|
||||
dependencies:
|
||||
js-base64 "^2.1.8"
|
||||
source-map "^0.4.2"
|
||||
|
||||
secp256k1@^3.0.1:
|
||||
version "3.5.0"
|
||||
resolved "https://registry.yarnpkg.com/secp256k1/-/secp256k1-3.5.0.tgz#677d3b8a8e04e1a5fa381a1ae437c54207b738d0"
|
||||
@@ -16233,6 +16409,15 @@ sha3@^1.1.0:
|
||||
dependencies:
|
||||
nan "2.10.0"
|
||||
|
||||
shallow-clone@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.npmjs.org/shallow-clone/-/shallow-clone-1.0.0.tgz#4480cd06e882ef68b2ad88a3ea54832e2c48b571"
|
||||
integrity sha512-oeXreoKR/SyNJtRJMAKPDSvd28OqEwG4eR/xc856cRGBII7gX9lvAqDxusPm0846z/w/hWYjI1NpKwJ00NHzRA==
|
||||
dependencies:
|
||||
is-extendable "^0.1.1"
|
||||
kind-of "^5.0.0"
|
||||
mixin-object "^2.0.1"
|
||||
|
||||
shallowequal@^0.2.2:
|
||||
version "0.2.2"
|
||||
resolved "https://registry.yarnpkg.com/shallowequal/-/shallowequal-0.2.2.tgz#1e32fd5bcab6ad688a4812cb0cc04efc75c7014e"
|
||||
@@ -16591,6 +16776,13 @@ source-map@>=0.5.0:
|
||||
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383"
|
||||
integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==
|
||||
|
||||
source-map@^0.4.2:
|
||||
version "0.4.4"
|
||||
resolved "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz#eba4f5da9c0dc999de68032d8b4f76173652036b"
|
||||
integrity sha1-66T12pwNyZneaAMti092FzZSA2s=
|
||||
dependencies:
|
||||
amdefine ">=0.0.4"
|
||||
|
||||
source-map@^0.5.3, source-map@^0.5.6, source-map@^0.5.7:
|
||||
version "0.5.7"
|
||||
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc"
|
||||
@@ -16768,6 +16960,13 @@ statuses@~1.4.0:
|
||||
version "1.4.0"
|
||||
resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.4.0.tgz#bb73d446da2796106efcc1b601a253d6c46bd087"
|
||||
|
||||
stdout-stream@^1.4.0:
|
||||
version "1.4.1"
|
||||
resolved "https://registry.npmjs.org/stdout-stream/-/stdout-stream-1.4.1.tgz#5ac174cdd5cd726104aa0c0b2bd83815d8d535de"
|
||||
integrity sha512-j4emi03KXqJWcIeF8eIXkjMFN1Cmb8gUlDYGeBALLPo5qdyTfA9bOtl8m33lRoC+vFMkP3gl0WsDr6+gzxbbTA==
|
||||
dependencies:
|
||||
readable-stream "^2.0.1"
|
||||
|
||||
stealthy-require@^1.1.0:
|
||||
version "1.1.1"
|
||||
resolved "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b"
|
||||
@@ -17624,6 +17823,13 @@ trough@^1.0.0:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/trough/-/trough-1.0.2.tgz#7f1663ec55c480139e2de5e486c6aef6cc24a535"
|
||||
|
||||
"true-case-path@^1.0.2":
|
||||
version "1.0.3"
|
||||
resolved "https://registry.npmjs.org/true-case-path/-/true-case-path-1.0.3.tgz#f813b5a8c86b40da59606722b144e3225799f47d"
|
||||
integrity sha512-m6s2OdQe5wgpFMC+pAJ+q9djG82O2jcHPOI6RNg1yy9rCYR+WD6Nbpl32fDpfC56nirdRy+opFa/Vk7HYhqaew==
|
||||
dependencies:
|
||||
glob "^7.1.2"
|
||||
|
||||
truffle-blockchain-utils@0.0.1:
|
||||
version "0.0.1"
|
||||
resolved "https://registry.yarnpkg.com/truffle-blockchain-utils/-/truffle-blockchain-utils-0.0.1.tgz#07a58e55bb0555a64208c9119c0b04ffe1464aa4"
|
||||
@@ -19671,7 +19877,7 @@ yargs@^4.7.1:
|
||||
y18n "^3.2.1"
|
||||
yargs-parser "^2.4.1"
|
||||
|
||||
yargs@^7.1.0:
|
||||
yargs@^7.0.0, yargs@^7.1.0:
|
||||
version "7.1.0"
|
||||
resolved "https://registry.yarnpkg.com/yargs/-/yargs-7.1.0.tgz#6ba318eb16961727f5d284f8ea003e8d6154d0c8"
|
||||
integrity sha1-a6MY6xaWFyf10oT46gA+jWFU0Mg=
|
||||
|
||||
Reference in New Issue
Block a user