feat(website): add file upload

This commit is contained in:
MedzikUser 2022-05-24 15:27:35 +02:00
parent 6eed393d9f
commit b052aba024
No known key found for this signature in database
GPG Key ID: A5FAC1E185C112DB
13 changed files with 258 additions and 11 deletions

View File

@ -1,7 +1,8 @@
import list from "./list"
import login from "./login"
import register from "./register"
import upload from "./upload"
const api = { list, login, register }
const api = { list, login, register, upload }
export default api

View File

@ -30,5 +30,5 @@ export default async function list(path: string, token: string): Promise<any> {
throw new Error(err)
})
return response
return response
}

View File

@ -28,5 +28,5 @@ export default async function login(username: string, password: string): Promise
throw new Error(err)
})
return response
return response
}

View File

@ -28,5 +28,5 @@ export default async function register(username: string, password: string): Prom
throw new Error(err)
})
return response
return response
}

View File

@ -0,0 +1,32 @@
import axios from './axios'
export default async function list(path: string, formData: FormData, token: string): Promise<any> {
const request = axios.post(`/fs/upload?path=${path}`, formData, {
headers: {
Authorization: `Bearer ${token}`,
}
})
const response = request
.then(response => {
const { data } = response
return data
})
.catch(err => {
if (err.response?.data?.error_message) {
const error = err.response.data.error_message
if (error.toString() == "[object Object]") {
Object.keys(error).forEach(key => {
throw new Error(key)
})
}
throw new Error(error)
}
throw new Error(err)
})
return response
}

View File

@ -0,0 +1,14 @@
const style = {
position: 'absolute' as 'absolute',
top: '50%',
left: '50%',
transform: 'translate(-50%, -50%)',
width: 400,
bgcolor: 'background.paper',
color: 'primary.main',
border: '2px solid #fff',
boxShadow: 24,
p: 4
}
export default style

View File

@ -0,0 +1,93 @@
import React, { useState } from 'react'
import { Backdrop, Box, Button, Fade, Link, Modal } from "@mui/material"
import { useCookies } from "react-cookie"
import { toast } from 'react-toastify'
import api from '../../../api_utils'
import style from './style'
function UploadModal({ open, setOpen, path, refresh }: Props) {
const [file, setFile]: [FileList | null | undefined, React.Dispatch<React.SetStateAction<FileList | null | undefined>>] = useState()
const [cookies] = useCookies(["token"])
const onFileChange: React.ChangeEventHandler<HTMLInputElement> = event => {
setFile(event.target.files)
console.log(file)
}
const handleUpload = () => {
const formData = new FormData()
if (file == null || typeof file == "undefined") {
return
}
formData.append(
"file",
file[0]
)
const filePath = `${path}/${file[0].name}`
const request = api.upload(filePath, formData, cookies.token)
toast.promise(
request,
{
pending: 'Uploading file...',
success: {
delay: 500,
render() {
refresh()
setOpen(false)
return "File uploaded!"
}
},
error: {
delay: 500,
render(err) {
if (err.data.response?.data?.error_message) {
return err.data.response.data.error_message.toString()
} else {
return err.data.toString()
}
}
}
}
)
}
return (
<Modal
open={open}
onClose={() => setOpen(false)}
closeAfterTransition
BackdropComponent={Backdrop}
BackdropProps={{
timeout: 500,
}}
>
<Fade in={open}>
<Box sx={style}>
<input type="file" onChange={onFileChange} />
<Link>
<Button variant="outlined" onClick={handleUpload}>
Upload
</Button>
</Link>
</Box>
</Fade>
</Modal>
)
}
export type Props = {
open: boolean,
setOpen: React.Dispatch<React.SetStateAction<boolean>>,
path: string,
refresh: () => void,
}
export default UploadModal

View File

