From 23bdb342280ac30ca1a6d60a3e21a822a85e9402 Mon Sep 17 00:00:00 2001
From: safarte <bchichereau@gmail.com>
Date: Mon, 7 Oct 2019 18:05:53 +0200
Subject: [PATCH] modifs

---
 .gitignore                   | 136 +++----------------
 README.md                    |  75 ++---------
 package.json                 |   9 +-
 public/favicon.ico           | Bin 0 -> 22382 bytes
 public/index.html            |  43 ++++++
 public/logo192.png           | Bin 0 -> 8581 bytes
 public/logo512.png           | Bin 0 -> 22920 bytes
 public/manifest.json         |  25 ++++
 public/robots.txt            |   2 +
 src/App.css                  |  22 ----
 src/App.js                   |  42 +++---
 src/App.test.js              |   9 --
 src/components/Board.js      | 159 ++++++++++++++++++++++
 src/components/BoardsList.js |  41 ++++++
 src/components/Login.js      |  87 ++++++++++++
 src/index.css                |  13 --
 src/index.js                 |  11 +-
 src/logo.svg                 |   1 -
 src/serviceWorker.js         | 135 -------------------
 yarn.lock                    | 247 ++++++++++++++++++++++++++++++++++-
 20 files changed, 664 insertions(+), 393 deletions(-)
 create mode 100644 public/favicon.ico
 create mode 100644 public/index.html
 create mode 100644 public/logo192.png
 create mode 100644 public/logo512.png
 create mode 100644 public/manifest.json
 create mode 100644 public/robots.txt
 delete mode 100644 src/App.css
 delete mode 100644 src/App.test.js
 create mode 100644 src/components/Board.js
 create mode 100644 src/components/BoardsList.js
 create mode 100644 src/components/Login.js
 delete mode 100644 src/index.css
 delete mode 100644 src/logo.svg
 delete mode 100644 src/serviceWorker.js

diff --git a/.gitignore b/.gitignore
index 01b3c33..52ffbec 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,123 +1,25 @@
+# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
 
-# Created by https://www.gitignore.io/api/node,react,visualstudiocode
-# Edit at https://www.gitignore.io/?templates=node,react,visualstudiocode
+# dependencies
+/node_modules
+/.pnp
+.pnp.js
 
-### Node ###
-# Logs
-logs
-*.log
-npm-debug.log*
-yarn-debug.log*
-yarn-error.log*
-lerna-debug.log*
-
-# Diagnostic reports (https://nodejs.org/api/report.html)
-report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
-
-# Runtime data
-pids
-*.pid
-*.seed
-*.pid.lock
-
-# Directory for instrumented libs generated by jscoverage/JSCover
-lib-cov
-
-# Coverage directory used by tools like istanbul
-coverage
-*.lcov
-
-# nyc test coverage
-.nyc_output
-
-# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
-.grunt
-
-# Bower dependency directory (https://bower.io/)
-bower_components
-
-# node-waf configuration
-.lock-wscript
-
-# Compiled binary addons (https://nodejs.org/api/addons.html)
-build/Release
-
-# Dependency directories
-node_modules/
-jspm_packages/
-
-# TypeScript v1 declaration files
-typings/
-
-# TypeScript cache
-*.tsbuildinfo
-
-# Optional npm cache directory
-.npm
-
-# Optional eslint cache
-.eslintcache
-
-# Optional REPL history
-.node_repl_history
+# testing
+/coverage
 
-# Output of 'npm pack'
-*.tgz
+# production
+/build
 
-# Yarn Integrity file
-.yarn-integrity
+# misc
+.DS_Store
+.env.local
+.env.development.local
+.env.test.local
+.env.production.local
 
