mirror of
https://github.com/Rushilwiz/house-party.git
synced 2025-04-20 19:40:17 -04:00
finished basic room functionality and user auth
This commit is contained in:
parent
2238bd403c
commit
afc94bc41b
|
@ -14,11 +14,11 @@ def generate_unique_code():
|
|||
|
||||
# Create your models here.
|
||||
class Room(models.Model):
|
||||
code = models.CharField(max_length=8, default="", unique=True)
|
||||
code = models.CharField(max_length=8, default=generate_unique_code, unique=True)
|
||||
host = models.CharField(max_length=50, unique=True)
|
||||
guest_can_pause = models.BooleanField(null=False, default=False)
|
||||
votes_to_skip = models.IntegerField(null=False, default=0)
|
||||
created_at = models.DateTimeField(auto_now_add=True)
|
||||
|
||||
def __str__(self):
|
||||
return f'Room ({self.code}'
|
||||
return f'Room ({self.code})'
|
||||
|
|
|
@ -4,4 +4,16 @@ from .models import Room
|
|||
class RoomSerializer(serializers.ModelSerializer):
|
||||
class Meta:
|
||||
model = Room
|
||||
fields = ('id', 'code', 'host', 'guest_can_pause', 'votes_to_skip', 'created_at')
|
||||
fields = ('id', 'code', 'host', 'guest_can_pause', 'votes_to_skip', 'created_at')
|
||||
|
||||
class CreateRoomSerializer(serializers.ModelSerializer):
|
||||
class Meta:
|
||||
model = Room
|
||||
fields = ('guest_can_pause', 'votes_to_skip')
|
||||
|
||||
class UpdateRoomSerializer(serializers.ModelSerializer):
|
||||
code = serializers.CharField(validators=[])
|
||||
|
||||
class Meta:
|
||||
model = Room
|
||||
fields = ('guest_can_pause', 'votes_to_skip', 'code')
|
|
@ -2,5 +2,11 @@ from django.urls import path
|
|||
from . import views
|
||||
|
||||
urlpatterns = [
|
||||
path('rooms', views.RoomView.as_view(), name="rooms")
|
||||
path('rooms', views.RoomView.as_view(), name="rooms"),
|
||||
path('rooms/create', views.CreateRoomView.as_view(), name="create-room"),
|
||||
path('rooms/get', views.GetRoom.as_view(), name="get-room"),
|
||||
path('rooms/join', views.JoinRoom.as_view(), name="join-room"),
|
||||
path('rooms/leave', views.LeaveRoom.as_view(), name='leave-room'),
|
||||
path('rooms/update', views.UpdateRoomView.as_view(), name='update-room'),
|
||||
path('rooms/user-details', views.UserDetails.as_view(), name='user-details')
|
||||
]
|
||||
|
|
120
api/views.py
120
api/views.py
|
@ -1,16 +1,124 @@
|
|||
from django.shortcuts import render
|
||||
from rest_framework.generics import CreateAPIView
|
||||
from django.http import JsonResponse
|
||||
from rest_framework.views import APIView
|
||||
from rest_framework.generics import ListAPIView
|
||||
from rest_framework import status
|
||||
from rest_framework.response import Response
|
||||
from .serializers import RoomSerializer
|
||||
from .serializers import RoomSerializer, CreateRoomSerializer, UpdateRoomSerializer
|
||||
from .models import Room
|
||||
|
||||
# Create your views here.
|
||||
|
||||
class RoomView(CreateAPIView):
|
||||
class RoomView(ListAPIView):
|
||||
queryset = Room.objects.all()
|
||||
serializer_class = RoomSerializer
|
||||
|
||||
class GetRoom(APIView):
|
||||
serializer_class = RoomSerializer
|
||||
lookup_url_kwarg = 'code'
|
||||
|
||||
def get(self, request, format=None):
|
||||
rooms = Room.objects.all()
|
||||
serializer = RoomSerializer(rooms, many=True)
|
||||
return Response(serializer.data)
|
||||
code = request.GET.get(self.lookup_url_kwarg)
|
||||
if code != None:
|
||||
room = Room.objects.filter(code=code)
|
||||
if room.exists():
|
||||
data = RoomSerializer(room[0]).data
|
||||
data['is_host'] = self.request.session.session_key == room[0].host
|
||||
return Response(data, status=status.HTTP_200_OK)
|
||||
else:
|
||||
return Response({'Room Not Found': 'Invalid Room Code.'}, status=status.HTTP_400_BAD_REQUEST)
|
||||
|
||||
class JoinRoom(APIView):
|
||||
lookup_url_kwarg = 'code'
|
||||
|
||||
def post(self, request, format=None):
|
||||
if not self.request.session.exists(self.request.session.session_key):
|
||||
self.request.session.create()
|
||||
|
||||
code = request.data.get(self.lookup_url_kwarg)
|
||||
if code != None:
|
||||
room_set = Room.objects.filter(code=code)
|
||||
if room_set.exists():
|
||||
room = room_set[0]
|
||||
self.request.session['code'] = code
|
||||
return Response({'message': 'Room Joined.'}, status=status.HTTP_200_OK)
|
||||
else:
|
||||
return Response({'Bad Request': 'Invalid room code'}, status=status.HTTP_400_BAD_REQUEST)
|
||||
else:
|
||||
return Response({'Bad Request': 'Invalid data, did not find code'}, status=status.HTTP_400_BAD_REQUEST)
|
||||
|
||||
class LeaveRoom(APIView):
|
||||
def patch(self, request, format=None):
|
||||
if 'code' in self.request.session:
|
||||
self.request.session.pop('code')
|
||||
host = self.request.session.session_key
|
||||
room_set = Room.objects.filter(host=host)
|
||||
if room_set.exists():
|
||||
room = room_set[0]
|
||||
room.delete()
|
||||
|
||||
return Response({'message': 'Success'}, status=status.HTTP_200_OK)
|
||||
|
||||
class CreateRoomView(APIView):
|
||||
serializer_class = CreateRoomSerializer
|
||||
|
||||
def post(self, request, format=None):
|
||||
if not self.request.session.exists(self.request.session.session_key):
|
||||
self.request.session.create()
|
||||
|
||||
serializer = self.serializer_class(data=request.data)
|
||||
if serializer.is_valid():
|
||||
guest_can_pause = serializer.data.get("guest_can_pause")
|
||||
votes_to_skip = serializer.data.get("votes_to_skip")
|
||||
host = self.request.session.session_key
|
||||
queryset = Room.objects.filter(host=host)
|
||||
if queryset.exists():
|
||||
room = queryset[0]
|
||||
room.guest_can_pause = guest_can_pause
|
||||
room.votes_to_skip = votes_to_skip
|
||||
room.save(update_fields=['guest_can_pause', 'votes_to_skip'])
|
||||
self.request.session['code'] = room.code
|
||||
return Response(RoomSerializer(room).data, status=status.HTTP_200_OK)
|
||||
else:
|
||||
room = Room(host=host, guest_can_pause=guest_can_pause, votes_to_skip=votes_to_skip)
|
||||
room.save()
|
||||
self.request.session['code'] = room.code
|
||||
return Response(RoomSerializer(room).data, status=status.HTTP_201_CREATED)
|
||||
else:
|
||||
return Response({'Bad Request': 'Invalid data...'}, status=status.HTTP_400_BAD_REQUEST)
|
||||
|
||||
class UpdateRoomView(APIView):
|
||||
serializer_class = UpdateRoomSerializer
|
||||
def patch(self, request, format=None):
|
||||
serializer = self.serializer_class(data=request.data)
|
||||
if serializer.is_valid():
|
||||
guest_can_pause = serializer.data.get('guest_can_pause')
|
||||
votes_to_skip = serializer.data.get('votes_to_skip')
|
||||
code = serializer.data.get('code')
|
||||
|
||||
room_set = Room.objects.filter(code=code)
|
||||
if room_set.exists():
|
||||
room = room_set[0]
|
||||
user_id = self.request.session.session_key
|
||||
if room.host != user_id:
|
||||
return Response({'message': 'You are not the host of this room.'}, status = status.HTTP_403_FORBIDDEN)
|
||||
|
||||
room.guest_can_pause = guest_can_pause
|
||||
room.votes_to_skip = votes_to_skip
|
||||
room.code = code
|
||||
room.save(update_fields=['guest_can_pause', 'votes_to_skip'])
|
||||
return Response(RoomSerializer(room).data, status=status.HTTP_200_OK)
|
||||
else:
|
||||
return Response({'Bad Request': 'No room was found'}, status=status.HTTP_404_NOT_FOUND)
|
||||
|
||||
return Response({'Bad Request': 'Invalid data'}, status=status.HTTP_400_BAD_REQUEST)
|
||||
|
||||
|
||||
class UserDetails(APIView):
|
||||
def get(self, request, format=None):
|
||||
if not self.request.session.exists(self.request.session.session_key):
|
||||
self.request.session.create()
|
||||
data = {
|
||||
'code': self.request.session.get('code')
|
||||
}
|
||||
return JsonResponse(data, status=status.HTTP_200_OK)
|
|
@ -31,6 +31,9 @@
|
|||
"@babel/plugin-proposal-class-properties": "^7.12.1",
|
||||
"@material-ui/core": "^4.11.2",
|
||||
"@material-ui/icons": "^4.11.2",
|
||||
"@material-ui/lab": "^4.0.0-alpha.57",
|
||||
"eslint-config-react-app": "^6.0.0",
|
||||
"eslint-plugin-jest": "^24.1.3",
|
||||
"react-router-dom": "^5.2.0"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,46 +1,22 @@
|
|||
import React, { useEffect, useState } from "react";
|
||||
import Hello from "./components/Hello";
|
||||
import { useFetch } from "./useFetch";
|
||||
import { useForm } from "./useForm";
|
||||
import React from "react";
|
||||
import { BrowserRouter as Router, Route, Switch } from "react-router-dom";
|
||||
import CreateRoom from "./components/CreateRoom";
|
||||
import Home from "./components/Home";
|
||||
import JoinRoom from "./components/JoinRoom";
|
||||
import Room from "./components/Room";
|
||||
|
||||
const App = (props) => {
|
||||
const [values, handleChange] = useForm({
|
||||
firstName: "",
|
||||
email: "",
|
||||
password: "",
|
||||
});
|
||||
|
||||
const [count, setCount] = useState(0);
|
||||
const { data, loading } = useFetch(`http://numbersapi.com/${count}/math`);
|
||||
return (
|
||||
<>
|
||||
<div>{!data ? "loading..." : data}</div>
|
||||
<div>count = {count}</div>
|
||||
<button onClick={() => setCount((c) => c + 1)}>increment</button>
|
||||
{/* <button onClick={() => setShowHello(!showHello)}>show/hide</button> */}
|
||||
{/* {showHello && <Hello />} */}
|
||||
<div>
|
||||
<input
|
||||
name="email"
|
||||
placeholder="email"
|
||||
value={values.email}
|
||||
onChange={handleChange}
|
||||
/>
|
||||
<input
|
||||
name="firstName"
|
||||
placeholder="first name"
|
||||
value={values.firstName}
|
||||
onChange={handleChange}
|
||||
/>
|
||||
<input
|
||||
type="password"
|
||||
placeholder="password"
|
||||
name="password"
|
||||
value={values.password}
|
||||
onChange={handleChange}
|
||||
/>
|
||||
</div>
|
||||
</>
|
||||
<div className="center">
|
||||
<Router>
|
||||
<Switch>
|
||||
<Route path="/" exact component={Home} />
|
||||
<Route path="/join" component={JoinRoom} />
|
||||
<Route path="/create" component={CreateRoom} />
|
||||
<Route path="/room/:code" component={Room} />
|
||||
</Switch>
|
||||
</Router>
|
||||
</div>
|
||||
);
|
||||
};
|
||||
|
||||
|
|
164
frontend/src/components/CreateRoom.js
Normal file
164
frontend/src/components/CreateRoom.js
Normal file
|
@ -0,0 +1,164 @@
|
|||
import React, { Component, useState } from "react";
|
||||
import { Link } from "react-router-dom";
|
||||
|
||||
import {
|
||||
Button,
|
||||
Grid,
|
||||
Typography,
|
||||
TextField,
|
||||
FormHelperText,
|
||||
FormControl,
|
||||
Radio,
|
||||
RadioGroup,
|
||||
FormLabel,
|
||||
FormControlLabel,
|
||||
Collapse,
|
||||
} from "@material-ui/core";
|
||||
|
||||
import { Alert } from "@material-ui/lab";
|
||||
|
||||
const DEFAULT_VOTES = 2;
|
||||
|
||||
const CreateRoom = (props) => {
|
||||
const [guestCanPause, setGuestCanPause] = useState(
|
||||
props.guestCanPause || true
|
||||
);
|
||||
|
||||
const [votesToSkip, setVotesToSkip] = useState(
|
||||
props.votesToSkip || DEFAULT_VOTES
|
||||
);
|
||||
|
||||
const [error, setError] = useState("");
|
||||
const [success, setSuccess] = useState("");
|
||||
|
||||
const onSubmitCreate = () => {
|
||||
const requestOptions = {
|
||||
method: "POST",
|
||||
headers: { "Content-Type": "application/json" },
|
||||
body: JSON.stringify({
|
||||
votes_to_skip: votesToSkip,
|
||||
guest_can_pause: guestCanPause,
|
||||
}),
|
||||
};
|
||||
|
||||
fetch("/api/rooms/create", requestOptions)
|
||||
.then((response) => response.json())
|
||||
.then((data) => props.history.push(`/room/${data.code}`));
|
||||
};
|
||||
|
||||
const onSubmitUpdate = () => {
|
||||
const requestOptions = {
|
||||
method: "PATCH",
|
||||
headers: { "Content-Type": "application/json" },
|
||||
body: JSON.stringify({
|
||||
votes_to_skip: votesToSkip,
|
||||
guest_can_pause: guestCanPause,
|
||||
code: props.code,
|
||||
}),
|
||||
};
|
||||
|
||||
fetch("/api/rooms/update", requestOptions).then((response) => {
|
||||
if (response.ok) {
|
||||
setSuccess("Room updated!");
|
||||
} else {
|
||||
setError("Error updating room.");
|
||||
}
|
||||
});
|
||||
|
||||
props.updateCallback();
|
||||
};
|
||||
|
||||
const title = props.update ? "Update Room" : "Create a Room";
|
||||
|
||||
const createButton = () => {
|
||||
return (
|
||||
<>
|
||||
<Grid item xs={12} align="center">
|
||||
<Button color="primary" variant="contained" onClick={onSubmitCreate}>
|
||||
Create A room
|
||||
</Button>
|
||||
</Grid>
|
||||
<Grid item xs={12} align="center">
|
||||
<Button color="secondary" variant="contained" to="/" component={Link}>
|
||||
Back
|
||||
</Button>
|
||||
</Grid>
|
||||
</>
|
||||
);
|
||||
};
|
||||
const updateButton = () => {
|
||||
return (
|
||||
<>
|
||||
<Grid item xs={12} align="center">
|
||||
<Button color="primary" variant="contained" onClick={onSubmitUpdate}>
|
||||
Update room~
|
||||
</Button>
|
||||
</Grid>
|
||||
</>
|
||||
);
|
||||
};
|
||||
|
||||
return (
|
||||
<Grid container spacing={1}>
|
||||
<Grid item xs={12} align="center">
|
||||
<Collapse in={error != "" || success != ""}>
|
||||
<Alert>{success != "" ? success : error}</Alert>
|
||||
</Collapse>
|
||||
</Grid>
|
||||
<Grid item xs={12} align="center">
|
||||
<Typography component="h4" variant="h4">
|
||||
{title}
|
||||
</Typography>
|
||||
</Grid>
|
||||
<Grid item xs={12} align="center">
|
||||
<FormControl component="fieldset">
|
||||
<FormHelperText>
|
||||
<div align="center">Guest Control of Playback State</div>
|
||||
</FormHelperText>
|
||||
<RadioGroup
|
||||
row
|
||||
defaultValue={props.guestCanPause.toString()}
|
||||
onChange={(e) => {
|
||||
setGuestCanPause(e.target.value === "true" ? true : false);
|
||||
}}
|
||||
>
|
||||
<FormControlLabel
|
||||
value="true"
|
||||
control={<Radio color="primary" />}
|
||||
label="Play/Pause"
|
||||
labelPlacement="bottom"
|
||||
/>
|
||||
<FormControlLabel
|
||||
value="false"
|
||||
control={<Radio color="secondary" />}
|
||||
label="No Control"
|
||||
labelPlacement="bottom"
|
||||
/>
|
||||
</RadioGroup>
|
||||
</FormControl>
|
||||
<Grid item xs={12} align="center">
|
||||
<FormControl>
|
||||
<TextField
|
||||
required={true}
|
||||
type="number"
|
||||
defaultValue={props.votesToSkip}
|
||||
inputProps={{
|
||||
min: 1,
|
||||
style: { textAlign: "center" },
|
||||
}}
|
||||
onChange={(e) => {
|
||||
setVotesToSkip(e.target.value);
|
||||
}}
|
||||
/>
|
||||
<FormHelperText>
|
||||
<div align="center">Votes required to skip song</div>
|
||||
</FormHelperText>
|
||||
</FormControl>
|
||||
</Grid>
|
||||
</Grid>
|
||||
{props.update ? updateButton() : createButton()}
|
||||
</Grid>
|
||||
);
|
||||
};
|
||||
|
||||
export default CreateRoom;
|
|
@ -1,15 +0,0 @@
|
|||
import React, { useEffect } from "react";
|
||||
|
||||
function Hello(props) {
|
||||
useEffect(() => {
|
||||
console.log("bruh");
|
||||
|
||||
return () => {
|
||||
console.log("unmounted!");
|
||||
};
|
||||
}, []);
|
||||
|
||||
return <div>Hey!</div>;
|
||||
}
|
||||
|
||||
export default Hello;
|
41
frontend/src/components/Home.js
Normal file
41
frontend/src/components/Home.js
Normal file
|
@ -0,0 +1,41 @@
|
|||
import React, { useEffect, useState } from "react";
|
||||
import { Link, Redirect } from "react-router-dom";
|
||||
import { Grid, Button, ButtonGroup, Typography } from "@material-ui/core";
|
||||
|
||||
const Home = (props) => {
|
||||
const [code, setCode] = useState();
|
||||
|
||||
useEffect(() => {
|
||||
fetch("/api/rooms/user-details")
|
||||
.then((response) => response.json())
|
||||
.then((data) => {
|
||||
setCode(data.code);
|
||||
});
|
||||
}, []);
|
||||
|
||||
const homepage = (
|
||||
<>
|
||||
<Grid container spacing={3}>
|
||||
<Grid item xs={12} align="center">
|
||||
<Typography variant="h3" compact="h3">
|
||||
House Party
|
||||
</Typography>
|
||||
</Grid>
|
||||
<Grid item xs={12} align="center">
|
||||
<ButtonGroup disableElevation variant="contained" color="primary">
|
||||
<Button color="primary" to="/join" component={Link}>
|
||||
Join a room
|
||||
</Button>
|
||||
<Button color="secondary" to="/create" component={Link}>
|
||||
Create a room
|
||||
</Button>
|
||||
</ButtonGroup>
|
||||
</Grid>
|
||||
</Grid>
|
||||
</>
|
||||
);
|
||||
|
||||
return code ? <Redirect to={`/room/${code}`} /> : homepage;
|
||||
};
|
||||
|
||||
export default Home;
|
66
frontend/src/components/JoinRoom.js
Normal file
66
frontend/src/components/JoinRoom.js
Normal file
|
@ -0,0 +1,66 @@
|
|||
import React, { useState } from "react";
|
||||
import { Link } from "react-router-dom";
|
||||
import { TextField, Button, Grid, Typography } from "@material-ui/core";
|
||||
|
||||
const JoinRoom = (props) => {
|
||||
const [code, setCode] = useState();
|
||||
const [error, setError] = useState();
|
||||
|
||||
const onSubmit = () => {
|
||||
const requestOptions = {
|
||||
method: "POST",
|
||||
headers: { "Content-Type": "application/json" },
|
||||
body: JSON.stringify({
|
||||
code: code,
|
||||
}),
|
||||
};
|
||||
|
||||
fetch("/api/rooms/join", requestOptions)
|
||||
.then((response) => {
|
||||
if (response.ok) {
|
||||
props.history.push(`/room/${code}`);
|
||||
} else {
|
||||
setCode("");
|
||||
setError("Room not found.");
|
||||
}
|
||||
})
|
||||
.catch((error) => {
|
||||
console.log(error);
|
||||
});
|
||||
};
|
||||
|
||||
return (
|
||||
<Grid container spacing={1}>
|
||||
<Grid item align="center" xs={12}>
|
||||
<Typography variant="h4" component="h4">
|
||||
Join a room
|
||||
</Typography>
|
||||
</Grid>
|
||||
<Grid item align="center" xs={12}>
|
||||
<TextField
|
||||
error={error}
|
||||
label="Code"
|
||||
placeholder="Enter a room code"
|
||||
value={code}
|
||||
helperText={error}
|
||||
variant="outlined"
|
||||
onChange={(e) => {
|
||||
setCode(e.target.value);
|
||||
}}
|
||||
/>
|
||||
</Grid>
|
||||
<Grid item align="center" xs={12}>
|
||||
<Button variant="contained" color="primary" onClick={onSubmit}>
|
||||
Join Room
|
||||
</Button>
|
||||
</Grid>
|
||||
<Grid item align="center" xs={12}>
|
||||
<Button variant="contained" color="secondary" to="/" component={Link}>
|
||||
Back
|
||||
</Button>
|
||||
</Grid>
|
||||
</Grid>
|
||||
);
|
||||
};
|
||||
|
||||
export default JoinRoom;
|
118
frontend/src/components/Room.js
Normal file
118
frontend/src/components/Room.js
Normal file
|
@ -0,0 +1,118 @@
|
|||
import React, { useEffect, useState } from "react";
|
||||
import { Grid, Button, Typography } from "@material-ui/core";
|
||||
import "./CreateRoom";
|
||||
import CreateRoom from "./CreateRoom";
|
||||
|
||||
const Room = (props) => {
|
||||
const [votesToSkip, setVotesToSkip] = useState(2);
|
||||
const [guestCanPause, setGuestCanPause] = useState(false);
|
||||
const [isHost, setIsHost] = useState(false);
|
||||
const [showSettings, setShowSettings] = useState(false);
|
||||
const code = props.match.params.code;
|
||||
|
||||
useEffect(() => {
|
||||
getRoom();
|
||||
}, []);
|
||||
|
||||
const getRoom = () => {
|
||||
fetch(`/api/rooms/get?code=${code}`)
|
||||
.then((response) => {
|
||||
if (response.ok) {
|
||||
return response.json();
|
||||
} else {
|
||||
props.history.push("/");
|
||||
}
|
||||
})
|
||||
.then((data) => {
|
||||
setVotesToSkip(data.votes_to_skip);
|
||||
setGuestCanPause(data.guest_can_pause);
|
||||
setIsHost(data.is_host);
|
||||
});
|
||||
};
|
||||
|
||||
const leaveRoom = () => {
|
||||
const requestOptions = {
|
||||
method: "PATCH",
|
||||
headers: { "Content-Type": "application/json" },
|
||||
};
|
||||
fetch("/api/rooms/leave", requestOptions).then((response) => {
|
||||
props.history.push("/");
|
||||
});
|
||||
};
|
||||
|
||||
const settingsButton = () => {
|
||||
return (
|
||||
<Grid item xs={12} align="center">
|
||||
<Button
|
||||
variant="contained"
|
||||
color="primary"
|
||||
onClick={() => setShowSettings(true)}
|
||||
>
|
||||
Settings
|
||||
</Button>
|
||||
</Grid>
|
||||
);
|
||||
};
|
||||
|
||||
const settings = () => {
|
||||
return (
|
||||
<Grid container spacing={1}>
|
||||
<Grid item xs={12} align="center">
|
||||
<CreateRoom
|
||||
update={true}
|
||||
votesToSkip={votesToSkip}
|
||||
guestCanPause={guestCanPause}
|
||||
code={code}
|
||||
updateCallback={getRoom}
|
||||
/>
|
||||
</Grid>
|
||||
<Grid item xs={12} align="center">
|
||||
<Button
|
||||
variant="contained"
|
||||
color="secondary"
|
||||
onClick={() => setShowSettings(false)}
|
||||
>
|
||||
Close
|
||||
</Button>
|
||||
</Grid>
|
||||
</Grid>
|
||||
);
|
||||
};
|
||||
|
||||
if (showSettings) return settings();
|
||||
else
|
||||
return (
|
||||
<>
|
||||
<Grid container spacing={1}>
|
||||
<Grid item xs={12} align="center">
|
||||
<Typography variant="h2" component="h4">
|
||||
Code: {code}
|
||||
</Typography>
|
||||
</Grid>
|
||||
<Grid item xs={12} align="center">
|
||||
<Typography variant="h4" component="h4">
|
||||
Votes needed to skip: {votesToSkip}
|
||||
</Typography>
|
||||
</Grid>
|
||||
<Grid item xs={12} align="center">
|
||||
<Typography variant="h4" component="h4">
|
||||
Guest can pause: {guestCanPause.toString()}
|
||||
</Typography>
|
||||
</Grid>
|
||||
<Grid item xs={12} align="center">
|
||||
<Typography variant="h4" component="h4">
|
||||
Is Host: {isHost.toString()}
|
||||
</Typography>
|
||||
</Grid>
|
||||
{isHost ? settingsButton() : null}
|
||||
<Grid item align="center" xs={12}>
|
||||
<Button variant="contained" color="secondary" onClick={leaveRoom}>
|
||||
Leave room
|
||||
</Button>
|
||||
</Grid>
|
||||
</Grid>
|
||||
</>
|
||||
);
|
||||
};
|
||||
|
||||
export default Room;
|
|
@ -1,15 +0,0 @@
|
|||
import { useEffect, useState } from "react";
|
||||
|
||||
export const useFetch = (url) => {
|
||||
const [state, setState] = useState({ data: null, loading: true });
|
||||
useEffect(() => {
|
||||
setState((state) => ({ data: state.data, loading: true }));
|
||||
fetch(url)
|
||||
.then((x) => x.text())
|
||||
.then((y) => {
|
||||
setState({ data: y, loading: false });
|
||||
});
|
||||
}, []);
|
||||
|
||||
return state;
|
||||
};
|
|
@ -1,15 +0,0 @@
|
|||
import { useState } from "react";
|
||||
|
||||
export const useForm = (initialValues) => {
|
||||
const [values, setValues] = useState(initialValues);
|
||||
|
||||
return [
|
||||
values,
|
||||
(e) => {
|
||||
setValues({
|
||||
...values,
|
||||
[e.target.name]: e.target.value,
|
||||
});
|
||||
},
|
||||
];
|
||||
};
|
|
@ -0,0 +1,19 @@
|
|||
#root {
|
||||
position: fixed;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
left: 0;
|
||||
top: 0;
|
||||
}
|
||||
|
||||
#app {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.center {
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
transform: translate(-50%, -50%);
|
||||
}
|
File diff suppressed because one or more lines are too long
|
@ -6,22 +6,34 @@
|
|||
!*** ./src/index.js ***!
|
||||
\**********************/
|
||||
|
||||
/*!************************!*\
|
||||
!*** ./src/useForm.js ***!
|
||||
\************************/
|
||||
/*!********************************!*\
|
||||
!*** ./src/components/Home.js ***!
|
||||
\********************************/
|
||||
|
||||
/*!*************************!*\
|
||||
!*** ./src/useFetch.js ***!
|
||||
\*************************/
|
||||
/*!********************************!*\
|
||||
!*** ./src/components/Room.js ***!
|
||||
\********************************/
|
||||
|
||||
/*!*********************************!*\
|
||||
!*** ./src/components/Hello.js ***!
|
||||
\*********************************/
|
||||
/*!************************************!*\
|
||||
!*** ./src/components/JoinRoom.js ***!
|
||||
\************************************/
|
||||
|
||||
/*!*************************************!*\
|
||||
!*** ./node_modules/react/index.js ***!
|
||||
\*************************************/
|
||||
|
||||
/*!**************************************!*\
|
||||
!*** ./src/components/CreateRoom.js ***!
|
||||
\**************************************/
|
||||
|
||||
/*!***************************************!*\
|
||||
!*** ./node_modules/isarray/index.js ***!
|
||||
\***************************************/
|
||||
|
||||
/*!****************************************!*\
|
||||
!*** ./node_modules/react-is/index.js ***!
|
||||
\****************************************/
|
||||
|
||||
/*!*****************************************!*\
|
||||
!*** ./node_modules/react-dom/index.js ***!
|
||||
\*****************************************/
|
||||
|
@ -30,14 +42,246 @@
|
|||
!*** ./node_modules/scheduler/index.js ***!
|
||||
\*****************************************/
|
||||
|
||||
/*!******************************************!*\
|
||||
!*** ./node_modules/clsx/dist/clsx.m.js ***!
|
||||
\******************************************/
|
||||
|
||||
/*!******************************************!*\
|
||||
!*** ./node_modules/jss/dist/jss.esm.js ***!
|
||||
\******************************************/
|
||||
|
||||
/*!******************************************!*\
|
||||
!*** ./node_modules/prop-types/index.js ***!
|
||||
\******************************************/
|
||||
|
||||
/*!*********************************************!*\
|
||||
!*** ./node_modules/history/esm/history.js ***!
|
||||
\*********************************************/
|
||||
|
||||
/*!*********************************************!*\
|
||||
!*** ./node_modules/object-assign/index.js ***!
|
||||
\*********************************************/
|
||||
|
||||
/*!**********************************************!*\
|
||||
!*** ./node_modules/path-to-regexp/index.js ***!
|
||||
\**********************************************/
|
||||
|
||||
/*!***************************************************!*\
|
||||
!*** ./node_modules/is-in-browser/dist/module.js ***!
|
||||
\***************************************************/
|
||||
|
||||
/*!****************************************************!*\
|
||||
!*** ./node_modules/hyphenate-style-name/index.js ***!
|
||||
\****************************************************/
|
||||
|
||||
/*!*****************************************************!*\
|
||||
!*** ./node_modules/value-equal/esm/value-equal.js ***!
|
||||
\*****************************************************/
|
||||
|
||||
/*!*******************************************************!*\
|
||||
!*** ./node_modules/@material-ui/system/esm/merge.js ***!
|
||||
\*******************************************************/
|
||||
|
||||
/*!*******************************************************!*\
|
||||
!*** ./node_modules/react-router/esm/react-router.js ***!
|
||||
\*******************************************************/
|
||||
|
||||
/*!********************************************************!*\
|
||||
!*** ./node_modules/css-vendor/dist/css-vendor.esm.js ***!
|
||||
\********************************************************/
|
||||
|
||||
/*!********************************************************!*\
|
||||
!*** ./node_modules/react/cjs/react.production.min.js ***!
|
||||
\********************************************************/
|
||||
|
||||
/*!*********************************************************!*\
|
||||
!*** ./node_modules/@material-ui/core/esm/Grid/Grid.js ***!
|
||||
\*********************************************************/
|
||||
|
||||
/*!*********************************************************!*\
|
||||
!*** ./node_modules/@material-ui/core/esm/Grow/Grow.js ***!
|
||||
\*********************************************************/
|
||||
|
||||
/*!*********************************************************!*\
|
||||
!*** ./node_modules/@material-ui/core/esm/List/List.js ***!
|
||||
\*********************************************************/
|
||||
|
||||
/*!*********************************************************!*\
|
||||
!*** ./node_modules/@material-ui/core/esm/Menu/Menu.js ***!
|
||||
\*********************************************************/
|
||||
|
||||
/*!*********************************************************!*\
|
||||
!*** ./node_modules/@material-ui/system/esm/memoize.js ***!
|
||||
\*********************************************************/
|
||||
|
||||
/*!*********************************************************!*\
|
||||
!*** ./node_modules/@material-ui/system/esm/spacing.js ***!
|
||||
\*********************************************************/
|
||||
|
||||
/*!**********************************************************!*\
|
||||
!*** ./node_modules/@material-ui/core/esm/colors/red.js ***!
|
||||
\**********************************************************/
|
||||
|
||||
/*!**********************************************************!*\
|
||||
!*** ./node_modules/@material-ui/lab/esm/Alert/Alert.js ***!
|
||||
\**********************************************************/
|
||||
|
||||
/*!**********************************************************!*\
|
||||
!*** ./node_modules/@material-ui/utils/esm/deepmerge.js ***!
|
||||
\**********************************************************/
|
||||
|
||||
/*!***********************************************************!*\
|
||||
!*** ./node_modules/@babel/runtime/helpers/esm/typeof.js ***!
|
||||
\***********************************************************/
|
||||
|
||||
/*!***********************************************************!*\
|
||||
!*** ./node_modules/@material-ui/core/esm/Input/Input.js ***!
|
||||
\***********************************************************/
|
||||
|
||||
/*!***********************************************************!*\
|
||||
!*** ./node_modules/@material-ui/core/esm/Modal/Modal.js ***!
|
||||
\***********************************************************/
|
||||
|
||||
/*!***********************************************************!*\
|
||||
!*** ./node_modules/@material-ui/core/esm/Paper/Paper.js ***!
|
||||
\***********************************************************/
|
||||
|
||||
/*!***********************************************************!*\
|
||||
!*** ./node_modules/@material-ui/core/esm/Radio/Radio.js ***!
|
||||
\***********************************************************/
|
||||
|
||||
/*!***********************************************************!*\
|
||||
!*** ./node_modules/@material-ui/core/esm/colors/blue.js ***!
|
||||
\***********************************************************/
|
||||
|
||||
/*!***********************************************************!*\
|
||||
!*** ./node_modules/@material-ui/core/esm/colors/grey.js ***!
|
||||
\***********************************************************/
|
||||
|
||||
/*!***********************************************************!*\
|
||||
!*** ./node_modules/@material-ui/core/esm/colors/pink.js ***!
|
||||
\***********************************************************/
|
||||
|
||||
/*!***********************************************************!*\
|
||||
!*** ./node_modules/react-transition-group/esm/config.js ***!
|
||||
\***********************************************************/
|
||||
|
||||
/*!************************************************************!*\
|
||||
!*** ./node_modules/@babel/runtime/helpers/esm/extends.js ***!
|
||||
\************************************************************/
|
||||
|
||||
/*!************************************************************!*\
|
||||
!*** ./node_modules/@material-ui/core/esm/colors/green.js ***!
|
||||
\************************************************************/
|
||||
|
||||
/*!************************************************************!*\
|
||||
!*** ./node_modules/@material-ui/core/esm/styles/shape.js ***!
|
||||
\************************************************************/
|
||||
|
||||
/*!************************************************************!*\
|
||||
!*** ./node_modules/@material-ui/core/esm/utils/setRef.js ***!
|
||||
\************************************************************/
|
||||
|
||||
/*!************************************************************!*\
|
||||
!*** ./node_modules/tiny-warning/dist/tiny-warning.esm.js ***!
|
||||
\************************************************************/
|
||||
|
||||
/*!*************************************************************!*\
|
||||
!*** ./node_modules/@material-ui/core/esm/Button/Button.js ***!
|
||||
\*************************************************************/
|
||||
|
||||
/*!*************************************************************!*\
|
||||
!*** ./node_modules/@material-ui/core/esm/Portal/Portal.js ***!
|
||||
\*************************************************************/
|
||||
|
||||
/*!*************************************************************!*\
|
||||
!*** ./node_modules/@material-ui/core/esm/Select/Select.js ***!
|
||||
\*************************************************************/
|
||||
|
||||
/*!*************************************************************!*\
|
||||
!*** ./node_modules/@material-ui/core/esm/colors/common.js ***!
|
||||
\*************************************************************/
|
||||
|
||||
/*!*************************************************************!*\
|
||||
!*** ./node_modules/@material-ui/core/esm/colors/indigo.js ***!
|
||||
\*************************************************************/
|
||||
|
||||
/*!*************************************************************!*\
|
||||
!*** ./node_modules/@material-ui/core/esm/colors/orange.js ***!
|
||||
\*************************************************************/
|
||||
|
||||
/*!*************************************************************!*\
|
||||
!*** ./node_modules/@material-ui/core/esm/styles/zIndex.js ***!
|
||||
\*************************************************************/
|
||||
|
||||
/*!*************************************************************!*\
|
||||
!*** ./node_modules/@material-ui/system/esm/breakpoints.js ***!
|
||||
\*************************************************************/
|
||||
|
||||
/*!*************************************************************!*\
|
||||
!*** ./node_modules/prop-types/factoryWithThrowingShims.js ***!
|
||||
\*************************************************************/
|
||||
|
||||
/*!*************************************************************!*\
|
||||
!*** ./node_modules/prop-types/lib/ReactPropTypesSecret.js ***!
|
||||
\*************************************************************/
|
||||
|
||||
/*!**************************************************************!*\
|
||||
!*** ./node_modules/@material-ui/core/esm/styles/shadows.js ***!
|
||||
\**************************************************************/
|
||||
|
||||
/*!**************************************************************!*\
|
||||
!*** ./node_modules/@material-ui/core/esm/utils/debounce.js ***!
|
||||
\**************************************************************/
|
||||
|
||||
/*!**************************************************************!*\
|
||||
!*** ./node_modules/react-is/cjs/react-is.production.min.js ***!
|
||||
\**************************************************************/
|
||||
|
||||
/*!***************************************************************!*\
|
||||
!*** ./node_modules/@material-ui/core/esm/InputBase/utils.js ***!
|
||||
\***************************************************************/
|
||||
|
||||
/*!***************************************************************!*\
|
||||
!*** ./node_modules/@material-ui/core/esm/Popover/Popover.js ***!
|
||||
\***************************************************************/
|
||||
|
||||
/*!***************************************************************!*\
|
||||
!*** ./node_modules/@material-ui/core/esm/SvgIcon/SvgIcon.js ***!
|
||||
\***************************************************************/
|
||||
|
||||
/*!***************************************************************!*\
|
||||
!*** ./node_modules/@material-ui/core/esm/styles/useTheme.js ***!
|
||||
\***************************************************************/
|
||||
|
||||
/*!***************************************************************!*\
|
||||
!*** ./node_modules/react-router-dom/esm/react-router-dom.js ***!
|
||||
\***************************************************************/
|
||||
|
||||
/*!***************************************************************!*\
|
||||
!*** ./node_modules/react-transition-group/esm/Transition.js ***!
|
||||
\***************************************************************/
|
||||
|
||||
/*!***************************************************************!*\
|
||||
!*** ./node_modules/resolve-pathname/esm/resolve-pathname.js ***!
|
||||
\***************************************************************/
|
||||
|
||||
/*!****************************************************************!*\
|
||||
!*** ./node_modules/@babel/runtime/helpers/esm/createClass.js ***!
|
||||
\****************************************************************/
|
||||
|
||||
/*!****************************************************************!*\
|
||||
!*** ./node_modules/@material-ui/core/esm/List/ListContext.js ***!
|
||||
\****************************************************************/
|
||||
|
||||
/*!****************************************************************!*\
|
||||
!*** ./node_modules/@material-ui/core/esm/utils/capitalize.js ***!
|
||||
\****************************************************************/
|
||||
|
||||
/*!****************************************************************!*\
|
||||
!*** ./node_modules/@material-ui/core/esm/utils/useForkRef.js ***!
|
||||
\****************************************************************/
|
||||
|
||||
/*!****************************************************************!*\
|
||||
!*** ./node_modules/react-dom/cjs/react-dom.production.min.js ***!
|
||||
\****************************************************************/
|
||||
|
@ -45,3 +289,439 @@
|
|||
/*!****************************************************************!*\
|
||||
!*** ./node_modules/scheduler/cjs/scheduler.production.min.js ***!
|
||||
\****************************************************************/
|
||||
|
||||
/*!****************************************************************!*\
|
||||
!*** ./node_modules/tiny-invariant/dist/tiny-invariant.esm.js ***!
|
||||
\****************************************************************/
|
||||
|
||||
/*!*****************************************************************!*\
|
||||
!*** ./node_modules/@material-ui/core/esm/ButtonBase/Ripple.js ***!
|
||||
\*****************************************************************/
|
||||
|
||||
/*!*****************************************************************!*\
|
||||
!*** ./node_modules/@material-ui/core/esm/Collapse/Collapse.js ***!
|
||||
\*****************************************************************/
|
||||
|
||||
/*!*****************************************************************!*\
|
||||
!*** ./node_modules/@material-ui/core/esm/MenuList/MenuList.js ***!
|
||||
\*****************************************************************/
|
||||
|
||||
/*!*****************************************************************!*\
|
||||
!*** ./node_modules/@material-ui/core/esm/styles/withStyles.js ***!
|
||||
\*****************************************************************/
|
||||
|
||||
/*!*****************************************************************!*\
|
||||
!*** ./node_modules/@material-ui/core/esm/transitions/utils.js ***!
|
||||
\*****************************************************************/
|
||||
|
||||
/*!*****************************************************************!*\
|
||||
!*** ./node_modules/@material-ui/core/esm/utils/ownerWindow.js ***!
|
||||
\*****************************************************************/
|
||||
|
||||
/*!******************************************************************!*\
|
||||
!*** ./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js ***!
|
||||
\******************************************************************/
|
||||
|
||||
/*!******************************************************************!*\
|
||||
!*** ./node_modules/@babel/runtime/helpers/esm/slicedToArray.js ***!
|
||||
\******************************************************************/
|
||||
|
||||
/*!******************************************************************!*\
|
||||
!*** ./node_modules/@material-ui/core/esm/Modal/ModalManager.js ***!
|
||||
\******************************************************************/
|
||||
|
||||
/*!******************************************************************!*\
|
||||
!*** ./node_modules/@material-ui/core/esm/Select/SelectInput.js ***!
|
||||
\******************************************************************/
|
||||
|
||||
/*!******************************************************************!*\
|
||||
!*** ./node_modules/@material-ui/core/esm/styles/transitions.js ***!
|
||||
\******************************************************************/
|
||||
|
||||
/*!******************************************************************!*\
|
||||
!*** ./node_modules/@material-ui/core/esm/utils/isMuiElement.js ***!
|
||||
\******************************************************************/
|
||||
|
||||
/*!******************************************************************!*\
|
||||
!*** ./node_modules/mini-create-react-context/dist/esm/index.js ***!
|
||||
\******************************************************************/
|
||||
|
||||
/*!*******************************************************************!*\
|
||||
!*** ./node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js ***!
|
||||
\*******************************************************************/
|
||||
|
||||
/*!*******************************************************************!*\
|
||||
!*** ./node_modules/@babel/runtime/helpers/esm/classCallCheck.js ***!
|
||||
\*******************************************************************/
|
||||
|
||||
/*!*******************************************************************!*\
|
||||
!*** ./node_modules/@babel/runtime/helpers/esm/defineProperty.js ***!
|
||||
\*******************************************************************/
|
||||
|
||||
/*!*******************************************************************!*\
|
||||
!*** ./node_modules/@material-ui/core/esm/FormGroup/FormGroup.js ***!
|
||||
\*******************************************************************/
|
||||
|
||||
/*!*******************************************************************!*\
|
||||
!*** ./node_modules/@material-ui/core/esm/FormLabel/FormLabel.js ***!
|
||||
\*******************************************************************/
|
||||
|
||||
/*!*******************************************************************!*\
|
||||
!*** ./node_modules/@material-ui/core/esm/InputBase/InputBase.js ***!
|
||||
\*******************************************************************/
|
||||
|
||||
/*!*******************************************************************!*\
|
||||
!*** ./node_modules/@material-ui/core/esm/TextField/TextField.js ***!
|
||||
\*******************************************************************/
|
||||
|
||||
/*!*******************************************************************!*\
|
||||
!*** ./node_modules/@material-ui/core/esm/internal/SwitchBase.js ***!
|
||||
\*******************************************************************/
|
||||
|
||||
/*!*******************************************************************!*\
|
||||
!*** ./node_modules/@material-ui/core/esm/styles/createMixins.js ***!
|
||||
\*******************************************************************/
|
||||
|
||||
/*!*******************************************************************!*\
|
||||
!*** ./node_modules/@material-ui/core/esm/styles/defaultTheme.js ***!
|
||||
\*******************************************************************/
|
||||
|
||||
/*!*******************************************************************!*\
|
||||
!*** ./node_modules/@material-ui/core/esm/utils/createSvgIcon.js ***!
|
||||
\*******************************************************************/
|
||||
|
||||
/*!*******************************************************************!*\
|
||||
!*** ./node_modules/@material-ui/core/esm/utils/ownerDocument.js ***!
|
||||
\*******************************************************************/
|
||||
|
||||
/*!*******************************************************************!*\
|
||||
!*** ./node_modules/@material-ui/core/esm/utils/useControlled.js ***!
|
||||
\*******************************************************************/
|
||||
|
||||
/*!*******************************************************************!*\
|
||||
!*** ./node_modules/@material-ui/styles/esm/useTheme/useTheme.js ***!
|
||||
\*******************************************************************/
|
||||
|
||||
/*!********************************************************************!*\
|
||||
!*** ./node_modules/@babel/runtime/helpers/esm/iterableToArray.js ***!
|
||||
\********************************************************************/
|
||||
|
||||
/*!********************************************************************!*\
|
||||
!*** ./node_modules/@babel/runtime/helpers/esm/nonIterableRest.js ***!
|
||||
\********************************************************************/
|
||||
|
||||
/*!********************************************************************!*\
|
||||
!*** ./node_modules/@material-ui/core/esm/Modal/SimpleBackdrop.js ***!
|
||||
\********************************************************************/
|
||||
|
||||
/*!********************************************************************!*\
|
||||
!*** ./node_modules/@material-ui/core/esm/styles/createPalette.js ***!
|
||||
\********************************************************************/
|
||||
|
||||
/*!********************************************************************!*\
|
||||
!*** ./node_modules/@material-ui/core/esm/styles/createSpacing.js ***!
|
||||
\********************************************************************/
|
||||
|
||||
/*!********************************************************************!*\
|
||||
!*** ./node_modules/@material-ui/core/esm/utils/unstable_useId.js ***!
|
||||
\********************************************************************/
|
||||
|
||||
/*!********************************************************************!*\
|
||||
!*** ./node_modules/react-transition-group/esm/TransitionGroup.js ***!
|
||||
\********************************************************************/
|
||||
|
||||
/*!*********************************************************************!*\
|
||||
!*** ./node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js ***!
|
||||
\*********************************************************************/
|
||||
|
||||
/*!*********************************************************************!*\
|
||||
!*** ./node_modules/@material-ui/core/esm/ButtonBase/ButtonBase.js ***!
|
||||
\*********************************************************************/
|
||||
|
||||
/*!*********************************************************************!*\
|
||||
!*** ./node_modules/@material-ui/core/esm/IconButton/IconButton.js ***!
|
||||
\*********************************************************************/
|
||||
|
||||
/*!*********************************************************************!*\
|
||||
!*** ./node_modules/@material-ui/core/esm/InputLabel/InputLabel.js ***!
|
||||
\*********************************************************************/
|
||||
|
||||
/*!*********************************************************************!*\
|
||||
!*** ./node_modules/@material-ui/core/esm/Radio/RadioButtonIcon.js ***!
|
||||
\*********************************************************************/
|
||||
|
||||
/*!*********************************************************************!*\
|
||||
!*** ./node_modules/@material-ui/core/esm/RadioGroup/RadioGroup.js ***!
|
||||
\*********************************************************************/
|
||||
|
||||
/*!*********************************************************************!*\
|
||||
!*** ./node_modules/@material-ui/core/esm/Typography/Typography.js ***!
|
||||
\*********************************************************************/
|
||||
|
||||
/*!*********************************************************************!*\
|
||||
!*** ./node_modules/@material-ui/core/esm/styles/createMuiTheme.js ***!
|
||||
\*********************************************************************/
|
||||
|
||||
/*!*********************************************************************!*\
|
||||
!*** ./node_modules/@material-ui/styles/esm/jssPreset/jssPreset.js ***!
|
||||
\*********************************************************************/
|
||||
|
||||
/*!**********************************************************************!*\
|
||||
!*** ./node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js ***!
|
||||
\**********************************************************************/
|
||||
|
||||
/*!**********************************************************************!*\
|
||||
!*** ./node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js ***!
|
||||
\**********************************************************************/
|
||||
|
||||
/*!**********************************************************************!*\
|
||||
!*** ./node_modules/@babel/runtime/helpers/esm/toConsumableArray.js ***!
|
||||
\**********************************************************************/
|
||||
|
||||
/*!**********************************************************************!*\
|
||||
!*** ./node_modules/@material-ui/core/esm/ButtonBase/TouchRipple.js ***!
|
||||
\**********************************************************************/
|
||||
|
||||
/*!**********************************************************************!*\
|
||||
!*** ./node_modules/@material-ui/core/esm/utils/getScrollbarSize.js ***!
|
||||
\**********************************************************************/
|
||||
|
||||
/*!**********************************************************************!*\
|
||||
!*** ./node_modules/@material-ui/core/esm/utils/useEventCallback.js ***!
|
||||
\**********************************************************************/
|
||||
|
||||
/*!**********************************************************************!*\
|
||||
!*** ./node_modules/@material-ui/styles/esm/ThemeProvider/nested.js ***!
|
||||
\**********************************************************************/
|
||||
|
||||
/*!**********************************************************************!*\
|
||||
!*** ./node_modules/@material-ui/utils/esm/formatMuiErrorMessage.js ***!
|
||||
\**********************************************************************/
|
||||
|
||||
/*!**********************************************************************!*\
|
||||
!*** ./node_modules/jss-plugin-global/dist/jss-plugin-global.esm.js ***!
|
||||
\**********************************************************************/
|
||||
|
||||
/*!**********************************************************************!*\
|
||||
!*** ./node_modules/jss-plugin-nested/dist/jss-plugin-nested.esm.js ***!
|
||||
\**********************************************************************/
|
||||
|
||||
/*!***********************************************************************!*\
|
||||
!*** ./node_modules/@material-ui/core/esm/ButtonGroup/ButtonGroup.js ***!
|
||||
\***********************************************************************/
|
||||
|
||||
/*!***********************************************************************!*\
|
||||
!*** ./node_modules/@material-ui/core/esm/FilledInput/FilledInput.js ***!
|
||||
\***********************************************************************/
|
||||
|
||||
/*!***********************************************************************!*\
|
||||
!*** ./node_modules/@material-ui/core/esm/FormControl/FormControl.js ***!
|
||||
\***********************************************************************/
|
||||
|
||||
/*!***********************************************************************!*\
|
||||
!*** ./node_modules/@material-ui/core/esm/styles/colorManipulator.js ***!
|
||||
\***********************************************************************/
|
||||
|
||||
/*!***********************************************************************!*\
|
||||
!*** ./node_modules/@material-ui/core/esm/styles/createTypography.js ***!
|
||||
\***********************************************************************/
|
||||
|
||||
/*!***********************************************************************!*\
|
||||
!*** ./node_modules/@material-ui/core/esm/utils/useIsFocusVisible.js ***!
|
||||
\***********************************************************************/
|
||||
|
||||
/*!***********************************************************************!*\
|
||||
!*** ./node_modules/@material-ui/core/node_modules/react-is/index.js ***!
|
||||
\***********************************************************************/
|
||||
|
||||
/*!***********************************************************************!*\
|
||||
!*** ./node_modules/@material-ui/lab/esm/internal/svg-icons/Close.js ***!
|
||||
\***********************************************************************/
|
||||
|
||||
/*!***********************************************************************!*\
|
||||
!*** ./node_modules/@material-ui/styles/esm/makeStyles/makeStyles.js ***!
|
||||
\***********************************************************************/
|
||||
|
||||
/*!***********************************************************************!*\
|
||||
!*** ./node_modules/@material-ui/styles/esm/useTheme/ThemeContext.js ***!
|
||||
\***********************************************************************/
|
||||
|
||||
/*!***********************************************************************!*\
|
||||
!*** ./node_modules/@material-ui/styles/esm/withStyles/withStyles.js ***!
|
||||
\***********************************************************************/
|
||||
|
||||
/*!***********************************************************************!*\
|
||||
!*** ./node_modules/react-transition-group/esm/utils/ChildMapping.js ***!
|
||||
\***********************************************************************/
|
||||
|
||||
/*!************************************************************************!*\
|
||||
!*** ./node_modules/@material-ui/core/esm/RadioGroup/useRadioGroup.js ***!
|
||||
\************************************************************************/
|
||||
|
||||
/*!************************************************************************!*\
|
||||
!*** ./node_modules/@material-ui/core/esm/styles/createBreakpoints.js ***!
|
||||
\************************************************************************/
|
||||
|
||||
/*!*************************************************************************!*\
|
||||
!*** ./node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js ***!
|
||||
\*************************************************************************/
|
||||
|
||||
/*!*************************************************************************!*\
|
||||
!*** ./node_modules/@material-ui/core/esm/NativeSelect/NativeSelect.js ***!
|
||||
\*************************************************************************/
|
||||
|
||||
/*!*************************************************************************!*\
|
||||
!*** ./node_modules/@material-ui/styles/esm/makeStyles/indexCounter.js ***!
|
||||
\*************************************************************************/
|
||||
|
||||
/*!**************************************************************************!*\
|
||||
!*** ./node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js ***!
|
||||
\**************************************************************************/
|
||||
|
||||
/*!**************************************************************************!*\
|
||||
!*** ./node_modules/@material-ui/core/esm/FormControl/useFormControl.js ***!
|
||||
\**************************************************************************/
|
||||
|
||||
/*!**************************************************************************!*\
|
||||
!*** ./node_modules/@material-ui/styles/esm/makeStyles/multiKeyStore.js ***!
|
||||
\**************************************************************************/
|
||||
|
||||
/*!***************************************************************************!*\
|
||||
!*** ./node_modules/@material-ui/core/esm/OutlinedInput/OutlinedInput.js ***!
|
||||
\***************************************************************************/
|
||||
|
||||
/*!***************************************************************************!*\
|
||||
!*** ./node_modules/@material-ui/core/esm/utils/createChainedFunction.js ***!
|
||||
\***************************************************************************/
|
||||
|
||||
/*!***************************************************************************!*\
|
||||
!*** ./node_modules/@material-ui/styles/esm/mergeClasses/mergeClasses.js ***!
|
||||
\***************************************************************************/
|
||||
|
||||
/*!***************************************************************************!*\
|
||||
!*** ./node_modules/react-transition-group/esm/TransitionGroupContext.js ***!
|
||||
\***************************************************************************/
|
||||
|
||||
/*!****************************************************************************!*\
|
||||
!*** ./node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js ***!
|
||||
\****************************************************************************/
|
||||
|
||||
/*!****************************************************************************!*\
|
||||
!*** ./node_modules/@material-ui/core/esm/FormControl/formControlState.js ***!
|
||||
\****************************************************************************/
|
||||
|
||||
/*!****************************************************************************!*\
|
||||
!*** ./node_modules/@material-ui/core/esm/OutlinedInput/NotchedOutline.js ***!
|
||||
\****************************************************************************/
|
||||
|
||||
/*!****************************************************************************!*\
|
||||
!*** ./node_modules/@material-ui/core/esm/RadioGroup/RadioGroupContext.js ***!
|
||||
\****************************************************************************/
|
||||
|
||||
/*!****************************************************************************!*\
|
||||
!*** ./node_modules/@material-ui/styles/esm/getStylesCreator/noopTheme.js ***!
|
||||
\****************************************************************************/
|
||||
|
||||
/*!*****************************************************************************!*\
|
||||
!*** ./node_modules/@material-ui/core/esm/FormHelperText/FormHelperText.js ***!
|
||||
\*****************************************************************************/
|
||||
|
||||
/*!*****************************************************************************!*\
|
||||
!*** ./node_modules/@material-ui/styles/esm/getThemeProps/getThemeProps.js ***!
|
||||
\*****************************************************************************/
|
||||
|
||||
/*!******************************************************************************!*\
|
||||
!*** ./node_modules/@material-ui/core/esm/FormControl/FormControlContext.js ***!
|
||||
\******************************************************************************/
|
||||
|
||||
/*!******************************************************************************!*\
|
||||
!*** ./node_modules/@material-ui/core/esm/NativeSelect/NativeSelectInput.js ***!
|
||||
\******************************************************************************/
|
||||
|
||||
/*!******************************************************************************!*\
|
||||
!*** ./node_modules/@material-ui/lab/esm/internal/svg-icons/ErrorOutline.js ***!
|
||||
\******************************************************************************/
|
||||
|
||||
/*!******************************************************************************!*\
|
||||
!*** ./node_modules/@material-ui/lab/esm/internal/svg-icons/InfoOutlined.js ***!
|
||||
\******************************************************************************/
|
||||
|
||||
/*!******************************************************************************!*\
|
||||
!*** ./node_modules/jss-plugin-camel-case/dist/jss-plugin-camel-case.esm.js ***!
|
||||
\******************************************************************************/
|
||||
|
||||
/*!******************************************************************************!*\
|
||||
!*** ./node_modules/jss-plugin-props-sort/dist/jss-plugin-props-sort.esm.js ***!
|
||||
\******************************************************************************/
|
||||
|
||||
/*!*******************************************************************************!*\
|
||||
!*** ./node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js ***!
|
||||
\*******************************************************************************/
|
||||
|
||||
/*!*******************************************************************************!*\
|
||||
!*** ./node_modules/@material-ui/styles/esm/StylesProvider/StylesProvider.js ***!
|
||||
\*******************************************************************************/
|
||||
|
||||
/*!********************************************************************************!*\
|
||||
!*** ./node_modules/@material-ui/core/esm/internal/svg-icons/ArrowDropDown.js ***!
|
||||
\********************************************************************************/
|
||||
|
||||
/*!*********************************************************************************!*\
|
||||
!*** ./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js ***!
|
||||
\*********************************************************************************/
|
||||
|
||||
/*!*********************************************************************************!*\
|
||||
!*** ./node_modules/@material-ui/core/esm/FormControlLabel/FormControlLabel.js ***!
|
||||
\*********************************************************************************/
|
||||
|
||||
/*!*********************************************************************************!*\
|
||||
!*** ./node_modules/@material-ui/core/esm/TextareaAutosize/TextareaAutosize.js ***!
|
||||
\*********************************************************************************/
|
||||
|
||||
/*!*********************************************************************************!*\
|
||||
!*** ./node_modules/@material-ui/lab/esm/internal/svg-icons/SuccessOutlined.js ***!
|
||||
\*********************************************************************************/
|
||||
|
||||
/*!**********************************************************************************!*\
|
||||
!*** ./node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js ***!
|
||||
\**********************************************************************************/
|
||||
|
||||
/*!**********************************************************************************!*\
|
||||
!*** ./node_modules/jss-plugin-default-unit/dist/jss-plugin-default-unit.esm.js ***!
|
||||
\**********************************************************************************/
|
||||
|
||||
/*!***********************************************************************************!*\
|
||||
!*** ./node_modules/@material-ui/styles/esm/getStylesCreator/getStylesCreator.js ***!
|
||||
\***********************************************************************************/
|
||||
|
||||
/*!*************************************************************************************!*\
|
||||
!*** ./node_modules/@material-ui/core/esm/Unstable_TrapFocus/Unstable_TrapFocus.js ***!
|
||||
\*************************************************************************************/
|
||||
|
||||
/*!*************************************************************************************!*\
|
||||
!*** ./node_modules/@material-ui/core/esm/internal/svg-icons/RadioButtonChecked.js ***!
|
||||
\*************************************************************************************/
|
||||
|
||||
/*!***************************************************************************************!*\
|
||||
!*** ./node_modules/@material-ui/core/esm/internal/svg-icons/RadioButtonUnchecked.js ***!
|
||||
\***************************************************************************************/
|
||||
|
||||
/*!***************************************************************************************!*\
|
||||
!*** ./node_modules/@material-ui/lab/esm/internal/svg-icons/ReportProblemOutlined.js ***!
|
||||
\***************************************************************************************/
|
||||
|
||||
/*!****************************************************************************************!*\
|
||||
!*** ./node_modules/jss-plugin-vendor-prefixer/dist/jss-plugin-vendor-prefixer.esm.js ***!
|
||||
\****************************************************************************************/
|
||||
|
||||
/*!*********************************************************************************************!*\
|
||||
!*** ./node_modules/@material-ui/core/node_modules/react-is/cjs/react-is.production.min.js ***!
|
||||
\*********************************************************************************************/
|
||||
|
||||
/*!************************************************************************************************!*\
|
||||
!*** ./node_modules/jss-plugin-rule-value-function/dist/jss-plugin-rule-value-function.esm.js ***!
|
||||
\************************************************************************************************/
|
||||
|
||||
/*!*************************************************************************************************!*\
|
||||
!*** ./node_modules/@material-ui/styles/esm/createGenerateClassName/createGenerateClassName.js ***!
|
||||
\*************************************************************************************************/
|
||||
|
|
|
@ -2,5 +2,8 @@ from django.urls import path
|
|||
from . import views
|
||||
|
||||
urlpatterns = [
|
||||
path('', views.index)
|
||||
path('', views.index),
|
||||
path('create/', views.index),
|
||||
path('join/', views.index),
|
||||
path('room/<str:code>', views.index)
|
||||
]
|
||||
|
|
|
@ -2,5 +2,5 @@ from django.shortcuts import render
|
|||
from django.http import HttpResponse
|
||||
|
||||
# Create your views here.
|
||||
def index(request):
|
||||
def index(request, *args, **kwargs):
|
||||
return render(request, 'frontend/index.html')
|
|
@ -929,6 +929,17 @@
|
|||
dependencies:
|
||||
"@babel/runtime" "^7.4.4"
|
||||
|
||||
"@material-ui/lab@^4.0.0-alpha.57":
|
||||
version "4.0.0-alpha.57"
|
||||
resolved "https://registry.yarnpkg.com/@material-ui/lab/-/lab-4.0.0-alpha.57.tgz#e8961bcf6449e8a8dabe84f2700daacfcafbf83a"
|
||||
integrity sha512-qo/IuIQOmEKtzmRD2E4Aa6DB4A87kmY6h0uYhjUmrrgmEAgbbw9etXpWPVXuRK6AGIQCjFzV6WO2i21m1R4FCw==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.4.4"
|
||||
"@material-ui/utils" "^4.11.2"
|
||||
clsx "^1.0.4"
|
||||
prop-types "^15.7.2"
|
||||
react-is "^16.8.0 || ^17.0.0"
|
||||
|
||||
"@material-ui/styles@^4.11.2":
|
||||
version "4.11.2"
|
||||
resolved "https://registry.yarnpkg.com/@material-ui/styles/-/styles-4.11.2.tgz#e70558be3f41719e8c0d63c7a3c9ae163fdc84cb"
|
||||
|
@ -975,6 +986,27 @@
|
|||
prop-types "^15.7.2"
|
||||
react-is "^16.8.0 || ^17.0.0"
|
||||
|
||||
"@nodelib/fs.scandir@2.1.4":
|
||||
version "2.1.4"
|
||||
resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.4.tgz#d4b3549a5db5de2683e0c1071ab4f140904bbf69"
|
||||
integrity sha512-33g3pMJk3bg5nXbL/+CY6I2eJDzZAni49PfJnL5fghPTggPvBd/pFNSgJsdAgWptuFu7qq/ERvOYFlhvsLTCKA==
|
||||
dependencies:
|
||||
"@nodelib/fs.stat" "2.0.4"
|
||||
run-parallel "^1.1.9"
|
||||
|
||||
"@nodelib/fs.stat@2.0.4", "@nodelib/fs.stat@^2.0.2":
|
||||
version "2.0.4"
|
||||
resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.4.tgz#a3f2dd61bab43b8db8fa108a121cfffe4c676655"
|
||||
integrity sha512-IYlHJA0clt2+Vg7bccq+TzRdJvv19c2INqBSsoOLp1je7xjtr7J26+WXR72MCdvU9q1qTzIWDfhMf+DRvQJK4Q==
|
||||
|
||||
"@nodelib/fs.walk@^1.2.3":
|
||||
version "1.2.6"
|
||||
resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.6.tgz#cce9396b30aa5afe9e3756608f5831adcb53d063"
|
||||
integrity sha512-8Broas6vTtW4GIXTAHDoE32hnN2M5ykgCpWGbuXHQ15vEMqr23pB76e/GZcYsZCHALv50ktd24qhEyKr6wBtow==
|
||||
dependencies:
|
||||
"@nodelib/fs.scandir" "2.1.4"
|
||||
fastq "^1.6.0"
|
||||
|
||||
"@types/eslint-scope@^3.7.0":
|
||||
version "3.7.0"
|
||||
resolved "https://registry.yarnpkg.com/@types/eslint-scope/-/eslint-scope-3.7.0.tgz#4792816e31119ebd506902a482caec4951fabd86"
|
||||
|
@ -996,7 +1028,7 @@
|
|||
resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.45.tgz#e9387572998e5ecdac221950dab3e8c3b16af884"
|
||||
integrity sha512-jnqIUKDUqJbDIUxm0Uj7bnlMnRm1T/eZ9N+AVMqhPgzrba2GhGG5o/jCTwmdPK709nEZsGoMzXEDUjcXHa3W0g==
|
||||
|
||||
"@types/json-schema@*", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.6":
|
||||
"@types/json-schema@*", "@types/json-schema@^7.0.3", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.6":
|
||||
version "7.0.6"
|
||||
resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.6.tgz#f4c7ec43e81b319a9815115031709f26987891f0"
|
||||
integrity sha512-3c+yGKvVP5Y9TYBEibGNR+kLtijnj7mYrXRg+WpFb2X9xm04g/DXYkfg4hmzJQosc9snFNUPkbYIhu+KAm6jJw==
|
||||
|
@ -1026,6 +1058,53 @@
|
|||
"@types/prop-types" "*"
|
||||
csstype "^3.0.2"
|
||||
|
||||
"@typescript-eslint/experimental-utils@^4.0.1":
|
||||
version "4.11.1"
|
||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-4.11.1.tgz#2dad3535b878c25c7424e40bfa79d899f3f485bc"
|
||||
integrity sha512-mAlWowT4A6h0TC9F+J5pdbEhjNiEMO+kqPKQ4sc3fVieKL71dEqfkKgtcFVSX3cjSBwYwhImaQ/mXQF0oaI38g==
|
||||
dependencies:
|
||||
"@types/json-schema" "^7.0.3"
|
||||
"@typescript-eslint/scope-manager" "4.11.1"
|
||||
"@typescript-eslint/types" "4.11.1"
|
||||
"@typescript-eslint/typescript-estree" "4.11.1"
|
||||
eslint-scope "^5.0.0"
|
||||
eslint-utils "^2.0.0"
|
||||
|
||||
"@typescript-eslint/scope-manager@4.11.1":
|
||||
version "4.11.1"
|
||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.11.1.tgz#72dc2b60b0029ab0888479b12bf83034920b4b69"
|
||||
integrity sha512-Al2P394dx+kXCl61fhrrZ1FTI7qsRDIUiVSuN6rTwss6lUn8uVO2+nnF4AvO0ug8vMsy3ShkbxLu/uWZdTtJMQ==
|
||||
dependencies:
|
||||
"@typescript-eslint/types" "4.11.1"
|
||||
"@typescript-eslint/visitor-keys" "4.11.1"
|
||||
|
||||
"@typescript-eslint/types@4.11.1":
|
||||
version "4.11.1"
|
||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.11.1.tgz#3ba30c965963ef9f8ced5a29938dd0c465bd3e05"
|
||||
integrity sha512-5kvd38wZpqGY4yP/6W3qhYX6Hz0NwUbijVsX2rxczpY6OXaMxh0+5E5uLJKVFwaBM7PJe1wnMym85NfKYIh6CA==
|
||||
|
||||
"@typescript-eslint/typescript-estree@4.11.1":
|
||||
version "4.11.1"
|
||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.11.1.tgz#a4416b4a65872a48773b9e47afabdf7519eb10bc"
|
||||
integrity sha512-tC7MKZIMRTYxQhrVAFoJq/DlRwv1bnqA4/S2r3+HuHibqvbrPcyf858lNzU7bFmy4mLeIHFYr34ar/1KumwyRw==
|
||||
dependencies:
|
||||
"@typescript-eslint/types" "4.11.1"
|
||||
"@typescript-eslint/visitor-keys" "4.11.1"
|
||||
debug "^4.1.1"
|
||||
globby "^11.0.1"
|
||||
is-glob "^4.0.1"
|
||||
lodash "^4.17.15"
|
||||
semver "^7.3.2"
|
||||
tsutils "^3.17.1"
|
||||
|
||||
"@typescript-eslint/visitor-keys@4.11.1":
|
||||
version "4.11.1"
|
||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.11.1.tgz#4c050a4c1f7239786e2dd4e69691436143024e05"
|
||||
integrity sha512-IrlBhD9bm4bdYcS8xpWarazkKXlE7iYb1HzRuyBP114mIaj5DJPo11Us1HgH60dTt41TCZXMaTCAW+OILIYPOg==
|
||||
dependencies:
|
||||
"@typescript-eslint/types" "4.11.1"
|
||||
eslint-visitor-keys "^2.0.0"
|
||||
|
||||
"@webassemblyjs/ast@1.9.1":
|
||||
version "1.9.1"
|
||||
resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.9.1.tgz#76c6937716d68bf1484c15139f5ed30b9abc8bb4"
|
||||
|
@ -1259,6 +1338,11 @@ array-back@^4.0.1:
|
|||
resolved "https://registry.yarnpkg.com/array-back/-/array-back-4.0.1.tgz#9b80312935a52062e1a233a9c7abeb5481b30e90"
|
||||
integrity sha512-Z/JnaVEXv+A9xabHzN43FiiiWEE7gPCRXMrVmRm00tWbjZRul1iHm7ECzlyNq1p4a4ATXz+G9FJ3GqGOkOV3fg==
|
||||
|
||||
array-union@^2.1.0:
|
||||
version "2.1.0"
|
||||
resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d"
|
||||
integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==
|
||||
|
||||
astral-regex@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31"
|
||||
|
@ -1299,6 +1383,13 @@ brace-expansion@^1.1.7:
|
|||
balanced-match "^1.0.0"
|
||||
concat-map "0.0.1"
|
||||
|
||||
braces@^3.0.1:
|
||||
version "3.0.2"
|
||||
resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107"
|
||||
integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==
|
||||
dependencies:
|
||||
fill-range "^7.0.1"
|
||||
|
||||
browserslist@^4.14.5, browserslist@^4.15.0:
|
||||
version "4.16.0"
|
||||
resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.16.0.tgz#410277627500be3cb28a1bfe037586fbedf9488b"
|
||||
|
@ -1421,6 +1512,11 @@ concat-map@0.0.1:
|
|||
resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
|
||||
integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=
|
||||
|
||||
confusing-browser-globals@^1.0.10:
|
||||
version "1.0.10"
|
||||
resolved "https://registry.yarnpkg.com/confusing-browser-globals/-/confusing-browser-globals-1.0.10.tgz#30d1e7f3d1b882b25ec4933d1d1adac353d20a59"
|
||||
integrity sha512-gNld/3lySHwuhaVluJUKLePYirM3QNCKzVxqAdhJII9/WXKVX5PURzMVJspS1jTslSqjeuG4KMVTSouit5YPHA==
|
||||
|
||||
convert-source-map@^1.7.0:
|
||||
version "1.7.0"
|
||||
resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442"
|
||||
|
@ -1487,6 +1583,13 @@ define-properties@^1.1.3:
|
|||
dependencies:
|
||||
object-keys "^1.0.12"
|
||||
|
||||
dir-glob@^3.0.1:
|
||||
version "3.0.1"
|
||||
resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f"
|
||||
integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==
|
||||
dependencies:
|
||||
path-type "^4.0.0"
|
||||
|
||||
doctrine@^3.0.0:
|
||||
version "3.0.0"
|
||||
resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961"
|
||||
|
@ -1554,7 +1657,21 @@ escape-string-regexp@^1.0.5:
|
|||
resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
|
||||
integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=
|
||||
|
||||
eslint-scope@^5.1.1:
|
||||
eslint-config-react-app@^6.0.0:
|
||||
version "6.0.0"
|
||||
resolved "https://registry.yarnpkg.com/eslint-config-react-app/-/eslint-config-react-app-6.0.0.tgz#ccff9fc8e36b322902844cbd79197982be355a0e"
|
||||
integrity sha512-bpoAAC+YRfzq0dsTk+6v9aHm/uqnDwayNAXleMypGl6CpxI9oXXscVHo4fk3eJPIn+rsbtNetB4r/ZIidFIE8A==
|
||||
dependencies:
|
||||
confusing-browser-globals "^1.0.10"
|
||||
|
||||
eslint-plugin-jest@^24.1.3:
|
||||
version "24.1.3"
|
||||
resolved "https://registry.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-24.1.3.tgz#fa3db864f06c5623ff43485ca6c0e8fc5fe8ba0c"
|
||||
integrity sha512-dNGGjzuEzCE3d5EPZQ/QGtmlMotqnYWD/QpCZ1UuZlrMAdhG5rldh0N0haCvhGnUkSeuORS5VNROwF9Hrgn3Lg==
|
||||
dependencies:
|
||||
"@typescript-eslint/experimental-utils" "^4.0.1"
|
||||
|
||||
eslint-scope@^5.0.0, eslint-scope@^5.1.1:
|
||||
version "5.1.1"
|
||||
resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c"
|
||||
integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==
|
||||
|
@ -1562,7 +1679,7 @@ eslint-scope@^5.1.1:
|
|||
esrecurse "^4.3.0"
|
||||
estraverse "^4.1.1"
|
||||
|
||||
eslint-utils@^2.1.0:
|
||||
eslint-utils@^2.0.0, eslint-utils@^2.1.0:
|
||||
version "2.1.0"
|
||||
resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27"
|
||||
integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==
|
||||
|
@ -1690,6 +1807,18 @@ fast-deep-equal@^3.1.1:
|
|||
resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525"
|
||||
integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==
|
||||
|
||||
fast-glob@^3.1.1:
|
||||
version "3.2.4"
|
||||
resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.4.tgz#d20aefbf99579383e7f3cc66529158c9b98554d3"
|
||||
integrity sha512-kr/Oo6PX51265qeuCYsyGypiO5uJFgBS0jksyG7FUeCyQzNwYnzrNIMR1NXfkZXsMYXYLRAHgISHBz8gQcxKHQ==
|
||||
dependencies:
|
||||
"@nodelib/fs.stat" "^2.0.2"
|
||||
"@nodelib/fs.walk" "^1.2.3"
|
||||
glob-parent "^5.1.0"
|
||||
merge2 "^1.3.0"
|
||||
micromatch "^4.0.2"
|
||||
picomatch "^2.2.1"
|
||||
|
||||
fast-json-stable-stringify@^2.0.0:
|
||||
version "2.1.0"
|
||||
resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633"
|
||||
|
@ -1700,6 +1829,13 @@ fast-levenshtein@^2.0.6:
|
|||
resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917"
|
||||
integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=
|
||||
|
||||
fastq@^1.6.0:
|
||||
version "1.10.0"
|
||||
resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.10.0.tgz#74dbefccade964932cdf500473ef302719c652bb"
|
||||
integrity sha512-NL2Qc5L3iQEsyYzweq7qfgy5OtXCmGzGvhElGEd/SoFWEMOEczNh5s5ocaF01HDetxz+p8ecjNPA6cZxxIHmzA==
|
||||
dependencies:
|
||||
reusify "^1.0.4"
|
||||
|
||||
file-entry-cache@^6.0.0:
|
||||
version "6.0.0"
|
||||
resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.0.tgz#7921a89c391c6d93efec2169ac6bf300c527ea0a"
|
||||
|
@ -1707,6 +1843,13 @@ file-entry-cache@^6.0.0:
|
|||
dependencies:
|
||||
flat-cache "^3.0.4"
|
||||
|
||||
fill-range@^7.0.1:
|
||||
version "7.0.1"
|
||||
resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40"
|
||||
integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==
|
||||
dependencies:
|
||||
to-regex-range "^5.0.1"
|
||||
|
||||
find-cache-dir@^3.3.1:
|
||||
version "3.3.1"
|
||||
resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.1.tgz#89b33fad4a4670daa94f855f7fbe31d6d84fe880"
|
||||
|
@ -1781,7 +1924,7 @@ get-stream@^5.0.0:
|
|||
dependencies:
|
||||
pump "^3.0.0"
|
||||
|
||||
glob-parent@^5.0.0:
|
||||
glob-parent@^5.0.0, glob-parent@^5.1.0:
|
||||
version "5.1.1"
|
||||
resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.1.tgz#b6c1ef417c4e5663ea498f1c45afac6916bbc229"
|
||||
integrity sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==
|
||||
|
@ -1817,6 +1960,18 @@ globals@^12.1.0:
|
|||
dependencies:
|
||||
type-fest "^0.8.1"
|
||||
|
||||
globby@^11.0.1:
|
||||
version "11.0.1"
|
||||
resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.1.tgz#9a2bf107a068f3ffeabc49ad702c79ede8cfd357"
|
||||
integrity sha512-iH9RmgwCmUJHi2z5o2l3eTtGBtXek1OYlHrbcxOYugyHLmAsZrPj43OtHThd62Buh/Vv6VyCBD2bdyWcGNQqoQ==
|
||||
dependencies:
|
||||
array-union "^2.1.0"
|
||||
dir-glob "^3.0.1"
|
||||
fast-glob "^3.1.1"
|
||||
ignore "^5.1.4"
|
||||
merge2 "^1.3.0"
|
||||
slash "^3.0.0"
|
||||
|
||||
graceful-fs@^4.1.2, graceful-fs@^4.2.4:
|
||||
version "4.2.4"
|
||||
resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb"
|
||||
|
@ -1878,6 +2033,11 @@ ignore@^4.0.6:
|
|||
resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc"
|
||||
integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==
|
||||
|
||||
ignore@^5.1.4:
|
||||
version "5.1.8"
|
||||
resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.8.tgz#f150a8b50a34289b33e22f5889abd4d8016f0e57"
|
||||
integrity sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==
|
||||
|
||||
import-fresh@^3.0.0, import-fresh@^3.2.1:
|
||||
version "3.3.0"
|
||||
resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b"
|
||||
|
@ -1953,6 +2113,11 @@ is-in-browser@^1.0.2, is-in-browser@^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@^7.0.0:
|
||||
version "7.0.0"
|
||||
resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b"
|
||||
integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==
|
||||
|
||||
is-stream@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3"
|
||||
|
@ -2172,6 +2337,19 @@ merge-stream@^2.0.0:
|
|||
resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60"
|
||||
integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==
|
||||
|
||||
merge2@^1.3.0:
|
||||
version "1.4.1"
|
||||
resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae"
|
||||
integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==
|
||||
|
||||
micromatch@^4.0.2:
|
||||
version "4.0.2"
|
||||
resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.2.tgz#4fcb0999bf9fbc2fcbdd212f6d629b9a56c39259"
|
||||
integrity sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==
|
||||
dependencies:
|
||||
braces "^3.0.1"
|
||||
picomatch "^2.0.5"
|
||||
|
||||
mime-db@1.44.0:
|
||||
version "1.44.0"
|
||||
resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.44.0.tgz#fa11c5eb0aca1334b4233cb4d52f10c5a6272f92"
|
||||
|
@ -2349,6 +2527,16 @@ path-to-regexp@^1.7.0:
|
|||
dependencies:
|
||||
isarray "0.0.1"
|
||||
|
||||
path-type@^4.0.0:
|
||||
version "4.0.0"
|
||||
resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b"
|
||||
integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==
|
||||
|
||||
picomatch@^2.0.5, picomatch@^2.2.1:
|
||||
version "2.2.2"
|
||||
resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad"
|
||||
integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==
|
||||
|
||||
pkg-dir@^4.1.0, pkg-dir@^4.2.0:
|
||||
version "4.2.0"
|
||||
resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3"
|
||||
|
@ -2568,6 +2756,11 @@ resolve@^1.9.0:
|
|||
is-core-module "^2.1.0"
|
||||
path-parse "^1.0.6"
|
||||
|
||||
reusify@^1.0.4:
|
||||
version "1.0.4"
|
||||
resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76"
|
||||
integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==
|
||||
|
||||
rimraf@^3.0.2:
|
||||
version "3.0.2"
|
||||
resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a"
|
||||
|
@ -2575,6 +2768,11 @@ rimraf@^3.0.2:
|
|||
dependencies:
|
||||
glob "^7.1.3"
|
||||
|
||||
run-parallel@^1.1.9:
|
||||
version "1.1.10"
|
||||
resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.1.10.tgz#60a51b2ae836636c81377df16cb107351bcd13ef"
|
||||
integrity sha512-zb/1OuZ6flOlH6tQyMPUrE3x3Ulxjlo9WIVXR4yVYi4H9UXQaeIsPbLn2R3O3vQCnDKkAl2qHiuocKKX4Tz/Sw==
|
||||
|
||||
safe-buffer@^5.1.0:
|
||||
version "5.2.1"
|
||||
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6"
|
||||
|
@ -2626,7 +2824,7 @@ semver@^6.0.0:
|
|||
resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d"
|
||||
integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==
|
||||
|
||||
semver@^7.2.1:
|
||||
semver@^7.2.1, semver@^7.3.2:
|
||||
version "7.3.4"
|
||||
resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.4.tgz#27aaa7d2e4ca76452f98d3add093a72c943edc97"
|
||||
integrity sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==
|
||||
|
@ -2657,6 +2855,11 @@ signal-exit@^3.0.2:
|
|||
resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c"
|
||||
integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==
|
||||
|
||||
slash@^3.0.0:
|
||||
version "3.0.0"
|
||||
resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634"
|
||||
integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==
|
||||
|
||||
slice-ansi@^4.0.0:
|
||||
version "4.0.0"
|
||||
resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b"
|
||||
|
@ -2810,11 +3013,25 @@ to-fast-properties@^2.0.0:
|
|||
resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e"
|
||||
integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=
|
||||
|
||||
tslib@^1.9.0:
|
||||
to-regex-range@^5.0.1:
|
||||
version "5.0.1"
|
||||
resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4"
|
||||
integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==
|
||||
dependencies:
|
||||
is-number "^7.0.0"
|
||||
|
||||
tslib@^1.8.1, tslib@^1.9.0:
|
||||
version "1.14.1"
|
||||
resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00"
|
||||
integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==
|
||||
|
||||
tsutils@^3.17.1:
|
||||
version "3.17.1"
|
||||
resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.17.1.tgz#ed719917f11ca0dee586272b2ac49e015a2dd759"
|
||||
integrity sha512-kzeQ5B8H3w60nFY2g8cJIuH7JDpsALXySGtwGJ0p2LSjLgay3NdIpqq5SoOBe46bKDW2iq25irHCr8wjomUS2g==
|
||||
dependencies:
|
||||
tslib "^1.8.1"
|
||||
|
||||
type-check@^0.4.0, type-check@~0.4.0:
|
||||
version "0.4.0"
|
||||
resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1"
|
||||
|
|
Loading…
Reference in New Issue
Block a user