diff --git a/README.md b/README.md deleted file mode 100755 index 9d9614c..0000000 --- a/README.md +++ /dev/null @@ -1,68 +0,0 @@ -This project was bootstrapped with [Create React App](https://github.com/facebook/create-react-app). - -## Available Scripts - -In the project directory, you can run: - -### `npm start` - -Runs the app in the development mode.
-Open [http://localhost:3000](http://localhost:3000) to view it in the browser. - -The page will reload if you make edits.
-You will also see any lint errors in the console. - -### `npm test` - -Launches the test runner in the interactive watch mode.
-See the section about [running tests](https://facebook.github.io/create-react-app/docs/running-tests) for more information. - -### `npm run build` - -Builds the app for production to the `build` folder.
-It correctly bundles React in production mode and optimizes the build for the best performance. - -The build is minified and the filenames include the hashes.
-Your app is ready to be deployed! - -See the section about [deployment](https://facebook.github.io/create-react-app/docs/deployment) for more information. - -### `npm run eject` - -**Note: this is a one-way operation. Once you `eject`, you can’t go back!** - -If you aren’t satisfied with the build tool and configuration choices, you can `eject` at any time. This command will remove the single build dependency from your project. - -Instead, it will copy all the configuration files and the transitive dependencies (Webpack, Babel, ESLint, etc) right into your project so you have full control over them. All of the commands except `eject` will still work, but they will point to the copied scripts so you can tweak them. At this point you’re on your own. - -You don’t have to ever use `eject`. The curated feature set is suitable for small and middle deployments, and you shouldn’t feel obligated to use this feature. However we understand that this tool wouldn’t be useful if you couldn’t customize it when you are ready for it. - -## Learn More - -You can learn more in the [Create React App documentation](https://facebook.github.io/create-react-app/docs/getting-started). - -To learn React, check out the [React documentation](https://reactjs.org/). - -### Code Splitting - -This section has moved here: https://facebook.github.io/create-react-app/docs/code-splitting - -### Analyzing the Bundle Size - -This section has moved here: https://facebook.github.io/create-react-app/docs/analyzing-the-bundle-size - -### Making a Progressive Web App - -This section has moved here: https://facebook.github.io/create-react-app/docs/making-a-progressive-web-app - -### Advanced Configuration - -This section has moved here: https://facebook.github.io/create-react-app/docs/advanced-configuration - -### Deployment - -This section has moved here: https://facebook.github.io/create-react-app/docs/deployment - -### `npm run build` fails to minify - -This section has moved here: https://facebook.github.io/create-react-app/docs/troubleshooting#npm-run-build-fails-to-minify diff --git a/package.json b/package.json index 19ca792..1f8277f 100644 --- a/package.json +++ b/package.json @@ -3,9 +3,19 @@ "version": "0.1.0", "private": true, "dependencies": { + "@material-ui/core": "^3.9.2", + "@material-ui/icons": "^3.0.2", + "axios": "^0.18.0", + "logger": "^0.0.1", "react": "^16.7.0", "react-dom": "^16.7.0", - "react-scripts": "2.1.3" + "react-redux": "^6.0.0", + "react-router-dom": "^4.3.1", + "react-scripts": "2.1.3", + "redux": "^4.0.1", + "redux-logger": "^3.0.6", + "redux-thunk": "^2.3.0", + "styled-components": "^4.1.3" }, "scripts": { "start": "react-scripts start", diff --git a/public/index.html b/public/index.html index 323182f..9117e72 100755 --- a/public/index.html +++ b/public/index.html @@ -1,19 +1,37 @@ - - - - - - - - - React App - - - -
- - + diff --git a/src/App.css b/src/App.css deleted file mode 100755 index 92f956e..0000000 --- a/src/App.css +++ /dev/null @@ -1,32 +0,0 @@ -.App { - text-align: center; -} - -.App-logo { - animation: App-logo-spin infinite 20s linear; - height: 40vmin; -} - -.App-header { - background-color: #282c34; - min-height: 100vh; - display: flex; - flex-direction: column; - align-items: center; - justify-content: center; - font-size: calc(10px + 2vmin); - color: white; -} - -.App-link { - color: #61dafb; -} - -@keyframes App-logo-spin { - from { - transform: rotate(0deg); - } - to { - transform: rotate(360deg); - } -} diff --git a/src/App.js b/src/App.js deleted file mode 100755 index 7e261ca..0000000 --- a/src/App.js +++ /dev/null @@ -1,28 +0,0 @@ -import React, { Component } from 'react'; -import logo from './logo.svg'; -import './App.css'; - -class App extends Component { - render() { - return ( -
-
- logo -

- Edit src/App.js and save to reload. -

- - Learn React - -
-
- ); - } -} - -export default App; diff --git a/src/App.test.js b/src/App.test.js deleted file mode 100755 index a754b20..0000000 --- a/src/App.test.js +++ /dev/null @@ -1,9 +0,0 @@ -import React from 'react'; -import ReactDOM from 'react-dom'; -import App from './App'; - -it('renders without crashing', () => { - const div = document.createElement('div'); - ReactDOM.render(, div); - ReactDOM.unmountComponentAtNode(div); -}); diff --git a/src/components/Home/Home.js b/src/components/Home/Home.js new file mode 100644 index 0000000..c418a9d --- /dev/null +++ b/src/components/Home/Home.js @@ -0,0 +1,12 @@ +import React from 'react'; +import HomeContainer from '../../containers/home_containers'; + +const Home = () => { + return ( +
+ +
+ ); +}; + +export default Home; diff --git a/src/components/Navigation/index.js b/src/components/Navigation/index.js new file mode 100644 index 0000000..fe7a7d1 --- /dev/null +++ b/src/components/Navigation/index.js @@ -0,0 +1,100 @@ +import React from 'react'; +import { withRouter } from 'react-router-dom'; + +import { withStyles } from '@material-ui/core/styles'; +import AppBar from '@material-ui/core/AppBar'; +import Toolbar from '@material-ui/core/Toolbar'; +import Typography from '@material-ui/core/Typography'; +import Button from '@material-ui/core/Button'; + +const styles = { + root: { + flexGrow: 1, + }, + grow: { + flexGrow: 1, + }, + menuButton: { + marginLeft: -12, + marginRight: 20, + }, +}; + +const Navigation = props => { + const { classes } = props; + + const sendToLogin = () => { + props.history.push('/login'); + }; + const sendToRegisterForm = () => { + props.history.push('/register'); + }; + const sendToLogout = () => { + props.history.push('/logout'); + }; + const renderNavBtn = () => { + if (localStorage.getItem('user')) { + return ( + + ); + } else { + return ( +
+ + +
+ ); + } + }; + return ( +
+ + + + Tabless-Thursday + + {/* + + */} + {renderNavBtn()} + + +
+ ); +}; + +export default withRouter(withStyles(styles)(Navigation)); diff --git a/src/components/Tabs/Tab.js b/src/components/Tabs/Tab.js new file mode 100644 index 0000000..948e8ec --- /dev/null +++ b/src/components/Tabs/Tab.js @@ -0,0 +1,152 @@ +import React from 'react'; +import { connect } from 'react-redux'; +// import PropTypes from 'prop-types'; +import { withStyles } from '@material-ui/core/styles'; +import Fab from '@material-ui/core/Fab'; +import DeleteIcon from '@material-ui/icons/Delete'; +import ExpansionPanel from '@material-ui/core/ExpansionPanel'; +import ExpansionPanelDetails from '@material-ui/core/ExpansionPanelDetails'; +import Avatar from '@material-ui/core/Avatar'; +import ExpansionPanelSummary from '@material-ui/core/ExpansionPanelSummary'; +import Typography from '@material-ui/core/Typography'; +import ExpandMoreIcon from '@material-ui/icons/ExpandMore'; +import Modal from '@material-ui/core/Modal'; +import Button from '@material-ui/core/Button'; + +import { removeTab } from '../../store/actions'; + +function rand() { + return Math.round(Math.random() * 20) - 10; +} + +function getModalStyle() { + const top = 50 + rand(); + const left = 50 + rand(); + + return { + top: `${top}%`, + left: `${left}%`, + transform: `translate(-${top}%, -${left}%)`, + }; +} + +const styles = theme => ({ + bigAvatar: { + margin: 15, + width: 50, + height: 50, + }, + paper: { + position: 'absolute', + width: theme.spacing.unit * 60, + backgroundColor: theme.palette.background.paper, + boxShadow: theme.shadows[5], + padding: theme.spacing.unit * 4, + outline: 'none', + }, + root: { + width: '100%', + }, + heading: { + fontSize: theme.typography.pxToRem(25), + flexBasis: '33.33%', + flexShrink: 0, + display: 'flex', + alignItems: 'center', + }, + secondaryHeading: { + fontSize: theme.typography.pxToRem(15), + color: theme.palette.text.secondary, + }, +}); + +class Tab extends React.Component { + state = { + expanded: null, + currentTab: '', + open: false, + }; + + handleOpen = () => { + this.setState({ open: true }); + }; + + handleClose = () => { + this.setState({ open: false }); + }; + + handleChange = panel => (event, expanded) => { + this.setState({ + expanded: expanded ? panel : false, + }); + }; + deleteTabs = id => { + this.props.removeTab(id); + this.handleClose(); + this.setState({ + expanded: false, + }); + }; + + render() { + const { classes } = this.props; + const { expanded } = this.state; + + return ( +
+ + }> +
+ + {this.props.tab.url} +
+
+ + + + + + +
+ + Are you sure you want to delete this tab? + + + +
+
+ +
+
+
+ ); + } +} +const mapStateToProps = state => { + return { + tabs: state.tabsReducer.tabs, + }; +}; + +export default connect( + mapStateToProps, + { removeTab }, +)(withStyles(styles)(Tab)); + +// to get the favicon document.querySelector('link').href diff --git a/src/components/Tabs/TabsInput.js b/src/components/Tabs/TabsInput.js new file mode 100644 index 0000000..675bc1f --- /dev/null +++ b/src/components/Tabs/TabsInput.js @@ -0,0 +1,76 @@ +import React, { Component } from 'react'; +import { withStyles } from '@material-ui/core/styles'; +import Fab from '@material-ui/core/Fab'; +import AddIcon from '@material-ui/icons/Add'; + +import TextField from '@material-ui/core/TextField'; +import { addTab } from '../../store/actions'; +import { connect } from 'react-redux'; + +const styles = theme => ({ + fab: { + margin: theme.spacing.unit, + }, + extendedIcon: { + marginRight: theme.spacing.unit, + }, +}); + +class TabsInput extends Component { + state = { + tabURL: '', + tabTitle: '', + }; + + handleInputChange = e => { + this.setState({ [e.target.name]: e.target.value }); + }; + + addNewTab = event => { + event.preventDefault(); + const newTab = { + createdOn: '', + url: this.state.tabURL, + title: this.state.tabTitle, + img: '', + }; + this.props.addTab(newTab); + this.setState({ + tabURL: '', + tabTitle: '', + }); + }; + render() { + const { classes } = this.props; + return ( +
+ + + + +
+ ); + } +} +const mapStateToProps = state => { + return { + tabs: state.tabsReducer.tabs, + }; +}; + +export default connect( + mapStateToProps, + { addTab }, +)(withStyles(styles)(TabsInput)); diff --git a/src/components/Tabs/TabsList.js b/src/components/Tabs/TabsList.js new file mode 100644 index 0000000..4aa42d4 --- /dev/null +++ b/src/components/Tabs/TabsList.js @@ -0,0 +1,13 @@ +import React from 'react'; + +import Tab from './Tab'; + +const TabsList = props => { + return ( +
+ +
+ ); +}; + +export default TabsList; diff --git a/src/containers/Admin/Login.js b/src/containers/Admin/Login.js new file mode 100644 index 0000000..9cab638 --- /dev/null +++ b/src/containers/Admin/Login.js @@ -0,0 +1,79 @@ +import React, { Component } from 'react'; +import { connect } from 'react-redux'; +import { withRouter } from 'react-router'; +import { loginUser } from '../../store/actions'; +// import Auth from '../../hoc/Auth'; + +class Login extends Component { + state = { + username: '', + password: '', + isLoggedIn: true, + error: '', + }; + + handleChanges = event => { + this.setState({ [event.target.name]: event.target.value }); + }; + + submitForm = event => { + event.preventDefault(); + const loggedInUser = { + username: this.state.username, + password: this.state.password, + isLoggedIn: this.state.isLoggedIn, + }; + if (!this.state.password) { + this.setState({ + error: 'You must enter a password to continue.', + }); + } else { + this.props.loginUser(loggedInUser); + setTimeout(() => { + this.props.history.push('/login'); + }, 1000); + } + }; + + render() { + return ( +
+
+
Login...
+ + {this.state.error} + + + +
+
+ ); + } +} + +const mapStateToProps = state => { + return { + user: state.userReducer.currentUser, + }; +}; + +export default withRouter( + connect( + mapStateToProps, + { loginUser }, + )(Login), +); diff --git a/src/containers/Admin/Logout.js b/src/containers/Admin/Logout.js new file mode 100644 index 0000000..6b62377 --- /dev/null +++ b/src/containers/Admin/Logout.js @@ -0,0 +1,29 @@ +import React from 'react'; +import { withRouter } from 'react-router-dom'; +import { connect } from 'react-redux'; +import { logoutUser } from '../../store/actions'; + +const Logout = props => { + props.logoutUser(localStorage.getItem('user')); + setTimeout(() => { + props.history.push('/login'); + }, 1000); + + return ( +
+

Sorry to see you go :(

+
+ ); +}; +const mapStateToProps = state => { + return { + currentUser: state.userReducer.currentUser, + }; +}; + +export default withRouter( + connect( + mapStateToProps, + { logoutUser }, + )(Logout), +); diff --git a/src/containers/Admin/Register.js b/src/containers/Admin/Register.js new file mode 100644 index 0000000..505b958 --- /dev/null +++ b/src/containers/Admin/Register.js @@ -0,0 +1,168 @@ +import React, { Component } from 'react'; +import { connect } from 'react-redux'; +import { withRouter } from 'react-router'; +import { withStyles } from '@material-ui/core/styles'; +import Button from '@material-ui/core/Button'; +import TextField from '@material-ui/core/TextField'; + +import { userRegister, loginUser } from '../../store/actions'; + +const styles = theme => ({ + container: { + display: 'flex', + flexDirection: 'column', + alignItems: 'center', + fontSize: '20px', + }, + button: { + margin: theme.spacing.unit, + }, + textField: { + width: 200, + }, +}); + +class Register extends Component { + state = { + first_name: '', + last_name: '', + email: '', + phone: '', + password: '', + username: '', + + errorMSG: 'Register', + }; + + handleInputChange = event => { + this.setState({ [event.target.name]: event.target.value }); + }; + + submitForm = event => { + event.preventDefault(); + let newUser = { + first_name: this.state.first_name, + last_name: this.state.last_name, + email: this.state.email, + password: this.state.password, + username: this.state.username, + }; + if (!this.state.password) { + this.setState({ + errorMSG: 'You must enter a password to continue.', + }); + } else { + this.setState({ + first_name: this.state.first_name, + last_name: this.state.last_name, + email: this.state.email, + password: this.state.password, + username: this.state.username, + + errorMSG: 'Register', + }); + + newUser = { + first_name: this.state.first_name, + last_name: this.state.last_name, + email: this.state.email, + password: this.state.password, + username: this.state.username, + }; + + this.props.dispatch(userRegister(newUser)); + this.props.dispatch(loginUser(newUser)); + this.props.history.push('/'); + } + }; + render() { + const { classes } = this.props; + return ( +
+

{this.state.errorMSG}

+ + + + + + + + + + + + + + + + ); + } +} +const mapStateToProps = state => { + return { + users: state.userReducer.users, + }; +}; + +export default withRouter( + connect(mapStateToProps)(withStyles(styles)(Register)), +); diff --git a/src/containers/home_containers.js b/src/containers/home_containers.js new file mode 100644 index 0000000..5dc3039 --- /dev/null +++ b/src/containers/home_containers.js @@ -0,0 +1,27 @@ +import React, { Component } from 'react'; +import { connect } from 'react-redux'; + +import TabsList from '../components/Tabs/TabsList'; +import TabsInput from '../components/Tabs/TabsInput'; + +class HomeContainer extends Component { + renderItems = tabs => { + return tabs ? tabs.map((item, i) => ) : null; + }; + render() { + return ( +
+ +
{this.renderItems(this.props.tabs)}
; +
+ ); + } +} + +const mapStateToProps = state => { + return { + tabs: state.tabsReducer.tabs, + }; +}; + +export default connect(mapStateToProps)(HomeContainer); diff --git a/src/dummyData.js b/src/dummyData.js new file mode 100644 index 0000000..659cbef --- /dev/null +++ b/src/dummyData.js @@ -0,0 +1,104 @@ +const dummyData = [ + { + id: 1, + first_name: 'Ynez', + last_name: 'Ranahan', + email: 'yranahan0@xing.com', + phone: '641-825-6150', + password: 'qPFzearoL', + username: 'yranahan0', + tabs: [], + }, + { + id: 2, + first_name: 'Becky', + last_name: 'Scanterbury', + email: 'bscanterbury1@rakuten.co.jp', + phone: '234-708-7877', + password: 'yGVse2', + username: 'bscanterbury1', + tabs: [], + }, + { + id: 3, + first_name: 'Cordy', + last_name: 'Earie', + email: 'cearie2@weebly.com', + phone: '928-135-5883', + password: 'QUmBRWA', + username: 'cearie2', + tabs: [], + }, + { + id: 4, + first_name: 'Bink', + last_name: 'Aston', + email: 'baston3@chron.com', + phone: '247-656-2782', + password: 'NZb8ALAaac9', + username: 'baston3', + tabs: [], + }, + { + id: 5, + first_name: 'Frederick', + last_name: "O' Faherty", + email: 'fofaherty4@biglobe.ne.jp', + phone: '907-573-2103', + password: 'K0hGEv', + username: 'fofaherty4', + tabs: [], + }, + { + id: 6, + first_name: 'Kellie', + last_name: 'Mummery', + email: 'kmummery5@wikispaces.com', + phone: '719-460-5986', + password: 'ZmNBqjG', + username: 'kmummery5', + tabs: [], + }, + { + id: 7, + first_name: 'Vachel', + last_name: 'MacTeague', + email: 'vmacteague6@symantec.com', + phone: '249-247-0510', + password: 'XsLjdEcof', + username: 'vmacteague6', + tabs: [], + }, + { + id: 8, + first_name: 'Minda', + last_name: 'Baden', + email: 'mbaden7@booking.com', + phone: '431-986-8965', + password: 'iD2QzWn97lAG', + username: 'mbaden7', + tabs: [], + }, + { + id: 9, + first_name: 'Maximilianus', + last_name: 'Gercken', + email: 'mgercken8@hatena.ne.jp', + phone: '330-540-9951', + password: '7AFA6F', + username: 'mgercken8', + tabs: [], + }, + { + id: 10, + first_name: 'Martynne', + last_name: 'Tuminelli', + email: 'mtuminelli9@bbc.co.uk', + phone: '423-939-1852', + password: '3iRQ0p', + username: 'mtuminelli9', + tabs: [], + }, +]; + +export default dummyData; diff --git a/src/hoc/Auth/index.js b/src/hoc/Auth/index.js new file mode 100644 index 0000000..27126d8 --- /dev/null +++ b/src/hoc/Auth/index.js @@ -0,0 +1,100 @@ +import React, { Component } from 'react'; +import { Redirect, withRouter } from 'react-router-dom'; + +const Auth = component => + class extends Component { + constructor() { + super(); + + this.state = { + loggedIn: null, + }; + } + + componentDidMount() { + if (localStorage.getItem('user')) { + this.setState({ + loggedIn: true, + }); + } else { + this.setState({ + loggedIn: false, + }); + } + } + + // authenticateUser = () => { + // if (this.state.loggedIn === false) { + // return this.props.history.push('/'); + // } else { + // return
{props.children}
; + // } + // }; + + render() { + return ( +
+ {this.state.loggedIn === true ? ( + + ) : ( + + )} +
+ ); + } + }; + +export default withRouter(Auth); + +// export function requireAuthentication(Component) { + +// class AuthenticatedComponent extends React.Component { + +// componentWillMount() { +// this.checkAuth(); +// } + +// componentWillReceiveProps(nextProps) { +// this.checkAuth(); +// } + +// checkAuth() { +// if (!this.props.isAuthenticated) { +// let redirectAfterLogin = this.props.location.pathname; +// this.props.dispatch(pushState(null, `/login?next=${redirectAfterLogin}`)); +// } +// } + +// render() { +// return ( +//
+// {this.props.isAuthenticated === true +// ? +// : null +// } +//
+// ) + +// } +// } + +// const mapStateToProps = (state) => ({ +// token: state.auth.token, +// userName: state.auth.userName, +// isAuthenticated: state.auth.isAuthenticated +// }); + +// return connect(mapStateToProps)(AuthenticatedComponent); + +// } + +// import {HomeView, LoginView, ProtectedView} from '../views'; +// import {requireAuthentication} from '../components/AuthenticatedComponent'; + +// export default( +// +// +// +// +// +// ); diff --git a/src/hoc/Layout.js b/src/hoc/Layout.js new file mode 100644 index 0000000..4fc20f5 --- /dev/null +++ b/src/hoc/Layout.js @@ -0,0 +1,13 @@ +import React from 'react'; +import Navigation from '../components/Navigation'; + +const Layout = props => { + return ( +
+ +
{props.children}
+
+ ); +}; + +export default Layout; diff --git a/src/index.css b/src/index.css deleted file mode 100755 index cee5f34..0000000 --- a/src/index.css +++ /dev/null @@ -1,14 +0,0 @@ -body { - margin: 0; - padding: 0; - font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen", - "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", - sans-serif; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} - -code { - font-family: source-code-pro, Menlo, Monaco, Consolas, "Courier New", - monospace; -} diff --git a/src/index.js b/src/index.js index 0c5e75d..b014ff1 100755 --- a/src/index.js +++ b/src/index.js @@ -1,12 +1,21 @@ import React from 'react'; import ReactDOM from 'react-dom'; -import './index.css'; -import App from './App'; -import * as serviceWorker from './serviceWorker'; +import { Provider } from 'react-redux'; +import { BrowserRouter as Router } from 'react-router-dom'; +import { createStore, applyMiddleware } from 'redux'; +import thunk from 'redux-thunk'; +import logger from 'redux-logger'; -ReactDOM.render(, document.getElementById('root')); +import rootReducer from './store/reducers'; +import Routes from './routes/routes'; -// If you want your app to work offline and load faster, you can change -// unregister() to register() below. Note this comes with some pitfalls. -// Learn more about service workers: http://bit.ly/CRA-PWA -serviceWorker.unregister(); +const store = createStore(rootReducer, applyMiddleware(thunk, logger)); + +ReactDOM.render( + + + + + , + document.getElementById('root'), +); diff --git a/src/logo.svg b/src/logo.svg deleted file mode 100755 index 6b60c10..0000000 --- a/src/logo.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/src/routes/routes.js b/src/routes/routes.js new file mode 100644 index 0000000..da38bab --- /dev/null +++ b/src/routes/routes.js @@ -0,0 +1,54 @@ +import React, { Component } from 'react'; +import { Switch, Route, Redirect, withRouter } from 'react-router-dom'; +import { connect } from 'react-redux'; +// import Auth from '../hoc/Auth'; + +import '../styles/css/index.css'; + +import Layout from '../hoc/Layout'; +import Home from '../components/Home/home'; + +import Login from '../containers/Admin/Login'; +import Register from '../containers/Admin/Register'; +import Logout from '../containers/Admin/Logout'; + +class Routes extends Component { + state = { + isLoggedIn: null, + }; + componentwillMount() { + this.setState({ + isLoggedIn: this.props.isLoggedIn, + }); + } + render() { + let routes; + + if (this.props.isLoggedIn) { + routes = ( + + + + + + + ); + } else { + routes = ( + + + + + ); + } + return {routes}; + } +} + +const mapStateToProps = state => { + return { + isLoggedIn: state.userReducer.isLoggedIn, + }; +}; + +export default withRouter(connect(mapStateToProps)(Routes)); diff --git a/src/serviceWorker.js b/src/serviceWorker.js deleted file mode 100755 index 2283ff9..0000000 --- a/src/serviceWorker.js +++ /dev/null @@ -1,135 +0,0 @@ -// This optional code is used to register a service worker. -// register() is not called by default. - -// This lets the app load faster on subsequent visits in production, and gives -// it offline capabilities. However, it also means that developers (and users) -// will only see deployed updates on subsequent visits to a page, after all the -// existing tabs open on the page have been closed, since previously cached -// resources are updated in the background. - -// To learn more about the benefits of this model and instructions on how to -// opt-in, read http://bit.ly/CRA-PWA - -const isLocalhost = Boolean( - window.location.hostname === 'localhost' || - // [::1] is the IPv6 localhost address. - window.location.hostname === '[::1]' || - // 127.0.0.1/8 is considered localhost for IPv4. - window.location.hostname.match( - /^127(?:\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/ - ) -); - -export function register(config) { - if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) { - // The URL constructor is available in all browsers that support SW. - const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href); - if (publicUrl.origin !== window.location.origin) { - // Our service worker won't work if PUBLIC_URL is on a different origin - // from what our page is served on. This might happen if a CDN is used to - // serve assets; see https://github.com/facebook/create-react-app/issues/2374 - return; - } - - window.addEventListener('load', () => { - const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`; - - if (isLocalhost) { - // This is running on localhost. Let's check if a service worker still exists or not. - checkValidServiceWorker(swUrl, config); - - // Add some additional logging to localhost, pointing developers to the - // service worker/PWA documentation. - navigator.serviceWorker.ready.then(() => { - console.log( - 'This web app is being served cache-first by a service ' + - 'worker. To learn more, visit http://bit.ly/CRA-PWA' - ); - }); - } else { - // Is not localhost. Just register service worker - registerValidSW(swUrl, config); - } - }); - } -} - -function registerValidSW(swUrl, config) { - navigator.serviceWorker - .register(swUrl) - .then(registration => { - registration.onupdatefound = () => { - const installingWorker = registration.installing; - if (installingWorker == null) { - return; - } - installingWorker.onstatechange = () => { - if (installingWorker.state === 'installed') { - if (navigator.serviceWorker.controller) { - // At this point, the updated precached content has been fetched, - // but the previous service worker will still serve the older - // content until all client tabs are closed. - console.log( - 'New content is available and will be used when all ' + - 'tabs for this page are closed. See http://bit.ly/CRA-PWA.' - ); - - // Execute callback - if (config && config.onUpdate) { - config.onUpdate(registration); - } - } else { - // At this point, everything has been precached. - // It's the perfect time to display a - // "Content is cached for offline use." message. - console.log('Content is cached for offline use.'); - - // Execute callback - if (config && config.onSuccess) { - config.onSuccess(registration); - } - } - } - }; - }; - }) - .catch(error => { - console.error('Error during service worker registration:', error); - }); -} - -function checkValidServiceWorker(swUrl, config) { - // Check if the service worker can be found. If it can't reload the page. - fetch(swUrl) - .then(response => { - // Ensure service worker exists, and that we really are getting a JS file. - const contentType = response.headers.get('content-type'); - if ( - response.status === 404 || - (contentType != null && contentType.indexOf('javascript') === -1) - ) { - // No service worker found. Probably a different app. Reload the page. - navigator.serviceWorker.ready.then(registration => { - registration.unregister().then(() => { - window.location.reload(); - }); - }); - } else { - // Service worker found. Proceed as normal. - registerValidSW(swUrl, config); - } - }) - .catch(() => { - console.log( - 'No internet connection found. App is running in offline mode.' - ); - }); -} - -export function unregister() { - if ('serviceWorker' in navigator) { - navigator.serviceWorker.ready.then(registration => { - registration.unregister(); - }); - } -} diff --git a/src/store/actions/index.js b/src/store/actions/index.js new file mode 100644 index 0000000..525a433 --- /dev/null +++ b/src/store/actions/index.js @@ -0,0 +1,50 @@ +export const ADD_TAB = 'ADD_TAB'; +export const REMOVE_TAB = 'REMOVE_TAB'; +export const ADD_USER = 'ADD_USER'; + +export const addTab = tab => { + return { + type: ADD_TAB, + payload: tab, + }; +}; +export const removeTab = tabID => { + return { + type: REMOVE_TAB, + payload: tabID, + }; +}; + +// ==============USER=============== + +export const loginUser = stats => { + localStorage.setItem('user', stats.first_name); + + return { + type: 'USER_LOGIN', + payload: stats, + }; +}; + +export const logoutUser = stats => { + localStorage.removeItem('user'); + + return { + type: 'USER_LOGOUT', + payload: stats, + }; +}; + +export const userRegister = userStats => { + return { + type: 'USER_REGISTER', + payload: userStats, + }; +}; + +export const addUser = user => { + return { + type: ADD_USER, + payload: user, + }; +}; diff --git a/src/store/reducers/index.js b/src/store/reducers/index.js new file mode 100644 index 0000000..76d10e5 --- /dev/null +++ b/src/store/reducers/index.js @@ -0,0 +1,8 @@ +import { combineReducers } from 'redux'; +import tabsReducer from './tabsReducer'; +import userReducer from './usersReducer'; + +export default combineReducers({ + tabsReducer, + userReducer, +}); diff --git a/src/store/reducers/tabsReducer.js b/src/store/reducers/tabsReducer.js new file mode 100644 index 0000000..49b29c7 --- /dev/null +++ b/src/store/reducers/tabsReducer.js @@ -0,0 +1,55 @@ +import { ADD_TAB } from '../actions'; +import { REMOVE_TAB } from '../actions'; + +const initialState = { + tabs: [ + { + createdOn: '', + id: '0', + url: 'abcs.com', + title: 'Fist tab', + img: '', + }, + { + id: '1', + createdOn: '', + url: 'idsdasf.com', + title: 'second tab', + img: '', + }, + { + id: '2', + createdOn: '', + url: 'sdffadna.com', + title: 'third tab', + img: '', + }, + { + id: '3', + createdOn: '', + url: 'fsfdsk.com', + title: 'Fourth tab', + img: '', + }, + ], +}; + +const tabsReducer = (state = initialState, action) => { + switch (action.type) { + case ADD_TAB: + return { + ...state, + tabs: [...state.tabs, action.payload], + }; + case REMOVE_TAB: + return { + ...state, + tabs: state.tabs.filter(tab => tab.id !== action.payload), + }; + + default: + return state; + } +}; + +export default tabsReducer; diff --git a/src/store/reducers/usersReducer.js b/src/store/reducers/usersReducer.js new file mode 100644 index 0000000..8ffdf3a --- /dev/null +++ b/src/store/reducers/usersReducer.js @@ -0,0 +1,137 @@ +const initialState = { + users: [ + { + inLoggedIn: false, + id: 1, + first_name: 'Ynez', + last_name: 'Ranahan', + email: 'yranahan0@xing.com', + phone: '641-825-6150', + password: 'qPFzearoL', + username: 'yranahan0', + tabs: [], + }, + { + inLoggedIn: false, + id: 2, + first_name: 'Becky', + last_name: 'Scanterbury', + email: 'bscanterbury1@rakuten.co.jp', + phone: '234-708-7877', + password: 'yGVse2', + username: 'bscanterbury1', + tabs: [], + }, + { + inLoggedIn: false, + id: 3, + first_name: 'Cordy', + last_name: 'Earie', + email: 'cearie2@weebly.com', + phone: '928-135-5883', + password: 'QUmBRWA', + username: 'cearie2', + tabs: [], + }, + { + inLoggedIn: false, + id: 4, + first_name: 'Bink', + last_name: 'Aston', + email: 'baston3@chron.com', + phone: '247-656-2782', + password: 'NZb8ALAaac9', + username: 'baston3', + tabs: [], + }, + { + inLoggedIn: false, + id: 5, + first_name: 'Frederick', + last_name: "O' Faherty", + email: 'fofaherty4@biglobe.ne.jp', + phone: '907-573-2103', + password: 'K0hGEv', + username: 'fofaherty4', + tabs: [], + }, + { + inLoggedIn: false, + id: 6, + first_name: 'Kellie', + last_name: 'Mummery', + email: 'kmummery5@wikispaces.com', + phone: '719-460-5986', + password: 'ZmNBqjG', + username: 'kmummery5', + tabs: [], + }, + { + inLoggedIn: false, + id: 7, + first_name: 'Vachel', + last_name: 'MacTeague', + email: 'vmacteague6@symantec.com', + phone: '249-247-0510', + password: 'XsLjdEcof', + username: 'vmacteague6', + tabs: [], + }, + { + inLoggedIn: false, + id: 8, + first_name: 'Minda', + last_name: 'Baden', + email: 'mbaden7@booking.com', + phone: '431-986-8965', + password: 'iD2QzWn97lAG', + username: 'mbaden7', + tabs: [], + }, + { + inLoggedIn: false, + id: 9, + first_name: 'Maximilianus', + last_name: 'Gercken', + email: 'mgercken8@hatena.ne.jp', + phone: '330-540-9951', + password: '7AFA6F', + username: 'mgercken8', + tabs: [], + }, + { + inLoggedIn: false, + id: 10, + first_name: 'Martynne', + last_name: 'Tuminelli', + email: 'mtuminelli9@bbc.co.uk', + phone: '423-939-1852', + password: '3iRQ0p', + username: 'mtuminelli9', + tabs: [], + }, + ], + currentUser: null, + isLoggedIn: false, +}; + +const userReducer = (state = initialState, action) => { + switch (action.type) { + case 'USER_LOGIN': + return { ...state, currentUser: action.payload, isLoggedIn: true }; + case 'USER_AUTH': + return { ...state, currentUser: action.payload, isLoggedIn: true }; + case 'USER_LOGOUT': + return { ...state, currentUser: null, isLoggedIn: false }; + case 'USER_REGISTER': + return { + ...state, + users: [...state.users, action.payload], + }; + + default: + return state; + } +}; + +export default userReducer; diff --git a/src/styles/css/index.css b/src/styles/css/index.css new file mode 100644 index 0000000..9817fa2 --- /dev/null +++ b/src/styles/css/index.css @@ -0,0 +1,194 @@ +/** + * Global Reset of all HTML Elements + * + * Resetting all of our HTML Elements ensures a smoother + * visual transition between browsers. If you don't believe me, + * try temporarily commenting out this block of code, then go + * and look at Mozilla versus Safari, both good browsers with + * a good implementation of CSS. The thing is, all browser CSS + * defaults are different and at the end of the day if visual + * consistency is what we're shooting for, then we need to + * make sure we're resetting all spacing elements. + * + */ +html, +body { + border: 0; + font-family: 'Helvetica-Neue', 'Helvetica', Arial, sans-serif; + line-height: 1.5; + margin: 0; + padding: 0; +} +div, +span, +object, +iframe, +img, +table, +caption, +thead, +tbody, +tfoot, +tr, +tr, +td, +article, +aside, +canvas, +details, +figure, +hgroup, +menu, +nav, +footer, +header, +section, +summary, +mark, +audio, +video { + border: 0; + margin: 0; + padding: 0; +} +h1, +h2, +h3, +h4, +h5, +h6, +p, +blockquote, +pre, +a, +abbr, +address, +cit, +code, +del, +dfn, +em, +ins, +q, +samp, +small, +strong, +sub, +sup, +b, +i, +hr, +dl, +dt, +dd, +ol, +ul, +li, +fieldset, +legend, +label { + border: 0; + font-size: 100%; + vertical-align: baseline; + margin: 0; + padding: 0; +} +article, +aside, +canvas, +figure, +figure img, +figcaption, +hgroup, +footer, +header, +nav, +section, +audio, +video { + display: block; +} +table { + border-collapse: separate; + border-spacing: 0; +} +table caption, +table th, +table td { + text-align: left; + vertical-align: middle; +} +a img { + border: 0; +} +:focus { + outline: 0; +} +* { + box-sizing: border-box; +} +html { + font-size: 62.5%; +} +html, +body { + font-family: 'Roboto', sans-serif; +} +h1 { + font-size: 4rem; +} +h2 { + font-size: 3.2rem; + padding-bottom: 10px; +} +h4 { + font-size: 2.5rem; + padding-bottom: 10px; +} +p { + line-height: 1.5; + font-size: 2rem; + padding-bottom: 10px; +} +img { + max-width: 100%; + height: auto; +} +.container { + max-width: 800px; + width: 100%; + margin: 0 auto; +} +@media (max-width: 500px) { + .container { + max-width: 400px; + } +} +.login-page { + display: flex; + justify-content: center; +} +.login-page form { + height: 280px; + width: 400px; + display: flex; + flex-direction: column; +} +.login-page form header { + margin: 0 auto; + font-size: 40px; + font-weight: bold; +} +.login-page form input { + border: none; + border-bottom: 1px solid lightslategray; + width: 90%; + margin: 8px auto; + padding: 15px; +} +.login-page form button { + height: 50px; + margin: 15px auto; + width: 50%; + background-color: cornflowerblue; +} diff --git a/src/styles/less/footer.less b/src/styles/less/footer.less new file mode 100644 index 0000000..e69de29 diff --git a/src/styles/less/global.less b/src/styles/less/global.less new file mode 100644 index 0000000..414ffde --- /dev/null +++ b/src/styles/less/global.less @@ -0,0 +1,46 @@ +* { + box-sizing: border-box; +} + +html { + font-size: 62.5%; +} + +html, +body { + font-family: 'Roboto', sans-serif; +} + +h1 { + font-size: 4rem; +} + +h2 { + font-size: 3.2rem; + padding-bottom: 10px; +} + +h4 { + font-size: 2.5rem; + padding-bottom: 10px; +} + +p { + line-height: 1.5; + font-size: 2rem; + padding-bottom: 10px; +} + +img { + max-width: 100%; + height: auto; +} + +.container { + max-width: 800px; + width: 100%; + margin: 0 auto; + @media @mobile { + max-width: 400px; + } +} diff --git a/src/styles/less/home_page.less b/src/styles/less/home_page.less new file mode 100644 index 0000000..e69de29 diff --git a/src/styles/less/index.less b/src/styles/less/index.less new file mode 100644 index 0000000..2a51ecc --- /dev/null +++ b/src/styles/less/index.less @@ -0,0 +1,10 @@ +@import 'variables.less'; +@import 'mixins'; +@import 'reset'; +@import 'global'; +@import 'layout'; +@import 'login'; +@import 'register'; +@import 'navigation'; +@import 'home_page'; +@import 'footer'; diff --git a/src/styles/less/layout.less b/src/styles/less/layout.less new file mode 100644 index 0000000..e69de29 diff --git a/src/styles/less/login.less b/src/styles/less/login.less new file mode 100644 index 0000000..a82d9cd --- /dev/null +++ b/src/styles/less/login.less @@ -0,0 +1,28 @@ +.login-page { + display: flex; + justify-content: center; + form { + height: 280px; + width: 400px; + display: flex; + flex-direction: column; + header { + margin: 0 auto; + font-size: 40px; + font-weight: bold; + } + input { + border: none; + border-bottom: 1px solid lightslategray; + width: 90%; + margin: 8px auto; + padding: 15px; + } + button { + height: 50px; + margin: 15px auto; + width: 50%; + background-color: cornflowerblue; + } + } +} diff --git a/src/styles/less/mixins.less b/src/styles/less/mixins.less new file mode 100644 index 0000000..e69de29 diff --git a/src/styles/less/navigation.less b/src/styles/less/navigation.less new file mode 100644 index 0000000..e69de29 diff --git a/src/styles/less/register.less b/src/styles/less/register.less new file mode 100644 index 0000000..e69de29 diff --git a/src/styles/less/reset.less b/src/styles/less/reset.less new file mode 100644 index 0000000..0bce12e --- /dev/null +++ b/src/styles/less/reset.less @@ -0,0 +1,132 @@ +/** + * Global Reset of all HTML Elements + * + * Resetting all of our HTML Elements ensures a smoother + * visual transition between browsers. If you don't believe me, + * try temporarily commenting out this block of code, then go + * and look at Mozilla versus Safari, both good browsers with + * a good implementation of CSS. The thing is, all browser CSS + * defaults are different and at the end of the day if visual + * consistency is what we're shooting for, then we need to + * make sure we're resetting all spacing elements. + * + */ +html, +body { + border: 0; + font-family: 'Helvetica-Neue', 'Helvetica', Arial, sans-serif; + line-height: 1.5; + margin: 0; + padding: 0; +} + +div, +span, +object, +iframe, +img, +table, +caption, +thead, +tbody, +tfoot, +tr, +tr, +td, +article, +aside, +canvas, +details, +figure, +hgroup, +menu, +nav, +footer, +header, +section, +summary, +mark, +audio, +video { + border: 0; + margin: 0; + padding: 0; +} + +h1, +h2, +h3, +h4, +h5, +h6, +p, +blockquote, +pre, +a, +abbr, +address, +cit, +code, +del, +dfn, +em, +ins, +q, +samp, +small, +strong, +sub, +sup, +b, +i, +hr, +dl, +dt, +dd, +ol, +ul, +li, +fieldset, +legend, +label { + border: 0; + font-size: 100%; + vertical-align: baseline; + margin: 0; + padding: 0; +} + +article, +aside, +canvas, +figure, +figure img, +figcaption, +hgroup, +footer, +header, +nav, +section, +audio, +video { + display: block; +} + +table { + border-collapse: separate; + border-spacing: 0; + caption, + th, + td { + text-align: left; + vertical-align: middle; + } +} + +a img { + border: 0; +} + +:focus { + outline: 0; +} diff --git a/src/styles/less/variables.less b/src/styles/less/variables.less new file mode 100644 index 0000000..ba4c4b4 --- /dev/null +++ b/src/styles/less/variables.less @@ -0,0 +1,17 @@ +// Color assignments +@font-color: @shark; +@button-bg: @eastern-blue; +@main-bg: @white; +@navigation-border: @silver; +@footer-bg: @sandy-beach; + +// Colors +@white: #ffffff; +@silver: #c0c0c0; +@shark: #212529; +@eastern-blue: #17a2b8; +@sandy-beach: #ffebcd; + +// Mobile + +@mobile: ~'(max-width: 500px)'; diff --git a/yarn.lock b/yarn.lock index f3fe0bd..c8b8a31 100755 --- a/yarn.lock +++ b/yarn.lock @@ -825,6 +825,13 @@ dependencies: regenerator-runtime "^0.12.0" +"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.2.0": + version "7.3.1" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.3.1.tgz#574b03e8e8a9898eaf4a872a92ea20b7846f6f2a" + integrity sha512-7jGW8ppV0ant637pIqAcFfQDDH1orEPGJb8aXfUozuCU3QqX7rX4DA8iwrbPrR1hcH0FTTHz47yQnk+bl5xHQA== + dependencies: + regenerator-runtime "^0.12.0" + "@babel/template@^7.1.0", "@babel/template@^7.1.2", "@babel/template@^7.2.2": version "7.2.2" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.2.2.tgz#005b3fdf0ed96e88041330379e0da9a708eb2907" @@ -863,6 +870,83 @@ resolved "https://registry.yarnpkg.com/@csstools/convert-colors/-/convert-colors-1.4.0.tgz#ad495dc41b12e75d588c6db8b9834f08fa131eb7" integrity sha512-5a6wqoJV/xEdbRNKVo6I4hO3VjyDq//8q2f9I6PBAvMesJHFauXDorcNCsr9RzvsZnaWi5NYCcfyqP1QeFHFbw== +"@emotion/is-prop-valid@^0.7.3": + version "0.7.3" + resolved "https://registry.yarnpkg.com/@emotion/is-prop-valid/-/is-prop-valid-0.7.3.tgz#a6bf4fa5387cbba59d44e698a4680f481a8da6cc" + integrity sha512-uxJqm/sqwXw3YPA5GXX365OBcJGFtxUVkB6WyezqFHlNe9jqUWH5ur2O2M8dGBz61kn1g3ZBlzUunFQXQIClhA== + dependencies: + "@emotion/memoize" "0.7.1" + +"@emotion/memoize@0.7.1": + version "0.7.1" + resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.7.1.tgz#e93c13942592cf5ef01aa8297444dc192beee52f" + integrity sha512-Qv4LTqO11jepd5Qmlp3M1YEjBumoTHcHFdgPTQ+sFlIL5myi/7xu/POwP7IRu6odBdmLXdtIs1D6TuW6kbwbbg== + +"@emotion/unitless@^0.7.0": + version "0.7.3" + resolved "https://registry.yarnpkg.com/@emotion/unitless/-/unitless-0.7.3.tgz#6310a047f12d21a1036fb031317219892440416f" + integrity sha512-4zAPlpDEh2VwXswwr/t8xGNDGg8RQiPxtxZ3qQEXyQsBV39ptTdESCjuBvGze1nLMVrxmTIKmnO/nAV8Tqjjzg== + +"@material-ui/core@^3.9.2": + version "3.9.2" + resolved "https://registry.yarnpkg.com/@material-ui/core/-/core-3.9.2.tgz#41ed1a470e981d199829eb5d9317a671c66a6f7d" + integrity sha512-aukR3mSH3g115St2OnqoeMRtmxzxxx+Mch7pFKRV3Tz3URExBlZwOolimjxKZpG4LGec8HlhREawafLsDzjVWQ== + dependencies: + "@babel/runtime" "^7.2.0" + "@material-ui/system" "^3.0.0-alpha.0" + "@material-ui/utils" "^3.0.0-alpha.2" + "@types/jss" "^9.5.6" + "@types/react-transition-group" "^2.0.8" + brcast "^3.0.1" + classnames "^2.2.5" + csstype "^2.5.2" + debounce "^1.1.0" + deepmerge "^3.0.0" + dom-helpers "^3.2.1" + hoist-non-react-statics "^3.2.1" + is-plain-object "^2.0.4" + jss "^9.8.7" + jss-camel-case "^6.0.0" + jss-default-unit "^8.0.2" + jss-global "^3.0.0" + jss-nested "^6.0.1" + jss-props-sort "^6.0.0" + jss-vendor-prefixer "^7.0.0" + normalize-scroll-left "^0.1.2" + popper.js "^1.14.1" + prop-types "^15.6.0" + react-event-listener "^0.6.2" + react-transition-group "^2.2.1" + recompose "0.28.0 - 0.30.0" + warning "^4.0.1" + +"@material-ui/icons@^3.0.2": + version "3.0.2" + resolved "https://registry.yarnpkg.com/@material-ui/icons/-/icons-3.0.2.tgz#d67a6dd1ec8312d3a88ec97944a63daeef24fe10" + integrity sha512-QY/3gJnObZQ3O/e6WjH+0ah2M3MOgLOzCy8HTUoUx9B6dDrS18vP7Ycw3qrDEKlB6q1KNxy6CZHm5FCauWGy2g== + dependencies: + "@babel/runtime" "^7.2.0" + recompose "0.28.0 - 0.30.0" + +"@material-ui/system@^3.0.0-alpha.0": + version "3.0.0-alpha.2" + resolved "https://registry.yarnpkg.com/@material-ui/system/-/system-3.0.0-alpha.2.tgz#096e80c8bb0f70aea435b9e38ea7749ee77b4e46" + integrity sha512-odmxQ0peKpP7RQBQ8koly06YhsPzcoVib1vByVPBH4QhwqBXuYoqlCjt02846fYspAqkrWzjxnWUD311EBbxOA== + dependencies: + "@babel/runtime" "^7.2.0" + deepmerge "^3.0.0" + prop-types "^15.6.0" + warning "^4.0.1" + +"@material-ui/utils@^3.0.0-alpha.2": + version "3.0.0-alpha.3" + resolved "https://registry.yarnpkg.com/@material-ui/utils/-/utils-3.0.0-alpha.3.tgz#836c62ea46f5ffc6f0b5ea05ab814704a86908b1" + integrity sha512-rwMdMZptX0DivkqBuC+Jdq7BYTXwqKai5G5ejPpuEDKpWzi1Oxp+LygGw329FrKpuKeiqpcymlqJTjmy+quWng== + dependencies: + "@babel/runtime" "^7.2.0" + prop-types "^15.6.0" + react-is "^16.6.3" + "@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" @@ -901,11 +985,39 @@ "@svgr/core" "^2.4.1" loader-utils "^1.1.0" +"@types/jss@^9.5.6": + version "9.5.7" + resolved "https://registry.yarnpkg.com/@types/jss/-/jss-9.5.7.tgz#fa57a6d0b38a3abef8a425e3eb6a53495cb9d5a0" + integrity sha512-OZimStu2QdDMtZ0h72JXqvLVbWUjXd5ZLk8vxLmfuC/nM1AabRyyGoxSufnzixrbpEcVcyy/JV5qeQu2JnjVZw== + dependencies: + csstype "^2.0.0" + indefinite-observable "^1.0.1" + +"@types/prop-types@*": + version "15.5.8" + resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.5.8.tgz#8ae4e0ea205fe95c3901a5a1df7f66495e3a56ce" + integrity sha512-3AQoUxQcQtLHsK25wtTWIoIpgYjH3vSDroZOUr7PpCHw/jLY1RB9z9E8dBT/OSmwStVgkRNvdh+ZHNiomRieaw== + "@types/q@^1.5.1": version "1.5.1" resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.1.tgz#48fd98c1561fe718b61733daed46ff115b496e18" integrity sha512-eqz8c/0kwNi/OEHQfvIuJVLTst3in0e7uTKeuY+WL/zfKn0xVujOTp42bS/vUUokhK5P2BppLd9JXMOMHcgbjA== +"@types/react-transition-group@^2.0.8": + version "2.0.15" + resolved "https://registry.yarnpkg.com/@types/react-transition-group/-/react-transition-group-2.0.15.tgz#e5ee3fe558832e141cc6041bdd54caea7b787af8" + integrity sha512-S0QnNzbHoWXDbKBl/xk5dxA4FT+BNlBcI3hku991cl8Cz3ytOkUMcCRtzdX11eb86E131bSsQqy5WrPCdJYblw== + dependencies: + "@types/react" "*" + +"@types/react@*": + version "16.8.1" + resolved "https://registry.yarnpkg.com/@types/react/-/react-16.8.1.tgz#b431b104ecc6febda170b718caa9f50be66a6750" + integrity sha512-tD1ETKJcuhANOejRc/p7OgQ16DKnbGi0M3LccelKlPnUCDp2a5koVxZFoRN9HN+A+m84HB5VGN7I+r3nNhS3PA== + dependencies: + "@types/prop-types" "*" + csstype "^2.2.0" + "@types/tapable@1.0.2": version "1.0.2" resolved "https://registry.yarnpkg.com/@types/tapable/-/tapable-1.0.2.tgz#e13182e1b69871a422d7863e11a4a6f5b814a4bd" @@ -1323,7 +1435,7 @@ arrify@^1.0.1: resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" integrity sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0= -asap@~2.0.6: +asap@~2.0.3, asap@~2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" integrity sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY= @@ -1425,6 +1537,14 @@ aws4@^1.8.0: resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.8.0.tgz#f0e003d9ca9e7f59c7a508945d7b2ef9a04a542f" integrity sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ== +axios@^0.18.0: + version "0.18.0" + resolved "https://registry.yarnpkg.com/axios/-/axios-0.18.0.tgz#32d53e4851efdc0a11993b6cd000789d70c05102" + integrity sha1-MtU+SFHv3AoRmTts0AB4nXDAUQI= + dependencies: + follow-redirects "^1.3.0" + is-buffer "^1.1.5" + axobject-query@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-2.0.2.tgz#ea187abe5b9002b377f925d8bf7d1c561adf38f9" @@ -1572,6 +1692,21 @@ babel-plugin-named-asset-import@^0.3.0: resolved "https://registry.yarnpkg.com/babel-plugin-named-asset-import/-/babel-plugin-named-asset-import-0.3.0.tgz#3289ec622d19cd1cc84df8d784b41f1b048bd524" integrity sha512-to6Shd/r8fMRRg/MaOhDNfqpuXfjlQx3ypWDG6jh4ESCVZDJCgdgIalZbrnVlBPGgH/QeyHMjnGb2W+JJiy+NQ== +"babel-plugin-styled-components@>= 1": + version "1.10.0" + resolved "https://registry.yarnpkg.com/babel-plugin-styled-components/-/babel-plugin-styled-components-1.10.0.tgz#ff1f42ad2cc78c21f26b62266b8f564dbc862939" + integrity sha512-sQVKG8irFXx14ZfaK1bBePirfkacl3j8nZwSZK+ZjsbnadRHKQTbhXbe/RB1vT6Vgkz45E+V95LBq4KqdhZUNw== + dependencies: + "@babel/helper-annotate-as-pure" "^7.0.0" + "@babel/helper-module-imports" "^7.0.0" + babel-plugin-syntax-jsx "^6.18.0" + lodash "^4.17.10" + +babel-plugin-syntax-jsx@^6.18.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz#0af32a9a6e13ca7a3fd5069e62d7b0f58d0d8946" + integrity sha1-CvMqmm4Tyno/1QaeYtew9Y0NiUY= + babel-plugin-syntax-object-rest-spread@^6.13.0, babel-plugin-syntax-object-rest-spread@^6.8.0: version "6.13.0" resolved "https://registry.yarnpkg.com/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz#fd6536f2bce13836ffa3a5458c4903a597bb3bf5" @@ -1821,6 +1956,11 @@ braces@^2.3.0, braces@^2.3.1: split-string "^3.0.2" to-regex "^3.0.1" +brcast@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/brcast/-/brcast-3.0.1.tgz#6256a8349b20de9eed44257a9b24d71493cd48dd" + integrity sha512-eI3yqf9YEqyGl9PCNTR46MGvDylGtaHjalcz6Q3fAPnP/PhpKkkve52vFdfGpwp4VUvK6LUr4TQN+2stCrEwTg== + brorand@^1.0.1: version "1.1.0" resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" @@ -2121,6 +2261,11 @@ chalk@^1.1.3: strip-ansi "^3.0.0" supports-color "^2.0.0" +change-emitter@^0.1.2: + version "0.1.6" + resolved "https://registry.yarnpkg.com/change-emitter/-/change-emitter-0.1.6.tgz#e8b2fe3d7f1ab7d69a32199aff91ea6931409515" + integrity sha1-6LL+PX8at9aaMhma/5HqaTFAlRU= + chardet@^0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" @@ -2191,6 +2336,11 @@ class-utils@^0.3.5: isobject "^3.0.0" static-extend "^0.1.1" +classnames@^2.2.5: + version "2.2.6" + resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.2.6.tgz#43935bffdd291f326dad0a205309b38d00f650ce" + integrity sha512-JR/iSQOSt+LQIWwrwEzJ9uk0xfN3mTVYMwt1Ir5mUcSN6pU+V4zQFFaJsclJbPuAUQH+yfWef6tm7l1quW3C8Q== + clean-css@4.2.x: version "4.2.1" resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.2.1.tgz#2d411ef76b8569b6d0c84068dabe85b0aa5e5c17" @@ -2458,6 +2608,11 @@ core-js@2.5.7: resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.7.tgz#f972608ff0cead68b841a16a932d0b183791814e" integrity sha512-RszJCAxg/PP6uzXVXL6BsxSXx/B05oJAQ2vkJRjyjrEcNVycaqOmNb5OTxZPE3xa5gwZduqza6L9JOCenh/Ecw== +core-js@^1.0.0: + version "1.2.7" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-1.2.7.tgz#652294c14651db28fa93bd2d5ff2983a4f08c636" + integrity sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY= + core-js@^2.4.0, core-js@^2.5.0: version "2.6.1" resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.1.tgz#87416ae817de957a3f249b3b5ca475d4aaed6042" @@ -2556,6 +2711,11 @@ crypto-browserify@^3.11.0: randombytes "^2.0.0" randomfill "^1.0.3" +css-color-keywords@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/css-color-keywords/-/css-color-keywords-1.0.0.tgz#fea2616dc676b2962686b3af8dbdbe180b244e05" + integrity sha1-/qJhbcZ2spYmhrOvjb2+GAskTgU= + css-color-names@0.0.4, 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" @@ -2621,6 +2781,15 @@ css-selector-tokenizer@^0.7.0: fastparse "^1.1.1" regexpu-core "^1.0.0" +css-to-react-native@^2.2.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/css-to-react-native/-/css-to-react-native-2.2.2.tgz#c077d0f7bf3e6c915a539e7325821c9dd01f9965" + integrity sha512-w99Fzop1FO8XKm0VpbQp3y5mnTnaS+rtCvS+ylSEOK76YXO5zoHQx/QMB1N54Cp+Ya9jB9922EHrh14ld4xmmw== + dependencies: + css-color-keywords "^1.0.0" + fbjs "^0.8.5" + postcss-value-parser "^3.3.0" + css-tree@1.0.0-alpha.28: version "1.0.0-alpha.28" resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.28.tgz#8e8968190d886c9477bc8d61e96f61af3f7ffa7f" @@ -2647,6 +2816,13 @@ css-url-regex@^1.1.0: resolved "https://registry.yarnpkg.com/css-url-regex/-/css-url-regex-1.1.0.tgz#83834230cc9f74c457de59eebd1543feeb83b7ec" integrity sha1-g4NCMMyfdMRX3lnuvRVD/uuDt+w= +css-vendor@^0.3.8: + version "0.3.8" + resolved "https://registry.yarnpkg.com/css-vendor/-/css-vendor-0.3.8.tgz#6421cfd3034ce664fe7673972fd0119fc28941fa" + integrity sha1-ZCHP0wNM5mT+dnOXL9ARn8KJQfo= + dependencies: + is-in-browser "^1.0.2" + css-what@2.1, css-what@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.2.tgz#c0876d9d0480927d7d4920dcd72af3595649554d" @@ -2754,6 +2930,11 @@ cssstyle@^1.0.0, cssstyle@^1.1.1: dependencies: cssom "0.3.x" +csstype@^2.0.0, csstype@^2.2.0, csstype@^2.5.2: + version "2.6.2" + resolved "https://registry.yarnpkg.com/csstype/-/csstype-2.6.2.tgz#3043d5e065454579afc7478a18de41909c8a2f01" + integrity sha512-Rl7PvTae0pflc1YtxtKbiSqq20Ts6vpIYOD5WBafl4y123DyHUeLrRdQP66sQW8/6gmX8jrYJLXwNeMqYVJcow== + cyclist@~0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-0.2.2.tgz#1b33792e11e914a2fd6d6ed6447464444e5fa640" @@ -2785,6 +2966,11 @@ date-now@^0.1.4: resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b" integrity sha1-6vQ5/U1ISK105cx9vvIAZyueNFs= +debounce@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/debounce/-/debounce-1.2.0.tgz#44a540abc0ea9943018dc0eaa95cce87f65cd131" + integrity sha512-mYtLl1xfZLi1m4RtQYlZgJUNQjl4ZxVnHzIR8nLLgi4q1YT8o/WM+MK/f8yfcc9s5Ir5zRaPZyZU6xs1Syoocg== + debug@2.6.9, debug@^2.1.2, debug@^2.2.0, debug@^2.3.3, debug@^2.6.0, debug@^2.6.6, debug@^2.6.8, debug@^2.6.9: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" @@ -2830,6 +3016,11 @@ decode-uri-component@^0.2.0: resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= +deep-diff@^0.3.5: + version "0.3.8" + resolved "https://registry.yarnpkg.com/deep-diff/-/deep-diff-0.3.8.tgz#c01de63efb0eec9798801d40c7e0dae25b582c84" + integrity sha1-wB3mPvsO7JeYgB1Ax+Da4ltYLIQ= + deep-equal@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.0.1.tgz#f5d260292b660e084eff4cdbc9f08ad3247448b5" @@ -2845,6 +3036,11 @@ deep-is@~0.1.3: resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= +deepmerge@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-3.1.0.tgz#a612626ce4803da410d77554bfd80361599c034d" + integrity sha512-/TnecbwXEdycfbsM2++O3eGiatEFHjjNciHEwJclM+T5Kd94qD1AP+2elP/Mq0L5b9VZJao5znR01Mz6eX8Seg== + default-gateway@^2.6.0: version "2.7.2" resolved "https://registry.yarnpkg.com/default-gateway/-/default-gateway-2.7.2.tgz#b7ef339e5e024b045467af403d50348db4642d0f" @@ -3023,6 +3219,13 @@ dom-converter@~0.2: dependencies: utila "~0.4" +dom-helpers@^3.2.1, dom-helpers@^3.3.1: + version "3.4.0" + resolved "https://registry.yarnpkg.com/dom-helpers/-/dom-helpers-3.4.0.tgz#e9b369700f959f62ecde5a6babde4bccd9169af8" + integrity sha512-LnuPJ+dwqKDIyotW1VzmOZ5TONUN7CwkCR5hrgawTUbkBGYdeoNLZo6nNfGkCrjtE1nXXaj7iMMpDa8/d9WoIA== + dependencies: + "@babel/runtime" "^7.1.2" + dom-serializer@0: version "0.1.0" resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.1.0.tgz#073c697546ce0780ce23be4a28e293e40bc30c82" @@ -3161,6 +3364,13 @@ encodeurl@~1.0.2: resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= +encoding@^0.1.11: + version "0.1.12" + resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.12.tgz#538b66f3ee62cd1ab51ec323829d1f9480c74beb" + integrity sha1-U4tm8+5izRq1HsMjgp0flIDHS+s= + dependencies: + iconv-lite "~0.4.13" + end-of-stream@^1.0.0, end-of-stream@^1.1.0: version "1.4.1" resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.1.tgz#ed29634d19baba463b6ce6b80a37213eab71ec43" @@ -3717,6 +3927,19 @@ fb-watchman@^2.0.0: dependencies: bser "^2.0.0" +fbjs@^0.8.1, fbjs@^0.8.5: + version "0.8.17" + resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-0.8.17.tgz#c4d598ead6949112653d6588b01a5cdcd9f90fdd" + integrity sha1-xNWY6taUkRJlPWWIsBpc3Nn5D90= + dependencies: + core-js "^1.0.0" + isomorphic-fetch "^2.1.1" + loose-envify "^1.0.0" + object-assign "^4.1.0" + promise "^7.1.1" + setimmediate "^1.0.5" + ua-parser-js "^0.7.18" + figgy-pudding@^3.5.1: version "3.5.1" resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.1.tgz#862470112901c727a0e495a80744bd5baa1d6790" @@ -3869,7 +4092,7 @@ flush-write-stream@^1.0.0: inherits "^2.0.1" readable-stream "^2.0.4" -follow-redirects@^1.0.0: +follow-redirects@^1.0.0, follow-redirects@^1.3.0: version "1.6.1" resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.6.1.tgz#514973c44b5757368bad8bddfe52f81f015c94cb" integrity sha512-t2JCjbzxQpWvbhts3l6SH1DKzSrx8a+SsaVf4h6bG4kOXUuPYS/kg2Lr4gQSb7eemaHqJkOThF1BGyjlUkO1GQ== @@ -4348,6 +4571,17 @@ hex-color-regex@^1.1.0: resolved "https://registry.yarnpkg.com/hex-color-regex/-/hex-color-regex-1.1.0.tgz#4c06fccb4602fe2602b3c93df82d7e7dbf1a8a8e" integrity sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ== +history@^4.7.2: + version "4.7.2" + resolved "https://registry.yarnpkg.com/history/-/history-4.7.2.tgz#22b5c7f31633c5b8021c7f4a8a954ac139ee8d5b" + integrity sha512-1zkBRWW6XweO0NBcjiphtVJVsIQ+SXF29z9DVkceeaSLVMFXHool+fdCZD4spDCfZJCILPILc3bm7Bc+HRi0nA== + dependencies: + invariant "^2.2.1" + loose-envify "^1.2.0" + resolve-pathname "^2.2.0" + value-equal "^0.4.0" + warning "^3.0.0" + hmac-drbg@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" @@ -4362,6 +4596,18 @@ hoek@4.x.x: resolved "https://registry.yarnpkg.com/hoek/-/hoek-4.2.1.tgz#9634502aa12c445dd5a7c5734b572bb8738aacbb" integrity sha512-QLg82fGkfnJ/4iy1xZ81/9SIJiq1NGFUMGs6ParyjBZr6jW2Ufj/snDqTHixNlHdPNwN2RLVD0Pi3igeK9+JfA== +hoist-non-react-statics@^2.3.1, hoist-non-react-statics@^2.5.0: + version "2.5.5" + resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-2.5.5.tgz#c5903cf409c0dfd908f388e619d86b9c1174cb47" + integrity sha512-rqcy4pJo55FTTLWt+bU8ukscqHeE/e9KWvsOW2b/a3afxQZhwkQdT1rPPCJ0rYXdj4vNcasY8zHTH+jF/qStxw== + +hoist-non-react-statics@^3.2.1: + version "3.3.0" + resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.0.tgz#b09178f0122184fb95acf525daaecb4d8f45958b" + integrity sha512-0XsbTXxgiaCDYDIWFcwkmerZPSwywfUqYmwT4jzewKTQSWoE6FCMoUVOeBJWK3E/CrWbxRG3m5GzY4lnIwGRBA== + dependencies: + react-is "^16.7.0" + home-or-tmp@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/home-or-tmp/-/home-or-tmp-2.0.0.tgz#e36c3f2d2cae7d746a857e38d18d5f32a7882db8" @@ -4513,6 +4759,11 @@ https-browserify@^1.0.0: resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM= +hyphenate-style-name@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/hyphenate-style-name/-/hyphenate-style-name-1.0.3.tgz#097bb7fa0b8f1a9cf0bd5c734cf95899981a9b48" + integrity sha512-EcuixamT82oplpoJ2XU4pDtKGWQ7b00CD9f1ug9IaQ3p1bkHMiKCZ9ut9QDI6qsa6cpUuB+A/I+zLtdNK4n2DQ== + iconv-lite@0.4.23: version "0.4.23" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.23.tgz#297871f63be507adcfbfca715d0cd0eed84e9a63" @@ -4520,7 +4771,7 @@ iconv-lite@0.4.23: dependencies: safer-buffer ">= 2.1.2 < 3" -iconv-lite@0.4.24, iconv-lite@^0.4.24, iconv-lite@^0.4.4: +iconv-lite@0.4.24, iconv-lite@^0.4.24, iconv-lite@^0.4.4, iconv-lite@~0.4.13: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== @@ -4621,6 +4872,13 @@ imurmurhash@^0.1.4: resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= +indefinite-observable@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/indefinite-observable/-/indefinite-observable-1.0.2.tgz#0a328793ab2385d4b9dca23eaab4afe6936a73f8" + integrity sha512-Mps0898zEduHyPhb7UCgNmfzlqNZknVmaFz5qzr0mm04YQ5FGLhAyK/dJ+NaRxGyR6juQXIxh5Ev0xx+qq0nYA== + dependencies: + symbol-observable "1.2.0" + indexes-of@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607" @@ -4700,7 +4958,7 @@ internal-ip@^3.0.1: default-gateway "^2.6.0" ipaddr.js "^1.5.2" -invariant@^2.2.2, invariant@^2.2.4: +invariant@^2.2.1, invariant@^2.2.2, invariant@^2.2.4: version "2.2.4" resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== @@ -4930,6 +5188,11 @@ is-glob@^4.0.0: dependencies: is-extglob "^2.1.1" +is-in-browser@^1.0.2, is-in-browser@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/is-in-browser/-/is-in-browser-1.1.3.tgz#56ff4db683a078c6082eb95dad7dc62e1d04f835" + integrity sha1-Vv9NtoOgeMYILrldrX3GLh0E+DU= + is-number@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f" @@ -5017,7 +5280,7 @@ is-root@2.0.0: resolved "https://registry.yarnpkg.com/is-root/-/is-root-2.0.0.tgz#838d1e82318144e5a6f77819d90207645acc7019" integrity sha512-F/pJIk8QD6OX5DNhRB7hWamLsUilmkDGho48KbgZ6xg/lmAZXHxzXQ91jzB3yRSw5kdQGGGc4yz8HYhTYIMWPg== -is-stream@^1.1.0: +is-stream@^1.0.1, is-stream@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= @@ -5090,6 +5353,14 @@ isobject@^3.0.0, isobject@^3.0.1: resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= +isomorphic-fetch@^2.1.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz#611ae1acf14f5e81f729507472819fe9733558a9" + integrity sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk= + dependencies: + node-fetch "^1.0.1" + whatwg-fetch ">=0.10.0" + isstream@~0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" @@ -5681,6 +5952,51 @@ jsprim@^1.2.2: json-schema "0.2.3" verror "1.10.0" +jss-camel-case@^6.0.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/jss-camel-case/-/jss-camel-case-6.1.0.tgz#ccb1ff8d6c701c02a1fed6fb6fb6b7896e11ce44" + integrity sha512-HPF2Q7wmNW1t79mCqSeU2vdd/vFFGpkazwvfHMOhPlMgXrJDzdj9viA2SaHk9ZbD5pfL63a8ylp4++irYbbzMQ== + dependencies: + hyphenate-style-name "^1.0.2" + +jss-default-unit@^8.0.2: + version "8.0.2" + resolved "https://registry.yarnpkg.com/jss-default-unit/-/jss-default-unit-8.0.2.tgz#cc1e889bae4c0b9419327b314ab1c8e2826890e6" + integrity sha512-WxNHrF/18CdoAGw2H0FqOEvJdREXVXLazn7PQYU7V6/BWkCV0GkmWsppNiExdw8dP4TU1ma1dT9zBNJ95feLmg== + +jss-global@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/jss-global/-/jss-global-3.0.0.tgz#e19e5c91ab2b96353c227e30aa2cbd938cdaafa2" + integrity sha512-wxYn7vL+TImyQYGAfdplg7yaxnPQ9RaXY/cIA8hawaVnmmWxDHzBK32u1y+RAvWboa3lW83ya3nVZ/C+jyjZ5Q== + +jss-nested@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/jss-nested/-/jss-nested-6.0.1.tgz#ef992b79d6e8f63d939c4397b9d99b5cbbe824ca" + integrity sha512-rn964TralHOZxoyEgeq3hXY8hyuCElnvQoVrQwKHVmu55VRDd6IqExAx9be5HgK0yN/+hQdgAXQl/GUrBbbSTA== + dependencies: + warning "^3.0.0" + +jss-props-sort@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/jss-props-sort/-/jss-props-sort-6.0.0.tgz#9105101a3b5071fab61e2d85ea74cc22e9b16323" + integrity sha512-E89UDcrphmI0LzmvYk25Hp4aE5ZBsXqMWlkFXS0EtPkunJkRr+WXdCNYbXbksIPnKlBenGB9OxzQY+mVc70S+g== + +jss-vendor-prefixer@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/jss-vendor-prefixer/-/jss-vendor-prefixer-7.0.0.tgz#0166729650015ef19d9f02437c73667231605c71" + integrity sha512-Agd+FKmvsI0HLcYXkvy8GYOw3AAASBUpsmIRvVQheps+JWaN892uFOInTr0DRydwaD91vSSUCU4NssschvF7MA== + dependencies: + css-vendor "^0.3.8" + +jss@^9.8.7: + version "9.8.7" + resolved "https://registry.yarnpkg.com/jss/-/jss-9.8.7.tgz#ed9763fc0f2f0260fc8260dac657af61e622ce05" + integrity sha512-awj3XRZYxbrmmrx9LUSj5pXSUfm12m8xzi/VKeqI1ZwWBtQ0kVPTs3vYs32t4rFw83CgFDukA8wKzOE9sMQnoQ== + dependencies: + is-in-browser "^1.1.3" + symbol-observable "^1.1.0" + warning "^3.0.0" + jsx-ast-utils@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-2.0.1.tgz#e801b1b39985e20fffc87b40e3748080e2dcac7f" @@ -5902,12 +6218,17 @@ lodash.uniq@^4.5.0: resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d" integrity sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg== +logger@^0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/logger/-/logger-0.0.1.tgz#cb08171f8a6f6f674b8499dadf50bed4befb72c4" + integrity sha1-ywgXH4pvb2dLhJna31C+1L77csQ= + loglevel@^1.4.1: version "1.6.1" resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.6.1.tgz#e0fc95133b6ef276cdc8887cdaf24aa6f156f8fa" integrity sha1-4PyVEztu8nbNyIh82vJKpvFW+Po= -loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.3.1: +loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.2.0, loose-envify@^1.3.1, loose-envify@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== @@ -6012,6 +6333,11 @@ mem@^4.0.0: mimic-fn "^1.0.0" p-is-promise "^1.1.0" +memoize-one@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/memoize-one/-/memoize-one-4.1.0.tgz#a2387c58c03fff27ca390c31b764a79addf3f906" + integrity sha512-2GApq0yI/b22J2j9rhbrAlsHb0Qcz+7yWxeLG8h+95sl1XPUgeLimQSOdur4Vw7cUhrBHwaUZxWFZueojqNRzA== + memory-fs@^0.4.0, memory-fs@~0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552" @@ -6338,6 +6664,14 @@ no-case@^2.2.0: dependencies: lower-case "^1.1.1" +node-fetch@^1.0.1: + version "1.7.3" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-1.7.3.tgz#980f6f72d85211a5347c6b2bc18c5b84c3eb47ef" + integrity sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ== + dependencies: + encoding "^0.1.11" + is-stream "^1.0.1" + node-forge@0.7.5: version "0.7.5" resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.7.5.tgz#6c152c345ce11c52f465c2abd957e8639cd674df" @@ -6440,6 +6774,11 @@ normalize-range@^0.1.2: resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" integrity sha1-LRDAa9/TEuqXd2laTShDlFa3WUI= +normalize-scroll-left@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/normalize-scroll-left/-/normalize-scroll-left-0.1.2.tgz#6b79691ba79eb5fb107fa5edfbdc06b55caee2aa" + integrity sha512-F9YMRls0zCF6BFIE2YnXDRpHPpfd91nOIaNdDgrx5YMoPLo8Wqj+6jNXHQsYBavJeXP4ww8HCt0xQAKc5qk2Fg== + normalize-url@^3.0.0: version "3.3.0" resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-3.3.0.tgz#b2e1c4dc4f7c6d57743df733a4f5978d18650559" @@ -6877,6 +7216,13 @@ path-to-regexp@0.1.7: resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w= +path-to-regexp@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-1.7.0.tgz#59fde0f435badacba103a84e9d3bc64e96b9937d" + integrity sha1-Wf3g9DW62suhA6hOnTvGTpa5k30= + dependencies: + isarray "0.0.1" + path-type@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441" @@ -6981,6 +7327,11 @@ pnp-webpack-plugin@1.1.0: resolved "https://registry.yarnpkg.com/pnp-webpack-plugin/-/pnp-webpack-plugin-1.1.0.tgz#947a96d1db94bb5a1fc014d83b581e428699ac8c" integrity sha512-CPCdcFxx7fEcDMWTDjXe2Wypt4JuMt4q5Q2UrpTcyBBkLiCIyPEh/mCGmUWIcNkKGyXwQ9Y2wVhlKm6ketiBNQ== +popper.js@^1.14.1: + version "1.14.7" + resolved "https://registry.yarnpkg.com/popper.js/-/popper.js-1.14.7.tgz#e31ec06cfac6a97a53280c3e55e4e0c860e7738e" + integrity sha512-4q1hNvoUre/8srWsH7hnoSJ5xVmIL4qgz+s4qf2TnJIMyZFUFMGH+9vE7mXynAlHSZ/NdTmmow86muD0myUkVQ== + portfinder@^1.0.9: version "1.0.20" resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.20.tgz#bea68632e54b2e13ab7b0c4775e9b41bf270e44a" @@ -7688,6 +8039,13 @@ promise@8.0.2: dependencies: asap "~2.0.6" +promise@^7.1.1: + version "7.3.1" + resolved "https://registry.yarnpkg.com/promise/-/promise-7.3.1.tgz#064b72602b18f90f29192b8b1bc418ffd1ebd3bf" + integrity sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg== + dependencies: + asap "~2.0.3" + prompts@^0.1.9: version "0.1.14" resolved "https://registry.yarnpkg.com/prompts/-/prompts-0.1.14.tgz#a8e15c612c5c9ec8f8111847df3337c9cbd443b2" @@ -7696,7 +8054,7 @@ prompts@^0.1.9: kleur "^2.0.1" sisteransi "^0.1.1" -prop-types@^15.6.2: +prop-types@^15.5.4, prop-types@^15.6.0, prop-types@^15.6.1, prop-types@^15.6.2: version "15.6.2" resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.6.2.tgz#05d5ca77b4453e985d60fc7ff8c859094a497102" integrity sha512-3pboPvLiWD7dkI3qf3KbUe6hKFKa52w+AE0VCqECtf+QHAKgOL37tTaNCnuX1nAAQ4ZhyP+kYVKf8rLmJ/feDQ== @@ -7901,7 +8259,7 @@ react-dev-utils@^7.0.1: strip-ansi "4.0.0" text-table "0.2.0" -react-dom@16.7.0: +react-dom@^16.7.0: version "16.7.0" resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-16.7.0.tgz#a17b2a7ca89ee7390bc1ed5eb81783c7461748b8" integrity sha512-D0Ufv1ExCAmF38P2Uh1lwpminZFRXEINJe53zRAbm4KPwSyd6DY/uDoS0Blj9jvPpn1+wivKpZYc8aAAN/nAkg== @@ -7916,6 +8274,62 @@ react-error-overlay@^5.1.2: resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-5.1.2.tgz#888957b884d4b25b083a82ad550f7aad96585394" integrity sha512-7kEBKwU9R8fKnZJBRa5RSIfay4KJwnYvKB6gODGicUmDSAhQJ7Tdnll5S0RLtYrzRfMVXlqYw61rzrSpP4ThLQ== +react-event-listener@^0.6.2: + version "0.6.6" + resolved "https://registry.yarnpkg.com/react-event-listener/-/react-event-listener-0.6.6.tgz#758f7b991cad9086dd39fd29fad72127e1d8962a" + integrity sha512-+hCNqfy7o9wvO6UgjqFmBzARJS7qrNoda0VqzvOuioEpoEXKutiKuv92dSz6kP7rYLmyHPyYNLesi5t/aH1gfw== + dependencies: + "@babel/runtime" "^7.2.0" + prop-types "^15.6.0" + warning "^4.0.1" + +react-is@^16.6.0, react-is@^16.6.3, react-is@^16.7.0: + version "16.7.0" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.7.0.tgz#c1bd21c64f1f1364c6f70695ec02d69392f41bfa" + integrity sha512-Z0VRQdF4NPDoI0tsXVMLkJLiwEBa+RP66g0xDHxgxysxSoCUccSten4RTF/UFvZF1dZvZ9Zu1sx+MDXwcOR34g== + +react-lifecycles-compat@^3.0.2, react-lifecycles-compat@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz#4f1a273afdfc8f3488a8c516bfda78f872352362" + integrity sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA== + +react-redux@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/react-redux/-/react-redux-6.0.0.tgz#09e86eeed5febb98e9442458ad2970c8f1a173ef" + integrity sha512-EmbC3uLl60pw2VqSSkj6HpZ6jTk12RMrwXMBdYtM6niq0MdEaRq9KYCwpJflkOZj349BLGQm1MI/JO1W96kLWQ== + dependencies: + "@babel/runtime" "^7.2.0" + hoist-non-react-statics "^3.2.1" + invariant "^2.2.4" + loose-envify "^1.4.0" + prop-types "^15.6.2" + react-is "^16.6.3" + +react-router-dom@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-4.3.1.tgz#4c2619fc24c4fa87c9fd18f4fb4a43fe63fbd5c6" + integrity sha512-c/MlywfxDdCp7EnB7YfPMOfMD3tOtIjrQlj/CKfNMBxdmpJP8xcz5P/UAFn3JbnQCNUxsHyVVqllF9LhgVyFCA== + dependencies: + history "^4.7.2" + invariant "^2.2.4" + loose-envify "^1.3.1" + prop-types "^15.6.1" + react-router "^4.3.1" + warning "^4.0.1" + +react-router@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/react-router/-/react-router-4.3.1.tgz#aada4aef14c809cb2e686b05cee4742234506c4e" + integrity sha512-yrvL8AogDh2X42Dt9iknk4wF4V8bWREPirFfS9gLU1huk6qK41sg7Z/1S81jjTrGHxa3B8R3J6xIkDAA6CVarg== + dependencies: + history "^4.7.2" + hoist-non-react-statics "^2.5.0" + invariant "^2.2.4" + loose-envify "^1.3.1" + path-to-regexp "^1.7.0" + prop-types "^15.6.1" + warning "^4.0.1" + react-scripts@2.1.3: version "2.1.3" resolved "https://registry.yarnpkg.com/react-scripts/-/react-scripts-2.1.3.tgz#6e49be279f4039fb9f330d2b3529b933b8e90945" @@ -7971,7 +8385,17 @@ react-scripts@2.1.3: optionalDependencies: fsevents "1.2.4" -react@16.7.0: +react-transition-group@^2.2.1: + version "2.5.3" + resolved "https://registry.yarnpkg.com/react-transition-group/-/react-transition-group-2.5.3.tgz#26de363cab19e5c88ae5dbae105c706cf953bb92" + integrity sha512-2DGFck6h99kLNr8pOFk+z4Soq3iISydwOFeeEVPjTN6+Y01CmvbWmnN02VuTWyFdnRtIDPe+wy2q6Ui8snBPZg== + dependencies: + dom-helpers "^3.3.1" + loose-envify "^1.4.0" + prop-types "^15.6.2" + react-lifecycles-compat "^3.0.4" + +react@^16.7.0: version "16.7.0" resolved "https://registry.yarnpkg.com/react/-/react-16.7.0.tgz#b674ec396b0a5715873b350446f7ea0802ab6381" integrity sha512-StCz3QY8lxTb5cl2HJxjwLFOXPIFQp+p+hxQfc8WE0QiLfCtIlKj8/+5tjjKm8uSTlAW+fCPaavGFS06V9Ar3A== @@ -8063,6 +8487,18 @@ realpath-native@^1.0.0: dependencies: util.promisify "^1.0.0" +"recompose@0.28.0 - 0.30.0": + version "0.30.0" + resolved "https://registry.yarnpkg.com/recompose/-/recompose-0.30.0.tgz#82773641b3927e8c7d24a0d87d65aeeba18aabd0" + integrity sha512-ZTrzzUDa9AqUIhRk4KmVFihH0rapdCSMFXjhHbNrjAWxBuUD/guYlyysMnuHjlZC/KRiOKRtB4jf96yYSkKE8w== + dependencies: + "@babel/runtime" "^7.0.0" + change-emitter "^0.1.2" + fbjs "^0.8.1" + hoist-non-react-statics "^2.3.1" + react-lifecycles-compat "^3.0.2" + symbol-observable "^1.0.4" + recursive-readdir@2.2.2: version "2.2.2" resolved "https://registry.yarnpkg.com/recursive-readdir/-/recursive-readdir-2.2.2.tgz#9946fb3274e1628de6e36b2f6714953b4845094f" @@ -8070,6 +8506,26 @@ recursive-readdir@2.2.2: dependencies: minimatch "3.0.4" +redux-logger@^3.0.6: + version "3.0.6" + resolved "https://registry.yarnpkg.com/redux-logger/-/redux-logger-3.0.6.tgz#f7555966f3098f3c88604c449cf0baf5778274bf" + integrity sha1-91VZZvMJjzyIYExEnPC69XeCdL8= + dependencies: + deep-diff "^0.3.5" + +redux-thunk@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/redux-thunk/-/redux-thunk-2.3.0.tgz#51c2c19a185ed5187aaa9a2d08b666d0d6467622" + integrity sha512-km6dclyFnmcvxhAcrQV2AkZmPQjzPDjgVlQtR0EQjxZPyJ0BnMf3in1ryuR8A2qU0HldVRfxYXbFSKlI3N7Slw== + +redux@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/redux/-/redux-4.0.1.tgz#436cae6cc40fbe4727689d7c8fae44808f1bfef5" + integrity sha512-R7bAtSkk7nY6O/OYMVR9RiBI+XghjF9rlbl5806HJbQph0LJVHZrU5oaO4q70eUKiqMRqm4y07KLTlMZ2BlVmg== + dependencies: + loose-envify "^1.4.0" + symbol-observable "^1.2.0" + regenerate-unicode-properties@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-7.0.0.tgz#107405afcc4a190ec5ed450ecaa00ed0cafa7a4c" @@ -8297,6 +8753,11 @@ resolve-from@^3.0.0: resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" integrity sha1-six699nWiBvItuZTM17rywoYh0g= +resolve-pathname@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/resolve-pathname/-/resolve-pathname-2.2.0.tgz#7e9ae21ed815fd63ab189adeee64dc831eefa879" + integrity sha512-bAFz9ld18RzJfddgrO2e/0S2O81710++chRMUxHjXOYKF6jTAMrUNZrEZ1PvV0zlhfjidm08iRPdTLPno1FuRg== + resolve-url@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" @@ -8556,7 +9017,7 @@ set-value@^2.0.0: is-plain-object "^2.0.3" split-string "^3.0.1" -setimmediate@^1.0.4: +setimmediate@^1.0.4, setimmediate@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU= @@ -9024,6 +9485,23 @@ style-loader@0.23.0: loader-utils "^1.1.0" schema-utils "^0.4.5" +styled-components@^4.1.3: + version "4.1.3" + resolved "https://registry.yarnpkg.com/styled-components/-/styled-components-4.1.3.tgz#4472447208e618b57e84deaaeb6acd34a5e0fe9b" + integrity sha512-0quV4KnSfvq5iMtT0RzpMGl/Dg3XIxIxOl9eJpiqiq4SrAmR1l1DLzNpMzoy3DyzdXVDMJS2HzROnXscWA3SEw== + dependencies: + "@babel/helper-module-imports" "^7.0.0" + "@emotion/is-prop-valid" "^0.7.3" + "@emotion/unitless" "^0.7.0" + babel-plugin-styled-components ">= 1" + css-to-react-native "^2.2.2" + memoize-one "^4.0.0" + prop-types "^15.5.4" + react-is "^16.6.0" + stylis "^3.5.0" + stylis-rule-sheet "^0.0.10" + supports-color "^5.5.0" + stylehacks@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-4.0.1.tgz#3186595d047ab0df813d213e51c8b94e0b9010f2" @@ -9033,6 +9511,16 @@ stylehacks@^4.0.0: postcss "^7.0.0" postcss-selector-parser "^3.0.0" +stylis-rule-sheet@^0.0.10: + version "0.0.10" + resolved "https://registry.yarnpkg.com/stylis-rule-sheet/-/stylis-rule-sheet-0.0.10.tgz#44e64a2b076643f4b52e5ff71efc04d8c3c4a430" + integrity sha512-nTbZoaqoBnmK+ptANthb10ZRZOGC+EmTLLUxeYIuHNkEKcmKgXX1XWKkUBT2Ac4es3NybooPe0SmvKdhKJZAuw== + +stylis@^3.5.0: + version "3.5.4" + resolved "https://registry.yarnpkg.com/stylis/-/stylis-3.5.4.tgz#f665f25f5e299cf3d64654ab949a57c768b73fbe" + integrity sha512-8/3pSmthWM7lsPBKv7NXkzn2Uc9W7NotcwGNpJaa3k7WMM1XDCA4MgT5k/8BIexd5ydZdboXtU90XH9Ec4Bv/Q== + supports-color@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" @@ -9072,6 +9560,11 @@ svgo@^1.0.0, svgo@^1.0.5: unquote "~1.1.1" util.promisify "~1.0.0" +symbol-observable@1.2.0, symbol-observable@^1.0.4, symbol-observable@^1.1.0, symbol-observable@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804" + integrity sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ== + symbol-tree@^3.2.2: version "3.2.2" resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.2.tgz#ae27db38f660a7ae2e1c3b7d1bc290819b8519e6" @@ -9315,6 +9808,11 @@ typedarray@^0.0.6: resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= +ua-parser-js@^0.7.18: + version "0.7.19" + resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.19.tgz#94151be4c0a7fb1d001af7022fdaca4642659e4b" + integrity sha512-T3PVJ6uz8i0HzPxOF9SWzWAlfN/DavlpQqepn22xgve/5QecC+XMCAtmUNnY7C9StehaV6exjUCI801lOI7QlQ== + uglify-es@^3.3.4: version "3.3.9" resolved "https://registry.yarnpkg.com/uglify-es/-/uglify-es-3.3.9.tgz#0c1c4f0700bed8dbc124cdb304d2592ca203e677" @@ -9527,6 +10025,11 @@ validate-npm-package-license@^3.0.1: spdx-correct "^3.0.0" spdx-expression-parse "^3.0.0" +value-equal@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/value-equal/-/value-equal-0.4.0.tgz#c5bdd2f54ee093c04839d71ce2e4758a6890abc7" + integrity sha512-x+cYdNnaA3CxvMaTX0INdTCN8m8aF2uY9BvEqmxuYp8bL09cs/kWVQPVGcA35fMktdOsP69IgU7wFj/61dJHEw== + vary@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" @@ -9576,6 +10079,20 @@ walker@~1.0.5: dependencies: makeerror "1.0.x" +warning@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/warning/-/warning-3.0.0.tgz#32e5377cb572de4ab04753bdf8821c01ed605b7c" + integrity sha1-MuU3fLVy3kqwR1O9+IIcAe1gW3w= + dependencies: + loose-envify "^1.0.0" + +warning@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/warning/-/warning-4.0.2.tgz#aa6876480872116fa3e11d434b0d0d8d91e44607" + integrity sha512-wbTp09q/9C+jJn4KKJfJfoS6VleK/Dti0yqWSm6KMvJ4MRCXFQNapHuJXutJIrWV0Cf4AhTdeIe4qdKHR1+Hug== + dependencies: + loose-envify "^1.0.0" + watch@~0.18.0: version "0.18.0" resolved "https://registry.yarnpkg.com/watch/-/watch-0.18.0.tgz#28095476c6df7c90c963138990c0a5423eb4b986" @@ -9726,7 +10243,7 @@ whatwg-encoding@^1.0.1, whatwg-encoding@^1.0.3, whatwg-encoding@^1.0.5: dependencies: iconv-lite "0.4.24" -whatwg-fetch@3.0.0: +whatwg-fetch@3.0.0, whatwg-fetch@>=0.10.0: version "3.0.0" resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.0.0.tgz#fc804e458cc460009b1a2b966bc8817d2578aefb" integrity sha512-9GSJUgz1D4MfyKU7KRqwOjXCXTqWdFNvEr7eUBYchQiVc744mqK/MzXPNR2WsPkmkOa4ywfg8C2n8h+13Bey1Q==