@ -27,6 +27,7 @@
"react-cookie": "4.1.1",
"react-dom": "18.1.0",
"react-is": "18.1.0",
"react-toastify": "9.0.1",
"styled-components": "5.3.5"
},
"devDependencies": {

View File

@ -1,11 +1,13 @@
import { ThemeProvider as MuiThemeProvider, createTheme as muiCreateTheme, PaletteMode } from '@mui/material'
import { useEffect, useState } from 'react'
import { useCookies } from 'react-cookie'
import { ToastContainer } from 'react-toastify'
import { createGlobalStyle, ThemeProvider } from 'styled-components'
import Container from '../components/container'
import Footer from '../components/footer'
import Header from '../components/header'
import Main from '../components/main'
import "react-toastify/dist/ReactToastify.css"
const GlobalStyle = createGlobalStyle`
html,
@ -114,6 +116,8 @@ export default function App({ Component, pageProps }) {
<>
<GlobalStyle />
<ToastContainer theme={themeName} />
<MuiThemeProvider theme={muiThene}>
<ThemeProvider theme={theme}>
<Container>

View File

@ -10,10 +10,10 @@ import ErrorComponent from '../components/auth/error'
import SubmitButton from '../components/auth/button'
export default function Login() {
const [cookie, setCookie] = useCookies(["token"])
const [cookies, setCookies] = useCookies(["token"])
useEffect(() => {
if (cookie.token) {
if (cookies.token) {
Router.push('/user/files')
}
})
@ -44,7 +44,7 @@ export default function Login() {
request
.then(token => {
setCookie("token", token)
setCookies("token", token)
setError("")
})
.catch(err => setError(err.toString()))

View File

@ -10,10 +10,10 @@ import Title from '../components/auth/title'
import SubmitButton from '../components/auth/button'
export default function Login() {
const [cookie, setCookie] = useCookies(["token"])
const [cookies, setCookies] = useCookies(["token"])
useEffect(() => {
if (cookie.token) {
if (cookies.token) {
Router.push('/user/files')
}
})
@ -44,7 +44,7 @@ export default function Login() {
request
.then(token => {
setCookie("token", token)
setCookies("token", token)
setError("")
})
.catch(err => setError(err.toString()))

View File

@ -1,5 +1,6 @@
import { faFile, faFolder } from "@fortawesome/free-solid-svg-icons"
import { Link as MuiLink } from "@mui/material"
import { CloudUpload } from "@mui/icons-material"
import { IconButton, Link as MuiLink } from "@mui/material"
import Head from 'next/head'
import Link from 'next/link'
import { useEffect, useState } from 'react'
@ -8,6 +9,7 @@ import { resolve as pathResolve } from 'path'
import api from '../../api_utils'
import Icon from "../../components/other/icon"
import Table from "../../components/user/table"
import UploadModal from "../../components/user/modals/upload"
export default function Files() {
const [cookies] = useCookies(["token"])
@ -26,6 +28,8 @@ export default function Files() {
.catch(err => console.error(err))
}
const refreshFolder = () => refresh(path)
useEffect(() => {
const params = new URLSearchParams(window.location.search)
const path = params.get("path") || ""
@ -39,12 +43,28 @@ export default function Files() {
.catch(err => console.error(err))
}, [cookies])
// modals
const [uploadModal, setUploadModal] = useState(false)
return (
<>
<Head>
<title>Files - HomeDisk</title>
</Head>
<MuiLink onClick={() => setUploadModal(true)}>
<IconButton
size="large"
edge="start"
color="inherit"
aria-label="logo"
>
<CloudUpload />
</IconButton>
</MuiLink>
<UploadModal open={uploadModal} setOpen={setUploadModal} path={path} refresh={refreshFolder} />
<Table>
<thead>
<tr>

View File

@ -21,6 +21,7 @@ specifiers:
react-cookie: 4.1.1
react-dom: 18.1.0
react-is: 18.1.0
react-toastify: 9.0.1
styled-components: 5.3.5
typescript: 4.6.4
@ -40,6 +41,7 @@ dependencies:
react-cookie: 4.1.1_react@18.1.0
react-dom: 18.1.0_react@18.1.0
react-is: 18.1.0
react-toastify: 9.0.1_ef5jwxihqo6n7gxfmzogljlgcm
styled-components: 5.3.5_4klixn56hmiqf6hh5nx3jyckvq
devDependencies:
@ -58,16 +60,19 @@ packages:
dependencies:
'@jridgewell/gen-mapping': 0.1.1
'@jridgewell/trace-mapping': 0.3.10
dev: false
/@babel/code-frame/7.16.7:
resolution: {integrity: sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==}
engines: {node: '>=6.9.0'}
dependencies:
'@babel/highlight': 7.17.9
dev: false
/@babel/compat-data/7.17.10:
resolution: {integrity: sha512-GZt/TCsG70Ms19gfZO1tM4CVnXsPgEPBCpJu+Qz3L0LUDsY5nZqFZglIoPC1kIYOtNBZlrnFT+klg12vFGZXrw==}
engines: {node: '>=6.9.0'}
dev: false
/@babel/core/7.18.0:
resolution: {integrity: sha512-Xyw74OlJwDijToNi0+6BBI5mLLR5+5R3bcSH80LXzjzEGEUlvNzujEE71BaD/ApEZHAvFI/Mlmp4M5lIkdeeWw==}
@ -90,6 +95,7 @@ packages:
semver: 6.3.0
transitivePeerDependencies:
- supports-color
dev: false
/@babel/generator/7.18.0:
resolution: {integrity: sha512-81YO9gGx6voPXlvYdZBliFXAZU8vZ9AZ6z+CjlmcnaeOcYSFbMTpdeDUO9xD9dh/68Vq03I8ZspfUTPfitcDHg==}
@ -98,6 +104,7 @@ packages:
'@babel/types': 7.18.0
'@jridgewell/gen-mapping': 0.3.1
jsesc: 2.5.2
dev: false
/@babel/helper-annotate-as-pure/7.16.7:
resolution: {integrity: sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw==}
@ -117,12 +124,14 @@ packages:
'@babel/helper-validator-option': 7.16.7
browserslist: 4.20.3
semver: 6.3.0
dev: false
/@babel/helper-environment-visitor/7.16.7:
resolution: {integrity: sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag==}
engines: {node: '>=6.9.0'}
dependencies:
'@babel/types': 7.18.0
dev: false
/@babel/helper-function-name/7.17.9:
resolution: {integrity: sha512-7cRisGlVtiVqZ0MW0/yFB4atgpGLWEHUVYnb448hZK4x+vih0YO5UoS11XIYtZYqHd0dIPMdUSv8q5K4LdMnIg==}
@ -130,18 +139,21 @@ packages:
dependencies:
'@babel/template': 7.16.7
'@babel/types': 7.18.0
dev: false
/@babel/helper-hoist-variables/7.16.7:
resolution: {integrity: sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==}
engines: {node: '>=6.9.0'}
dependencies:
'@babel/types': 7.18.0
dev: false
/@babel/helper-module-imports/7.16.7:
resolution: {integrity: sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==}
engines: {node: '>=6.9.0'}
dependencies:
'@babel/types': 7.18.0
dev: false
/@babel/helper-module-transforms/7.18.0:
resolution: {integrity: sha512-kclUYSUBIjlvnzN2++K9f2qzYKFgjmnmjwL4zlmU5f8ZtzgWe8s0rUPSTGy2HmK4P8T52MQsS+HTQAgZd3dMEA==}
@ -157,6 +169,7 @@ packages:
'@babel/types': 7.18.0
transitivePeerDependencies:
- supports-color
dev: false
/@babel/helper-plugin-utils/7.16.7:
resolution: {integrity: sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==}
@ -168,20 +181,24 @@ packages:
engines: {node: '>=6.9.0'}
dependencies:
'@babel/types': 7.18.0
dev: false
/@babel/helper-split-export-declaration/7.16.7:
resolution: {integrity: sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==}
engines: {node: '>=6.9.0'}
dependencies:
'@babel/types': 7.18.0
dev: false
/@babel/helper-validator-identifier/7.16.7:
resolution: {integrity: sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==}
engines: {node: '>=6.9.0'}
dev: false
/@babel/helper-validator-option/7.16.7:
resolution: {integrity: sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==}
engines: {node: '>=6.9.0'}
dev: false
/@babel/helpers/7.18.0:
resolution: {integrity: sha512-AE+HMYhmlMIbho9nbvicHyxFwhrO+xhKB6AhRxzl8w46Yj0VXTZjEsAoBVC7rB2I0jzX+yWyVybnO08qkfx6kg==}
@ -192,6 +209,7 @@ packages:
'@babel/types': 7.18.0
transitivePeerDependencies:
- supports-color
dev: false
/@babel/highlight/7.17.9:
resolution: {integrity: sha512-J9PfEKCbFIv2X5bjTMiZu6Vf341N05QIY+d6FvVKynkG1S7G0j3I0QoRtWIrXhZ+/Nlb5Q0MzqL7TokEJ5BNHg==}
@ -200,6 +218,7 @@ packages:
'@babel/helper-validator-identifier': 7.16.7
chalk: 2.4.2
js-tokens: 4.0.0
dev: false
/@babel/parser/7.18.0:
resolution: {integrity: sha512-AqDccGC+m5O/iUStSJy3DGRIUFu7WbY/CppZYwrEUB4N0tZlnI8CSTsgL7v5fHVFmUbRv2sd+yy27o8Ydt4MGg==}
@ -207,6 +226,7 @@ packages:
hasBin: true
dependencies:
'@babel/types': 7.18.0
dev: false
/@babel/plugin-syntax-jsx/7.16.7_@babel+core@7.18.0:
resolution: {integrity: sha512-Esxmk7YjA8QysKeT3VhTXvF6y77f/a91SIs4pWb4H2eWGQkCKFgQaG6hdoEVZtGsrAcb2K5BW66XsOErD4WU3Q==}
@ -239,6 +259,7 @@ packages:
'@babel/code-frame': 7.16.7
'@babel/parser': 7.18.0
'@babel/types': 7.18.0
dev: false
/@babel/traverse/7.17.10_supports-color@5.5.0:
resolution: {integrity: sha512-VmbrTHQteIdUUQNTb+zE12SHS/xQVIShmBPhlNP12hD5poF2pbITW1Z4172d03HegaQWhLffdkRJYtAzp0AGcw==}
@ -274,6 +295,7 @@ packages:
globals: 11.12.0
transitivePeerDependencies:
- supports-color
dev: false
/@babel/types/7.18.0:
resolution: {integrity: sha512-vhAmLPAiC8j9K2GnsnLPCIH5wCrPpYIVBCWRBFDCB7Y/BXLqi/O+1RSTTM2bsmg6U/551+FCf9PNPxjABmxHTw==}
@ -281,6 +303,7 @@ packages:
dependencies:
'@babel/helper-validator-identifier': 7.16.7
to-fast-properties: 2.0.0
dev: false
/@emotion/babel-plugin/11.9.2_@babel+core@7.18.0:
resolution: {integrity: sha512-Pr/7HGH6H6yKgnVFNEj2MVlreu3ADqftqjqwUvDy/OJzKFgxKeTQ+eeUf20FOTuHVkDON2iNa25rAXVYtWJCjw==}
@ -475,6 +498,7 @@ packages:
dependencies:
'@jridgewell/set-array': 1.1.1
'@jridgewell/sourcemap-codec': 1.4.13
dev: false
/@jridgewell/gen-mapping/0.3.1:
resolution: {integrity: sha512-GcHwniMlA2z+WFPWuY8lp3fsza0I8xPFMWL5+n8LYyP6PSvPrXf4+n8stDHZY2DM0zy9sVkRDy1jDI4XGzYVqg==}
@ -483,23 +507,28 @@ packages:
'@jridgewell/set-array': 1.1.1
'@jridgewell/sourcemap-codec': 1.4.13
'@jridgewell/trace-mapping': 0.3.10
dev: false
/@jridgewell/resolve-uri/3.0.7:
resolution: {integrity: sha512-8cXDaBBHOr2pQ7j77Y6Vp5VDT2sIqWyWQ56TjEq4ih/a4iST3dItRe8Q9fp0rrIl9DoKhWQtUQz/YpOxLkXbNA==}
engines: {node: '>=6.0.0'}
dev: false
/@jridgewell/set-array/1.1.1:
resolution: {integrity: sha512-Ct5MqZkLGEXTVmQYbGtx9SVqD2fqwvdubdps5D3djjAkgkKwT918VNOz65pEHFaYTeWcukmJmH5SwsA9Tn2ObQ==}
engines: {node: '>=6.0.0'}
dev: false
/@jridgewell/sourcemap-codec/1.4.13:
resolution: {integrity: sha512-GryiOJmNcWbovBxTfZSF71V/mXbgcV3MewDe3kIMCLyIh5e7SKAeUZs+rMnJ8jkMolZ/4/VsdBmMrw3l+VdZ3w==}
dev: false
/@jridgewell/trace-mapping/0.3.10:
resolution: {integrity: sha512-Q0YbBd6OTsXm8Y21+YUSDXupHnodNC2M4O18jtd3iwJ3+vMZNdKGols0a9G6JOK0dcJ3IdUUHoh908ZI6qhk8Q==}
dependencies:
'@jridgewell/resolve-uri': 3.0.7
'@jridgewell/sourcemap-codec': 1.4.13
dev: false
/@mui/base/5.0.0-alpha.82_ohobp6rpsmerwlq5ipwfh5yigy:
resolution: {integrity: sha512-WUVDjCGnLXzmGxrmfW31blhucg0sRX4YddK2Falq7FlVzwdJaPgWn/xzPZmdLL0+WXon0gQVnDrq2qvggE/GMg==}
@ -688,6 +717,7 @@ packages:
/@next/env/12.1.6:
resolution: {integrity: sha512-Te/OBDXFSodPU6jlXYPAXpmZr/AkG6DCATAxttQxqOWaq6eDFX25Db3dK0120GZrSZmv4QCe9KsZmJKDbWs4OA==}
dev: false
/@next/eslint-plugin-next/12.1.6:
resolution: {integrity: sha512-yNUtJ90NEiYFT6TJnNyofKMPYqirKDwpahcbxBgSIuABwYOdkGwzos1ZkYD51Qf0diYwpQZBeVqElTk7Q2WNqw==}
@ -701,6 +731,7 @@ packages:
cpu: [arm]
os: [android]
requiresBuild: true
dev: false
optional: true
/@next/swc-android-arm64/12.1.6:
@ -709,6 +740,7 @@ packages:
cpu: [arm64]
os: [android]
requiresBuild: true
dev: false
optional: true
/@next/swc-darwin-arm64/12.1.6:
@ -717,6 +749,7 @@ packages:
cpu: [arm64]
os: [darwin]
requiresBuild: true
dev: false
optional: true
/@next/swc-darwin-x64/12.1.6:
@ -725,6 +758,7 @@ packages:
cpu: [x64]
os: [darwin]
requiresBuild: true
dev: false
optional: true
/@next/swc-linux-arm-gnueabihf/12.1.6:
@ -733,6 +767,7 @@ packages:
cpu: [arm]
os: [linux]
requiresBuild: true
dev: false
optional: true
/@next/swc-linux-arm64-gnu/12.1.6:
@ -741,6 +776,7 @@ packages:
cpu: [arm64]
os: [linux]
requiresBuild: true
dev: false
optional: true
/@next/swc-linux-arm64-musl/12.1.6:
@ -749,6 +785,7 @@ packages:
cpu: [arm64]
os: [linux]
requiresBuild: true
dev: false
optional: true
/@next/swc-linux-x64-gnu/12.1.6:
@ -757,6 +794,7 @@ packages:
cpu: [x64]
os: [linux]
requiresBuild: true
dev: false
optional: true
/@next/swc-linux-x64-musl/12.1.6:
@ -765,6 +803,7 @@ packages:
cpu: [x64]
os: [linux]
requiresBuild: true
dev: false
optional: true
/@next/swc-win32-arm64-msvc/12.1.6:
@ -773,6 +812,7 @@ packages:
cpu: [arm64]
os: [win32]
requiresBuild: true
dev: false
optional: true
/@next/swc-win32-ia32-msvc/12.1.6:
@ -781,6 +821,7 @@ packages:
cpu: [ia32]
os: [win32]
requiresBuild: true
dev: false
optional: true
/@next/swc-win32-x64-msvc/12.1.6:
@ -789,6 +830,7 @@ packages:
cpu: [x64]
os: [win32]
requiresBuild: true
dev: false
optional: true
/@nodelib/fs.scandir/2.1.5:
@ -873,6 +915,7 @@ packages:
'@types/hoist-non-react-statics': 3.3.1
'@types/react': 18.0.9
csstype: 3.0.11
dev: true
/@typescript-eslint/parser/5.22.0_utdtartgf6fqqgkivzeynh76la:
resolution: {integrity: sha512-piwC4krUpRDqPaPbFaycN70KCP87+PC5WZmrWs+DlVOxxmF+zI6b6hETv7Quy4s9wbkV16ikMeZgXsvzwI3icQ==}
@ -969,6 +1012,7 @@ packages:
engines: {node: '>=4'}
dependencies:
color-convert: 1.9.3
dev: false
/ansi-styles/4.3.0:
resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==}
@ -1104,6 +1148,7 @@ packages:
escalade: 3.1.1
node-releases: 2.0.4
picocolors: 1.0.0
dev: false
/call-bind/1.0.2:
resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==}
@ -1122,6 +1167,7 @@ packages:
/caniuse-lite/1.0.30001338:
resolution: {integrity: sha512-1gLHWyfVoRDsHieO+CaeYe7jSo/MT7D7lhaXUiwwbuR5BwQxORs0f1tAwUSQr3YbxRXJvxHM/PA5FfPQRnsPeQ==}
dev: false
/chalk/2.4.2:
resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==}
@ -1130,6 +1176,7 @@ packages:
ansi-styles: 3.2.1
escape-string-regexp: 1.0.5
supports-color: 5.5.0
dev: false
/chalk/4.1.2:
resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
@ -1148,6 +1195,7 @@ packages:
resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==}
dependencies:
color-name: 1.1.3
dev: false
/color-convert/2.0.1:
resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
@ -1158,6 +1206,7 @@ packages:
/color-name/1.1.3:
resolution: {integrity: sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=}
dev: false
/color-name/1.1.4:
resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
@ -1178,6 +1227,7 @@ packages:
resolution: {integrity: sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==}
dependencies:
safe-buffer: 5.1.2
dev: false
/cookie/0.4.2:
resolution: {integrity: sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==}
@ -1322,6 +1372,7 @@ packages:
/electron-to-chromium/1.4.137:
resolution: {integrity: sha512-0Rcpald12O11BUogJagX3HsCN3FE83DSqWjgXoHo5a72KUKMSfI39XBgJpgNNxS9fuGzytaFjE06kZkiVFy2qA==}
dev: false
/emoji-regex/9.2.2:
resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==}
@ -1380,10 +1431,12 @@ packages:
/escalade/3.1.1:
resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==}
engines: {node: '>=6'}
dev: false
/escape-string-regexp/1.0.5:
resolution: {integrity: sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=}
engines: {node: '>=0.8.0'}
dev: false
/escape-string-regexp/4.0.0:
resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==}
@ -1772,6 +1825,7 @@ packages:
/gensync/1.0.0-beta.2:
resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==}
engines: {node: '>=6.9.0'}
dev: false
/get-intrinsic/1.1.1:
resolution: {integrity: sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==}
@ -1828,6 +1882,7 @@ packages:
/globals/11.12.0:
resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==}
engines: {node: '>=4'}
dev: false
/globals/13.15.0:
resolution: {integrity: sha512-bpzcOlgDhMG070Av0Vy5Owklpv1I6+j96GhUI7Rh7IzDCKLzboflLrrfqMu8NquDbiR4EOQk7XzJwqVJxicxog==}
@ -1855,6 +1910,7 @@ packages:
/has-flag/3.0.0:
resolution: {integrity: sha1-tdRU3CGZriJWmfNGfloH87lVuv0=}
engines: {node: '>=4'}
dev: false
/has-flag/4.0.0:
resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==}
@ -2043,6 +2099,7 @@ packages:
resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==}
engines: {node: '>=4'}
hasBin: true
dev: false
/json-parse-even-better-errors/2.3.1:
resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==}
@ -2067,6 +2124,7 @@ packages:
resolution: {integrity: sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==}
engines: {node: '>=6'}
hasBin: true
dev: false
/jsx-ast-utils/3.3.0:
resolution: {integrity: sha512-XzO9luP6L0xkxwhIJMTJQpZo/eeN60K08jHdexfD569AGxeNug6UketeHXEhROoM8aR7EcUoOQmIhcJQjcuq8Q==}
@ -2173,6 +2231,7 @@ packages:
resolution: {integrity: sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==}
engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
hasBin: true
dev: false
/natural-compare/1.4.0:
resolution: {integrity: sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=}
@ -2218,9 +2277,11 @@ packages:
transitivePeerDependencies:
- '@babel/core'
- babel-plugin-macros
dev: false
/node-releases/2.0.4:
resolution: {integrity: sha512-gbMzqQtTtDz/00jQzZ21PQzdI9PyLYqUSvD0p3naOhX4odFji0ZxYdnVwPTxmSwkmxhcFImpozceidSG+AgoPQ==}
dev: false
/object-assign/4.1.1:
resolution: {integrity: sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=}
@ -2356,6 +2417,7 @@ packages:
/picocolors/1.0.0:
resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==}
dev: false
/picomatch/2.3.1:
resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
@ -2372,6 +2434,7 @@ packages:
nanoid: 3.3.4
picocolors: 1.0.0
source-map-js: 1.0.2
dev: false
/prelude-ls/1.2.1:
resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==}
@ -2413,6 +2476,7 @@ packages:
loose-envify: 1.4.0
react: 18.1.0
scheduler: 0.22.0
dev: false
/react-is/16.13.1:
resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==}
@ -2425,6 +2489,17 @@ packages:
resolution: {integrity: sha512-Fl7FuabXsJnV5Q1qIOQwx/sagGF18kogb4gpfcG4gjLBWO0WDiiz1ko/ExayuxE7InyQkBLkxRFG5oxY6Uu3Kg==}
dev: false
/react-toastify/9.0.1_ef5jwxihqo6n7gxfmzogljlgcm:
resolution: {integrity: sha512-c2zeZHkCX+WXuItS/JRqQ/8CH8Qm/je+M0rt09xe9fnu5YPJigtNOdD8zX4fwLA093V2am3abkGfOowwpkrwOQ==}
peerDependencies:
react: '>=16'
react-dom: '>=16'
dependencies:
clsx: 1.1.1
react: 18.1.0
react-dom: 18.1.0_react@18.1.0
dev: false
/react-transition-group/4.4.2_ef5jwxihqo6n7gxfmzogljlgcm:
resolution: {integrity: sha512-/RNYfRAMlZwDSr6z4zNKV6xu53/e2BuaBbGhbyYIXTrmgu/bGHzmqOs7mJSJBHy9Ud+ApHx3QjrkKSp1pxvlFg==}
peerDependencies:
@ -2444,6 +2519,7 @@ packages:
engines: {node: '>=0.10.0'}
dependencies:
loose-envify: 1.4.0
dev: false
/regenerator-runtime/0.13.9:
resolution: {integrity: sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==}
@ -2501,11 +2577,13 @@ packages:
/safe-buffer/5.1.2:
resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==}
dev: false
/scheduler/0.22.0:
resolution: {integrity: sha512-6QAm1BgQI88NPYymgGQLCZgvep4FyePDWFpXVK+zNSUgHwlqpJy8VEh8Et0KxTACS4VWwMousBElAZOH9nkkoQ==}
dependencies:
loose-envify: 1.4.0
dev: false
/semver/6.3.0:
resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==}
@ -2551,6 +2629,7 @@ packages:
/source-map-js/1.0.2:
resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==}
engines: {node: '>=0.10.0'}
dev: false
/source-map/0.5.7:
resolution: {integrity: sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=}
@ -2642,6 +2721,7 @@ packages:
dependencies:
'@babel/core': 7.18.0
react: 18.1.0
dev: false
/stylis/4.0.13:
resolution: {integrity: sha512-xGPXiFVl4YED9Jh7Euv2V220mriG9u4B2TA6Ybjc1catrstKD2PpIdU3U0RKpkVBC2EhmL/F0sPCr9vrFTNRag==}
@ -2652,6 +2732,7 @@ packages:
engines: {node: '>=4'}
dependencies:
has-flag: 3.0.0
dev: false
/supports-color/7.2.0:
resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==}
@ -2671,6 +2752,7 @@ packages:
/to-fast-properties/2.0.0:
resolution: {integrity: sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=}
engines: {node: '>=4'}
dev: false
/to-regex-range/5.0.1:
resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}