├── .gitignore ├── README.md ├── index.html ├── package.json ├── src ├── App.css ├── App.tsx ├── components │ └── SortableTable.tsx ├── data.json ├── favicon.svg ├── index.css ├── logo.svg ├── main.tsx └── vite-env.d.ts ├── tsconfig.json ├── vite.config.ts └── yarn.lock /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | .DS_Store 3 | dist 4 | dist-ssr 5 | *.local 6 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # React Sortable Table 2 | 3 | ## Sortable table features 4 | * Sortable by any column 5 | * Reverse the column sort 6 | 7 | ## What are we using 8 | * No libraries, just React 9 | * TypeScript 10 | 11 | ## Can I follow this with a React component library? 12 | * Yes, you can do this with any library that has table elements 13 | 14 | 15 | ## Future videos? 16 | * Table pagination? 17 | * Searchable table? 18 | -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Vite App 8 | 9 | 10 |
11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "react-sortable-table", 3 | "version": "0.0.0", 4 | "scripts": { 5 | "dev": "vite", 6 | "build": "tsc && vite build", 7 | "serve": "vite preview" 8 | }, 9 | "dependencies": { 10 | "react": "^17.0.0", 11 | "react-dom": "^17.0.0" 12 | }, 13 | "devDependencies": { 14 | "@types/react": "^17.0.0", 15 | "@types/react-dom": "^17.0.0", 16 | "@vitejs/plugin-react": "^1.0.0", 17 | "typescript": "^4.3.2", 18 | "vite": "^2.6.4" 19 | } 20 | } -------------------------------------------------------------------------------- /src/App.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: -webkit-linear-gradient(left, #25c481, #25b7c4); 3 | background: linear-gradient(to right, #25c481, #25b7c4); 4 | } 5 | 6 | table { 7 | width: 100%; 8 | table-layout: fixed; 9 | } 10 | 11 | tbody { 12 | width: 100%; 13 | background-color: rgba(255, 255, 255, 0.7); 14 | border: 1px solid rgba(255, 255, 255, 0.3); 15 | } 16 | 17 | tr { 18 | width: 100%; 19 | } 20 | 21 | th, 22 | td { 23 | padding: 20px 15px; 24 | text-align: left; 25 | font-weight: 500; 26 | font-size: 17px; 27 | color: black; 28 | } 29 | 30 | .sort-button { 31 | background-color: transparent; 32 | border: none; 33 | 34 | padding: 5px 10px; 35 | margin: 0; 36 | line-height: 1; 37 | font-size: 15px; 38 | color: black; 39 | cursor: pointer; 40 | 41 | transition: transform 0.05s ease-out; 42 | } 43 | 44 | .sort-reverse { 45 | transform: rotate(180deg); 46 | } 47 | -------------------------------------------------------------------------------- /src/App.tsx: -------------------------------------------------------------------------------- 1 | import { useState } from "react"; 2 | import logo from "./logo.svg"; 3 | import "./App.css"; 4 | import SortableTable from "./components/SortableTable"; 5 | import data from "./data.json"; 6 | 7 | function App() { 8 | return ( 9 |
10 | 11 |
12 | ); 13 | } 14 | 15 | export default App; 16 | -------------------------------------------------------------------------------- /src/components/SortableTable.tsx: -------------------------------------------------------------------------------- 1 | import { MouseEventHandler, useCallback, useState } from "react"; 2 | import data from "../data.json"; 3 | 4 | type Data = typeof data; 5 | 6 | type SortKeys = keyof Data[0]; 7 | 8 | type SortOrder = "ascn" | "desc"; 9 | 10 | function sortData({ 11 | tableData, 12 | sortKey, 13 | reverse, 14 | }: { 15 | tableData: Data; 16 | sortKey: SortKeys; 17 | reverse: boolean; 18 | }) { 19 | if (!sortKey) return tableData; 20 | 21 | const sortedData = data.sort((a, b) => { 22 | return a[sortKey] > b[sortKey] ? 1 : -1; 23 | }); 24 | 25 | if (reverse) { 26 | return sortedData.reverse(); 27 | } 28 | 29 | return sortedData; 30 | } 31 | 32 | function SortButton({ 33 | sortOrder, 34 | columnKey, 35 | sortKey, 36 | onClick, 37 | }: { 38 | sortOrder: SortOrder; 39 | columnKey: SortKeys; 40 | sortKey: SortKeys; 41 | onClick: MouseEventHandler; 42 | }) { 43 | return ( 44 | 54 | ); 55 | } 56 | 57 | function SortableTable({ data }: { data: Data }) { 58 | const [sortKey, setSortKey] = useState("last_name"); 59 | const [sortOrder, setSortOrder] = useState("ascn"); 60 | 61 | const headers: { key: SortKeys; label: string }[] = [ 62 | { key: "id", label: "ID" }, 63 | { key: "first_name", label: "First name" }, 64 | { key: "last_name", label: "Last name" }, 65 | { key: "email", label: "Email" }, 66 | { key: "gender", label: "Gender" }, 67 | { key: "ip_address", label: "IP address" }, 68 | ]; 69 | 70 | const sortedData = useCallback( 71 | () => sortData({ tableData: data, sortKey, reverse: sortOrder === "desc" }), 72 | [data, sortKey, sortOrder] 73 | ); 74 | 75 | function changeSort(key: SortKeys) { 76 | setSortOrder(sortOrder === "ascn" ? "desc" : "ascn"); 77 | 78 | setSortKey(key); 79 | } 80 | 81 | return ( 82 | 83 | 84 | 85 | {headers.map((row) => { 86 | return ( 87 | 98 | ); 99 | })} 100 | 101 | 102 | 103 | 104 | {sortedData().map((person) => { 105 | return ( 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | ); 115 | })} 116 | 117 |
88 | {row.label}{" "} 89 | changeSort(row.key)} 92 | {...{ 93 | sortOrder, 94 | sortKey, 95 | }} 96 | /> 97 |
{person.id}{person.first_name}{person.last_name}{person.email}{person.gender}{person.ip_address}
118 | ); 119 | } 120 | 121 | export default SortableTable; 122 | -------------------------------------------------------------------------------- /src/favicon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /src/index.css: -------------------------------------------------------------------------------- 1 | body { 2 | margin: 0; 3 | font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 4 | 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', 5 | sans-serif; 6 | -webkit-font-smoothing: antialiased; 7 | -moz-osx-font-smoothing: grayscale; 8 | } 9 | 10 | code { 11 | font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New', 12 | monospace; 13 | } 14 | -------------------------------------------------------------------------------- /src/logo.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /src/main.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import ReactDOM from 'react-dom' 3 | import './index.css' 4 | import App from './App' 5 | 6 | ReactDOM.render( 7 | 8 | 9 | , 10 | document.getElementById('root') 11 | ) 12 | -------------------------------------------------------------------------------- /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": false, 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 | } 21 | -------------------------------------------------------------------------------- /vite.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'vite' 2 | import react from '@vitejs/plugin-react' 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/code-frame@^7.16.0": 6 | version "7.16.0" 7 | resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.16.0.tgz#0dfc80309beec8411e65e706461c408b0bb9b431" 8 | integrity sha512-IF4EOMEV+bfYwOmNxGzSnjR2EmQod7f1UXOpZM3l4i4o4QNwzjtJAu/HxdjHq0aYBvdqMuQEY1eg0nqW9ZPORA== 9 | dependencies: 10 | "@babel/highlight" "^7.16.0" 11 | 12 | "@babel/compat-data@^7.16.0": 13 | version "7.16.4" 14 | resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.16.4.tgz#081d6bbc336ec5c2435c6346b2ae1fb98b5ac68e" 15 | integrity sha512-1o/jo7D+kC9ZjHX5v+EHrdjl3PhxMrLSOTGsOdHJ+KL8HCaEK6ehrVL2RS6oHDZp+L7xLirLrPmQtEng769J/Q== 16 | 17 | "@babel/core@^7.16.0": 18 | version "7.16.0" 19 | resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.16.0.tgz#c4ff44046f5fe310525cc9eb4ef5147f0c5374d4" 20 | integrity sha512-mYZEvshBRHGsIAiyH5PzCFTCfbWfoYbO/jcSdXQSUQu1/pW0xDZAUP7KEc32heqWTAfAHhV9j1vH8Sav7l+JNQ== 21 | dependencies: 22 | "@babel/code-frame" "^7.16.0" 23 | "@babel/generator" "^7.16.0" 24 | "@babel/helper-compilation-targets" "^7.16.0" 25 | "@babel/helper-module-transforms" "^7.16.0" 26 | "@babel/helpers" "^7.16.0" 27 | "@babel/parser" "^7.16.0" 28 | "@babel/template" "^7.16.0" 29 | "@babel/traverse" "^7.16.0" 30 | "@babel/types" "^7.16.0" 31 | convert-source-map "^1.7.0" 32 | debug "^4.1.0" 33 | gensync "^1.0.0-beta.2" 34 | json5 "^2.1.2" 35 | semver "^6.3.0" 36 | source-map "^0.5.0" 37 | 38 | "@babel/generator@^7.16.0": 39 | version "7.16.0" 40 | resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.16.0.tgz#d40f3d1d5075e62d3500bccb67f3daa8a95265b2" 41 | integrity sha512-RR8hUCfRQn9j9RPKEVXo9LiwoxLPYn6hNZlvUOR8tSnaxlD0p0+la00ZP9/SnRt6HchKr+X0fO2r8vrETiJGew== 42 | dependencies: 43 | "@babel/types" "^7.16.0" 44 | jsesc "^2.5.1" 45 | source-map "^0.5.0" 46 | 47 | "@babel/helper-annotate-as-pure@^7.16.0": 48 | version "7.16.0" 49 | resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.0.tgz#9a1f0ebcda53d9a2d00108c4ceace6a5d5f1f08d" 50 | integrity sha512-ItmYF9vR4zA8cByDocY05o0LGUkp1zhbTQOH1NFyl5xXEqlTJQCEJjieriw+aFpxo16swMxUnUiKS7a/r4vtHg== 51 | dependencies: 52 | "@babel/types" "^7.16.0" 53 | 54 | "@babel/helper-compilation-targets@^7.16.0": 55 | version "7.16.3" 56 | resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.3.tgz#5b480cd13f68363df6ec4dc8ac8e2da11363cbf0" 57 | integrity sha512-vKsoSQAyBmxS35JUOOt+07cLc6Nk/2ljLIHwmq2/NM6hdioUaqEXq/S+nXvbvXbZkNDlWOymPanJGOc4CBjSJA== 58 | dependencies: 59 | "@babel/compat-data" "^7.16.0" 60 | "@babel/helper-validator-option" "^7.14.5" 61 | browserslist "^4.17.5" 62 | semver "^6.3.0" 63 | 64 | "@babel/helper-function-name@^7.16.0": 65 | version "7.16.0" 66 | resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.16.0.tgz#b7dd0797d00bbfee4f07e9c4ea5b0e30c8bb1481" 67 | integrity sha512-BZh4mEk1xi2h4HFjWUXRQX5AEx4rvaZxHgax9gcjdLWdkjsY7MKt5p0otjsg5noXw+pB+clMCjw+aEVYADMjog== 68 | dependencies: 69 | "@babel/helper-get-function-arity" "^7.16.0" 70 | "@babel/template" "^7.16.0" 71 | "@babel/types" "^7.16.0" 72 | 73 | "@babel/helper-get-function-arity@^7.16.0": 74 | version "7.16.0" 75 | resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.0.tgz#0088c7486b29a9cb5d948b1a1de46db66e089cfa" 76 | integrity sha512-ASCquNcywC1NkYh/z7Cgp3w31YW8aojjYIlNg4VeJiHkqyP4AzIvr4qx7pYDb4/s8YcsZWqqOSxgkvjUz1kpDQ== 77 | dependencies: 78 | "@babel/types" "^7.16.0" 79 | 80 | "@babel/helper-hoist-variables@^7.16.0": 81 | version "7.16.0" 82 | resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.0.tgz#4c9023c2f1def7e28ff46fc1dbcd36a39beaa81a" 83 | integrity sha512-1AZlpazjUR0EQZQv3sgRNfM9mEVWPK3M6vlalczA+EECcPz3XPh6VplbErL5UoMpChhSck5wAJHthlj1bYpcmg== 84 | dependencies: 85 | "@babel/types" "^7.16.0" 86 | 87 | "@babel/helper-member-expression-to-functions@^7.16.0": 88 | version "7.16.0" 89 | resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.16.0.tgz#29287040efd197c77636ef75188e81da8bccd5a4" 90 | integrity sha512-bsjlBFPuWT6IWhl28EdrQ+gTvSvj5tqVP5Xeftp07SEuz5pLnsXZuDkDD3Rfcxy0IsHmbZ+7B2/9SHzxO0T+sQ== 91 | dependencies: 92 | "@babel/types" "^7.16.0" 93 | 94 | "@babel/helper-module-imports@^7.16.0": 95 | version "7.16.0" 96 | resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.16.0.tgz#90538e60b672ecf1b448f5f4f5433d37e79a3ec3" 97 | integrity sha512-kkH7sWzKPq0xt3H1n+ghb4xEMP8k0U7XV3kkB+ZGy69kDk2ySFW1qPi06sjKzFY3t1j6XbJSqr4mF9L7CYVyhg== 98 | dependencies: 99 | "@babel/types" "^7.16.0" 100 | 101 | "@babel/helper-module-transforms@^7.16.0": 102 | version "7.16.0" 103 | resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.16.0.tgz#1c82a8dd4cb34577502ebd2909699b194c3e9bb5" 104 | integrity sha512-My4cr9ATcaBbmaEa8M0dZNA74cfI6gitvUAskgDtAFmAqyFKDSHQo5YstxPbN+lzHl2D9l/YOEFqb2mtUh4gfA== 105 | dependencies: 106 | "@babel/helper-module-imports" "^7.16.0" 107 | "@babel/helper-replace-supers" "^7.16.0" 108 | "@babel/helper-simple-access" "^7.16.0" 109 | "@babel/helper-split-export-declaration" "^7.16.0" 110 | "@babel/helper-validator-identifier" "^7.15.7" 111 | "@babel/template" "^7.16.0" 112 | "@babel/traverse" "^7.16.0" 113 | "@babel/types" "^7.16.0" 114 | 115 | "@babel/helper-optimise-call-expression@^7.16.0": 116 | version "7.16.0" 117 | resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.0.tgz#cecdb145d70c54096b1564f8e9f10cd7d193b338" 118 | integrity sha512-SuI467Gi2V8fkofm2JPnZzB/SUuXoJA5zXe/xzyPP2M04686RzFKFHPK6HDVN6JvWBIEW8tt9hPR7fXdn2Lgpw== 119 | dependencies: 120 | "@babel/types" "^7.16.0" 121 | 122 | "@babel/helper-plugin-utils@^7.14.5": 123 | version "7.14.5" 124 | resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz#5ac822ce97eec46741ab70a517971e443a70c5a9" 125 | integrity sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ== 126 | 127 | "@babel/helper-replace-supers@^7.16.0": 128 | version "7.16.0" 129 | resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.16.0.tgz#73055e8d3cf9bcba8ddb55cad93fedc860f68f17" 130 | integrity sha512-TQxuQfSCdoha7cpRNJvfaYxxxzmbxXw/+6cS7V02eeDYyhxderSoMVALvwupA54/pZcOTtVeJ0xccp1nGWladA== 131 | dependencies: 132 | "@babel/helper-member-expression-to-functions" "^7.16.0" 133 | "@babel/helper-optimise-call-expression" "^7.16.0" 134 | "@babel/traverse" "^7.16.0" 135 | "@babel/types" "^7.16.0" 136 | 137 | "@babel/helper-simple-access@^7.16.0": 138 | version "7.16.0" 139 | resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.16.0.tgz#21d6a27620e383e37534cf6c10bba019a6f90517" 140 | integrity sha512-o1rjBT/gppAqKsYfUdfHq5Rk03lMQrkPHG1OWzHWpLgVXRH4HnMM9Et9CVdIqwkCQlobnGHEJMsgWP/jE1zUiw== 141 | dependencies: 142 | "@babel/types" "^7.16.0" 143 | 144 | "@babel/helper-split-export-declaration@^7.16.0": 145 | version "7.16.0" 146 | resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.0.tgz#29672f43663e936df370aaeb22beddb3baec7438" 147 | integrity sha512-0YMMRpuDFNGTHNRiiqJX19GjNXA4H0E8jZ2ibccfSxaCogbm3am5WN/2nQNj0YnQwGWM1J06GOcQ2qnh3+0paw== 148 | dependencies: 149 | "@babel/types" "^7.16.0" 150 | 151 | "@babel/helper-validator-identifier@^7.15.7": 152 | version "7.15.7" 153 | resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz#220df993bfe904a4a6b02ab4f3385a5ebf6e2389" 154 | integrity sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w== 155 | 156 | "@babel/helper-validator-option@^7.14.5": 157 | version "7.14.5" 158 | resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz#6e72a1fff18d5dfcb878e1e62f1a021c4b72d5a3" 159 | integrity sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow== 160 | 161 | "@babel/helpers@^7.16.0": 162 | version "7.16.3" 163 | resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.16.3.tgz#27fc64f40b996e7074dc73128c3e5c3e7f55c43c" 164 | integrity sha512-Xn8IhDlBPhvYTvgewPKawhADichOsbkZuzN7qz2BusOM0brChsyXMDJvldWaYMMUNiCQdQzNEioXTp3sC8Nt8w== 165 | dependencies: 166 | "@babel/template" "^7.16.0" 167 | "@babel/traverse" "^7.16.3" 168 | "@babel/types" "^7.16.0" 169 | 170 | "@babel/highlight@^7.16.0": 171 | version "7.16.0" 172 | resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.16.0.tgz#6ceb32b2ca4b8f5f361fb7fd821e3fddf4a1725a" 173 | integrity sha512-t8MH41kUQylBtu2+4IQA3atqevA2lRgqA2wyVB/YiWmsDSuylZZuXOUy9ric30hfzauEFfdsuk/eXTRrGrfd0g== 174 | dependencies: 175 | "@babel/helper-validator-identifier" "^7.15.7" 176 | chalk "^2.0.0" 177 | js-tokens "^4.0.0" 178 | 179 | "@babel/parser@^7.16.0", "@babel/parser@^7.16.3": 180 | version "7.16.4" 181 | resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.16.4.tgz#d5f92f57cf2c74ffe9b37981c0e72fee7311372e" 182 | integrity sha512-6V0qdPUaiVHH3RtZeLIsc+6pDhbYzHR8ogA8w+f+Wc77DuXto19g2QUwveINoS34Uw+W8/hQDGJCx+i4n7xcng== 183 | 184 | "@babel/plugin-syntax-jsx@^7.16.0": 185 | version "7.16.0" 186 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.16.0.tgz#f9624394317365a9a88c82358d3f8471154698f1" 187 | integrity sha512-8zv2+xiPHwly31RK4RmnEYY5zziuF3O7W2kIDW+07ewWDh6Oi0dRq8kwvulRkFgt6DB97RlKs5c1y068iPlCUg== 188 | dependencies: 189 | "@babel/helper-plugin-utils" "^7.14.5" 190 | 191 | "@babel/plugin-transform-react-jsx-development@^7.16.0": 192 | version "7.16.0" 193 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.16.0.tgz#1cb52874678d23ab11d0d16488d54730807303ef" 194 | integrity sha512-qq65iSqBRq0Hr3wq57YG2AmW0H6wgTnIzpffTphrUWUgLCOK+zf1f7G0vuOiXrp7dU1qq+fQBoqZ3wCDAkhFzw== 195 | dependencies: 196 | "@babel/plugin-transform-react-jsx" "^7.16.0" 197 | 198 | "@babel/plugin-transform-react-jsx-self@^7.16.0": 199 | version "7.16.0" 200 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.16.0.tgz#09202158abbc716a08330f392bfb98d6b9acfa0c" 201 | integrity sha512-97yCFY+2GvniqOThOSjPor8xUoDiQ0STVWAQMl3pjhJoFVe5DuXDLZCRSZxu9clx+oRCbTiXGgKEG/Yoyo6Y+w== 202 | dependencies: 203 | "@babel/helper-plugin-utils" "^7.14.5" 204 | 205 | "@babel/plugin-transform-react-jsx-source@^7.16.0": 206 | version "7.16.0" 207 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.16.0.tgz#d40c959d7803aae38224594585748693e84c0a22" 208 | integrity sha512-8yvbGGrHOeb/oyPc9tzNoe9/lmIjz3HLa9Nc5dMGDyNpGjfFrk8D2KdEq9NRkftZzeoQEW6yPQ29TMZtrLiUUA== 209 | dependencies: 210 | "@babel/helper-plugin-utils" "^7.14.5" 211 | 212 | "@babel/plugin-transform-react-jsx@^7.16.0": 213 | version "7.16.0" 214 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.16.0.tgz#55b797d4960c3de04e07ad1c0476e2bc6a4889f1" 215 | integrity sha512-rqDgIbukZ44pqq7NIRPGPGNklshPkvlmvqjdx3OZcGPk4zGIenYkxDTvl3LsSL8gqcc3ZzGmXPE6hR/u/voNOw== 216 | dependencies: 217 | "@babel/helper-annotate-as-pure" "^7.16.0" 218 | "@babel/helper-module-imports" "^7.16.0" 219 | "@babel/helper-plugin-utils" "^7.14.5" 220 | "@babel/plugin-syntax-jsx" "^7.16.0" 221 | "@babel/types" "^7.16.0" 222 | 223 | "@babel/template@^7.16.0": 224 | version "7.16.0" 225 | resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.16.0.tgz#d16a35ebf4cd74e202083356fab21dd89363ddd6" 226 | integrity sha512-MnZdpFD/ZdYhXwiunMqqgyZyucaYsbL0IrjoGjaVhGilz+x8YB++kRfygSOIj1yOtWKPlx7NBp+9I1RQSgsd5A== 227 | dependencies: 228 | "@babel/code-frame" "^7.16.0" 229 | "@babel/parser" "^7.16.0" 230 | "@babel/types" "^7.16.0" 231 | 232 | "@babel/traverse@^7.16.0", "@babel/traverse@^7.16.3": 233 | version "7.16.3" 234 | resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.16.3.tgz#f63e8a938cc1b780f66d9ed3c54f532ca2d14787" 235 | integrity sha512-eolumr1vVMjqevCpwVO99yN/LoGL0EyHiLO5I043aYQvwOJ9eR5UsZSClHVCzfhBduMAsSzgA/6AyqPjNayJag== 236 | dependencies: 237 | "@babel/code-frame" "^7.16.0" 238 | "@babel/generator" "^7.16.0" 239 | "@babel/helper-function-name" "^7.16.0" 240 | "@babel/helper-hoist-variables" "^7.16.0" 241 | "@babel/helper-split-export-declaration" "^7.16.0" 242 | "@babel/parser" "^7.16.3" 243 | "@babel/types" "^7.16.0" 244 | debug "^4.1.0" 245 | globals "^11.1.0" 246 | 247 | "@babel/types@^7.16.0": 248 | version "7.16.0" 249 | resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.16.0.tgz#db3b313804f96aadd0b776c4823e127ad67289ba" 250 | integrity sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg== 251 | dependencies: 252 | "@babel/helper-validator-identifier" "^7.15.7" 253 | to-fast-properties "^2.0.0" 254 | 255 | "@rollup/pluginutils@^4.1.1": 256 | version "4.1.1" 257 | resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-4.1.1.tgz#1d4da86dd4eded15656a57d933fda2b9a08d47ec" 258 | integrity sha512-clDjivHqWGXi7u+0d2r2sBi4Ie6VLEAzWMIkvJLnDmxoOhBYOTfzGbOQBA32THHm11/LiJbd01tJUpJsbshSWQ== 259 | dependencies: 260 | estree-walker "^2.0.1" 261 | picomatch "^2.2.2" 262 | 263 | "@types/prop-types@*": 264 | version "15.7.4" 265 | resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.4.tgz#fcf7205c25dff795ee79af1e30da2c9790808f11" 266 | integrity sha512-rZ5drC/jWjrArrS8BR6SIr4cWpW09RNTYt9AMZo3Jwwif+iacXAqgVjm0B0Bv/S1jhDXKHqRVNCbACkJ89RAnQ== 267 | 268 | "@types/react-dom@^17.0.0": 269 | version "17.0.11" 270 | resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-17.0.11.tgz#e1eadc3c5e86bdb5f7684e00274ae228e7bcc466" 271 | integrity sha512-f96K3k+24RaLGVu/Y2Ng3e1EbZ8/cVJvypZWd7cy0ofCBaf2lcM46xNhycMZ2xGwbBjRql7hOlZ+e2WlJ5MH3Q== 272 | dependencies: 273 | "@types/react" "*" 274 | 275 | "@types/react@*", "@types/react@^17.0.0": 276 | version "17.0.37" 277 | resolved "https://registry.yarnpkg.com/@types/react/-/react-17.0.37.tgz#6884d0aa402605935c397ae689deed115caad959" 278 | integrity sha512-2FS1oTqBGcH/s0E+CjrCCR9+JMpsu9b69RTFO+40ua43ZqP5MmQ4iUde/dMjWR909KxZwmOQIFq6AV6NjEG5xg== 279 | dependencies: 280 | "@types/prop-types" "*" 281 | "@types/scheduler" "*" 282 | csstype "^3.0.2" 283 | 284 | "@types/scheduler@*": 285 | version "0.16.2" 286 | resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.2.tgz#1a62f89525723dde24ba1b01b092bf5df8ad4d39" 287 | integrity sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew== 288 | 289 | "@vitejs/plugin-react@^1.0.0": 290 | version "1.1.0" 291 | resolved "https://registry.yarnpkg.com/@vitejs/plugin-react/-/plugin-react-1.1.0.tgz#8dc889a3b37d475c4c5196bfa9dd6052182d6a1e" 292 | integrity sha512-hRAqG6/lYf0mfDm/1r0U81vwPWMpyi87e4bFK+LvVQQeIgdh6TwvfuF20waenSGSumz6JH2bfk9DbxdgDLRp/w== 293 | dependencies: 294 | "@babel/core" "^7.16.0" 295 | "@babel/plugin-transform-react-jsx" "^7.16.0" 296 | "@babel/plugin-transform-react-jsx-development" "^7.16.0" 297 | "@babel/plugin-transform-react-jsx-self" "^7.16.0" 298 | "@babel/plugin-transform-react-jsx-source" "^7.16.0" 299 | "@rollup/pluginutils" "^4.1.1" 300 | react-refresh "^0.11.0" 301 | resolve "^1.20.0" 302 | 303 | ansi-styles@^3.2.1: 304 | version "3.2.1" 305 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" 306 | integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== 307 | dependencies: 308 | color-convert "^1.9.0" 309 | 310 | browserslist@^4.17.5: 311 | version "4.18.1" 312 | resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.18.1.tgz#60d3920f25b6860eb917c6c7b185576f4d8b017f" 313 | integrity sha512-8ScCzdpPwR2wQh8IT82CA2VgDwjHyqMovPBZSNH54+tm4Jk2pCuv90gmAdH6J84OCRWi0b4gMe6O6XPXuJnjgQ== 314 | dependencies: 315 | caniuse-lite "^1.0.30001280" 316 | electron-to-chromium "^1.3.896" 317 | escalade "^3.1.1" 318 | node-releases "^2.0.1" 319 | picocolors "^1.0.0" 320 | 321 | caniuse-lite@^1.0.30001280: 322 | version "1.0.30001283" 323 | resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001283.tgz#8573685bdae4d733ef18f78d44ba0ca5fe9e896b" 324 | integrity sha512-9RoKo841j1GQFSJz/nCXOj0sD7tHBtlowjYlrqIUS812x9/emfBLBt6IyMz1zIaYc/eRL8Cs6HPUVi2Hzq4sIg== 325 | 326 | chalk@^2.0.0: 327 | version "2.4.2" 328 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" 329 | integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== 330 | dependencies: 331 | ansi-styles "^3.2.1" 332 | escape-string-regexp "^1.0.5" 333 | supports-color "^5.3.0" 334 | 335 | color-convert@^1.9.0: 336 | version "1.9.3" 337 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" 338 | integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== 339 | dependencies: 340 | color-name "1.1.3" 341 | 342 | color-name@1.1.3: 343 | version "1.1.3" 344 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" 345 | integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= 346 | 347 | convert-source-map@^1.7.0: 348 | version "1.8.0" 349 | resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.8.0.tgz#f3373c32d21b4d780dd8004514684fb791ca4369" 350 | integrity sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA== 351 | dependencies: 352 | safe-buffer "~5.1.1" 353 | 354 | csstype@^3.0.2: 355 | version "3.0.10" 356 | resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.0.10.tgz#2ad3a7bed70f35b965707c092e5f30b327c290e5" 357 | integrity sha512-2u44ZG2OcNUO9HDp/Jl8C07x6pU/eTR3ncV91SiK3dhG9TWvRVsCoJw14Ckx5DgWkzGA3waZWO3d7pgqpUI/XA== 358 | 359 | debug@^4.1.0: 360 | version "4.3.3" 361 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.3.tgz#04266e0b70a98d4462e6e288e38259213332b664" 362 | integrity sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q== 363 | dependencies: 364 | ms "2.1.2" 365 | 366 | electron-to-chromium@^1.3.896: 367 | version "1.4.5" 368 | resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.5.tgz#912e8fd1645edee2f0f212558f40916eb538b1f9" 369 | integrity sha512-YKaB+t8ul5crdh6OeqT2qXdxJGI0fAYb6/X8pDIyye+c3a7ndOCk5gVeKX+ABwivCGNS56vOAif3TN0qJMpEHw== 370 | 371 | esbuild-android-arm64@0.13.15: 372 | version "0.13.15" 373 | resolved "https://registry.yarnpkg.com/esbuild-android-arm64/-/esbuild-android-arm64-0.13.15.tgz#3fc3ff0bab76fe35dd237476b5d2b32bb20a3d44" 374 | integrity sha512-m602nft/XXeO8YQPUDVoHfjyRVPdPgjyyXOxZ44MK/agewFFkPa8tUo6lAzSWh5Ui5PB4KR9UIFTSBKh/RrCmg== 375 | 376 | esbuild-darwin-64@0.13.15: 377 | version "0.13.15" 378 | resolved "https://registry.yarnpkg.com/esbuild-darwin-64/-/esbuild-darwin-64-0.13.15.tgz#8e9169c16baf444eacec60d09b24d11b255a8e72" 379 | integrity sha512-ihOQRGs2yyp7t5bArCwnvn2Atr6X4axqPpEdCFPVp7iUj4cVSdisgvEKdNR7yH3JDjW6aQDw40iQFoTqejqxvQ== 380 | 381 | esbuild-darwin-arm64@0.13.15: 382 | version "0.13.15" 383 | resolved "https://registry.yarnpkg.com/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.13.15.tgz#1b07f893b632114f805e188ddfca41b2b778229a" 384 | integrity sha512-i1FZssTVxUqNlJ6cBTj5YQj4imWy3m49RZRnHhLpefFIh0To05ow9DTrXROTE1urGTQCloFUXTX8QfGJy1P8dQ== 385 | 386 | esbuild-freebsd-64@0.13.15: 387 | version "0.13.15" 388 | resolved "https://registry.yarnpkg.com/esbuild-freebsd-64/-/esbuild-freebsd-64-0.13.15.tgz#0b8b7eca1690c8ec94c75680c38c07269c1f4a85" 389 | integrity sha512-G3dLBXUI6lC6Z09/x+WtXBXbOYQZ0E8TDBqvn7aMaOCzryJs8LyVXKY4CPnHFXZAbSwkCbqiPuSQ1+HhrNk7EA== 390 | 391 | esbuild-freebsd-arm64@0.13.15: 392 | version "0.13.15" 393 | resolved "https://registry.yarnpkg.com/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.13.15.tgz#2e1a6c696bfdcd20a99578b76350b41db1934e52" 394 | integrity sha512-KJx0fzEDf1uhNOZQStV4ujg30WlnwqUASaGSFPhznLM/bbheu9HhqZ6mJJZM32lkyfGJikw0jg7v3S0oAvtvQQ== 395 | 396 | esbuild-linux-32@0.13.15: 397 | version "0.13.15" 398 | resolved "https://registry.yarnpkg.com/esbuild-linux-32/-/esbuild-linux-32-0.13.15.tgz#6fd39f36fc66dd45b6b5f515728c7bbebc342a69" 399 | integrity sha512-ZvTBPk0YWCLMCXiFmD5EUtB30zIPvC5Itxz0mdTu/xZBbbHJftQgLWY49wEPSn2T/TxahYCRDWun5smRa0Tu+g== 400 | 401 | esbuild-linux-64@0.13.15: 402 | version "0.13.15" 403 | resolved "https://registry.yarnpkg.com/esbuild-linux-64/-/esbuild-linux-64-0.13.15.tgz#9cb8e4bcd7574e67946e4ee5f1f1e12386bb6dd3" 404 | integrity sha512-eCKzkNSLywNeQTRBxJRQ0jxRCl2YWdMB3+PkWFo2BBQYC5mISLIVIjThNtn6HUNqua1pnvgP5xX0nHbZbPj5oA== 405 | 406 | esbuild-linux-arm64@0.13.15: 407 | version "0.13.15" 408 | resolved "https://registry.yarnpkg.com/esbuild-linux-arm64/-/esbuild-linux-arm64-0.13.15.tgz#3891aa3704ec579a1b92d2a586122e5b6a2bfba1" 409 | integrity sha512-bYpuUlN6qYU9slzr/ltyLTR9YTBS7qUDymO8SV7kjeNext61OdmqFAzuVZom+OLW1HPHseBfJ/JfdSlx8oTUoA== 410 | 411 | esbuild-linux-arm@0.13.15: 412 | version "0.13.15" 413 | resolved "https://registry.yarnpkg.com/esbuild-linux-arm/-/esbuild-linux-arm-0.13.15.tgz#8a00e99e6a0c6c9a6b7f334841364d8a2b4aecfe" 414 | integrity sha512-wUHttDi/ol0tD8ZgUMDH8Ef7IbDX+/UsWJOXaAyTdkT7Yy9ZBqPg8bgB/Dn3CZ9SBpNieozrPRHm0BGww7W/jA== 415 | 416 | esbuild-linux-mips64le@0.13.15: 417 | version "0.13.15" 418 | resolved "https://registry.yarnpkg.com/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.13.15.tgz#36b07cc47c3d21e48db3bb1f4d9ef8f46aead4f7" 419 | integrity sha512-KlVjIG828uFPyJkO/8gKwy9RbXhCEUeFsCGOJBepUlpa7G8/SeZgncUEz/tOOUJTcWMTmFMtdd3GElGyAtbSWg== 420 | 421 | esbuild-linux-ppc64le@0.13.15: 422 | version "0.13.15" 423 | resolved "https://registry.yarnpkg.com/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.13.15.tgz#f7e6bba40b9a11eb9dcae5b01550ea04670edad2" 424 | integrity sha512-h6gYF+OsaqEuBjeesTBtUPw0bmiDu7eAeuc2OEH9S6mV9/jPhPdhOWzdeshb0BskRZxPhxPOjqZ+/OqLcxQwEQ== 425 | 426 | esbuild-netbsd-64@0.13.15: 427 | version "0.13.15" 428 | resolved "https://registry.yarnpkg.com/esbuild-netbsd-64/-/esbuild-netbsd-64-0.13.15.tgz#a2fedc549c2b629d580a732d840712b08d440038" 429 | integrity sha512-3+yE9emwoevLMyvu+iR3rsa+Xwhie7ZEHMGDQ6dkqP/ndFzRHkobHUKTe+NCApSqG5ce2z4rFu+NX/UHnxlh3w== 430 | 431 | esbuild-openbsd-64@0.13.15: 432 | version "0.13.15" 433 | resolved "https://registry.yarnpkg.com/esbuild-openbsd-64/-/esbuild-openbsd-64-0.13.15.tgz#b22c0e5806d3a1fbf0325872037f885306b05cd7" 434 | integrity sha512-wTfvtwYJYAFL1fSs8yHIdf5GEE4NkbtbXtjLWjM3Cw8mmQKqsg8kTiqJ9NJQe5NX/5Qlo7Xd9r1yKMMkHllp5g== 435 | 436 | esbuild-sunos-64@0.13.15: 437 | version "0.13.15" 438 | resolved "https://registry.yarnpkg.com/esbuild-sunos-64/-/esbuild-sunos-64-0.13.15.tgz#d0b6454a88375ee8d3964daeff55c85c91c7cef4" 439 | integrity sha512-lbivT9Bx3t1iWWrSnGyBP9ODriEvWDRiweAs69vI+miJoeKwHWOComSRukttbuzjZ8r1q0mQJ8Z7yUsDJ3hKdw== 440 | 441 | esbuild-windows-32@0.13.15: 442 | version "0.13.15" 443 | resolved "https://registry.yarnpkg.com/esbuild-windows-32/-/esbuild-windows-32-0.13.15.tgz#c96d0b9bbb52f3303322582ef8e4847c5ad375a7" 444 | integrity sha512-fDMEf2g3SsJ599MBr50cY5ve5lP1wyVwTe6aLJsM01KtxyKkB4UT+fc5MXQFn3RLrAIAZOG+tHC+yXObpSn7Nw== 445 | 446 | esbuild-windows-64@0.13.15: 447 | version "0.13.15" 448 | resolved "https://registry.yarnpkg.com/esbuild-windows-64/-/esbuild-windows-64-0.13.15.tgz#1f79cb9b1e1bb02fb25cd414cb90d4ea2892c294" 449 | integrity sha512-9aMsPRGDWCd3bGjUIKG/ZOJPKsiztlxl/Q3C1XDswO6eNX/Jtwu4M+jb6YDH9hRSUflQWX0XKAfWzgy5Wk54JQ== 450 | 451 | esbuild-windows-arm64@0.13.15: 452 | version "0.13.15" 453 | resolved "https://registry.yarnpkg.com/esbuild-windows-arm64/-/esbuild-windows-arm64-0.13.15.tgz#482173070810df22a752c686509c370c3be3b3c3" 454 | integrity sha512-zzvyCVVpbwQQATaf3IG8mu1IwGEiDxKkYUdA4FpoCHi1KtPa13jeScYDjlW0Qh+ebWzpKfR2ZwvqAQkSWNcKjA== 455 | 456 | esbuild@^0.13.2: 457 | version "0.13.15" 458 | resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.13.15.tgz#db56a88166ee373f87dbb2d8798ff449e0450cdf" 459 | integrity sha512-raCxt02HBKv8RJxE8vkTSCXGIyKHdEdGfUmiYb8wnabnaEmHzyW7DCHb5tEN0xU8ryqg5xw54mcwnYkC4x3AIw== 460 | optionalDependencies: 461 | esbuild-android-arm64 "0.13.15" 462 | esbuild-darwin-64 "0.13.15" 463 | esbuild-darwin-arm64 "0.13.15" 464 | esbuild-freebsd-64 "0.13.15" 465 | esbuild-freebsd-arm64 "0.13.15" 466 | esbuild-linux-32 "0.13.15" 467 | esbuild-linux-64 "0.13.15" 468 | esbuild-linux-arm "0.13.15" 469 | esbuild-linux-arm64 "0.13.15" 470 | esbuild-linux-mips64le "0.13.15" 471 | esbuild-linux-ppc64le "0.13.15" 472 | esbuild-netbsd-64 "0.13.15" 473 | esbuild-openbsd-64 "0.13.15" 474 | esbuild-sunos-64 "0.13.15" 475 | esbuild-windows-32 "0.13.15" 476 | esbuild-windows-64 "0.13.15" 477 | esbuild-windows-arm64 "0.13.15" 478 | 479 | escalade@^3.1.1: 480 | version "3.1.1" 481 | resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" 482 | integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== 483 | 484 | escape-string-regexp@^1.0.5: 485 | version "1.0.5" 486 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" 487 | integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= 488 | 489 | estree-walker@^2.0.1: 490 | version "2.0.2" 491 | resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac" 492 | integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w== 493 | 494 | fsevents@~2.3.2: 495 | version "2.3.2" 496 | resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" 497 | integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== 498 | 499 | function-bind@^1.1.1: 500 | version "1.1.1" 501 | resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" 502 | integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== 503 | 504 | gensync@^1.0.0-beta.2: 505 | version "1.0.0-beta.2" 506 | resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" 507 | integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== 508 | 509 | globals@^11.1.0: 510 | version "11.12.0" 511 | resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" 512 | integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== 513 | 514 | has-flag@^3.0.0: 515 | version "3.0.0" 516 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" 517 | integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= 518 | 519 | has@^1.0.3: 520 | version "1.0.3" 521 | resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" 522 | integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== 523 | dependencies: 524 | function-bind "^1.1.1" 525 | 526 | is-core-module@^2.2.0: 527 | version "2.8.0" 528 | resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.8.0.tgz#0321336c3d0925e497fd97f5d95cb114a5ccd548" 529 | integrity sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw== 530 | dependencies: 531 | has "^1.0.3" 532 | 533 | "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: 534 | version "4.0.0" 535 | resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" 536 | integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== 537 | 538 | jsesc@^2.5.1: 539 | version "2.5.2" 540 | resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" 541 | integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== 542 | 543 | json5@^2.1.2: 544 | version "2.2.0" 545 | resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.0.tgz#2dfefe720c6ba525d9ebd909950f0515316c89a3" 546 | integrity sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA== 547 | dependencies: 548 | minimist "^1.2.5" 549 | 550 | loose-envify@^1.1.0: 551 | version "1.4.0" 552 | resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" 553 | integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== 554 | dependencies: 555 | js-tokens "^3.0.0 || ^4.0.0" 556 | 557 | minimist@^1.2.5: 558 | version "1.2.5" 559 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" 560 | integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== 561 | 562 | ms@2.1.2: 563 | version "2.1.2" 564 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" 565 | integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== 566 | 567 | nanoid@^3.1.30: 568 | version "3.1.30" 569 | resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.30.tgz#63f93cc548d2a113dc5dfbc63bfa09e2b9b64362" 570 | integrity sha512-zJpuPDwOv8D2zq2WRoMe1HsfZthVewpel9CAvTfc/2mBD1uUT/agc5f7GHGWXlYkFvi1mVxe4IjvP2HNrop7nQ== 571 | 572 | node-releases@^2.0.1: 573 | version "2.0.1" 574 | resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.1.tgz#3d1d395f204f1f2f29a54358b9fb678765ad2fc5" 575 | integrity sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA== 576 | 577 | object-assign@^4.1.1: 578 | version "4.1.1" 579 | resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" 580 | integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= 581 | 582 | path-parse@^1.0.6: 583 | version "1.0.7" 584 | resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" 585 | integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== 586 | 587 | picocolors@^1.0.0: 588 | version "1.0.0" 589 | resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" 590 | integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== 591 | 592 | picomatch@^2.2.2: 593 | version "2.3.0" 594 | resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.0.tgz#f1f061de8f6a4bf022892e2d128234fb98302972" 595 | integrity sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw== 596 | 597 | postcss@^8.3.8: 598 | version "8.4.4" 599 | resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.4.tgz#d53d4ec6a75fd62557a66bb41978bf47ff0c2869" 600 | integrity sha512-joU6fBsN6EIer28Lj6GDFoC/5yOZzLCfn0zHAn/MYXI7aPt4m4hK5KC5ovEZXy+lnCjmYIbQWngvju2ddyEr8Q== 601 | dependencies: 602 | nanoid "^3.1.30" 603 | picocolors "^1.0.0" 604 | source-map-js "^1.0.1" 605 | 606 | react-dom@^17.0.0: 607 | version "17.0.2" 608 | resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-17.0.2.tgz#ecffb6845e3ad8dbfcdc498f0d0a939736502c23" 609 | integrity sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA== 610 | dependencies: 611 | loose-envify "^1.1.0" 612 | object-assign "^4.1.1" 613 | scheduler "^0.20.2" 614 | 615 | react-refresh@^0.11.0: 616 | version "0.11.0" 617 | resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.11.0.tgz#77198b944733f0f1f1a90e791de4541f9f074046" 618 | integrity sha512-F27qZr8uUqwhWZboondsPx8tnC3Ct3SxZA3V5WyEvujRyyNv0VYPhoBg1gZ8/MV5tubQp76Trw8lTv9hzRBa+A== 619 | 620 | react@^17.0.0: 621 | version "17.0.2" 622 | resolved "https://registry.yarnpkg.com/react/-/react-17.0.2.tgz#d0b5cc516d29eb3eee383f75b62864cfb6800037" 623 | integrity sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA== 624 | dependencies: 625 | loose-envify "^1.1.0" 626 | object-assign "^4.1.1" 627 | 628 | resolve@^1.20.0: 629 | version "1.20.0" 630 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975" 631 | integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A== 632 | dependencies: 633 | is-core-module "^2.2.0" 634 | path-parse "^1.0.6" 635 | 636 | rollup@^2.57.0: 637 | version "2.60.2" 638 | resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.60.2.tgz#3f45ace36a9b10b4297181831ea0719922513463" 639 | integrity sha512-1Bgjpq61sPjgoZzuiDSGvbI1tD91giZABgjCQBKM5aYLnzjq52GoDuWVwT/cm/MCxCMPU8gqQvkj8doQ5C8Oqw== 640 | optionalDependencies: 641 | fsevents "~2.3.2" 642 | 643 | safe-buffer@~5.1.1: 644 | version "5.1.2" 645 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" 646 | integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== 647 | 648 | scheduler@^0.20.2: 649 | version "0.20.2" 650 | resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.20.2.tgz#4baee39436e34aa93b4874bddcbf0fe8b8b50e91" 651 | integrity sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ== 652 | dependencies: 653 | loose-envify "^1.1.0" 654 | object-assign "^4.1.1" 655 | 656 | semver@^6.3.0: 657 | version "6.3.0" 658 | resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" 659 | integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== 660 | 661 | source-map-js@^1.0.1: 662 | version "1.0.1" 663 | resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.1.tgz#a1741c131e3c77d048252adfa24e23b908670caf" 664 | integrity sha512-4+TN2b3tqOCd/kaGRJ/sTYA0tR0mdXx26ipdolxcwtJVqEnqNYvlCAt1q3ypy4QMlYus+Zh34RNtYLoq2oQ4IA== 665 | 666 | source-map@^0.5.0: 667 | version "0.5.7" 668 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" 669 | integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= 670 | 671 | supports-color@^5.3.0: 672 | version "5.5.0" 673 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" 674 | integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== 675 | dependencies: 676 | has-flag "^3.0.0" 677 | 678 | to-fast-properties@^2.0.0: 679 | version "2.0.0" 680 | resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" 681 | integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= 682 | 683 | typescript@^4.3.2: 684 | version "4.5.2" 685 | resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.5.2.tgz#8ac1fba9f52256fdb06fb89e4122fa6a346c2998" 686 | integrity sha512-5BlMof9H1yGt0P8/WF+wPNw6GfctgGjXp5hkblpyT+8rkASSmkUKMXrxR0Xg8ThVCi/JnHQiKXeBaEwCeQwMFw== 687 | 688 | vite@^2.6.4: 689 | version "2.6.14" 690 | resolved "https://registry.yarnpkg.com/vite/-/vite-2.6.14.tgz#35c09a15e4df823410819a2a239ab11efb186271" 691 | integrity sha512-2HA9xGyi+EhY2MXo0+A2dRsqsAG3eFNEVIo12olkWhOmc8LfiM+eMdrXf+Ruje9gdXgvSqjLI9freec1RUM5EA== 692 | dependencies: 693 | esbuild "^0.13.2" 694 | postcss "^8.3.8" 695 | resolve "^1.20.0" 696 | rollup "^2.57.0" 697 | optionalDependencies: 698 | fsevents "~2.3.2" 699 | --------------------------------------------------------------------------------