-# dotenv environment variables file
-.env
-.env.test
-
-# parcel-bundler cache (https://parceljs.org/)
-.cache
-
-# next.js build output
-.next
-
-# nuxt.js build output
-.nuxt
-
-# react / gatsby 
-public/
-
-# vuepress build output
-.vuepress/dist
-
-# Serverless directories
-.serverless/
-
-# FuseBox cache
-.fusebox/
-
-# DynamoDB Local files
-.dynamodb/
-
-### react ###
-.DS_*
-**/*.backup.*
-**/*.back.*
-
-node_modules
-bower_componets
-
-*.sublime*
-
-psd
-thumb
-sketch
-
-### VisualStudioCode ###
-.vscode/*
-!.vscode/settings.json
-!.vscode/tasks.json
-!.vscode/launch.json
-!.vscode/extensions.json
-
-### VisualStudioCode Patch ###
-# Ignore all local history of files
-.history
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
 
-# End of https://www.gitignore.io/api/node,react,visualstudiocode
+.vscode/
diff --git a/README.md b/README.md
index 89b278a..d5c2032 100644
--- a/README.md
+++ b/README.md
@@ -1,68 +1,19 @@
-This project was bootstrapped with [Create React App](https://github.com/facebook/create-react-app).
+# Formation React
 
-## Available Scripts
+By Safarte and Soudini
 
-In the project directory, you can run:
+## Install
 
-### `yarn start`
+* Install NodeJS
+* Install yarn
+* Run:
 
-Runs the app in the development mode.<br />
-Open [http://localhost:3000](http://localhost:3000) to view it in the browser.
+```bash
+git clone https://gitlab.viarezo.fr/LinkCS/react-tutorial-front.git
+cd react-tutorial-front
+yarn install
+```
 
-The page will reload if you make edits.<br />
-You will also see any lint errors in the console.
+## Usage
 
-### `yarn test`
-
-Launches the test runner in the interactive watch mode.<br />
-See the section about [running tests](https://facebook.github.io/create-react-app/docs/running-tests) for more information.
-
-### `yarn build`
-
-Builds the app for production to the `build` folder.<br />
-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.<br />
-Your app is ready to be deployed!
-
-See the section about [deployment](https://facebook.github.io/create-react-app/docs/deployment) for more information.
-
-### `yarn 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
-
-### `yarn build` fails to minify
-
-This section has moved here: https://facebook.github.io/create-react-app/docs/troubleshooting#npm-run-build-fails-to-minify
+To run this website locally execute `yarn start` in the working directory.
diff --git a/package.json b/package.json
index 9b3572c..784ddc6 100644
--- a/package.json
+++ b/package.json
@@ -1,11 +1,16 @@
 {
-  "name": "app",
+  "name": "front_messages_brice",
   "version": "0.1.0",
   "private": true,
   "dependencies": {
+    "axios": "^0.19.0",
     "react": "^16.10.2",
     "react-dom": "^16.10.2",
-    "react-scripts": "3.2.0"
+    "react-router": "^5.1.2",
+    "react-router-dom": "^5.1.2",
+    "react-scripts": "3.2.0",
+    "semantic-ui-css": "^2.4.1",
+    "semantic-ui-react": "^0.88.1"
   },
   "scripts": {
     "start": "react-scripts start",
diff --git a/public/favicon.ico b/public/favicon.ico
new file mode 100644
index 0000000000000000000000000000000000000000..c2c86b859eaa20639adf92ff979c2be8d580433e
GIT binary patch
literal 22382
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
KMvWaJApijD)J}c?

literal 0
HcmV?d00001

diff --git a/public/index.html b/public/index.html
new file mode 100644
index 0000000..c240d2c
--- /dev/null
+++ b/public/index.html
@@ -0,0 +1,43 @@
+<!DOCTYPE html>
+<html lang="en">
+  <head>
+    <meta charset="utf-8" />
+    <link rel="icon" href="%PUBLIC_URL%/favicon.ico" />
+    <meta name="viewport" content="width=device-width, initial-scale=1" />
+    <meta name="theme-color" content="#000000" />
+    <meta
+      name="description"
+      content="Web site created using create-react-app"
+    />
+    <link rel="apple-touch-icon" href="logo192.png" />
+    <!--
+      manifest.json provides metadata used when your web app is installed on a
+      user's mobile device or desktop. See https://developers.google.com/web/fundamentals/web-app-manifest/
+    -->
+    <link rel="manifest" href="%PUBLIC_URL%/manifest.json" />
+    <!--
+      Notice the use of %PUBLIC_URL% in the tags above.
+      It will be replaced with the URL of the `public` folder during the build.
+      Only files inside the `public` folder can be referenced from the HTML.
+
+      Unlike "/favicon.ico" or "favicon.ico", "%PUBLIC_URL%/favicon.ico" will
+      work correctly both with client-side routing and a non-root public URL.
+      Learn how to configure a non-root public URL by running `npm run build`.
+    -->
+    <title>React App</title>
+  </head>
+  <body>
+    <noscript>You need to enable JavaScript to run this app.</noscript>
+    <div id="root"></div>
+    <!--
+      This HTML file is a template.
+      If you open it directly in the browser, you will see an empty page.
+
+      You can add webfonts, meta tags, or analytics to this file.
+      The build step will place the bundled scripts into the <body> tag.
+
+      To begin the development, run `npm start` or `yarn start`.
+      To create a production bundle, use `npm run build` or `yarn build`.
+    -->
+  </body>
+</html>
diff --git a/public/logo192.png b/public/logo192.png
new file mode 100644
index 0000000000000000000000000000000000000000..fa313abf53936aefc517dbd583b724a57199d415
GIT binary patch
literal 8581
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

literal 0
HcmV?d00001

diff --git a/public/logo512.png b/public/logo512.png
new file mode 100644
index 0000000000000000000000000000000000000000..bd5d4b5e235ab9d880c202a6a7f7d3e35e115d8c
GIT binary patch
literal 22920
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
a=ikL$H2!W|`iDIYWQ3=ypUXO@geCw<c4RLA

literal 0
HcmV?d00001

diff --git a/public/manifest.json b/public/manifest.json
new file mode 100644
index 0000000..080d6c7
--- /dev/null
+++ b/public/manifest.json
@@ -0,0 +1,25 @@
+{
+  "short_name": "React App",
+  "name": "Create React App Sample",
+  "icons": [
+    {
+      "src": "favicon.ico",
+      "sizes": "64x64 32x32 24x24 16x16",
+      "type": "image/x-icon"
+    },
+    {
+      "src": "logo192.png",
+      "type": "image/png",
+      "sizes": "192x192"
+    },
+    {
+      "src": "logo512.png",
+      "type": "image/png",
+      "sizes": "512x512"
+    }
+  ],
+  "start_url": ".",
+  "display": "standalone",
+  "theme_color": "#000000",
+  "background_color": "#ffffff"
+}
diff --git a/public/robots.txt b/public/robots.txt
new file mode 100644
index 0000000..01b0f9a
--- /dev/null
+++ b/public/robots.txt
@@ -0,0 +1,2 @@
+# https://www.robotstxt.org/robotstxt.html
+User-agent: *
diff --git a/src/App.css b/src/App.css
deleted file mode 100644
index afc3885..0000000
--- a/src/App.css
+++ /dev/null
@@ -1,22 +0,0 @@
-.App {
-  text-align: center;
-}
-
-.App-logo {
-  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: #09d3ac;
-}
diff --git a/src/App.js b/src/App.js
index ce9cbd2..23bc14d 100644
--- a/src/App.js
+++ b/src/App.js
@@ -1,26 +1,30 @@
 import React from 'react';
-import logo from './logo.svg';
-import './App.css';
+import { Route, Switch } from 'react-router-dom';
+import { withRouter } from 'react-router';
+import BoardsList from './components/BoardsList';
+import Board from './components/Board';
+import Login from './components/Login';
+
+
+// Set this to true in order to use the login page
+const USE_LOGIN = false;
+// Set this to true in order to use the boards list page
+const USE_BOARDSLIST = false;
+
+
+const BoardsListComponent = USE_BOARDSLIST ? BoardsList : Board;
+const LoginComponent = USE_LOGIN ? Login : BoardsListComponent;
 
 function App() {
   return (
-    <div className="App">
-      <header className="App-header">
-        <img src={logo} className="App-logo" alt="logo" />
-        <p>
-          Edit <code>src/App.js</code> and save to reload.
-        </p>
-        <a
-          className="App-link"
-          href="https://reactjs.org"
-          target="_blank"
-          rel="noopener noreferrer"
-        >
-          Learn React
-        </a>
-      </header>
-    </div>
+      <div className='App'>
+        <Switch id='switch'>
+          <Route exact path='/' component={LoginComponent}/>
+          <Route exact path='/boards' component={BoardsListComponent}/>
+          <Route path='/board/:id' component={Board}/>
+        </Switch>
+      </div>
   );
 }
 
-export default App;
+export default withRouter(App);
diff --git a/src/App.test.js b/src/App.test.js
deleted file mode 100644
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(<App />, div);
-  ReactDOM.unmountComponentAtNode(div);
-});
diff --git a/src/components/Board.js b/src/components/Board.js
new file mode 100644
index 0000000..9fa8054
--- /dev/null
+++ b/src/components/Board.js
@@ -0,0 +1,159 @@
+import React, { useState, useEffect } from 'react';
+import {withRouter} from 'react-router';
+import axios from 'axios';
+import { Container, Message, TextArea, Button, Grid, Divider } from 'semantic-ui-react';
+
+const API_URL = 'http://138.195.142.10';
+
+const postMessage = (message, board) => {
+    const request_options = {
+        url : `${API_URL}/messages`,
+        method : 'POST',
+        data: {
+            userId: parseInt(localStorage.getItem('userId')) || 1,
+            content: message,
+            boardId: parseInt(board)
+        }
+    };
+    return axios.request(request_options);
+};
+
+const getMessagesList = async (board) => {
+    const request_options = {
+        method: 'GET',
+        url: `${API_URL}/messages`,
+        params: {
+            board: board
+        }
+    };
+    return axios.request(request_options).then(resp => resp.data);
+};
+
+const getUserList = async () => {
+    const request_options = {
+        method: 'GET',
+        url: `${API_URL}/users`
+    };
+    return axios.request(request_options).then(resp => resp.data);
+};
+
+const getBoard = async (id) => {
+    const request_options = {
+        method: 'GET',
+        url: `${API_URL}/boards`,
+        params: {
+            id: id
+        }
+    };
+    return axios.request(request_options).then(resp => resp.data);
+};
+
+const Board = (props) => {
+    const [id, setId] = useState(-1);
+    const [board, setBoard] = useState([]);
+
+    useEffect(
+        () => {
+            const boardId = props.location.pathname.split('/')[props.location.pathname.split('/').length-1] || 1;
+            setId(boardId);
+        },
+        [props.location.pathname]
+    );
+
+    useEffect(
+        () => {
+            getBoard(id).then(data => setBoard(data))
+        },
+        [id]
+    );
+
+    return (
+        <div>
+            <Container  textAlign='left'>
+                <Container textAlign='center'><h1>{board[id-1] ? board[id-1].name : ''}</h1></Container>
+                <Divider/>
+                <Container>
+                    <MessageWriter board={id}/>
+                    <Divider/>
+                </Container>
+                <Container>
+                    <MessageList board={id}/>
+                </Container>
+            </Container>
+        </div>
+    );
+};
+
+const MessageList = (props) => {
+    const [messages, setMessages] = useState([]);
+    const [users, setUsers] = useState([]);
+
+    useEffect(
+        () => {
+            getMessagesList(props.board).then(data => setMessages(data));
+            getUserList().then(data => setUsers(data));
+        },
+        [props.board]
+    );
+
+    useEffect(
+        () => {
+            const timer = setTimeout(() => {
+                getMessagesList(props.board).then(data => setMessages(data));
+              }, 1000);
+            return () => clearTimeout(timer);
+        },
+        [messages, props.board]
+    );
+    return (
+        <div>
+            {messages.map(message => (
+                <MessageDisplay message={message} user={users[message.userId-1]}/>
+            ))}
+        </div>
+    );
+};
+
+const MessageDisplay = (props) => {
+    return(
+        <Container>
+            <Message 
+                key={props.message.id} 
+                header={(props.user ? props.user.username : '') + '@' + props.message.updatedAt.split('T')[1].split('.')[0]} 
+                content={props.message.content}
+            />
+            <Divider/>
+        </Container>
+    );
+};
+
+const MessageWriter = (props) => {
+    const [message, setMessage] = useState('');
+
+    return (
+    <div>
+        <Container textAlign='center'> 
+            <Grid>
+                <Grid.Column width='16'>
+                    <Grid.Row>
+                        <TextArea style={{width: '100%'}}onChange={(e) => {setMessage(e.target.value)}} value={message}/>   
+                    </Grid.Row>
+                    <Grid.Row>
+                        <Button
+                        style={{width: '100%'}}
+                        onClick={() => {if (message.length) {
+                            setMessage('');
+                            postMessage(message, props.board);
+                        }}}
+                        >
+                            Send
+                        </Button>
+                    </Grid.Row>
+                </Grid.Column>
+            </Grid>
+        </Container>
+    </div>
+    );
+};
+
+export default withRouter(Board);
diff --git a/src/components/BoardsList.js b/src/components/BoardsList.js
new file mode 100644
index 0000000..778a5bc
--- /dev/null
+++ b/src/components/BoardsList.js
@@ -0,0 +1,41 @@
+import React, { useState, useEffect }  from 'react';
+import { withRouter } from 'react-router';
+import { Link } from 'react-router-dom';
+import axios from 'axios';
+import { Form, Header } from 'semantic-ui-react';   
+
+const API_URL = 'http://138.195.142.10';
+
+const getBoardList = async () => {
+    const request_options = {
+        method: 'GET',
+        url: `${API_URL}/boards`
+    }
+    return axios.request(request_options).then(resp => resp.data);
+};
+
+const BoardsList = () => {
+    const [boards, setBoards] = useState([]);
+
+    useEffect(
+        () => {
+        getBoardList().then(data => setBoards(data, []));
+        },
+        []
+    );
+
+    return (
+        <div style={{ margin: 'auto', maxWidth: '50%', textAlign: 'center', marginTop: '2%' }}>
+            <Header as='h1'>Boards</Header>
+            <Form style={{ marginTop: '8%' }}>
+                {boards.map(board => (
+                    <Link style={{ margin: '1%' }} to={`/board/${board.id}`}>
+                        <Form.Button fluid content={board.name} />
+                    </Link>
+                ))}
+            </Form>
+        </div>
+    );
+};
+
+export default withRouter(BoardsList);
diff --git a/src/components/Login.js b/src/components/Login.js
new file mode 100644
index 0000000..88269f8
--- /dev/null
+++ b/src/components/Login.js
@@ -0,0 +1,87 @@
+import React, { useState } from 'react';
+import { withRouter } from 'react-router';
+import axios from 'axios';
+import { Form, Image } from 'semantic-ui-react';
+
+const API_URL = 'http://138.195.142.10';
+
+const handleLogin = async (username, password) => {
+    const request_options = {
+        method: 'POST',
+        url: `${API_URL}/login`,
+        data: {
+            username,
+            password
+        }
+    }
+    return axios.request(request_options).then(resp => {
+        const res = resp.data;
+        if (res.length > 0) {
+            localStorage.setItem('userId', res[0].id);
+            return window.location.replace('/boards');
+        }
+    });
+};
+
+const handleRegister = async (username, password) => {
+    const request_options = {
+        method: 'POST',
+        url: `${API_URL}/users`,
+        data: {
+            username,
+            password
+        }
+    }
+    if (username && password) {
+        return axios.request(request_options).then(resp => {
+            if (resp.status === 200) {
+                console.log(resp);
+                localStorage.setItem('userId', resp.data.id);
+                return window.location.replace('/boards');
+            }
+        });
+    }
+};
+
+const Login = () => {
+    const [username, setUsername] = useState('');
+    const [password, setPassword] = useState('');
+
+    return (
+        <div style={{ margin: 'auto', maxWidth: '40%', textAlign: 'left' }}>
+            <Image
+                style={{ marginLeft: 'auto', marginRight: 'auto', marginTop: '20%', marginBottom: '10%' }}
+                src='https://gitlab.viarezo.fr/uploads/-/system/project/avatar/1987/react_round_red.png' size='medium'
+            />
+            <Form>
+                <Form.Input
+                    label='Username'
+                    placeholder='Username'
+                    value={username}
+                    onChange={({ target }) => setUsername(target.value)}
+                />
+                <Form.Input
+                    label='Password'
+                    placeholder='Password'
+                    type='password'
+                    value={password}
+                    onChange={({ target }) => setPassword(target.value)}
+                />
+                <Form.Group widths={2}>
+                    <Form.Button
+                        fluid
+                        content='Login'
+                        onClick={() => handleLogin(username, password)}
+                    />
+                    <Form.Button
+                        fluid
+                        content='Register'
+                        onClick={() => handleRegister(username, password)}
+                    />
+                </Form.Group>
+            </Form>
+        </div>
+    );
+};
+
+export default withRouter(Login);
diff --git a/src/index.css b/src/index.css
deleted file mode 100644
index 4a1df4d..0000000
--- a/src/index.css
+++ /dev/null
@@ -1,13 +0,0 @@
-body {
-  margin: 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 87d1be5..f98d101 100644
--- a/src/index.js
+++ b/src/index.js
@@ -1,12 +1,7 @@
 import React from 'react';
 import ReactDOM from 'react-dom';
-import './index.css';
+import { BrowserRouter as Router } from 'react-router-dom';
+import 'semantic-ui-css/semantic.min.css'
 import App from './App';
-import * as serviceWorker from './serviceWorker';
 
-ReactDOM.render(<App />, document.getElementById('root'));
-
-// 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: https://bit.ly/CRA-PWA
-serviceWorker.unregister();
+ReactDOM.render(<Router><App className={{'backgroundColor' : '#282c34'}}/></Router>, document.getElementById('root'));
diff --git a/src/logo.svg b/src/logo.svg
deleted file mode 100644
index 2e5df0d..0000000
--- a/src/logo.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 170.96 159.93"><defs><style>.cls-1{fill:#09d3ac;}</style></defs><path class="cls-1" d="M141.35,73.27c0-6.89-8.11-13-20.58-16.73,3-12.67,1.69-22.75-4.28-26.16a9.55,9.55,0,0,0-4.79-1.2c-5.57,0-12.61,3.89-19.72,10.62-7.11-6.68-14.13-10.55-19.69-10.55a9.46,9.46,0,0,0-4.86,1.22c-5.94,3.42-7.17,13.44-4.21,26.05-12.41,3.71-20.48,9.77-20.5,16.63s8.12,13,20.59,16.72c-3,12.68-1.7,22.75,4.28,26.16a9.41,9.41,0,0,0,4.78,1.2c5.58,0,12.62-3.89,19.73-10.62,7.1,6.68,14.12,10.55,19.69,10.55a9.59,9.59,0,0,0,4.86-1.22c5.94-3.42,7.16-13.44,4.21-26C133.27,86.18,141.34,80.12,141.35,73.27ZM96.56,42.06c8.19-7.33,13.31-8.12,15.13-8.12h0a4.71,4.71,0,0,1,2.42.58c2.86,1.63,4,7.38,3.09,15a56.73,56.73,0,0,1-1,5.79,97.7,97.7,0,0,0-12.58-2.07,98.47,98.47,0,0,0-8.24-10.08C95.75,42.79,96.15,42.42,96.56,42.06ZM71.77,78.94c.78,1.5,1.61,3,2.47,4.51S76,86.49,77,88c-2.71-.39-5.34-.88-7.84-1.46C69.86,84,70.75,81.5,71.77,78.94ZM69,59.9c2.53-.59,5.18-1.08,7.93-1.46-1,1.48-1.86,3-2.76,4.59s-1.69,3-2.46,4.52Q70.18,63.65,69,59.9Zm5.21,13.34q1.86-3.93,4.09-7.86c1.5-2.62,3.11-5.17,4.77-7.61,2.91-.22,5.91-.34,9-.33s6,.12,8.89.35c1.66,2.42,3.25,5,4.75,7.55s2.88,5.22,4.12,7.83c-1.23,2.62-2.6,5.25-4.08,7.85s-3.11,5.18-4.77,7.62c-2.91.23-5.91.34-9,.34s-6-.13-8.89-.36c-1.66-2.42-3.26-4.94-4.76-7.55S75.5,75.85,74.25,73.24Zm32.86-14.77c2.72.38,5.35.87,7.84,1.45-.74,2.47-1.62,5-2.64,7.55-.79-1.5-1.61-3-2.48-4.51S108,59.93,107.11,58.47Zm2.76,24.92q1.29-2.27,2.46-4.53c1,2.6,2,5.16,2.7,7.66-2.52.59-5.17,1.07-7.92,1.45Q108.52,85.75,109.87,83.39ZM92,46.56c1.8,1.92,3.57,4,5.3,6.23-1.71-.07-3.46-.12-5.23-.12s-3.58,0-5.33.12C88.45,50.57,90.2,48.48,92,46.56Zm-22.18-12A4.82,4.82,0,0,1,72.29,34a13.11,13.11,0,0,1,5.19,1.31,39.07,39.07,0,0,1,10,6.78l1.17,1.07a98.49,98.49,0,0,0-8.16,10,98.88,98.88,0,0,0-12.65,2.06c-.44-1.94-.8-3.84-1-5.67C65.8,42,67,36.24,69.81,34.6ZM64.53,85.26a58.75,58.75,0,0,1-5.54-2c-7.1-3-11.5-6.85-11.5-10.14S51.91,66,59,63.05a57.63,57.63,0,0,1,5.44-1.94A97.93,97.93,0,0,0,69,73.25,98.72,98.72,0,0,0,64.53,85.26Zm23,19.1c-8.19,7.33-13.31,8.11-15.14,8.11a4.69,4.69,0,0,1-2.42-.58c-2.86-1.63-4-7.38-3.09-15a56.07,56.07,0,0,1,1-5.78,99.51,99.51,0,0,0,12.58,2.06,97.17,97.17,0,0,0,8.24,10.08Zm4.57-4.51c-1.8-1.92-3.57-4-5.31-6.23,1.72.08,3.47.12,5.24.12s3.58,0,5.33-.11C95.63,95.85,93.87,97.93,92.09,99.85Zm22.18,12a4.82,4.82,0,0,1-2.48.59c-1.82,0-7-.8-15.16-8.1l-1.17-1.07a98.44,98.44,0,0,0,8.15-10,97,97,0,0,0,12.66-2.06c.44,1.94.79,3.84,1,5.67C118.27,104.42,117.12,110.18,114.27,111.81Zm10.8-28.44c-1.71.7-3.52,1.35-5.44,1.93a98.54,98.54,0,0,0-4.57-12.14,98.1,98.1,0,0,0,4.49-12,58.75,58.75,0,0,1,5.54,2c7.09,3,11.5,6.85,11.49,10.14S132.17,80.42,125.07,83.37ZM92,82.39a9.18,9.18,0,1,0-9.17-9.19A9.17,9.17,0,0,0,92,82.39ZM31,17.88V128.53H153.07V17.88ZM148.3,123.77H35.78V22.65H148.3Zm-85-33.9c-3,12.68-1.7,22.75,4.28,26.16a9.41,9.41,0,0,0,4.78,1.2c5.58,0,12.62-3.89,19.73-10.62,7.1,6.68,14.12,10.55,19.69,10.55a9.59,9.59,0,0,0,4.86-1.22c5.94-3.42,7.16-13.44,4.21-26,12.41-3.72,20.48-9.78,20.49-16.63s-8.11-13-20.58-16.73c3-12.67,1.69-22.75-4.28-26.16a9.55,9.55,0,0,0-4.79-1.2c-5.57,0-12.61,3.89-19.72,10.62-7.11-6.68-14.13-10.55-19.69-10.55a9.46,9.46,0,0,0-4.86,1.22c-5.94,3.42-7.17,13.44-4.21,26.05-12.41,3.71-20.48,9.77-20.5,16.63S50.84,86.13,63.31,89.87Zm24.21,14.49c-8.19,7.33-13.31,8.11-15.14,8.11a4.69,4.69,0,0,1-2.42-.58c-2.86-1.63-4-7.38-3.09-15a56.07,56.07,0,0,1,1-5.78,99.51,99.51,0,0,0,12.58,2.06,97.17,97.17,0,0,0,8.24,10.08Zm24.79-36.89c-.79-1.5-1.61-3-2.48-4.51s-1.8-3-2.72-4.49c2.72.38,5.35.87,7.84,1.45C114.21,62.39,113.33,64.92,112.31,67.47Zm2.72,19c-2.52.59-5.17,1.07-7.92,1.45q1.41-2.22,2.76-4.58t2.46-4.53C113.37,81.46,114.28,84,115,86.52Zm-5.21-13.35c-1.23,2.62-2.6,5.25-4.08,7.85s-3.11,5.18-4.77,7.62c-2.91.23-5.91.34-9,.34s-6-.13-8.89-.36c-1.66-2.42-3.26-4.94-4.76-7.55s-2.87-5.22-4.12-7.83q1.86-3.93,4.09-7.86c1.5-2.62,3.11-5.17,4.77-7.61,2.91-.22,5.91-.34,9-.33s6,.12,8.89.35c1.66,2.42,3.25,5,4.75,7.55S108.58,70.56,109.82,73.17ZM77,88c-2.71-.39-5.34-.88-7.84-1.46.74-2.46,1.63-5,2.65-7.55.78,1.5,1.61,3,2.47,4.51S76,86.49,77,88ZM74.21,63c-.87,1.5-1.69,3-2.46,4.52Q70.18,63.65,69,59.9c2.53-.59,5.18-1.08,7.93-1.46C76,59.92,75.11,61.45,74.21,63ZM92.09,99.85c-1.8-1.92-3.57-4-5.31-6.23,1.72.08,3.47.12,5.24.12s3.58,0,5.33-.11C95.63,95.85,93.87,97.93,92.09,99.85Zm22.18,12a4.82,4.82,0,0,1-2.48.59c-1.82,0-7-.8-15.16-8.1l-1.17-1.07a98.44,98.44,0,0,0,8.15-10,97,97,0,0,0,12.66-2.06c.44,1.94.79,3.84,1,5.67C118.27,104.42,117.12,110.18,114.27,111.81Zm5.28-50.66a58.75,58.75,0,0,1,5.54,2c7.09,3,11.5,6.85,11.49,10.14s-4.41,7.16-11.51,10.11c-1.71.7-3.52,1.35-5.44,1.93a98.54,98.54,0,0,0-4.57-12.14A98.1,98.1,0,0,0,119.55,61.15Zm-23-19.09c8.19-7.33,13.31-8.12,15.13-8.12h0a4.71,4.71,0,0,1,2.42.58c2.86,1.63,4,7.38,3.09,15a56.73,56.73,0,0,1-1,5.79,97.7,97.7,0,0,0-12.58-2.07,98.47,98.47,0,0,0-8.24-10.08C95.75,42.79,96.15,42.42,96.56,42.06ZM92,46.56c1.8,1.92,3.57,4,5.3,6.23-1.71-.07-3.46-.12-5.23-.12s-3.58,0-5.33.12C88.45,50.57,90.2,48.48,92,46.56Zm-22.18-12A4.82,4.82,0,0,1,72.29,34a13.11,13.11,0,0,1,5.19,1.31,39.07,39.07,0,0,1,10,6.78l1.17,1.07a98.49,98.49,0,0,0-8.16,10,98.88,98.88,0,0,0-12.65,2.06c-.44-1.94-.8-3.84-1-5.67C65.8,42,67,36.24,69.81,34.6ZM59,63.05a57.63,57.63,0,0,1,5.44-1.94A97.93,97.93,0,0,0,69,73.25a98.72,98.72,0,0,0-4.49,12,58.75,58.75,0,0,1-5.54-2c-7.1-3-11.5-6.85-11.5-10.14S51.91,66,59,63.05Zm33,1a9.18,9.18,0,1,0,9.17,9.19A9.17,9.17,0,0,0,92,64Zm0,0a9.18,9.18,0,1,0,9.17,9.19A9.17,9.17,0,0,0,92,64Zm0,0a9.18,9.18,0,1,0,9.17,9.19A9.17,9.17,0,0,0,92,64Zm49.35,9.24c0-6.89-8.11-13-20.58-16.73,3-12.67,1.69-22.75-4.28-26.16a9.55,9.55,0,0,0-4.79-1.2c-5.57,0-12.61,3.89-19.72,10.62-7.11-6.68-14.13-10.55-19.69-10.55a9.46,9.46,0,0,0-4.86,1.22c-5.94,3.42-7.17,13.44-4.21,26.05-12.41,3.71-20.48,9.77-20.5,16.63s8.12,13,20.59,16.72c-3,12.68-1.7,22.75,4.28,26.16a9.41,9.41,0,0,0,4.78,1.2c5.58,0,12.62-3.89,19.73-10.62,7.1,6.68,14.12,10.55,19.69,10.55a9.59,9.59,0,0,0,4.86-1.22c5.94-3.42,7.16-13.44,4.21-26C133.27,86.18,141.34,80.12,141.35,73.27ZM96.56,42.06c8.19-7.33,13.31-8.12,15.13-8.12h0a4.71,4.71,0,0,1,2.42.58c2.86,1.63,4,7.38,3.09,15a56.73,56.73,0,0,1-1,5.79,97.7,97.7,0,0,0-12.58-2.07,98.47,98.47,0,0,0-8.24-10.08C95.75,42.79,96.15,42.42,96.56,42.06ZM71.77,78.94c.78,1.5,1.61,3,2.47,4.51S76,86.49,77,88c-2.71-.39-5.34-.88-7.84-1.46C69.86,84,70.75,81.5,71.77,78.94ZM69,59.9c2.53-.59,5.18-1.08,7.93-1.46-1,1.48-1.86,3-2.76,4.59s-1.69,3-2.46,4.52Q70.18,63.65,69,59.9Zm5.21,13.34q1.86-3.93,4.09-7.86c1.5-2.62,3.11-5.17,4.77-7.61,2.91-.22,5.91-.34,9-.33s6,.12,8.89.35c1.66,2.42,3.25,5,4.75,7.55s2.88,5.22,4.12,7.83c-1.23,2.62-2.6,5.25-4.08,7.85s-3.11,5.18-4.77,7.62c-2.91.23-5.91.34-9,.34s-6-.13-8.89-.36c-1.66-2.42-3.26-4.94-4.76-7.55S75.5,75.85,74.25,73.24Zm32.86-14.77c2.72.38,5.35.87,7.84,1.45-.74,2.47-1.62,5-2.64,7.55-.79-1.5-1.61-3-2.48-4.51S108,59.93,107.11,58.47Zm2.76,24.92q1.29-2.27,2.46-4.53c1,2.6,2,5.16,2.7,7.66-2.52.59-5.17,1.07-7.92,1.45Q108.52,85.75,109.87,83.39ZM92,46.56c1.8,1.92,3.57,4,5.3,6.23-1.71-.07-3.46-.12-5.23-.12s-3.58,0-5.33.12C88.45,50.57,90.2,48.48,92,46.56Zm-22.18-12A4.82,4.82,0,0,1,72.29,34a13.11,13.11,0,0,1,5.19,1.31,39.07,39.07,0,0,1,10,6.78l1.17,1.07a98.49,98.49,0,0,0-8.16,10,98.88,98.88,0,0,0-12.65,2.06c-.44-1.94-.8-3.84-1-5.67C65.8,42,67,36.24,69.81,34.6ZM64.53,85.26a58.75,58.75,0,0,1-5.54-2c-7.1-3-11.5-6.85-11.5-10.14S51.91,66,59,63.05a57.63,57.63,0,0,1,5.44-1.94A97.93,97.93,0,0,0,69,73.25,98.72,98.72,0,0,0,64.53,85.26Zm23,19.1c-8.19,7.33-13.31,8.11-15.14,8.11a4.69,4.69,0,0,1-2.42-.58c-2.86-1.63-4-7.38-3.09-15a56.07,56.07,0,0,1,1-5.78,99.51,99.51,0,0,0,12.58,2.06,97.17,97.17,0,0,0,8.24,10.08Zm4.57-4.51c-1.8-1.92-3.57-4-5.31-6.23,1.72.08,3.47.12,5.24.12s3.58,0,5.33-.11C95.63,95.85,93.87,97.93,92.09,99.85Zm22.18,12a4.82,4.82,0,0,1-2.48.59c-1.82,0-7-.8-15.16-8.1l-1.17-1.07a98.44,98.44,0,0,0,8.15-10,97,97,0,0,0,12.66-2.06c.44,1.94.79,3.84,1,5.67C118.27,104.42,117.12,110.18,114.27,111.81Zm10.8-28.44c-1.71.7-3.52,1.35-5.44,1.93a98.54,98.54,0,0,0-4.57-12.14,98.1,98.1,0,0,0,4.49-12,58.75,58.75,0,0,1,5.54,2c7.09,3,11.5,6.85,11.49,10.14S132.17,80.42,125.07,83.37ZM92,82.39a9.18,9.18,0,1,0-9.17-9.19A9.17,9.17,0,0,0,92,82.39Zm-69.32,54.5V26.2L17.89,31V141.66H139.94l4.78-4.77Z"/></svg>
\ No newline at end of file
diff --git a/src/serviceWorker.js b/src/serviceWorker.js
deleted file mode 100644
index f8c7e50..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 https://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 https://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 https://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/yarn.lock b/yarn.lock
index b639a28..1bb4dc8 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -846,7 +846,7 @@
   dependencies:
     regenerator-runtime "^0.13.2"
 
-"@babel/runtime@^7.0.0", "@babel/runtime@^7.3.4", "@babel/runtime@^7.4.2", "@babel/runtime@^7.4.5":
+"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.3.4", "@babel/runtime@^7.4.0", "@babel/runtime@^7.4.2", "@babel/runtime@^7.4.5":
   version "7.6.2"
   resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.6.2.tgz#c3d6e41b304ef10dcf13777a33e7694ec4a9a6dd"
   integrity sha512-EXxN64agfUqqIGeEjI5dL5z0Sw0ZwWo1mLTi4mQowCZ42O59b7DRpZAnTC6OqdF28wMBMFKNb/4uFGrVaigSpg==
@@ -1097,6 +1097,31 @@
   resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz#2b5a3ab3f918cca48a8c754c08168e3f03eba61b"
   integrity sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==
 
+"@semantic-ui-react/event-stack@^3.1.0":
+  version "3.1.0"
+  resolved "https://registry.yarnpkg.com/@semantic-ui-react/event-stack/-/event-stack-3.1.0.tgz#aadbe4a28b0dd7703c5f451640d0fefe66dd9208"
+  integrity sha512-WHtU9wutZByZtFZxzj4BVEk+rvWldZpZhRcyv6d84+XLSolm83zLHYJLTACGuSl6Xa/xpgVXquvm9GyMudkJYg==
+  dependencies:
+    exenv "^1.2.2"
+    prop-types "^15.6.2"
+
+"@stardust-ui/react-component-event-listener@~0.38.0":
+  version "0.38.0"
+  resolved "https://registry.yarnpkg.com/@stardust-ui/react-component-event-listener/-/react-component-event-listener-0.38.0.tgz#1787faded94b40ad41226e6289baf13e701c6e7f"
+  integrity sha512-sIP/e0dyOrrlb8K7KWumfMxj/gAifswTBC4o68Aa+C/GA73ccRp/6W1VlHvF/dlOR4KLsA+5SKnhjH36xzPsWg==
+  dependencies:
+    "@babel/runtime" "^7.1.2"
+    prop-types "^15.7.2"
+
+"@stardust-ui/react-component-ref@~0.38.0":
+  version "0.38.0"
+  resolved "https://registry.yarnpkg.com/@stardust-ui/react-component-ref/-/react-component-ref-0.38.0.tgz#52d555f2d5edd213c923c93a106f7de940e427ef"
+  integrity sha512-xjs6WnvJVueSIXMWw0C3oWIgAPpcD03qw43oGOjUXqFktvpNkB73JoKIhS4sCrtQxBdct75qqr4ZL6JiyPcESw==
+  dependencies:
+    "@babel/runtime" "^7.1.2"
+    prop-types "^15.7.2"
+    react-is "^16.6.3"
+
 "@svgr/babel-plugin-add-jsx-attribute@^4.2.0":
   version "4.2.0"
   resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-4.2.0.tgz#dadcb6218503532d6884b210e7f3c502caaa44b1"
@@ -1827,6 +1852,14 @@ aws4@^1.8.0:
   resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.8.0.tgz#f0e003d9ca9e7f59c7a508945d7b2ef9a04a542f"
   integrity sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==
 
+axios@^0.19.0:
+  version "0.19.0"
+  resolved "https://registry.yarnpkg.com/axios/-/axios-0.19.0.tgz#8e09bff3d9122e133f7b8101c8fbdd00ed3d2ab8"
+  integrity sha512-1uvKqKQta3KBxIz14F2v06AEHZ/dIoeKfbTRkK1E5oqjDnuEerLmYTgJB5AiQZHJcljpg1TuRzdjDR06qNk0DQ==
+  dependencies:
+    follow-redirects "1.5.10"
+    is-buffer "^2.0.2"
+
 axobject-query@^2.0.2:
   version "2.0.2"
   resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-2.0.2.tgz#ea187abe5b9002b377f925d8bf7d1c561adf38f9"
@@ -2426,6 +2459,11 @@ class-utils@^0.3.5:
     isobject "^3.0.0"
     static-extend "^0.1.1"
 
+classnames@^2.2.6:
+  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"
@@ -2769,6 +2807,14 @@ create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4:
     safe-buffer "^5.0.1"
     sha.js "^2.4.8"
 
+create-react-context@^0.3.0:
+  version "0.3.0"
+  resolved "https://registry.yarnpkg.com/create-react-context/-/create-react-context-0.3.0.tgz#546dede9dc422def0d3fc2fe03afe0bc0f4f7d8c"
+  integrity sha512-dNldIoSuNSvlTJ7slIKC/ZFGKexBMBrrcc+TTe1NdmROnaASuLPvqpwj9v4XS4uXZ8+YPu0sNmShX2rXI5LNsw==
+  dependencies:
+    gud "^1.0.0"
+    warning "^4.0.3"
+
 cross-spawn@6.0.5, cross-spawn@^6.0.0, cross-spawn@^6.0.5:
   version "6.0.5"
   resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4"
@@ -3058,6 +3104,13 @@ debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.0, debug@^2.6.8, debug@^2.6.
   dependencies:
     ms "2.0.0"
 
+debug@=3.1.0:
+  version "3.1.0"
+  resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261"
+  integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==
+  dependencies:
+    ms "2.0.0"
+
 debug@^3.0.0, debug@^3.2.5, debug@^3.2.6:
   version "3.2.6"
   resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b"
@@ -3781,6 +3834,11 @@ execa@^1.0.0:
     signal-exit "^3.0.0"
     strip-eof "^1.0.0"
 
+exenv@^1.2.2:
+  version "1.2.2"
+  resolved "https://registry.yarnpkg.com/exenv/-/exenv-1.2.2.tgz#2ae78e85d9894158670b03d47bec1f03bd91bb9d"
+  integrity sha1-KueOhdmJQVhnCwPUe+wfA72Ru50=
+
 exit@^0.1.2:
   version "0.1.2"
   resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c"
@@ -4070,6 +4128,13 @@ flush-write-stream@^1.0.0:
     inherits "^2.0.3"
     readable-stream "^2.3.6"
 
+follow-redirects@1.5.10:
+  version "1.5.10"
+  resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.5.10.tgz#7b7a9f9aea2fdff36786a94ff643ed07f4ff5e2a"
+  integrity sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==
+  dependencies:
+    debug "=3.1.0"
+
 follow-redirects@^1.0.0:
   version "1.9.0"
   resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.9.0.tgz#8d5bcdc65b7108fe1508649c79c12d732dcedb4f"
@@ -4354,6 +4419,11 @@ growly@^1.3.0:
   resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081"
   integrity sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=
 
+gud@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/gud/-/gud-1.0.0.tgz#a489581b17e6a70beca9abe3ae57de7a499852c0"
+  integrity sha512-zGEOVKFM5sVPPrYs7J5/hYEw2Pof8KCyOwyhG8sAF26mCAeUFAcYPu1mwB7hhpIP29zOIBaDqwuHdLp0jvZXjw==
+
 gzip-size@5.1.1:
   version "5.1.1"
   resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-5.1.1.tgz#cb9bee692f87c0612b232840a873904e4c135274"
@@ -4482,6 +4552,18 @@ 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.9.0:
+  version "4.10.1"
+  resolved "https://registry.yarnpkg.com/history/-/history-4.10.1.tgz#33371a65e3a83b267434e2b3f3b1b4c58aad4cf3"
+  integrity sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew==
+  dependencies:
+    "@babel/runtime" "^7.1.2"
+    loose-envify "^1.2.0"
+    resolve-pathname "^3.0.0"
+    tiny-invariant "^1.0.2"
+    tiny-warning "^1.0.0"
+    value-equal "^1.0.1"
+
 hmac-drbg@^1.0.0:
   version "1.0.1"
   resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1"
@@ -4491,6 +4573,13 @@ hmac-drbg@^1.0.0:
     minimalistic-assert "^1.0.0"
     minimalistic-crypto-utils "^1.0.1"
 
+hoist-non-react-statics@^3.1.0:
+  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"
+
 hosted-git-info@^2.1.4:
   version "2.8.4"
   resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.4.tgz#44119abaf4bc64692a16ace34700fed9c03e2546"
@@ -4908,6 +4997,11 @@ is-buffer@^1.0.2, is-buffer@^1.1.5:
   resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be"
   integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==
 
+is-buffer@^2.0.2:
+  version "2.0.4"
+  resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.4.tgz#3e572f23c8411a5cfd9557c849e3665e0b290623"
+  integrity sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A==
+
 is-callable@^1.1.4:
   version "1.1.4"
   resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.4.tgz#1e1adf219e1eeb684d691f9d6a05ff0d30a24d75"
@@ -5126,6 +5220,11 @@ is-wsl@^1.1.0:
   resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d"
   integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=
 
+isarray@0.0.1:
+  version "0.0.1"
+  resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf"
+  integrity sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=
+
 isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
@@ -5573,6 +5672,11 @@ jest@24.9.0:
     import-local "^2.0.0"
     jest-cli "^24.9.0"
 
+jquery@x.*:
+  version "3.4.1"
+  resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.4.1.tgz#714f1f8d9dde4bdfa55764ba37ef214630d80ef2"
+  integrity sha512-36+AdBzCL+y6qjw5Tx7HgzeGCzC81MDDgaUP8ld2zhx58HdqXGoBd+tHdrBMiyjGQs0Hxs/MLZTu/eHNJJuWPw==
+
 js-levenshtein@^1.1.3:
   version "1.1.6"
   resolved "https://registry.yarnpkg.com/js-levenshtein/-/js-levenshtein-1.1.6.tgz#c6cee58eb3550372df8deb85fad5ce66ce01d59d"
@@ -5756,6 +5860,11 @@ jsx-ast-utils@^2.1.0, jsx-ast-utils@^2.2.1:
     array-includes "^3.0.3"
     object.assign "^4.1.0"
 
+keyboard-key@^1.0.4:
+  version "1.0.4"
+  resolved "https://registry.yarnpkg.com/keyboard-key/-/keyboard-key-1.0.4.tgz#52d8fa07b7e17757072aa22a67fb4ae85e4c46b0"
+  integrity sha512-my04dE6BCwPpwoe4KYKfPxWiwgDYQOHrVmtzn1CfzmoEsGG/ef4oZGaXCzi1+iFhG7CN5JkOuxmei5OABY8/ag==
+
 killable@^1.0.0:
   version "1.0.1"
   resolved "https://registry.yarnpkg.com/killable/-/killable-1.0.1.tgz#4c8ce441187a061c7474fb87ca08e2a638194892"
@@ -5948,7 +6057,7 @@ loglevel@^1.4.1:
   resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.6.4.tgz#f408f4f006db8354d0577dcf6d33485b3cb90d56"
   integrity sha512-p0b6mOGKcGa+7nnmKbpzR6qloPbrgLcnio++E+14Vo/XffOGwZtRpUhr8dTH/x2oCMmEoIU0Zwm3ZauhvYD17g==
 
-loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0:
+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==
@@ -6145,6 +6254,15 @@ mimic-fn@^2.0.0:
   resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b"
   integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==
 
+mini-create-react-context@^0.3.0:
+  version "0.3.2"
+  resolved "https://registry.yarnpkg.com/mini-create-react-context/-/mini-create-react-context-0.3.2.tgz#79fc598f283dd623da8e088b05db8cddab250189"
+  integrity sha512-2v+OeetEyliMt5VHMXsBhABoJ0/M4RCe7fatd/fBy6SMiKazUSEt3gxxypfnk2SHMkdBYvorHRoQxuGoiwbzAw==
+  dependencies:
+    "@babel/runtime" "^7.4.0"
+    gud "^1.0.0"
+    tiny-warning "^1.0.2"
+
 mini-css-extract-plugin@0.8.0:
   version "0.8.0"
   resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-0.8.0.tgz#81d41ec4fe58c713a96ad7c723cdb2d0bd4d70e1"
@@ -6939,6 +7057,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@^2.0.0:
   version "2.0.0"
   resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73"
@@ -7043,6 +7168,11 @@ pnp-webpack-plugin@1.5.0:
   dependencies:
     ts-pnp "^1.1.2"
 
+popper.js@^1.14.4:
+  version "1.15.0"
+  resolved "https://registry.yarnpkg.com/popper.js/-/popper.js-1.15.0.tgz#5560b99bbad7647e9faa475c6b8056621f5a4ff2"
+  integrity sha512-w010cY1oCUmI+9KwwlWki+r5jxKfTFDVoadl7MSrIujHU5MJ5OR6HTDj6Xo8aoR/QsA56x8jKjA59qGH4ELtrA==
+
 portfinder@^1.0.9:
   version "1.0.24"
   resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.24.tgz#11efbc6865f12f37624b6531ead1d809ed965cfa"
@@ -7790,7 +7920,7 @@ prompts@^2.0.1:
     kleur "^3.0.3"
     sisteransi "^1.0.3"
 
-prop-types@^15.6.2, prop-types@^15.7.2:
+prop-types@^15.6.1, prop-types@^15.6.2, prop-types@^15.7.2:
   version "15.7.2"
   resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5"
   integrity sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==
@@ -7997,7 +8127,7 @@ react-dev-utils@^9.1.0:
     strip-ansi "5.2.0"
     text-table "0.2.0"
 
-react-dom@16.10.2:
+react-dom@^16.10.2:
   version "16.10.2"
   resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-16.10.2.tgz#4840bce5409176bc3a1f2bd8cb10b92db452fda6"
   integrity sha512-kWGDcH3ItJK4+6Pl9DZB16BXYAZyrYQItU4OMy0jAkv5aNqc+mAKb4TpFtAteI6TJZu+9ZlNhaeNQSVQDHJzkw==
@@ -8012,11 +8142,57 @@ react-error-overlay@^6.0.3:
   resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-6.0.3.tgz#c378c4b0a21e88b2e159a3e62b2f531fd63bf60d"
   integrity sha512-bOUvMWFQVk5oz8Ded9Xb7WVdEi3QGLC8tH7HmYP0Fdp4Bn3qw0tRFmr5TW6mvahzvmrK4a6bqWGfCevBflP+Xw==
 
+react-is@^16.6.0, react-is@^16.6.3, react-is@^16.7.0, react-is@^16.8.6:
+  version "16.10.2"
+  resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.10.2.tgz#984120fd4d16800e9a738208ab1fba422d23b5ab"
+  integrity sha512-INBT1QEgtcCCgvccr5/86CfD71fw9EPmDxgiJX4I2Ddr6ZsV6iFXsuby+qWJPtmNuMY0zByTsG4468P7nHuNWA==
+
 react-is@^16.8.1, react-is@^16.8.4:
   version "16.10.1"
   resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.10.1.tgz#0612786bf19df406502d935494f0450b40b8294f"
   integrity sha512-BXUMf9sIOPXXZWqr7+c5SeOKJykyVr2u0UDzEf4LNGc6taGkQe1A9DFD07umCIXz45RLr9oAAwZbAJ0Pkknfaw==
 
+react-popper@^1.3.4:
+  version "1.3.4"
+  resolved "https://registry.yarnpkg.com/react-popper/-/react-popper-1.3.4.tgz#f0cd3b0d30378e1f663b0d79bcc8614221652ced"
+  integrity sha512-9AcQB29V+WrBKk6X7p0eojd1f25/oJajVdMZkywIoAV6Ag7hzE1Mhyeup2Q1QnvFRtGQFQvtqfhlEoDAPfKAVA==
+  dependencies:
+    "@babel/runtime" "^7.1.2"
+    create-react-context "^0.3.0"
+    popper.js "^1.14.4"
+    prop-types "^15.6.1"
+    typed-styles "^0.0.7"
+    warning "^4.0.2"
+
+react-router-dom@^5.1.2:
+  version "5.1.2"
+  resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-5.1.2.tgz#06701b834352f44d37fbb6311f870f84c76b9c18"
+  integrity sha512-7BPHAaIwWpZS074UKaw1FjVdZBSVWEk8IuDXdB+OkLb8vd/WRQIpA4ag9WQk61aEfQs47wHyjWUoUGGZxpQXew==
+  dependencies:
+    "@babel/runtime" "^7.1.2"
+    history "^4.9.0"
+    loose-envify "^1.3.1"
+    prop-types "^15.6.2"
+    react-router "5.1.2"
+    tiny-invariant "^1.0.2"
+    tiny-warning "^1.0.0"
+
+react-router@5.1.2, react-router@^5.1.2:
+  version "5.1.2"
+  resolved "https://registry.yarnpkg.com/react-router/-/react-router-5.1.2.tgz#6ea51d789cb36a6be1ba5f7c0d48dd9e817d3418"
+  integrity sha512-yjEuMFy1ONK246B+rsa0cUam5OeAQ8pyclRDgpxuSCrAlJ1qN9uZ5IgyKC7gQg0w8OM50NXHEegPh/ks9YuR2A==
+  dependencies:
+    "@babel/runtime" "^7.1.2"
+    history "^4.9.0"
+    hoist-non-react-statics "^3.1.0"
+    loose-envify "^1.3.1"
+    mini-create-react-context "^0.3.0"
+    path-to-regexp "^1.7.0"
+    prop-types "^15.6.2"
+    react-is "^16.6.0"
+    tiny-invariant "^1.0.2"
+    tiny-warning "^1.0.0"
+
 react-scripts@3.2.0:
   version "3.2.0"
   resolved "https://registry.yarnpkg.com/react-scripts/-/react-scripts-3.2.0.tgz#58ccd6b4ffa27f1b4d2986cbdcaa916660e9e33c"
@@ -8078,7 +8254,7 @@ react-scripts@3.2.0:
   optionalDependencies:
     fsevents "2.0.7"
 
-react@16.10.2:
+react@^16.10.2:
   version "16.10.2"
   resolved "https://registry.yarnpkg.com/react/-/react-16.10.2.tgz#a5ede5cdd5c536f745173c8da47bda64797a4cf0"
   integrity sha512-MFVIq0DpIhrHFyqLU0S3+4dIcBhhOvBE8bJ/5kHPVOVaGdo0KuiQzpcjCPsf585WvhypqtrMILyoE2th6dT+Lw==
@@ -8354,6 +8530,11 @@ resolve-from@^4.0.0:
   resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6"
   integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==
 
+resolve-pathname@^3.0.0:
+  version "3.0.0"
+  resolved "https://registry.yarnpkg.com/resolve-pathname/-/resolve-pathname-3.0.0.tgz#99d02224d3cf263689becbb393bc560313025dcd"
+  integrity sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng==
+
 resolve-url-loader@3.1.0:
   version "3.1.0"
   resolved "https://registry.yarnpkg.com/resolve-url-loader/-/resolve-url-loader-3.1.0.tgz#54d8181d33cd1b66a59544d05cadf8e4aa7d37cc"
@@ -8568,6 +8749,30 @@ selfsigned@^1.9.1:
   dependencies:
     node-forge "0.9.0"
 
+semantic-ui-css@^2.4.1:
+  version "2.4.1"
+  resolved "https://registry.yarnpkg.com/semantic-ui-css/-/semantic-ui-css-2.4.1.tgz#f5aea39fafb787cbd905ec724272a3f9cba9004a"
+  integrity sha512-Pkp0p9oWOxlH0kODx7qFpIRYpK1T4WJOO4lNnpNPOoWKCrYsfHqYSKgk5fHfQtnWnsAKy7nLJMW02bgDWWFZFg==
+  dependencies:
+    jquery x.*
+
+semantic-ui-react@^0.88.1:
+  version "0.88.1"
+  resolved "https://registry.yarnpkg.com/semantic-ui-react/-/semantic-ui-react-0.88.1.tgz#006d63f838b651370d68e73510327308f19ff6fd"
+  integrity sha512-fCCDnRXiVJUJ9icFVSu0n0pZ2cg2QssiLM2nP4pz6aODQpPZTPtXVI6V/hFciwJ+GPkV6WZAmEmFLxR7nRVF4Q==
+  dependencies:
+    "@babel/runtime" "^7.1.2"
+    "@semantic-ui-react/event-stack" "^3.1.0"
+    "@stardust-ui/react-component-event-listener" "~0.38.0"
+    "@stardust-ui/react-component-ref" "~0.38.0"
+    classnames "^2.2.6"
+    keyboard-key "^1.0.4"
+    lodash "^4.17.15"
+    prop-types "^15.7.2"
+    react-is "^16.8.6"
+    react-popper "^1.3.4"
+    shallowequal "^1.1.0"
+
 "semver@2 || 3 || 4 || 5", semver@^5.3.0, semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0:
   version "5.7.1"
   resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7"
@@ -8680,6 +8885,11 @@ shallow-clone@^3.0.0:
   dependencies:
     kind-of "^6.0.2"
 
+shallowequal@^1.1.0:
+  version "1.1.0"
+  resolved "https://registry.yarnpkg.com/shallowequal/-/shallowequal-1.1.0.tgz#188d521de95b9087404fd4dcb68b13df0ae4e7f8"
+  integrity sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==
+
 shebang-command@^1.2.0:
   version "1.2.0"
   resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea"
@@ -9296,6 +9506,16 @@ timsort@^0.3.0:
   resolved "https://registry.yarnpkg.com/timsort/-/timsort-0.3.0.tgz#405411a8e7e6339fe64db9a234de11dc31e02bd4"
   integrity sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=
 
+tiny-invariant@^1.0.2:
+  version "1.0.6"
+  resolved "https://registry.yarnpkg.com/tiny-invariant/-/tiny-invariant-1.0.6.tgz#b3f9b38835e36a41c843a3b0907a5a7b3755de73"
+  integrity sha512-FOyLWWVjG+aC0UqG76V53yAWdXfH8bO6FNmyZOuUrzDzK8DI3/JRY25UD7+g49JWM1LXwymsKERB+DzI0dTEQA==
+
+tiny-warning@^1.0.0, tiny-warning@^1.0.2:
+  version "1.0.3"
+  resolved "https://registry.yarnpkg.com/tiny-warning/-/tiny-warning-1.0.3.tgz#94a30db453df4c643d0fd566060d60a875d84754"
+  integrity sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==
+
 tmp@^0.0.33:
   version "0.0.33"
   resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9"
@@ -9430,6 +9650,11 @@ type@^1.0.1:
   resolved "https://registry.yarnpkg.com/type/-/type-1.2.0.tgz#848dd7698dafa3e54a6c479e759c4bc3f18847a0"
   integrity sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==
 
+typed-styles@^0.0.7:
+  version "0.0.7"
+  resolved "https://registry.yarnpkg.com/typed-styles/-/typed-styles-0.0.7.tgz#93392a008794c4595119ff62dde6809dbc40a3d9"
+  integrity sha512-pzP0PWoZUhsECYjABgCGQlRGL1n7tOHsgwYv3oIiEpJwGhFTuty/YNeduxQYzXXa3Ge5BdT6sHYIQYpl4uJ+5Q==
+
 typedarray@^0.0.6:
   version "0.0.6"
   resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777"
@@ -9638,6 +9863,11 @@ validate-npm-package-license@^3.0.1:
     spdx-correct "^3.0.0"
     spdx-expression-parse "^3.0.0"
 
+value-equal@^1.0.1:
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/value-equal/-/value-equal-1.0.1.tgz#1e0b794c734c5c0cade179c437d356d931a34d6c"
+  integrity sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw==
+
 vary@~1.1.2:
   version "1.1.2"
   resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc"
@@ -9685,6 +9915,13 @@ walker@^1.0.7, walker@~1.0.5:
   dependencies:
     makeerror "1.0.x"
 
+warning@^4.0.2, warning@^4.0.3:
+  version "4.0.3"
+  resolved "https://registry.yarnpkg.com/warning/-/warning-4.0.3.tgz#16e9e077eb8a86d6af7d64aa1e05fd85b4678ca3"
+  integrity sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==
+  dependencies:
+    loose-envify "^1.0.0"
+
 watchpack@^1.6.0:
   version "1.6.0"
   resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.6.0.tgz#4bc12c2ebe8aa277a71f1d3f14d685c7b446cd00"
-- 
GitLab