Compare commits

..

8 Commits
ui ... master

Author SHA1 Message Date
Harmony
e158b5ccd6 switching between sprints 2020-03-30 15:41:10 -04:00
Harmony
aafba656c8 Bit o stylin' 2020-03-30 10:21:16 -04:00
Harmony
17de3426e2 can login with google to view boxes 2020-03-02 10:13:01 -05:00
Harmony
f58d607c5d Able to switch sprints 2019-11-25 13:27:34 -05:00
Harmony
ddaf3df1a3 added ability to cross items off 2019-11-25 10:24:32 -05:00
Harmony
4398ee2d45 Can delete any item from db except last one in list 2019-11-25 10:04:50 -05:00
Harmony
3b9ee304db writing to each box 2019-11-15 14:27:56 -05:00
Harmony
f5c8edd74c Reading from each box and writing to one 2019-11-15 11:43:03 -05:00
20 changed files with 14942 additions and 376 deletions

14647
package-lock.json generated Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -3,11 +3,12 @@
"version": "0.1.0",
"private": true,
"dependencies": {
"@material-ui/core": "^4.6.0",
"@reach/router": "^1.2.1",
"firebase": "^7.2.2",
"node-sass": "^4.13.0",
"react": "^16.11.0",
"react-dom": "^16.11.0",
"react-firebaseui": "^4.1.0",
"react-redux": "^7.1.1",
"react-scripts": "3.2.0",
"redux": "^4.0.4",

View File

@@ -3,12 +3,8 @@
<head>
<meta charset="utf-8" />
<link rel="icon" href="%PUBLIC_URL%/favicon.ico" />
<meta
name="viewport"
content="minimum-scale=1, initial-scale=1, width=device-width, shrink-to-fit=no"
/>
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="theme-color" content="#000000" />
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,400,500,700&display=swap" />
<meta
name="description"
content="Web site created using create-react-app"

View File

@@ -1,59 +1,50 @@
import React from "react";
import React, {useState, useEffect} from "react";
import StyledFirebaseAuth from 'react-firebaseui/StyledFirebaseAuth';
import firebase from'firebase'
import { Provider } from "react-redux";
import { Router } from "@reach/router";
import Boxes from "./boxes/Boxes";
import styles from "./App.module.css";
import {
Grid,
Paper,
Container,
Card,
CardContent,
Typography,
CardActions,
Button,
AppBar,
Toolbar,
IconButton,
Menu
} from "@material-ui/core";
import SignedIn from "./SignedIn/SignedIn.js";
import setupStore from "./store/setupStore.js";
import CssBaseline from "@material-ui/core/CssBaseline";
const config = {
apiKey: "AIzaSyC5krz4RBiT87RK7cEidh3n-A4H63uGcyM",
authDomain: "retrod-7e2cd.firebaseapp.com",
};
const uiConfig = {
signInFlow: 'popup',
signInSuccessUrl: '/',
signInOptions: [
firebase.auth.GoogleAuthProvider.PROVIDER_ID,
]
};
function App() {
const [sprint, setSprint] = useState(1);
const [isSignedIn, setSignIn] = useState(false)
useEffect(() => {
firebase.auth().onAuthStateChanged(user => {
setSignIn(!!user)
})
})
return (
<CssBaseline>
<Provider store={setupStore()}>
<AppBar position="static">
<Toolbar>
<Typography variant="h6">
Retro.d
</Typography>
</Toolbar>
</AppBar>
<Container fluid>
<Grid fluid container spacing={3}>
<Grid item xs={4}>
<Card>xs=3</Card>
</Grid>
<Grid item xs={4}>
<Card>xs=3</Card>
</Grid>
<Grid item xs={4}>
<Card>
<CardContent>
<Typography component="p">
well meaning and kindly.
</Typography>
<CardActions>
<Button size="small">Dismiss</Button>
</CardActions>
</CardContent>
</Card>
</Grid>
</Grid>
</Container>
</Provider>
</CssBaseline>
<Provider store={setupStore()}>
<Router>
<Boxes exact path={`/` + sprint} />
</Router>
<div>
{isSignedIn ? (
<>
<SignedIn/>
</>
) : (
<>
<h1>You're Not Signed In</h1>
<StyledFirebaseAuth uiConfig={uiConfig} firebaseAuth={firebase.auth()}/>
</>
)
}
</div>
</Provider>
);
}

View File

@@ -1,9 +1,25 @@
import React from 'react';
import { databaseRef } from '../store/firebase.js'
import styles from "./items.module.css";
export default function Item({ item }) {
export default function Item({ item, boxId, sprint }) {
const handleClick = e => {
let url;
if(boxId === "1"){
url = `retros/` + sprint + `/www/`
} else if(boxId === "2"){
url = `retros/` + sprint + `/!www/`
} else if(boxId === "3"){
url = `retros/` + sprint + `/questions/`
} else {
url = 'retros/1/a/'
}
databaseRef.ref(url + item.id + `/completed`).set(item.completed === false ? true : false)
}
return (
<div style={{ textDecoration: item.completed ? "line-through" : "" }}>
{item.title}
<div className={styles.flexItem}>
<p style={{ textDecoration: item.completed ? "line-through" : "" }}>{item.title}</p>
<button onClick={handleClick}>{item.completed === false ? <p className={styles.checkmark}></p> : <p className={styles.redx}>x</p>}</button>
</div>
)
}

View File

@@ -0,0 +1,15 @@
.flexItem{
display: flex;
justify-content: space-between;
}
button{
background: none;
border: none;
}
.checkmark{
color: green;
cursor: pointer;
}
.redx{
color: red;
}

View File

@@ -1,23 +1,45 @@
import React, {useState} from 'react';
import { databaseRef } from '../store/firebase.js'
import uuid from "uuid";
export default function NewItem({ addItem }) {
export default function NewItem({ addItem, boxId, sprint }) {
const [value, setValue ] = useState("");
const handleSubmit = e => {
e.preventDefault();
if(!value) return;
addItem(value);
setValue("");
let retroRef;
let url;
if(boxId === "1"){
url = `retros/` + sprint + `/www`;
retroRef = databaseRef.ref(url);
} else if(boxId === "2"){
url = `retros/` + sprint + `/!www`;
retroRef = databaseRef.ref(url);
} else if(boxId === "3"){
url = `retros/` + sprint + `/questions`;
retroRef = databaseRef.ref(url);
} else {
url = 'retros/1/a';
retroRef = databaseRef.ref(url);
}
const item = {
completed: false,
id: uuid.v4(),
title: value,
}
let objectId = retroRef.push(item);
databaseRef.ref(url + `/` + objectId.key + `/id`).set(objectId.key)
setValue("")
}
return (
<form onSubmit={handleSubmit}>
<input
type="text"
value={value}
placeholder="stuff"
onChange={e => setValue(e.target.value)}
/>
</form>
<div>
<form onSubmit={handleSubmit}>
<input
type="text"
value={value}
placeholder="stuff"
onChange={e => setValue(e.target.value)}
/>
</form>
</div>
)
}

21
src/SignedIn/SignedIn.js Normal file
View File

@@ -0,0 +1,21 @@
import React from "react";
import firebase from'firebase';
import SprintSelect from "../sprintSelect/SprintSelect"
import styles from "./signedIn.module.css";
export default function SignedIn() {
return (
<div>
<div className={styles.alignRight}>
<div className={styles.marginRight}>
<p>{firebase.auth().currentUser.displayName}</p>
<div>
<img align="right" className={styles.profilePicture} alt='user profile' src={firebase.auth().currentUser.photoURL} />
</div>
<button className={styles.signOutButton} onClick={() => firebase.auth().signOut()}>Sign Out</button>
</div>
</div>
<SprintSelect />
</div>
)
}

View File

@@ -0,0 +1,25 @@
body{
background: lightseagreen;
}
.alignRight{
width: 100%;
display: flex;
flex-direction: column;
align-items: flex-end;
}
.marginRight{
margin-right: 1rem;
}
.signOutButton{
background: none;
border: none;
text-decoration: underline;
cursor: pointer;
width: 100%;
text-align: right;
padding: 0;
margin-top: 1rem;
}
.alignRight .profilePicture{
max-width: 50px;
}

View File

@@ -2,12 +2,11 @@ import React from 'react';
import styles from './Boxes.module.css'
import Cards from '../cards/Cards.js'
export default function Boxes({ sectionName }) {
export default function Boxes({ sectionName, boxId, sprint }) {
return (
<div>
<h3>{sectionName}</h3>
<div className={styles.box}>
<Cards />
<Cards sectionName={sectionName} boxId={boxId} sprint={sprint} />
</div>
</div>
)

View File

@@ -1,3 +1,4 @@
.box{
border: .15rem solid black;
background: lightgrey;
}

View File

@@ -2,43 +2,42 @@ import React, { useState, useEffect, useMemo } from 'react';
import { databaseRef } from '../store/firebase.js'
import Item from '../Items/Items.js';
import NewItem from '../NewItem/NewItem.js'
import uuid from "uuid";
import DeleteItem from '../deleteItem/DeleteItem.js'
import styles from "./cards.module.css";
export function Cards({item, setItem}) {
export function Cards({item, setItem, boxId, sprint, sectionName, sprint_id}) {
return (
<>
<h3>{sectionName}</h3>
{item.map((i, index) => (
<div className={i.sprint_id === sprint ? styles.cardBackground : styles.hide} key={i.id}>
<Item
item={i}
index={index}
boxId={boxId}
sprint={sprint}
/>
<DeleteItem item={i} boxId={boxId} sprint={sprint}/>
</div>
))}
<NewItem sprint={sprint} boxId={boxId}/>
</>
)
}
const addItem = title => {
const newItem = [...item, {title, completed: false, id: uuid.v4()}];
setItem(newItem)
}
const deleteItem = id => {
const deleted = item.reduce((acc, current) => {
if(current.id !== id){
return [...acc, current];
}
return [...acc, {...current, completed: true}]
}, [])
setItem(deleted)
}
return (
<>
{item.map((i, index) => (
<div key={i.id}>
<Item
item={i}
index={index}
/>
<button onClick={() => deleteItem(i.id) }>x</button>
</div>
))}
<NewItem addItem={addItem} />
</>
)
}
export default function FirebaseWrapper() {
export default function FirebaseWrapper({sectionName, boxId, sprint}) {
const [cards, setCards] = useState(null)
const retroRef = useMemo(() => databaseRef.ref('retros/1'), []);
let retro;
if(boxId === "1"){
retro = databaseRef.ref(`retros/` + sprint + `/www`);
} else if(boxId === "2"){
retro = databaseRef.ref(`retros/` + sprint + `/!www`);
} else if(boxId === "3"){
retro = databaseRef.ref(`retros/` + sprint + `/questions`);
} else {
retro = databaseRef.ref('retros/1/a');
}
const retroRef = useMemo(() => databaseRef.ref(retro), []);
useEffect(() => {
retroRef.on('value', function(snapshot) {
const values = Object.values(snapshot.val())
@@ -52,5 +51,5 @@ export default function FirebaseWrapper() {
if(!cards) {
return <div>loading...</div>;
};
return <Cards item={cards} setItem={()=> {}}/>
return <Cards sectionName={sectionName} item={cards} boxId={boxId} sprint={sprint} setItem={()=> {}}/>
}

View File

@@ -0,0 +1,8 @@
.cardBackground{
background: white;
margin: .5em;
padding: 1em;
}
.hide{
display: none;
}

View File

@@ -1,12 +1,31 @@
import React, {useState} from 'react';
import React from 'react';
import { databaseRef } from '../store/firebase.js'
import styles from "./deleteItem.module.css";
export default function DeleteItem({ deleteItem }) {
export default function DeleteItem({ item, boxId, objectId, sprint }) {
// const [value, setValue ] = useState("");
const handleClick = e => {
deleteItem(value);
setValue("");
let retroRef;
if(boxId === "1"){
retroRef = databaseRef.ref(`retros/` + sprint + `/www/` + item.id);
} else if(boxId === "2"){
retroRef = databaseRef.ref(`retros/` + sprint + `/!www/` + item.id);
} else if(boxId === "3"){
retroRef = databaseRef.ref(`retros/` + sprint + `/questions/` + item.id);
} else {
retroRef = databaseRef.ref(`retros/1/a/` + item.id);
}
// const item = {
// completed: false,
// id: uuid.v4(),
// title: value,
// }
// databaseRef.ref.remove(retroRef);
// setValue("")
retroRef.remove()
}
return (
<button onClick={handleClick}>x</button>
<button className={styles.deleteButton} onClick={handleClick}>DELETE</button>
)
}

View File

@@ -0,0 +1,10 @@
.deleteButton{
color: darkred;
width: 100%;
display: flex;
justify-content: flex-end;
font-size: .5em;
font-weight: bolder;
letter-spacing: 1px;
cursor: pointer;
}

View File

@@ -1,17 +0,0 @@
import { useState, useEffect, useMemo } from 'react';
import { databaseRef } from '../store/firebase.js'
export default function useFirebase(pathRef) {
const [data, setData] = useState(null)
const retroRef = useMemo(() => databaseRef.ref(pathRef), [pathRef]);
useEffect(() => {
retroRef.on('value', function(snapshot) {
const values = Object.values(snapshot.val())
setData(values)
});
// this will be called when our component unmounts
return () => {
retroRef.off();
}
}, [retroRef]);
return [data]
}

View File

@@ -0,0 +1,54 @@
import React, { useState, useEffect, useMemo } from 'react';
import Boxes from "../boxes/Boxes";
import { databaseRef } from '../store/firebase.js'
import styles from "../sprintSelect/sprintSelect.module.css";
export function SprintSelect({item}) {
const [sprint, setSprint] = useState(1);
let sprintArray = [];
let sortedSprint;
sortedSprint = item.map((i, index) => (
sprintArray.push(i.sprint_id)
))
.reduce((unique, item) => {
return unique.includes(item) ? unique : [...unique, item]
}, [])
.sort();
let dropdownSprint;
dropdownSprint = sortedSprint.map((i, index) => (
<option onClick={() => setSprint(i)}>{i}</option>
));
return (
<div>
<label>Choose Sprint:</label>
<select>
{dropdownSprint}
</select>
<h3>Sprint {sprint}</h3>
<div className={styles.grid}>
<Boxes sectionName={"What Went Well"} sprint={sprint} boxId={'1'} />
<Boxes sectionName={"What Could Be Better"} sprint={sprint} boxId={'2'}/>
<Boxes sectionName={"Questions"} sprint={sprint} boxId={'3'}/>
</div>
</div>
)
}
export default function FirebaseWrapper() {
const [cards, setCards] = useState(null)
let retro = databaseRef.ref(`retros/1/www`);
const retroRef = useMemo(() => databaseRef.ref(retro), []);
useEffect(() => {
retroRef.on('value', function(snapshot) {
const values = Object.values(snapshot.val())
setCards(values)
});
return () => {
retroRef.off();
}
}, [retroRef]);
if(!cards) {
return <div>loading...</div>;
};
return <SprintSelect item={cards} setItem={()=> {}}/>
}

View File

@@ -4,11 +4,3 @@
grid-column-gap: 1em;
margin: 1rem;
}
.column {
}
/* .cssBaseline {
padding: 0;
} */

237
yarn.lock
View File

@@ -864,13 +864,6 @@
dependencies:
regenerator-runtime "^0.13.2"
"@babel/runtime@^7.3.1", "@babel/runtime@^7.4.4", "@babel/runtime@^7.6.2", "@babel/runtime@^7.6.3":
version "7.7.2"
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.7.2.tgz#111a78002a5c25fc8e3361bedc9529c696b85a6a"
integrity sha512-JONRbXbTXc9WQE2mAZd1p0Z3DZ/6vaQIkgYMSTP3KjRCyd7rCZCcfhCyX+YjwcKxcZ82UrxbRD358bpExNgrjw==
dependencies:
regenerator-runtime "^0.13.2"
"@babel/template@^7.1.0", "@babel/template@^7.4.0", "@babel/template@^7.4.4", "@babel/template@^7.6.0":
version "7.6.0"
resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.6.0.tgz#7f0159c7f5012230dad64cca42ec9bdb5c9536e6"
@@ -922,11 +915,6 @@
resolved "https://registry.yarnpkg.com/@csstools/normalize.css/-/normalize.css-9.0.1.tgz#c27b391d8457d1e893f1eddeaf5e5412d12ffbb5"
integrity sha512-6It2EVfGskxZCQhuykrfnALg7oVeiI6KclWSmGDqB0AiInVrTGB9Jp9i4/Ad21u9Jde/voVQz6eFX/eSg/UsPA==
"@emotion/hash@^0.7.1":
version "0.7.3"
resolved "https://registry.yarnpkg.com/@emotion/hash/-/hash-0.7.3.tgz#a166882c81c0c6040975dd30df24fae8549bd96f"
integrity sha512-14ZVlsB9akwvydAdaEnVnvqu6J2P6ySv39hYyl/aoB6w/V+bXX0tay8cF6paqbgZsN2n5Xh15uF4pE+GvE+itw==
"@firebase/analytics-types@0.2.2":
version "0.2.2"
resolved "https://registry.yarnpkg.com/@firebase/analytics-types/-/analytics-types-0.2.2.tgz#d442d0cda78dd5a43fe08441423d391b713987c8"
@@ -1312,72 +1300,6 @@
"@types/istanbul-reports" "^1.1.1"
"@types/yargs" "^13.0.0"
"@material-ui/core@^4.6.0":
version "4.6.0"
resolved "https://registry.yarnpkg.com/@material-ui/core/-/core-4.6.0.tgz#098a61d2af1778433d2d9a76de95be5f6aa87922"
integrity sha512-nzD0oO3R2dcX/+hmi5FUFSddMKySK76Ryuno3J/iOotbKvzXwbf9szzhL8KPNmsj+vizVNfkEfhzOuuCHRBKKQ==
dependencies:
"@babel/runtime" "^7.4.4"
"@material-ui/styles" "^4.6.0"
"@material-ui/system" "^4.5.2"
"@material-ui/types" "^4.1.1"
"@material-ui/utils" "^4.5.2"
"@types/react-transition-group" "^4.2.0"
clsx "^1.0.2"
convert-css-length "^2.0.1"
hoist-non-react-statics "^3.2.1"
normalize-scroll-left "^0.2.0"
popper.js "^1.14.1"
prop-types "^15.7.2"
react-transition-group "^4.3.0"
"@material-ui/styles@^4.6.0":
version "4.6.0"
resolved "https://registry.yarnpkg.com/@material-ui/styles/-/styles-4.6.0.tgz#15679fab6dcbe0cc2416f01a22966f3ea26607c5"
integrity sha512-lqqh4UEMdIYcU1Yth4pQyMTah02uAkg3NOT3MirN9FUexdL8pNA6zCHigEgDSfwmvnXyxHhxTkphfy0DRfnt9w==
dependencies:
"@babel/runtime" "^7.4.4"
"@emotion/hash" "^0.7.1"
"@material-ui/types" "^4.1.1"
"@material-ui/utils" "^4.5.2"
clsx "^1.0.2"
csstype "^2.5.2"
hoist-non-react-statics "^3.2.1"
jss "^10.0.0"
jss-plugin-camel-case "^10.0.0"
jss-plugin-default-unit "^10.0.0"
jss-plugin-global "^10.0.0"
jss-plugin-nested "^10.0.0"
jss-plugin-props-sort "^10.0.0"
jss-plugin-rule-value-function "^10.0.0"
jss-plugin-vendor-prefixer "^10.0.0"
prop-types "^15.7.2"
"@material-ui/system@^4.5.2":
version "4.5.2"
resolved "https://registry.yarnpkg.com/@material-ui/system/-/system-4.5.2.tgz#7143bd8422a3f33f435c23f378136254004bbd60"
integrity sha512-h9RWvdM9XKlHHqwiuhyvWdobptQkHli+m2jJFs7i1AI/hmGsIc4reDmS7fInhETgt/Txx7uiAIznfRNIIVHmQw==
dependencies:
"@babel/runtime" "^7.4.4"
"@material-ui/utils" "^4.5.2"
prop-types "^15.7.2"
"@material-ui/types@^4.1.1":
version "4.1.1"
resolved "https://registry.yarnpkg.com/@material-ui/types/-/types-4.1.1.tgz#b65e002d926089970a3271213a3ad7a21b17f02b"
integrity sha512-AN+GZNXytX9yxGi0JOfxHrRTbhFybjUJ05rnsBVjcB+16e466Z0Xe5IxawuOayVZgTBNDxmPKo5j4V6OnMtaSQ==
dependencies:
"@types/react" "*"
"@material-ui/utils@^4.5.2":
version "4.5.2"
resolved "https://registry.yarnpkg.com/@material-ui/utils/-/utils-4.5.2.tgz#4c2fb531d357cf0da8cece53b588dff9b0bde934"
integrity sha512-zhbNfHd1gLa8At6RPDG7uMZubHxbY+LtM6IkSfeWi6Lo4Ax80l62YaN1QmUpO1IvGCkn/j62tQX3yObiQZrJsQ==
dependencies:
"@babel/runtime" "^7.4.4"
prop-types "^15.7.2"
react-is "^16.8.6"
"@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"
@@ -1633,31 +1555,11 @@
resolved "https://registry.yarnpkg.com/@types/node/-/node-10.17.0.tgz#537c61a1df699a8331c79dab2ccc2c8799873c66"
integrity sha512-wuJwN2KV4tIRz1bu9vq5kSPasJ8IsEjZaP1ZR7KlmdUZvGF/rXy8DmXOVwUD0kAtvtJ7aqMKPqUXC0NUTDbrDg==
"@types/prop-types@*":
version "15.7.3"
resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.3.tgz#2ab0d5da2e5815f94b0b9d4b95d1e5f243ab2ca7"
integrity sha512-KfRL3PuHmqQLOG+2tGpRO26Ctg+Cq1E01D2DMriKEATHgWLfeNDmq9e29Q9WIky0dQ3NPkd1mzYH8Lm936Z9qw==
"@types/q@^1.5.1":
version "1.5.2"
resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.2.tgz#690a1475b84f2a884fd07cd797c00f5f31356ea8"
integrity sha512-ce5d3q03Ex0sy4R14722Rmt6MT07Ua+k4FwDfdcToYJcMKNtRVQvJ6JCAPdAmAnbRb6CsX6aYb9m96NGod9uTw==
"@types/react-transition-group@^4.2.0":
version "4.2.3"
resolved "https://registry.yarnpkg.com/@types/react-transition-group/-/react-transition-group-4.2.3.tgz#4924133f7268694058e415bf7aea2d4c21131470"
integrity sha512-Hk8jiuT7iLOHrcjKP/ZVSyCNXK73wJAUz60xm0mVhiRujrdiI++j4duLiL282VGxwAgxetHQFfqA29LgEeSkFA==
dependencies:
"@types/react" "*"
"@types/react@*":
version "16.9.11"
resolved "https://registry.yarnpkg.com/@types/react/-/react-16.9.11.tgz#70e0b7ad79058a7842f25ccf2999807076ada120"
integrity sha512-UBT4GZ3PokTXSWmdgC/GeCGEJXE5ofWyibCcecRLUVN2ZBpXQGVgQGtG2foS7CrTKFKlQVVswLvf7Js6XA/CVQ==
dependencies:
"@types/prop-types" "*"
csstype "^2.2.0"
"@types/stack-utils@^1.0.1":
version "1.0.1"
resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-1.0.1.tgz#0a851d3bd96498fa25c33ab7278ed3bd65f06c3e"
@@ -2949,11 +2851,6 @@ clone-deep@^4.0.1:
kind-of "^6.0.2"
shallow-clone "^3.0.0"
clsx@^1.0.2:
version "1.0.4"
resolved "https://registry.yarnpkg.com/clsx/-/clsx-1.0.4.tgz#0c0171f6d5cb2fe83848463c15fcc26b4df8c2ec"
integrity sha512-1mQ557MIZTrL/140j+JVdRM6e31/OA4vTYxXgqIIZlndyfjHpyawKZia1Im05Vp9BWmImkcNrNtFYQMyFcgJDg==
co@^4.6.0:
version "4.6.0"
resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184"
@@ -3142,11 +3039,6 @@ content-type@~1.0.4:
resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b"
integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==
convert-css-length@^2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/convert-css-length/-/convert-css-length-2.0.1.tgz#90a76bde5bfd24d72881a5b45d02249b2c1d257c"
integrity sha512-iGpbcvhLPRKUbBc0Quxx7w/bV14AC3ItuBEGMahA5WTYqB8lq9jH0kTXFheCBASsYnqeMFZhiTruNxr1N59Axg==
convert-source-map@1.6.0, convert-source-map@^1.1.0, convert-source-map@^1.4.0:
version "1.6.0"
resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.6.0.tgz#51b537a8c43e0f04dec1993bffcdd504e758ac20"
@@ -3389,14 +3281,6 @@ css-unit-converter@^1.1.1:
resolved "https://registry.yarnpkg.com/css-unit-converter/-/css-unit-converter-1.1.1.tgz#d9b9281adcfd8ced935bdbaba83786897f64e996"
integrity sha1-2bkoGtz9jO2TW9urqDeGiX9k6ZY=
css-vendor@^2.0.6:
version "2.0.7"
resolved "https://registry.yarnpkg.com/css-vendor/-/css-vendor-2.0.7.tgz#4e6d53d953c187981576d6a542acc9fb57174bda"
integrity sha512-VS9Rjt79+p7M0WkPqcAza4Yq1ZHrsHrwf7hPL/bjQB+c1lwmAI+1FXxYTYt818D/50fFVflw0XKleiBN5RITkg==
dependencies:
"@babel/runtime" "^7.6.2"
is-in-browser "^1.0.2"
css-what@2.1, css-what@^2.1.2:
version "2.1.3"
resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.3.tgz#a6d7604573365fe74686c3f311c56513d88285f2"
@@ -3514,11 +3398,6 @@ cssstyle@^1.0.0, cssstyle@^1.1.1:
dependencies:
cssom "0.3.x"
csstype@^2.2.0, csstype@^2.5.2, csstype@^2.6.5, csstype@^2.6.7:
version "2.6.7"
resolved "https://registry.yarnpkg.com/csstype/-/csstype-2.6.7.tgz#20b0024c20b6718f4eda3853a1f5a1cce7f5e4a5"
integrity sha512-9Mcn9sFbGBAdmimWb2gLVDtFJzeKtDGIr76TUqmjZrw9LFXBMSU70lcs+C0/7fyCd6iBDqmksUcCOUIkisPHsQ==
currently-unhandled@^0.4.1:
version "0.4.1"
resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea"
@@ -3796,14 +3675,6 @@ dom-converter@^0.2:
dependencies:
utila "~0.4"
dom-helpers@^5.0.1:
version "5.1.3"
resolved "https://registry.yarnpkg.com/dom-helpers/-/dom-helpers-5.1.3.tgz#7233248eb3a2d1f74aafca31e52c5299cc8ce821"
integrity sha512-nZD1OtwfWGRBWlpANxacBEZrEuLa16o1nh7YopFWeoF68Zt8GGEmzHu6Xv4F3XaFIC+YXtTLrzgqKxFgLEe4jw==
dependencies:
"@babel/runtime" "^7.6.3"
csstype "^2.6.7"
dom-serializer@0:
version "0.2.1"
resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.2.1.tgz#13650c850daffea35d8b626a4cfc4d3a17643fdb"
@@ -5088,7 +4959,7 @@ hmac-drbg@^1.0.0:
minimalistic-assert "^1.0.0"
minimalistic-crypto-utils "^1.0.1"
hoist-non-react-statics@^3.2.1, hoist-non-react-statics@^3.3.0:
hoist-non-react-statics@^3.3.0:
version "3.3.0"
resolved "https://artifactory-eng.cargurus.com/artifactory/api/npm/npm-registry/hoist-non-react-statics/-/hoist-non-react-statics-3.3.0.tgz#b09178f0122184fb95acf525daaecb4d8f45958b"
integrity sha1-sJF48BIhhPuVrPUl2q7LTY9FlYs=
@@ -5249,11 +5120,6 @@ 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.3:
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.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"
@@ -5660,11 +5526,6 @@ is-glob@^4.0.0, is-glob@^4.0.1:
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@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195"
@@ -6409,75 +6270,6 @@ jsprim@^1.2.2:
json-schema "0.2.3"
verror "1.10.0"
jss-plugin-camel-case@^10.0.0:
version "10.0.0"
resolved "https://registry.yarnpkg.com/jss-plugin-camel-case/-/jss-plugin-camel-case-10.0.0.tgz#d601bae2e8e2041cc526add289dcd7062db0a248"
integrity sha512-yALDL00+pPR4FJh+k07A8FeDvfoPPuXU48HLy63enAubcVd3DnS+2rgqPXglHDGixIDVkCSXecl/l5GAMjzIbA==
dependencies:
"@babel/runtime" "^7.3.1"
hyphenate-style-name "^1.0.3"
jss "10.0.0"
jss-plugin-default-unit@^10.0.0:
version "10.0.0"
resolved "https://registry.yarnpkg.com/jss-plugin-default-unit/-/jss-plugin-default-unit-10.0.0.tgz#601caf5f576fc0c66986fbe8a9aa37307a3a3ea3"
integrity sha512-sURozIOdCtGg9ap18erQ+ijndAfEGtTaetxfU3H4qwC18Bi+fdvjlY/ahKbuu0ASs7R/+WKCP7UaRZOjUDMcdQ==
dependencies:
"@babel/runtime" "^7.3.1"
jss "10.0.0"
jss-plugin-global@^10.0.0:
version "10.0.0"
resolved "https://registry.yarnpkg.com/jss-plugin-global/-/jss-plugin-global-10.0.0.tgz#0fed1b6461e0d57d6e394f877529009bc1cb3cb6"
integrity sha512-80ofWKSQUo62bxLtRoTNe0kFPtHgUbAJeOeR36WEGgWIBEsXLyXOnD5KNnjPqG4heuEkz9eSLccjYST50JnI7Q==
dependencies:
"@babel/runtime" "^7.3.1"
jss "10.0.0"
jss-plugin-nested@^10.0.0:
version "10.0.0"
resolved "https://registry.yarnpkg.com/jss-plugin-nested/-/jss-plugin-nested-10.0.0.tgz#d37ecc013c3b0d0e4acc2b48f6b62da6ae53948b"
integrity sha512-waxxwl/po1hN3azTyixKnr8ReEqUv5WK7WsO+5AWB0bFndML5Yqnt8ARZ90HEg8/P6WlqE/AB2413TkCRZE8bA==
dependencies:
"@babel/runtime" "^7.3.1"
jss "10.0.0"
tiny-warning "^1.0.2"
jss-plugin-props-sort@^10.0.0:
version "10.0.0"
resolved "https://registry.yarnpkg.com/jss-plugin-props-sort/-/jss-plugin-props-sort-10.0.0.tgz#38a13407384c2a4a7c026659488350669b953b18"
integrity sha512-41mf22CImjwNdtOG3r+cdC8+RhwNm616sjHx5YlqTwtSJLyLFinbQC/a4PIFk8xqf1qpFH1kEAIw+yx9HaqZ3g==
dependencies:
"@babel/runtime" "^7.3.1"
jss "10.0.0"
jss-plugin-rule-value-function@^10.0.0:
version "10.0.0"
resolved "https://registry.yarnpkg.com/jss-plugin-rule-value-function/-/jss-plugin-rule-value-function-10.0.0.tgz#3ec1b781b7c86080136dbef6c36e91f20244b72e"
integrity sha512-Jw+BZ8JIw1f12V0SERqGlBT1JEPWax3vuZpMym54NAXpPb7R1LYHiCTIlaJUyqvIfEy3kiHMtgI+r2whGgRIxQ==
dependencies:
"@babel/runtime" "^7.3.1"
jss "10.0.0"
jss-plugin-vendor-prefixer@^10.0.0:
version "10.0.0"
resolved "https://registry.yarnpkg.com/jss-plugin-vendor-prefixer/-/jss-plugin-vendor-prefixer-10.0.0.tgz#400280535b0f483a9c78105afe4eee61b70018eb"
integrity sha512-qslqvL0MUbWuzXJWdUxpj6mdNUX8jr4FFTo3aZnAT65nmzWL7g8oTr9ZxmTXXgdp7ANhS1QWE7036/Q2isFBpw==
dependencies:
"@babel/runtime" "^7.3.1"
css-vendor "^2.0.6"
jss "10.0.0"
jss@10.0.0, jss@^10.0.0:
version "10.0.0"
resolved "https://registry.yarnpkg.com/jss/-/jss-10.0.0.tgz#998d5026c02accae15708de83bd6ba57bac977d2"
integrity sha512-TPpDFsiBjuERiL+dFDq8QCdiF9oDasPcNqCKLGCo/qED3fNYOQ8PX2lZhknyTiAt3tZrfOFbb0lbQ9lTjPZxsQ==
dependencies:
"@babel/runtime" "^7.3.1"
csstype "^2.6.5"
is-in-browser "^1.1.3"
tiny-warning "^1.0.2"
jsx-ast-utils@^2.1.0, jsx-ast-utils@^2.2.1:
version "2.2.3"
resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-2.2.3.tgz#8a9364e402448a3ce7f14d357738310d9248054f"
@@ -7347,11 +7139,6 @@ 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.2.0:
version "0.2.0"
resolved "https://registry.yarnpkg.com/normalize-scroll-left/-/normalize-scroll-left-0.2.0.tgz#9445d74275f303cc661e113329aefa492f58114c"
integrity sha512-t5oCENZJl8TGusJKoCJm7+asaSsPuNmK6+iEjrZ5TyBj2f02brCRsd4c83hwtu+e5d4LCSBZ0uoDlMjBo+A8yA==
normalize-url@1.9.1:
version "1.9.1"
resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-1.9.1.tgz#2cc0d66b31ea23036458436e3620d85954c66c3c"
@@ -7954,11 +7741,6 @@ pnp-webpack-plugin@1.5.0:
dependencies:
ts-pnp "^1.1.2"
popper.js@^1.14.1:
version "1.16.0"
resolved "https://registry.yarnpkg.com/popper.js/-/popper.js-1.16.0.tgz#2e1816bcbbaa518ea6c2e15a466f4cb9c6e2fbb3"
integrity sha512-+G+EkOPoE5S/zChTpmBSSDYmhXJ5PsW8eMhH8cP/CQHMFPBG/kC9Y5IIw6qNYgdJ+/COf0ddY2li28iHaZRSjw==
portfinder@^1.0.9:
version "1.0.25"
resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.25.tgz#254fd337ffba869f4b9d37edc298059cb4d35eca"
@@ -8967,7 +8749,7 @@ 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.7.0, react-is@^16.8.1, react-is@^16.8.4, react-is@^16.8.6, react-is@^16.9.0:
react-is@^16.7.0, react-is@^16.8.1, react-is@^16.8.4, react-is@^16.9.0:
version "16.11.0"
resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.11.0.tgz#b85dfecd48ad1ce469ff558a882ca8e8313928fa"
integrity sha512-gbBVYR2p8mnriqAwWx9LbuUrShnAuSCNnuPGyc7GJrMVQtPDAh8iLpv7FRuMPFb56KkaVZIYSz1PrjI9q0QPCw==
@@ -9045,16 +8827,6 @@ react-scripts@3.2.0:
optionalDependencies:
fsevents "2.0.7"
react-transition-group@^4.3.0:
version "4.3.0"
resolved "https://registry.yarnpkg.com/react-transition-group/-/react-transition-group-4.3.0.tgz#fea832e386cf8796c58b61874a3319704f5ce683"
integrity sha512-1qRV1ZuVSdxPlPf4O8t7inxUGpdyO5zG9IoNfJxSO0ImU2A1YWkEQvFPuIPZmMLkg5hYs7vv5mMOyfgSkvAwvw==
dependencies:
"@babel/runtime" "^7.5.5"
dom-helpers "^5.0.1"
loose-envify "^1.4.0"
prop-types "^15.6.2"
react@^16.11.0:
version "16.11.0"
resolved "https://registry.yarnpkg.com/react/-/react-16.11.0.tgz#d294545fe62299ccee83363599bf904e4a07fdbb"
@@ -10383,11 +10155,6 @@ timsort@^0.3.0:
resolved "https://registry.yarnpkg.com/timsort/-/timsort-0.3.0.tgz#405411a8e7e6339fe64db9a234de11dc31e02bd4"
integrity sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=
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"