├── .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 |
88 | {row.label}{" "}
89 | changeSort(row.key)}
92 | {...{
93 | sortOrder,
94 | sortKey,
95 | }}
96 | />
97 | |
98 | );
99 | })}
100 |
101 |
102 |
103 |
104 | {sortedData().map((person) => {
105 | return (
106 |
107 | {person.id} |
108 | {person.first_name} |
109 | {person.last_name} |
110 | {person.email} |
111 | {person.gender} |
112 | {person.ip_address} |
113 |
114 | );
115 | })}
116 |
117 |
118 | );
119 | }
120 |
121 | export default SortableTable;
122 |
--------------------------------------------------------------------------------
/src/favicon.svg:
--------------------------------------------------------------------------------
1 |
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 |
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 |
--------------------------------------------------------------------------------