├── .gitignore ├── index.html ├── package.json ├── public └── vite.svg ├── src ├── App.css ├── App.tsx ├── assets │ ├── react.svg │ └── style │ │ ├── addTodo.css │ │ └── listTodo.css ├── component │ ├── AddTodo.tsx │ └── Listtodo.tsx ├── index.css ├── main.tsx ├── redux │ ├── TodoReducer │ │ ├── todoActions.ts │ │ └── todoReducer.ts │ └── store.ts ├── type.ts └── vite-env.d.ts ├── tsconfig.json ├── tsconfig.node.json ├── vite.config.ts └── yarn.lock /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | pnpm-debug.log* 8 | lerna-debug.log* 9 | 10 | node_modules 11 | dist 12 | dist-ssr 13 | *.local 14 | 15 | # Editor directories and files 16 | .vscode/* 17 | !.vscode/extensions.json 18 | .idea 19 | .DS_Store 20 | *.suo 21 | *.ntvs* 22 | *.njsproj 23 | *.sln 24 | *.sw? 25 | -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Vite + React + TS 8 | 9 | 10 |
11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "typescript-todo-frontend", 3 | "private": true, 4 | "version": "0.0.0", 5 | "type": "module", 6 | "scripts": { 7 | "dev": "vite", 8 | "build": "tsc && vite build", 9 | "preview": "vite preview" 10 | }, 11 | "dependencies": { 12 | "react": "^18.2.0", 13 | "react-dom": "^18.2.0", 14 | "react-redux": "^8.0.5", 15 | "redux": "^4.2.1", 16 | "redux-thunk": "^2.4.2" 17 | }, 18 | "devDependencies": { 19 | "@types/react": "^18.0.28", 20 | "@types/react-dom": "^18.0.11", 21 | "@types/react-redux": "^7.1.25", 22 | "@types/redux": "^3.6.0", 23 | "@types/redux-thunk": "^2.1.0", 24 | "@vitejs/plugin-react-swc": "^3.0.0", 25 | "typescript": "^4.9.3", 26 | "vite": "^4.2.0" 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /public/vite.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/App.css: -------------------------------------------------------------------------------- 1 | #root { 2 | max-width: 1280px; 3 | margin: 0 auto; 4 | padding: 2rem; 5 | text-align: center; 6 | } 7 | .contentBox { 8 | border: 1px solid red; 9 | min-height: 400px; 10 | min-width: 400px; 11 | } 12 | -------------------------------------------------------------------------------- /src/App.tsx: -------------------------------------------------------------------------------- 1 | import { useState } from 'react' 2 | import './App.css' 3 | import AddTodo from './component/AddTodo' 4 | import { rootReducerType } from './redux/store' 5 | import { useSelector } from 'react-redux' 6 | import Listtodo from './component/Listtodo' 7 | import { TodoTask } from './type' 8 | 9 | function App() { 10 | const { 11 | iserror, 12 | isloading, 13 | todoList 14 | } = useSelector((store: rootReducerType) => store.todolist) 15 | 16 | 17 | return ( 18 |
19 |

Todo App with typescript

20 |
21 | 22 | { 23 | todoList.map((todo: TodoTask, index :number) => { 24 | return 25 | }) 26 | } 27 |
28 |
29 | ) 30 | } 31 | 32 | export default App 33 | -------------------------------------------------------------------------------- /src/assets/react.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/style/addTodo.css: -------------------------------------------------------------------------------- 1 | .addBox { 2 | width: 100%; 3 | 4 | } 5 | .form{ 6 | display: flex; 7 | justify-content: space-between; 8 | padding: 10px 5%; 9 | } 10 | input{ 11 | width: 90%; 12 | height: 30px; 13 | outline: none; 14 | padding-left: 10px; 15 | } 16 | button{ 17 | height: 34px; 18 | } 19 | -------------------------------------------------------------------------------- /src/assets/style/listTodo.css: -------------------------------------------------------------------------------- 1 | .listbar { 2 | width: 80%; 3 | padding: 1rem 6%; 4 | margin: auto; 5 | margin-top: 10px; 6 | display: flex; 7 | justify-content: space-around; 8 | align-items: center; 9 | box-shadow: rgba(100, 100, 111, 0.2) 0px 7px 29px 0px; 10 | 11 | } 12 | -------------------------------------------------------------------------------- /src/component/AddTodo.tsx: -------------------------------------------------------------------------------- 1 | import React, { FormEvent, ChangeEvent, useState, Dispatch, useRef } from 'react' 2 | import '../assets/style/addTodo.css' 3 | import { useDispatch } from 'react-redux' 4 | import { addTodo } from '../redux/TodoReducer/todoActions' 5 | 6 | const AddTodo: React.FC = () => { 7 | const [context, setContext] = useState('') 8 | const dispatch = useDispatch() 9 | const focus = useRef(null) 10 | const handleChange = (event: ChangeEvent) => { 11 | setContext(event.target.value) 12 | } 13 | 14 | const handleadd = (event: FormEvent) => { 15 | event.preventDefault() 16 | addTodo(context)(dispatch) 17 | setContext('') 18 | focus.current?.focus() 19 | } 20 | return ( 21 |
handleadd(event)}> 22 |
23 | handleChange(event)} required /> 24 | 25 |
26 |
27 | ) 28 | } 29 | 30 | export default AddTodo 31 | -------------------------------------------------------------------------------- /src/component/Listtodo.tsx: -------------------------------------------------------------------------------- 1 | import React, { ChangeEvent, useState } from 'react' 2 | import { TodoTask } from '../type' 3 | import "../assets/style/listTodo.css" 4 | import { useDispatch } from 'react-redux' 5 | import { deleteTodoTask } from '../redux/TodoReducer/todoActions' 6 | 7 | interface ListTodoType { 8 | todo: TodoTask 9 | } 10 | 11 | const Listtodo: React.FC = ({ todo }) => { 12 | console.log('Listtodo', todo) 13 | const dispatch = useDispatch() 14 | const deletetask = (id: number) => { 15 | deleteTodoTask(id)(dispatch) 16 | } 17 | const [isedit, setIsedit] = useState(false) 18 | const [value, setValue] = useState(todo.context) 19 | const handleeditvalue = (event: ChangeEvent) => { 20 | setValue(event.target.value) 21 | } 22 | const handleEdit = (id: number) => { } 23 | return ( 24 |
25 | { 26 | isedit ? : 27 |

setIsedit((prev) => !prev)}>{todo.context}

28 | } 29 | 30 | 31 |
32 | ) 33 | } 34 | 35 | export default Listtodo -------------------------------------------------------------------------------- /src/index.css: -------------------------------------------------------------------------------- 1 | :root { 2 | font-family: Inter, system-ui, Avenir, Helvetica, Arial, sans-serif; 3 | line-height: 1.5; 4 | font-weight: 400; 5 | 6 | color-scheme: light dark; 7 | color: rgba(255, 255, 255, 0.87); 8 | background-color: #242424; 9 | 10 | font-synthesis: none; 11 | text-rendering: optimizeLegibility; 12 | -webkit-font-smoothing: antialiased; 13 | -moz-osx-font-smoothing: grayscale; 14 | -webkit-text-size-adjust: 100%; 15 | } 16 | 17 | a { 18 | font-weight: 500; 19 | color: #646cff; 20 | text-decoration: inherit; 21 | } 22 | a:hover { 23 | color: #535bf2; 24 | } 25 | 26 | body { 27 | margin: 0; 28 | display: flex; 29 | place-items: center; 30 | min-width: 320px; 31 | min-height: 100vh; 32 | } 33 | 34 | h1 { 35 | font-size: 3.2em; 36 | line-height: 1.1; 37 | } 38 | 39 | button { 40 | border-radius: 8px; 41 | border: 1px solid transparent; 42 | padding: 0.6em 1.2em; 43 | font-size: 1em; 44 | font-weight: 500; 45 | font-family: inherit; 46 | background-color: #1a1a1a; 47 | cursor: pointer; 48 | transition: border-color 0.25s; 49 | } 50 | button:hover { 51 | border-color: #646cff; 52 | } 53 | button:focus, 54 | button:focus-visible { 55 | outline: 4px auto -webkit-focus-ring-color; 56 | } 57 | 58 | @media (prefers-color-scheme: light) { 59 | :root { 60 | color: #213547; 61 | background-color: #ffffff; 62 | } 63 | a:hover { 64 | color: #747bff; 65 | } 66 | button { 67 | background-color: #f9f9f9; 68 | } 69 | } 70 | -------------------------------------------------------------------------------- /src/main.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import ReactDOM from 'react-dom/client' 3 | import App from './App' 4 | import './index.css' 5 | import { Provider } from 'react-redux' 6 | import { store } from './redux/store' 7 | 8 | ReactDOM.createRoot(document.getElementById('root') as HTMLElement).render( 9 | 10 | 11 | 12 | 13 | , 14 | ) 15 | -------------------------------------------------------------------------------- /src/redux/TodoReducer/todoActions.ts: -------------------------------------------------------------------------------- 1 | import { Dispatch } from "react"; 2 | import { ActionTypes, payloadType } from "../../type"; 3 | 4 | export const addTodo = (payload: payloadType) => (dispatch: Dispatch<{ type: ActionTypes, payload?: payloadType }>) => { 5 | dispatch({ 6 | type: ActionTypes.LOADING 7 | }) 8 | 9 | dispatch({ 10 | type: ActionTypes.COMPLETED, 11 | payload: payload 12 | }) 13 | // dispatch({ 14 | // type: ActionTypes.ERROR 15 | // }) 16 | } 17 | export const deleteTodoTask = (payload: number) => (dispatch: Dispatch<{ 18 | type: ActionTypes, payload: { 19 | id: number, 20 | } 21 | }>) => { 22 | dispatch({ 23 | type: ActionTypes.DELETE, payload: { 24 | id: payload 25 | } 26 | }) 27 | } 28 | 29 | interface editPayload { 30 | id: number, 31 | context: string 32 | } 33 | export const editvalue = (payload: { id: number, context: string }) => (dispatch: Dispatch<{ 34 | type: ActionTypes, payload: payloadType 35 | }>) => { 36 | 37 | dispatch({ type: ActionTypes.UPDATE, payload: payload }) 38 | } -------------------------------------------------------------------------------- /src/redux/TodoReducer/todoReducer.ts: -------------------------------------------------------------------------------- 1 | import { ActionType, ActionTypes, TodoTask, Todos, initialStatetype } from "../../type"; 2 | 3 | 4 | export const initialState: initialStatetype = { 5 | isloading: false, 6 | iserror: false, 7 | todoList: [] 8 | } 9 | 10 | export const todoReducer = (state = initialState, action: ActionType) => { 11 | switch (action.type) { 12 | case ActionTypes.LOADING: { 13 | return { 14 | ...state, 15 | isloading: true 16 | } 17 | } 18 | case ActionTypes.ERROR: { 19 | return { 20 | ...state, 21 | iserror: true 22 | } 23 | } 24 | case ActionTypes.COMPLETED: { 25 | return { 26 | ...state, 27 | isloading: false, 28 | iserror: false, 29 | todoList: [ 30 | ...state.todoList, 31 | { 32 | id: state.todoList.length + 1, 33 | isdone: false, 34 | context: action.payload 35 | } 36 | ] 37 | } 38 | } 39 | case ActionTypes.UPDATE: { 40 | let targetContext = state.todoList.map((todo) => { 41 | if (todo.id !== action.payload.id) return todo 42 | else return { 43 | ...todo, 44 | context: action.payload.context 45 | } 46 | }) 47 | console.log("update", { 48 | 49 | ...state, 50 | todoList: targetContext 51 | }) 52 | return { 53 | ...state, 54 | todoList: [ 55 | ...state.todoList, 56 | ...targetContext] 57 | } 58 | 59 | } 60 | case ActionTypes.DELETE: { 61 | const DeleteTask = state.todoList.filter(todoObject => todoObject.id != action.payload.id) 62 | return { 63 | ...state, 64 | todoList: [ 65 | ...DeleteTask 66 | ] 67 | } 68 | } 69 | 70 | 71 | default: return state 72 | } 73 | } -------------------------------------------------------------------------------- /src/redux/store.ts: -------------------------------------------------------------------------------- 1 | import { applyMiddleware, combineReducers, compose, legacy_createStore } from "redux"; 2 | import { todoReducer } from "./TodoReducer/todoReducer"; 3 | import { initialStatetype } from "../type"; 4 | // import { composeWithDevTools } from '@redux-devtools/extension'; 5 | import thunk from "redux-thunk" 6 | 7 | declare global { 8 | interface Window { 9 | __REDUX_DEVTOOLS_EXTENSION_COMPOSE__?: typeof compose; 10 | } 11 | } 12 | 13 | const composeEnhancers = window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ || compose; 14 | 15 | export type rootReducerType = { 16 | todolist: initialStatetype 17 | } 18 | 19 | const rootReducer = combineReducers({ 20 | todolist: todoReducer 21 | }) 22 | 23 | 24 | export const store = legacy_createStore(rootReducer, 25 | // composeWithDevTools( 26 | composeEnhancers( 27 | applyMiddleware(thunk) 28 | ) 29 | // ) 30 | ) 31 | -------------------------------------------------------------------------------- /src/type.ts: -------------------------------------------------------------------------------- 1 | export interface TodoTask { 2 | id: number, 3 | context: string, 4 | isdone: boolean 5 | } 6 | export type Todos = TodoTask[]; 7 | 8 | 9 | export interface initialStatetype { 10 | isloading: boolean, 11 | iserror: boolean, 12 | todoList: Todos | [] 13 | } 14 | 15 | 16 | // export const ActionTypes: string = LOADING | ERROR | COMPLETED | UPDATE | DELETE 17 | 18 | export enum ActionTypes { 19 | LOADING = "loading", 20 | ERROR = "error", 21 | COMPLETED = "completed", 22 | UPDATE = "update", 23 | DELETE = "delete", 24 | } 25 | export type payloadType = { 26 | id: number, 27 | context: string 28 | } 29 | 30 | 31 | 32 | export interface ActionType { 33 | payload: payloadType, 34 | type: ActionTypes 35 | } -------------------------------------------------------------------------------- /src/vite-env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "ESNext", 4 | "useDefineForClassFields": true, 5 | "lib": ["DOM", "DOM.Iterable", "ESNext"], 6 | "allowJs": false, 7 | "skipLibCheck": true, 8 | "esModuleInterop": false, 9 | "allowSyntheticDefaultImports": true, 10 | "strict": true, 11 | "forceConsistentCasingInFileNames": true, 12 | "module": "ESNext", 13 | "moduleResolution": "Node", 14 | "resolveJsonModule": true, 15 | "isolatedModules": true, 16 | "noEmit": true, 17 | "jsx": "react-jsx" 18 | }, 19 | "include": ["src"], 20 | "references": [{ "path": "./tsconfig.node.json" }] 21 | } 22 | -------------------------------------------------------------------------------- /tsconfig.node.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "composite": true, 4 | "module": "ESNext", 5 | "moduleResolution": "Node", 6 | "allowSyntheticDefaultImports": true 7 | }, 8 | "include": ["vite.config.ts"] 9 | } 10 | -------------------------------------------------------------------------------- /vite.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'vite' 2 | import react from '@vitejs/plugin-react-swc' 3 | 4 | // https://vitejs.dev/config/ 5 | export default defineConfig({ 6 | plugins: [react()], 7 | }) 8 | -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@babel/runtime@^7.12.1", "@babel/runtime@^7.9.2": 6 | version "7.21.0" 7 | resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.21.0.tgz#5b55c9d394e5fcf304909a8b00c07dc217b56673" 8 | integrity sha512-xwII0//EObnq89Ji5AKYQaRYiW/nZ3llSv29d49IuxPhKbtJoLP+9QUUZ4nVragQVtaVGeZrpB+ZtG/Pdy/POw== 9 | dependencies: 10 | regenerator-runtime "^0.13.11" 11 | 12 | "@esbuild/android-arm64@0.17.16": 13 | version "0.17.16" 14 | resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.17.16.tgz#7b18cab5f4d93e878306196eed26b6d960c12576" 15 | integrity sha512-QX48qmsEZW+gcHgTmAj+x21mwTz8MlYQBnzF6861cNdQGvj2jzzFjqH0EBabrIa/WVZ2CHolwMoqxVryqKt8+Q== 16 | 17 | "@esbuild/android-arm@0.17.16": 18 | version "0.17.16" 19 | resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.17.16.tgz#5c47f6a7c2cada6ed4b4d4e72d8c66e76d812812" 20 | integrity sha512-baLqRpLe4JnKrUXLJChoTN0iXZH7El/mu58GE3WIA6/H834k0XWvLRmGLG8y8arTRS9hJJibPnF0tiGhmWeZgw== 21 | 22 | "@esbuild/android-x64@0.17.16": 23 | version "0.17.16" 24 | resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.17.16.tgz#8686a6e98359071ffd5312046551943e7244c51a" 25 | integrity sha512-G4wfHhrrz99XJgHnzFvB4UwwPxAWZaZBOFXh+JH1Duf1I4vIVfuYY9uVLpx4eiV2D/Jix8LJY+TAdZ3i40tDow== 26 | 27 | "@esbuild/darwin-arm64@0.17.16": 28 | version "0.17.16" 29 | resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.17.16.tgz#aa79fbf447630ca0696a596beba962a775bbf394" 30 | integrity sha512-/Ofw8UXZxuzTLsNFmz1+lmarQI6ztMZ9XktvXedTbt3SNWDn0+ODTwxExLYQ/Hod91EZB4vZPQJLoqLF0jvEzA== 31 | 32 | "@esbuild/darwin-x64@0.17.16": 33 | version "0.17.16" 34 | resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.17.16.tgz#d5d68ee510507104da7e7503224c647c957e163e" 35 | integrity sha512-SzBQtCV3Pdc9kyizh36Ol+dNVhkDyIrGb/JXZqFq8WL37LIyrXU0gUpADcNV311sCOhvY+f2ivMhb5Tuv8nMOQ== 36 | 37 | "@esbuild/freebsd-arm64@0.17.16": 38 | version "0.17.16" 39 | resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.16.tgz#b00b4cc8c2e424907cfe3a607384ab24794edd52" 40 | integrity sha512-ZqftdfS1UlLiH1DnS2u3It7l4Bc3AskKeu+paJSfk7RNOMrOxmeFDhLTMQqMxycP1C3oj8vgkAT6xfAuq7ZPRA== 41 | 42 | "@esbuild/freebsd-x64@0.17.16": 43 | version "0.17.16" 44 | resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.17.16.tgz#84af4430a07730b50bbc945a90cf7036c1853b76" 45 | integrity sha512-rHV6zNWW1tjgsu0dKQTX9L0ByiJHHLvQKrWtnz8r0YYJI27FU3Xu48gpK2IBj1uCSYhJ+pEk6Y0Um7U3rIvV8g== 46 | 47 | "@esbuild/linux-arm64@0.17.16": 48 | version "0.17.16" 49 | resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.17.16.tgz#35571d15de6272c862d9ce6341372fb3cef0f266" 50 | integrity sha512-8yoZhGkU6aHu38WpaM4HrRLTFc7/VVD9Q2SvPcmIQIipQt2I/GMTZNdEHXoypbbGao5kggLcxg0iBKjo0SQYKA== 51 | 52 | "@esbuild/linux-arm@0.17.16": 53 | version "0.17.16" 54 | resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.17.16.tgz#b65c7cd5b0eadd08f91aab66b9dda81b6a4b2a70" 55 | integrity sha512-n4O8oVxbn7nl4+m+ISb0a68/lcJClIbaGAoXwqeubj/D1/oMMuaAXmJVfFlRjJLu/ZvHkxoiFJnmbfp4n8cdSw== 56 | 57 | "@esbuild/linux-ia32@0.17.16": 58 | version "0.17.16" 59 | resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.17.16.tgz#673a68cb251ce44a00a6422ada29064c5a1cd2c0" 60 | integrity sha512-9ZBjlkdaVYxPNO8a7OmzDbOH9FMQ1a58j7Xb21UfRU29KcEEU3VTHk+Cvrft/BNv0gpWJMiiZ/f4w0TqSP0gLA== 61 | 62 | "@esbuild/linux-loong64@0.17.16": 63 | version "0.17.16" 64 | resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.17.16.tgz#477e2da34ab46ffdbf4740fa6441e80045249385" 65 | integrity sha512-TIZTRojVBBzdgChY3UOG7BlPhqJz08AL7jdgeeu+kiObWMFzGnQD7BgBBkWRwOtKR1i2TNlO7YK6m4zxVjjPRQ== 66 | 67 | "@esbuild/linux-mips64el@0.17.16": 68 | version "0.17.16" 69 | resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.17.16.tgz#e1e9687bbdaa831d7c34edc9278200982c1a4bf4" 70 | integrity sha512-UPeRuFKCCJYpBbIdczKyHLAIU31GEm0dZl1eMrdYeXDH+SJZh/i+2cAmD3A1Wip9pIc5Sc6Kc5cFUrPXtR0XHA== 71 | 72 | "@esbuild/linux-ppc64@0.17.16": 73 | version "0.17.16" 74 | resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.17.16.tgz#2f19075d63622987e86e83a4b7866cd57b796c60" 75 | integrity sha512-io6yShgIEgVUhExJejJ21xvO5QtrbiSeI7vYUnr7l+v/O9t6IowyhdiYnyivX2X5ysOVHAuyHW+Wyi7DNhdw6Q== 76 | 77 | "@esbuild/linux-riscv64@0.17.16": 78 | version "0.17.16" 79 | resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.17.16.tgz#bbf40a38f03ba2434fe69b5ceeec5d13c742b329" 80 | integrity sha512-WhlGeAHNbSdG/I2gqX2RK2gfgSNwyJuCiFHMc8s3GNEMMHUI109+VMBfhVqRb0ZGzEeRiibi8dItR3ws3Lk+cA== 81 | 82 | "@esbuild/linux-s390x@0.17.16": 83 | version "0.17.16" 84 | resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.17.16.tgz#d2b8c0779ccd2b7917cdf0fab8831a468e0f9c01" 85 | integrity sha512-gHRReYsJtViir63bXKoFaQ4pgTyah4ruiMRQ6im9YZuv+gp3UFJkNTY4sFA73YDynmXZA6hi45en4BGhNOJUsw== 86 | 87 | "@esbuild/linux-x64@0.17.16": 88 | version "0.17.16" 89 | resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.17.16.tgz#da48b39cfdc1b12a74976625f583f031eac43590" 90 | integrity sha512-mfiiBkxEbUHvi+v0P+TS7UnA9TeGXR48aK4XHkTj0ZwOijxexgMF01UDFaBX7Q6CQsB0d+MFNv9IiXbIHTNd4g== 91 | 92 | "@esbuild/netbsd-x64@0.17.16": 93 | version "0.17.16" 94 | resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.17.16.tgz#ddef985aed37cc81908d2573b66c0299dbc49037" 95 | integrity sha512-n8zK1YRDGLRZfVcswcDMDM0j2xKYLNXqei217a4GyBxHIuPMGrrVuJ+Ijfpr0Kufcm7C1k/qaIrGy6eG7wvgmA== 96 | 97 | "@esbuild/openbsd-x64@0.17.16": 98 | version "0.17.16" 99 | resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.17.16.tgz#85035bf89efd66e9068bc72aa6bb85a2c317d090" 100 | integrity sha512-lEEfkfsUbo0xC47eSTBqsItXDSzwzwhKUSsVaVjVji07t8+6KA5INp2rN890dHZeueXJAI8q0tEIfbwVRYf6Ew== 101 | 102 | "@esbuild/sunos-x64@0.17.16": 103 | version "0.17.16" 104 | resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.17.16.tgz#16338ecab854cb2d831cc9ee9cc21ef69566e1f3" 105 | integrity sha512-jlRjsuvG1fgGwnE8Afs7xYDnGz0dBgTNZfgCK6TlvPH3Z13/P5pi6I57vyLE8qZYLrGVtwcm9UbUx1/mZ8Ukag== 106 | 107 | "@esbuild/win32-arm64@0.17.16": 108 | version "0.17.16" 109 | resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.17.16.tgz#423f46bb744aff897a5f74435469e1ef4952e343" 110 | integrity sha512-TzoU2qwVe2boOHl/3KNBUv2PNUc38U0TNnzqOAcgPiD/EZxT2s736xfC2dYQbszAwo4MKzzwBV0iHjhfjxMimg== 111 | 112 | "@esbuild/win32-ia32@0.17.16": 113 | version "0.17.16" 114 | resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.17.16.tgz#1978be5b192c7063bd2c8d5960eb213e1964740e" 115 | integrity sha512-B8b7W+oo2yb/3xmwk9Vc99hC9bNolvqjaTZYEfMQhzdpBsjTvZBlXQ/teUE55Ww6sg//wlcDjOaqldOKyigWdA== 116 | 117 | "@esbuild/win32-x64@0.17.16": 118 | version "0.17.16" 119 | resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.17.16.tgz#260f19b0a3300d22c3a3f52722c671dc561edaa3" 120 | integrity sha512-xJ7OH/nanouJO9pf03YsL9NAFQBHd8AqfrQd7Pf5laGyyTt/gToul6QYOA/i5i/q8y9iaM5DQFNTgpi995VkOg== 121 | 122 | "@swc/core-darwin-arm64@1.3.50": 123 | version "1.3.50" 124 | resolved "https://registry.yarnpkg.com/@swc/core-darwin-arm64/-/core-darwin-arm64-1.3.50.tgz#d665b79dc308dda2d250e44461edc7f7bb091f5e" 125 | integrity sha512-riJGLORCFOMeUccEV0hzua0iyJFks7kef+5GfcmC93SLno+LHFDnaJ4mKVXcCAmQ7GYhVTPJs9gSHIW2fO5anQ== 126 | 127 | "@swc/core-darwin-x64@1.3.50": 128 | version "1.3.50" 129 | resolved "https://registry.yarnpkg.com/@swc/core-darwin-x64/-/core-darwin-x64-1.3.50.tgz#8201b90f19b0cbec9099655600d52552c07ce592" 130 | integrity sha512-XaAhpeUoAK8tOUYSXH/v35yEjIoSP6ClGV/EaqBmDuCzAPue6uJMlIAW+nTmdtqVm5ZNZy2cKtP4ZHhVlfl7xw== 131 | 132 | "@swc/core-linux-arm-gnueabihf@1.3.50": 133 | version "1.3.50" 134 | resolved "https://registry.yarnpkg.com/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.3.50.tgz#9ae3b044cbeb871df293f7b281a48e5b37a1c011" 135 | integrity sha512-8hDtXs0T5biMtA3I21JQG1uxL+Hb/D2t0NZENuajVK5Vky3GXmf+ICVeQzwGzSXiyftaDgyNAvBidbKPBlNEtw== 136 | 137 | "@swc/core-linux-arm64-gnu@1.3.50": 138 | version "1.3.50" 139 | resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.3.50.tgz#6598d5a2af6e5bc1e4ea4eff3c8c6f102fcee10f" 140 | integrity sha512-iS908P5cNTHWus4QefSg2jn4lDYcl15sN1Fvx8fQgqYQra2O9CsR8lXBJYkvllykkzoKvWfcOLRCTquz3vsnVQ== 141 | 142 | "@swc/core-linux-arm64-musl@1.3.50": 143 | version "1.3.50" 144 | resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.3.50.tgz#e9733c0d4df035c50faea05c8630e1db7605c1ed" 145 | integrity sha512-ysh8MeaWjGqVwIPCDUhUOr4oczIx5qb8vFBoegI+SOUfcpWik22/+hG25LWzZY6PwAtqUGkhsJt/+5dY4IMhEA== 146 | 147 | "@swc/core-linux-x64-gnu@1.3.50": 148 | version "1.3.50" 149 | resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.3.50.tgz#f1afb3e0f31fc7e936bcc38387302b94690e2f3a" 150 | integrity sha512-Ci4LQaGIPweWNVWgR2f47nrYEfq7002Pj6WWKGrnO6g+k5cwR3izxHMOnZhcKyAD3cWOS904i/GbfgXs2wBCDQ== 151 | 152 | "@swc/core-linux-x64-musl@1.3.50": 153 | version "1.3.50" 154 | resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.3.50.tgz#fa93456591850caf76b15be99421af5d6fdf12a5" 155 | integrity sha512-SEXOhGjmC4rdBeucCvNmtO2vflUEhkmWLfqvkalHYDbPMA/gwLSoYu3D85u5XqB8DatDi4TOCUx80IR1b/vDBQ== 156 | 157 | "@swc/core-win32-arm64-msvc@1.3.50": 158 | version "1.3.50" 159 | resolved "https://registry.yarnpkg.com/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.3.50.tgz#7afd5754514232ba951e12ffce879d18192faee4" 160 | integrity sha512-DPsJ2r9mYU8VzF9vhK323psyE8modj5be9M9diOsqF58Fu9ARtOfuulY+eiS5e41ya2XM/H2N/qOfsA+h2KRcg== 161 | 162 | "@swc/core-win32-ia32-msvc@1.3.50": 163 | version "1.3.50" 164 | resolved "https://registry.yarnpkg.com/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.3.50.tgz#4032d941a7afd81a7e959f82d6a5d910a116653a" 165 | integrity sha512-2iyzHLat0C93S3XLp7QJ6RTA9Md+EcPl2fq1S/m2EZqofcq7wu5SuywaXoF89xOibOJBnWe6KwOnOFWFaXrPjQ== 166 | 167 | "@swc/core-win32-x64-msvc@1.3.50": 168 | version "1.3.50" 169 | resolved "https://registry.yarnpkg.com/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.3.50.tgz#3fa800cfc82a7f5140c8bba93aef686c3c1bb3d5" 170 | integrity sha512-iFRU2Y5DVIEdjaWnlLij8QQBM5Q91UJotNNgzuevPSIOhOyhF6V2AQS1QC4mfkPCy3Bw0GrZDChu3GcuBj9Rzw== 171 | 172 | "@swc/core@^1.3.42": 173 | version "1.3.50" 174 | resolved "https://registry.yarnpkg.com/@swc/core/-/core-1.3.50.tgz#f0a49f87a39119a3643929dd4578e84f83f98fe0" 175 | integrity sha512-soTAHlwkI8zukR9KftWZ0gZ7HKU99B/C3CtBxzSI3N23QG+EfSSOgrYARfuZk5g4yLWpsU0rEkojd78vixqkwg== 176 | optionalDependencies: 177 | "@swc/core-darwin-arm64" "1.3.50" 178 | "@swc/core-darwin-x64" "1.3.50" 179 | "@swc/core-linux-arm-gnueabihf" "1.3.50" 180 | "@swc/core-linux-arm64-gnu" "1.3.50" 181 | "@swc/core-linux-arm64-musl" "1.3.50" 182 | "@swc/core-linux-x64-gnu" "1.3.50" 183 | "@swc/core-linux-x64-musl" "1.3.50" 184 | "@swc/core-win32-arm64-msvc" "1.3.50" 185 | "@swc/core-win32-ia32-msvc" "1.3.50" 186 | "@swc/core-win32-x64-msvc" "1.3.50" 187 | 188 | "@types/hoist-non-react-statics@^3.3.0", "@types/hoist-non-react-statics@^3.3.1": 189 | version "3.3.1" 190 | resolved "https://registry.yarnpkg.com/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.1.tgz#1124aafe5118cb591977aeb1ceaaed1070eb039f" 191 | integrity sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA== 192 | dependencies: 193 | "@types/react" "*" 194 | hoist-non-react-statics "^3.3.0" 195 | 196 | "@types/prop-types@*": 197 | version "15.7.5" 198 | resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.5.tgz#5f19d2b85a98e9558036f6a3cacc8819420f05cf" 199 | integrity sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w== 200 | 201 | "@types/react-dom@^18.0.11": 202 | version "18.0.11" 203 | resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-18.0.11.tgz#321351c1459bc9ca3d216aefc8a167beec334e33" 204 | integrity sha512-O38bPbI2CWtgw/OoQoY+BRelw7uysmXbWvw3nLWO21H1HSh+GOlqPuXshJfjmpNlKiiSDG9cc1JZAaMmVdcTlw== 205 | dependencies: 206 | "@types/react" "*" 207 | 208 | "@types/react-redux@^7.1.25": 209 | version "7.1.25" 210 | resolved "https://registry.yarnpkg.com/@types/react-redux/-/react-redux-7.1.25.tgz#de841631205b24f9dfb4967dd4a7901e048f9a88" 211 | integrity sha512-bAGh4e+w5D8dajd6InASVIyCo4pZLJ66oLb80F9OBLO1gKESbZcRCJpTT6uLXX+HAB57zw1WTdwJdAsewuTweg== 212 | dependencies: 213 | "@types/hoist-non-react-statics" "^3.3.0" 214 | "@types/react" "*" 215 | hoist-non-react-statics "^3.3.0" 216 | redux "^4.0.0" 217 | 218 | "@types/react@*", "@types/react@^18.0.28": 219 | version "18.0.35" 220 | resolved "https://registry.yarnpkg.com/@types/react/-/react-18.0.35.tgz#192061cb1044fe01f2d3a94272cd35dd50502741" 221 | integrity sha512-6Laome31HpetaIUGFWl1VQ3mdSImwxtFZ39rh059a1MNnKGqBpC88J6NJ8n/Is3Qx7CefDGLgf/KhN/sYCf7ag== 222 | dependencies: 223 | "@types/prop-types" "*" 224 | "@types/scheduler" "*" 225 | csstype "^3.0.2" 226 | 227 | "@types/redux-thunk@^2.1.0": 228 | version "2.1.0" 229 | resolved "https://registry.yarnpkg.com/@types/redux-thunk/-/redux-thunk-2.1.0.tgz#bc2b6e972961831afb82a9bf4f06726e351f9416" 230 | integrity sha512-8M+kcrnZQYO3A40d8a1lieBFur/ab8EXHqa2dGMQqsmBaVCbNp3gd8ed/HuSjLoLA63ov/trXaXWlkiKVF4VUw== 231 | dependencies: 232 | redux-thunk "*" 233 | 234 | "@types/redux@^3.6.0": 235 | version "3.6.0" 236 | resolved "https://registry.yarnpkg.com/@types/redux/-/redux-3.6.0.tgz#f1ebe1e5411518072e4fdfca5c76e16e74c1399a" 237 | integrity sha512-ic+60DXHW5seNyqFvfr7Sk5cnXs+HsF9tIeIaxjOuSP5kzgDXC+AzKTYmjAfuLx4Sccm/0vjwBQj3OOkUkwOqg== 238 | dependencies: 239 | redux "*" 240 | 241 | "@types/scheduler@*": 242 | version "0.16.3" 243 | resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.3.tgz#cef09e3ec9af1d63d2a6cc5b383a737e24e6dcf5" 244 | integrity sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ== 245 | 246 | "@types/use-sync-external-store@^0.0.3": 247 | version "0.0.3" 248 | resolved "https://registry.yarnpkg.com/@types/use-sync-external-store/-/use-sync-external-store-0.0.3.tgz#b6725d5f4af24ace33b36fafd295136e75509f43" 249 | integrity sha512-EwmlvuaxPNej9+T4v5AuBPJa2x2UOJVdjCtDHgcDqitUeOtjnJKJ+apYjVcAoBEMjKW1VVFGZLUb5+qqa09XFA== 250 | 251 | "@vitejs/plugin-react-swc@^3.0.0": 252 | version "3.3.0" 253 | resolved "https://registry.yarnpkg.com/@vitejs/plugin-react-swc/-/plugin-react-swc-3.3.0.tgz#d443a4bbb423542c5a089c65a58dca597170c549" 254 | integrity sha512-Ycg+n2eyCOTpn/wRy+evVo859+hw7qCj9iaX5CMny6x1fx1Uoq0xBG+a98lFtwLNGfGEnpI0F26YigRuxCRkwg== 255 | dependencies: 256 | "@swc/core" "^1.3.42" 257 | 258 | csstype@^3.0.2: 259 | version "3.1.2" 260 | resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.2.tgz#1d4bf9d572f11c14031f0436e1c10bc1f571f50b" 261 | integrity sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ== 262 | 263 | esbuild@^0.17.5: 264 | version "0.17.16" 265 | resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.17.16.tgz#5efec24a8ff29e0c157359f27e1b5532a728b720" 266 | integrity sha512-aeSuUKr9aFVY9Dc8ETVELGgkj4urg5isYx8pLf4wlGgB0vTFjxJQdHnNH6Shmx4vYYrOTLCHtRI5i1XZ9l2Zcg== 267 | optionalDependencies: 268 | "@esbuild/android-arm" "0.17.16" 269 | "@esbuild/android-arm64" "0.17.16" 270 | "@esbuild/android-x64" "0.17.16" 271 | "@esbuild/darwin-arm64" "0.17.16" 272 | "@esbuild/darwin-x64" "0.17.16" 273 | "@esbuild/freebsd-arm64" "0.17.16" 274 | "@esbuild/freebsd-x64" "0.17.16" 275 | "@esbuild/linux-arm" "0.17.16" 276 | "@esbuild/linux-arm64" "0.17.16" 277 | "@esbuild/linux-ia32" "0.17.16" 278 | "@esbuild/linux-loong64" "0.17.16" 279 | "@esbuild/linux-mips64el" "0.17.16" 280 | "@esbuild/linux-ppc64" "0.17.16" 281 | "@esbuild/linux-riscv64" "0.17.16" 282 | "@esbuild/linux-s390x" "0.17.16" 283 | "@esbuild/linux-x64" "0.17.16" 284 | "@esbuild/netbsd-x64" "0.17.16" 285 | "@esbuild/openbsd-x64" "0.17.16" 286 | "@esbuild/sunos-x64" "0.17.16" 287 | "@esbuild/win32-arm64" "0.17.16" 288 | "@esbuild/win32-ia32" "0.17.16" 289 | "@esbuild/win32-x64" "0.17.16" 290 | 291 | fsevents@~2.3.2: 292 | version "2.3.2" 293 | resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" 294 | integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== 295 | 296 | function-bind@^1.1.1: 297 | version "1.1.1" 298 | resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" 299 | integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== 300 | 301 | has@^1.0.3: 302 | version "1.0.3" 303 | resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" 304 | integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== 305 | dependencies: 306 | function-bind "^1.1.1" 307 | 308 | hoist-non-react-statics@^3.3.0, hoist-non-react-statics@^3.3.2: 309 | version "3.3.2" 310 | resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45" 311 | integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw== 312 | dependencies: 313 | react-is "^16.7.0" 314 | 315 | is-core-module@^2.12.0: 316 | version "2.12.0" 317 | resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.12.0.tgz#36ad62f6f73c8253fd6472517a12483cf03e7ec4" 318 | integrity sha512-RECHCBCd/viahWmwj6enj19sKbHfJrddi/6cBDsNTKbNq0f7VeaUkBo60BqzvPqo/W54ChS62Z5qyun7cfOMqQ== 319 | dependencies: 320 | has "^1.0.3" 321 | 322 | "js-tokens@^3.0.0 || ^4.0.0": 323 | version "4.0.0" 324 | resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" 325 | integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== 326 | 327 | loose-envify@^1.1.0: 328 | version "1.4.0" 329 | resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" 330 | integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== 331 | dependencies: 332 | js-tokens "^3.0.0 || ^4.0.0" 333 | 334 | nanoid@^3.3.4: 335 | version "3.3.6" 336 | resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.6.tgz#443380c856d6e9f9824267d960b4236ad583ea4c" 337 | integrity sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA== 338 | 339 | path-parse@^1.0.7: 340 | version "1.0.7" 341 | resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" 342 | integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== 343 | 344 | picocolors@^1.0.0: 345 | version "1.0.0" 346 | resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" 347 | integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== 348 | 349 | postcss@^8.4.21: 350 | version "8.4.21" 351 | resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.21.tgz#c639b719a57efc3187b13a1d765675485f4134f4" 352 | integrity sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg== 353 | dependencies: 354 | nanoid "^3.3.4" 355 | picocolors "^1.0.0" 356 | source-map-js "^1.0.2" 357 | 358 | react-dom@^18.2.0: 359 | version "18.2.0" 360 | resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-18.2.0.tgz#22aaf38708db2674ed9ada224ca4aa708d821e3d" 361 | integrity sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g== 362 | dependencies: 363 | loose-envify "^1.1.0" 364 | scheduler "^0.23.0" 365 | 366 | react-is@^16.7.0: 367 | version "16.13.1" 368 | resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" 369 | integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== 370 | 371 | react-is@^18.0.0: 372 | version "18.2.0" 373 | resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.2.0.tgz#199431eeaaa2e09f86427efbb4f1473edb47609b" 374 | integrity sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w== 375 | 376 | react-redux@^8.0.5: 377 | version "8.0.5" 378 | resolved "https://registry.yarnpkg.com/react-redux/-/react-redux-8.0.5.tgz#e5fb8331993a019b8aaf2e167a93d10af469c7bd" 379 | integrity sha512-Q2f6fCKxPFpkXt1qNRZdEDLlScsDWyrgSj0mliK59qU6W5gvBiKkdMEG2lJzhd1rCctf0hb6EtePPLZ2e0m1uw== 380 | dependencies: 381 | "@babel/runtime" "^7.12.1" 382 | "@types/hoist-non-react-statics" "^3.3.1" 383 | "@types/use-sync-external-store" "^0.0.3" 384 | hoist-non-react-statics "^3.3.2" 385 | react-is "^18.0.0" 386 | use-sync-external-store "^1.0.0" 387 | 388 | react@^18.2.0: 389 | version "18.2.0" 390 | resolved "https://registry.yarnpkg.com/react/-/react-18.2.0.tgz#555bd98592883255fa00de14f1151a917b5d77d5" 391 | integrity sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ== 392 | dependencies: 393 | loose-envify "^1.1.0" 394 | 395 | redux-thunk@*, redux-thunk@^2.4.2: 396 | version "2.4.2" 397 | resolved "https://registry.yarnpkg.com/redux-thunk/-/redux-thunk-2.4.2.tgz#b9d05d11994b99f7a91ea223e8b04cf0afa5ef3b" 398 | integrity sha512-+P3TjtnP0k/FEjcBL5FZpoovtvrTNT/UXd4/sluaSyrURlSlhLSzEdfsTBW7WsKB6yPvgd7q/iZPICFjW4o57Q== 399 | 400 | redux@*, redux@^4.0.0, redux@^4.2.1: 401 | version "4.2.1" 402 | resolved "https://registry.yarnpkg.com/redux/-/redux-4.2.1.tgz#c08f4306826c49b5e9dc901dee0452ea8fce6197" 403 | integrity sha512-LAUYz4lc+Do8/g7aeRa8JkyDErK6ekstQaqWQrNRW//MY1TvCEpMtpTWvlQ+FPbWCx+Xixu/6SHt5N0HR+SB4w== 404 | dependencies: 405 | "@babel/runtime" "^7.9.2" 406 | 407 | regenerator-runtime@^0.13.11: 408 | version "0.13.11" 409 | resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz#f6dca3e7ceec20590d07ada785636a90cdca17f9" 410 | integrity sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg== 411 | 412 | resolve@^1.22.1: 413 | version "1.22.3" 414 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.3.tgz#4b4055349ffb962600972da1fdc33c46a4eb3283" 415 | integrity sha512-P8ur/gp/AmbEzjr729bZnLjXK5Z+4P0zhIJgBgzqRih7hL7BOukHGtSTA3ACMY467GRFz3duQsi0bDZdR7DKdw== 416 | dependencies: 417 | is-core-module "^2.12.0" 418 | path-parse "^1.0.7" 419 | supports-preserve-symlinks-flag "^1.0.0" 420 | 421 | rollup@^3.18.0: 422 | version "3.20.2" 423 | resolved "https://registry.yarnpkg.com/rollup/-/rollup-3.20.2.tgz#f798c600317f216de2e4ad9f4d9ab30a89b690ff" 424 | integrity sha512-3zwkBQl7Ai7MFYQE0y1MeQ15+9jsi7XxfrqwTb/9EK8D9C9+//EBR4M+CuA1KODRaNbFez/lWxA5vhEGZp4MUg== 425 | optionalDependencies: 426 | fsevents "~2.3.2" 427 | 428 | scheduler@^0.23.0: 429 | version "0.23.0" 430 | resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.23.0.tgz#ba8041afc3d30eb206a487b6b384002e4e61fdfe" 431 | integrity sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw== 432 | dependencies: 433 | loose-envify "^1.1.0" 434 | 435 | source-map-js@^1.0.2: 436 | version "1.0.2" 437 | resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" 438 | integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== 439 | 440 | supports-preserve-symlinks-flag@^1.0.0: 441 | version "1.0.0" 442 | resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" 443 | integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== 444 | 445 | typescript@^4.9.3: 446 | version "4.9.5" 447 | resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.5.tgz#095979f9bcc0d09da324d58d03ce8f8374cbe65a" 448 | integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g== 449 | 450 | use-sync-external-store@^1.0.0: 451 | version "1.2.0" 452 | resolved "https://registry.yarnpkg.com/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz#7dbefd6ef3fe4e767a0cf5d7287aacfb5846928a" 453 | integrity sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA== 454 | 455 | vite@^4.2.0: 456 | version "4.2.1" 457 | resolved "https://registry.yarnpkg.com/vite/-/vite-4.2.1.tgz#6c2eb337b0dfd80a9ded5922163b94949d7fc254" 458 | integrity sha512-7MKhqdy0ISo4wnvwtqZkjke6XN4taqQ2TBaTccLIpOKv7Vp2h4Y+NpmWCnGDeSvvn45KxvWgGyb0MkHvY1vgbg== 459 | dependencies: 460 | esbuild "^0.17.5" 461 | postcss "^8.4.21" 462 | resolve "^1.22.1" 463 | rollup "^3.18.0" 464 | optionalDependencies: 465 | fsevents "~2.3.2" 466 | --------------------------------------------------------------------------------