diff --git a/hackathon_site/dashboard/frontend/package.json b/hackathon_site/dashboard/frontend/package.json index 45836a6da..a32af8622 100644 --- a/hackathon_site/dashboard/frontend/package.json +++ b/hackathon_site/dashboard/frontend/package.json @@ -3,9 +3,13 @@ "version": "0.1.0", "private": true, "dependencies": { + "@emotion/react": "^11.11.1", + "@emotion/styled": "^11.11.0", "@material-ui/core": "^4.9.13", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "^4.0.0-alpha.52", + "@mui/material": "^5.13.5", + "@mui/x-data-grid": "^6.8.0", "@reduxjs/toolkit": "^1.3.6", "@types/jest": "^26.0.23", "@types/node": "^15.0.2", @@ -14,6 +18,7 @@ "@types/yup": "^0.29.13", "axios": "^0.21.1", "connected-react-router": "^6.8.0", + "date-fns": "^2.30.0", "formik": "^2.1.4", "history": "^4.10.1", "lint-staged": "^10.2.2", diff --git a/hackathon_site/dashboard/frontend/src/api/orders.ts b/hackathon_site/dashboard/frontend/src/api/orders.ts new file mode 100644 index 000000000..6a168cfdd --- /dev/null +++ b/hackathon_site/dashboard/frontend/src/api/orders.ts @@ -0,0 +1,29 @@ +import SubmittedIcon from "assets/images/icons/statusIcons/unfulfilled-status.svg"; +import ReadyForPickupIcon from "assets/images/icons/statusIcons/readyforpickup-status.svg"; +import PickedUpIcon from "assets/images/icons/statusIcons/checkout-status.svg"; +import CancelledIcon from "assets/images/icons/statusIcons/cancelled-status.svg"; +import ReturnedIcon from "assets/images/icons/statusIcons/checkout-status.svg"; +import PendingIcon from "assets/images/icons/statusIcons/pending-status.svg"; +import InProgressIcon from "assets/images/icons/statusIcons/inprogress-status.svg"; + +import styles from "components/orders/OrdersTable/OrdersTable.module.scss"; + +export const statusIconMap: { [key: string]: string } = { + Submitted: SubmittedIcon, + ReadyforPickup: ReadyForPickupIcon, + PickedUp: PickedUpIcon, + Cancelled: CancelledIcon, + Returned: ReturnedIcon, + Pending: PendingIcon, + InProgress: InProgressIcon, +}; + +export const statusStylesMap: { [key: string]: string } = { + Submitted: styles.SubmittedIcon, + ReadyforPickup: styles.ReadyforPickupIcon, + PickedUp: styles.PickedUpIcon, + Cancelled: styles.CancelledIcon, + Returned: styles.ReturnedIcon, + Pending: styles.PendingIcon, + InProgress: styles.InProgressIcon, +}; diff --git a/hackathon_site/dashboard/frontend/src/api/types.ts b/hackathon_site/dashboard/frontend/src/api/types.ts index 5f7cfc278..0855ea36a 100644 --- a/hackathon_site/dashboard/frontend/src/api/types.ts +++ b/hackathon_site/dashboard/frontend/src/api/types.ts @@ -102,7 +102,9 @@ export type OrderStatus = | "Ready for Pickup" | "Picked Up" | "Cancelled" - | "Returned"; + | "Returned" + | "Pending" + | "In Progress"; export type PartReturnedHealth = "Healthy" | "Heavily Used" | "Broken" | "Lost"; export type ItemsInOrder = Omit; diff --git a/hackathon_site/dashboard/frontend/src/assets/images/icons/statusIcons/cancelled-status.svg b/hackathon_site/dashboard/frontend/src/assets/images/icons/statusIcons/cancelled-status.svg new file mode 100644 index 000000000..7b5707800 --- /dev/null +++ b/hackathon_site/dashboard/frontend/src/assets/images/icons/statusIcons/cancelled-status.svg @@ -0,0 +1,3 @@ + + + diff --git a/hackathon_site/dashboard/frontend/src/assets/images/icons/statusIcons/checkout-status.svg b/hackathon_site/dashboard/frontend/src/assets/images/icons/statusIcons/checkout-status.svg new file mode 100644 index 000000000..9f2e0de5f --- /dev/null +++ b/hackathon_site/dashboard/frontend/src/assets/images/icons/statusIcons/checkout-status.svg @@ -0,0 +1,3 @@ + + + diff --git a/hackathon_site/dashboard/frontend/src/assets/images/icons/statusIcons/inprogress-status.svg b/hackathon_site/dashboard/frontend/src/assets/images/icons/statusIcons/inprogress-status.svg new file mode 100644 index 000000000..573aea5ef --- /dev/null +++ b/hackathon_site/dashboard/frontend/src/assets/images/icons/statusIcons/inprogress-status.svg @@ -0,0 +1,3 @@ + + + diff --git a/hackathon_site/dashboard/frontend/src/assets/images/icons/statusIcons/pending-status.svg b/hackathon_site/dashboard/frontend/src/assets/images/icons/statusIcons/pending-status.svg new file mode 100644 index 000000000..fb273110a --- /dev/null +++ b/hackathon_site/dashboard/frontend/src/assets/images/icons/statusIcons/pending-status.svg @@ -0,0 +1,4 @@ + + + + diff --git a/hackathon_site/dashboard/frontend/src/assets/images/icons/statusIcons/readyforpickup-status.svg b/hackathon_site/dashboard/frontend/src/assets/images/icons/statusIcons/readyforpickup-status.svg new file mode 100644 index 000000000..6a8fdc498 --- /dev/null +++ b/hackathon_site/dashboard/frontend/src/assets/images/icons/statusIcons/readyforpickup-status.svg @@ -0,0 +1,3 @@ + + + diff --git a/hackathon_site/dashboard/frontend/src/assets/images/icons/statusIcons/unfulfilled-status.svg b/hackathon_site/dashboard/frontend/src/assets/images/icons/statusIcons/unfulfilled-status.svg new file mode 100644 index 000000000..6f6f8d0c9 --- /dev/null +++ b/hackathon_site/dashboard/frontend/src/assets/images/icons/statusIcons/unfulfilled-status.svg @@ -0,0 +1,3 @@ + + + diff --git a/hackathon_site/dashboard/frontend/src/components/orders/OrdersTable/OrdersTable.module.scss b/hackathon_site/dashboard/frontend/src/components/orders/OrdersTable/OrdersTable.module.scss new file mode 100644 index 000000000..eabbb68ac --- /dev/null +++ b/hackathon_site/dashboard/frontend/src/components/orders/OrdersTable/OrdersTable.module.scss @@ -0,0 +1,59 @@ +@import "../../../assets/abstracts/mixins"; +@import "../../../assets/abstracts/variables"; + +.container { + display: flex; + flex-direction: row; + align-content: center; + justify-content: flex-start; + + width: 100%; + padding: 4px; + border-radius: 50px; +} + +.gridContainer { + background-color: #ffffff; +} + +.statusIcon { + width: 12px; + margin-left: 5px; + margin-right: 10px; +} + +// for OrdersTable +.SubmittedIcon { + color: #b7941e; + background-color: #ffe899; +} + +.ReadyforPickupIcon { + color: #43a047; + background-color: #c1edc1; +} + +.PickedUpIcon { + color: #757575; + background-color: #d9d9d9; +} + +.CancelledIcon { + color: #b00020; + background-color: #ebbcbc; +} + +.ReturnedIcon { + color: #757575; + background-color: #d9d9d9; +} + +.PendingIcon { + color: #2b7bbc; + background-color: #c3e1ef; +} + +.InProgressIcon { + color: #ffa000; + background-color: #ffe3b4; +} diff --git a/hackathon_site/dashboard/frontend/src/components/orders/OrdersTable/OrdersTable.test.tsx b/hackathon_site/dashboard/frontend/src/components/orders/OrdersTable/OrdersTable.test.tsx new file mode 100644 index 000000000..d1a75ff1f --- /dev/null +++ b/hackathon_site/dashboard/frontend/src/components/orders/OrdersTable/OrdersTable.test.tsx @@ -0,0 +1,98 @@ +import React from "react"; +import { fireEvent, render, waitFor } from "testing/utils"; +import { mockPendingOrders } from "testing/mockData"; +import { OrdersTable } from "./OrdersTable"; +import { format, parseISO } from "date-fns"; // to parse date +import { orderQtyValueGetter } from "./OrdersTable"; +import { createMemoryHistory } from "history"; +import { Router } from "react-router-dom"; + +describe("Orders Table", () => { + test("renders order table", () => { + const { container } = render(); + // find the rendered Data Grid + const dataGrid = container.querySelector(".MuiDataGrid-root"); + expect(dataGrid).toBeInTheDocument(); + }); + + test("Displays the correct number of rows", () => { + const { container } = render(); + + const rows = container.querySelector(".MuiTablePagination-displayedRows"); + const rowsText = rows?.textContent || ""; // get the text content of the element + // returns 1-4 of 4 + + // regex to extract numbers from the text + const numbersInText = rowsText.split(" "); // get the last number 4 + expect(numbersInText ? parseInt(numbersInText[2]) : 0).toEqual( + mockPendingOrders.length + ); + }); + + test("Displays data accurately", () => { + const { container } = render( + + ); // select the first row + + const rows = container.querySelectorAll("div.MuiDataGrid-row"); + rows.forEach((row, rowIndex) => { + // Query for the cells in each row + const cells = row.querySelectorAll("div.MuiDataGrid-cell"); + + expect(cells.length).toBe(6); // 6 fields are displayed in datagrid + + // Access and assert the cell data + expect(cells[0].textContent).toBe( + mockPendingOrders[rowIndex].id.toString() + ); + expect(cells[1].textContent).toBe( + format(parseISO(mockPendingOrders[rowIndex].created_at), "MMM d, HH:mm") + ); + expect(cells[2].textContent).toBe(mockPendingOrders[rowIndex].team_id); + expect(cells[3].textContent).toBe(mockPendingOrders[rowIndex].team_code); + expect(cells[4].textContent).toBe( + mockPendingOrders[rowIndex].items?.length.toString() + ); + expect(cells[5].textContent).toBe(mockPendingOrders[rowIndex].status); + }); + }); + + test("ValueGetter caluclates order quantity correctly", () => { + let params = { + value: [ + { + id: 6, + hardware_id: 3, + part_returned_health: null, + }, + { + id: 7, + hardware_id: 4, + part_returned_health: null, + }, + ], + }; // initialize grid value getter params + + const result = orderQtyValueGetter(params); + expect(result).toBe(2); + }); + + test("Handles double row click event", async () => { + const history = createMemoryHistory(); + + const { container } = render( + + + + ); + + const rows = container.querySelectorAll("div.MuiDataGrid-row"); + + fireEvent.doubleClick(rows[0]); + + await waitFor(() => { + // Assert that the URL has changed to the expected path + expect(history.location.pathname).toBe("/teams/IEEE"); // Replace with your expected URL + }); + }); +}); diff --git a/hackathon_site/dashboard/frontend/src/components/orders/OrdersTable/OrdersTable.tsx b/hackathon_site/dashboard/frontend/src/components/orders/OrdersTable/OrdersTable.tsx new file mode 100644 index 000000000..af746c766 --- /dev/null +++ b/hackathon_site/dashboard/frontend/src/components/orders/OrdersTable/OrdersTable.tsx @@ -0,0 +1,132 @@ +import React from "react"; +import { + DataGrid, + GridCallbackDetails, + GridColDef, + GridEventListener, + GridRowParams, + MuiEvent, +} from "@mui/x-data-grid"; +import { ItemsInOrder, Order } from "api/types"; +import { format, parseISO } from "date-fns"; // to parse date +import { statusIconMap, statusStylesMap } from "api/orders"; +import styles from "./OrdersTable.module.scss"; +import { useHistory } from "react-router-dom"; + +// magic numbers +const pageSizeOptions = [5, 10, 25]; // items displayed per page +const paginationModel = { pageSize: 25, page: 0 }; // defauly number of rows displayed per page + +interface OrdersTableProps { + ordersData: Order[]; +} + +interface IOrderStateIcon { + status: string; +} + +export const orderQtyValueGetter = (params: any) => { + const items = params?.value as ItemsInOrder[] | undefined; + return Array.isArray(items) ? items.length : 0; +}; + +const OrderStateIcon = ({ status }: IOrderStateIcon) => { + const filterState: string = status.replace(/\s+/g, ""); + const styleIcon = statusStylesMap[filterState]; + const iconSrc = statusIconMap[filterState]; + + return ( +
+
+ {`${status} + {status} +
+
+ ); +}; + +const handleEvent = ( + params: GridRowParams, // GridRowParams + event: MuiEvent>, // MuiEvent> + details: GridCallbackDetails, + navigateCallback: (path: string) => void +) => { + const path = `/teams/${params.row.team_code}`; + navigateCallback(path); +}; + +const OrdersTable = ({ ordersData }: OrdersTableProps) => { + const history = useHistory(); + + const handleDoubleRowClick: GridEventListener<"rowClick"> = ( + params: GridRowParams, + event: MuiEvent>, + details: GridCallbackDetails + ) => { + handleEvent(params, event, details, (path) => { + history.push(path); // Call the navigateCallback + }); + }; + + const columns: GridColDef[] = [ + { field: "id", headerName: "ID", width: 25, flex: 1 }, + { + field: "created_at", + headerName: "Time Ordered", + flex: 1, + valueFormatter: (params) => { + const time = params.value as string; + const date = parseISO(time); + const formattedTime = format(date, "MMM d, HH:mm"); + return formattedTime; + }, + }, + { field: "team_id", headerName: "Team ID", flex: 1, minWidth: 100 }, + { field: "team_code", headerName: "Team", flex: 1 }, + { + field: "items", + headerName: "Order Qty", + flex: 1, + valueGetter: orderQtyValueGetter, + }, + { + field: "status", + headerName: "Status", + minWidth: 250, + renderCell: (params) => , + }, + { field: "updated_at", headerName: "Updated At" }, + { field: "request", headerName: "Request" }, + ]; + + return ( + <> +
+ +
+ + ); +}; + +export { OrdersTable }; diff --git a/hackathon_site/dashboard/frontend/src/pages/Orders/Orders.test.tsx b/hackathon_site/dashboard/frontend/src/pages/Orders/Orders.test.tsx index 43b955010..963f5bc61 100644 --- a/hackathon_site/dashboard/frontend/src/pages/Orders/Orders.test.tsx +++ b/hackathon_site/dashboard/frontend/src/pages/Orders/Orders.test.tsx @@ -20,39 +20,4 @@ describe("Orders Page", () => { expect(getByText("Orders")).toBeInTheDocument(); expect(getByTestId("ordersCountDivider")).toBeInTheDocument(); }); - - test("Display correct order cards", () => { - const { getByTestId } = render(, { store }); - mockPendingOrders.forEach((order) => { - const orderStatus = order.status; - - if (orderStatus === "Submitted" || orderStatus === "Ready for Pickup") { - const orderItem = getByTestId(`order-item-${order.id}`); - const orderDetails = within(orderItem); - const date = new Date(order.created_at); - const month = date.toLocaleString("default", { month: "short" }); - const day = date.getDate(); - const hoursAndMinutes = date.getHours() + ":" + date.getMinutes(); - - expect(orderDetails.getByText(order.id)).toBeInTheDocument(); - expect(orderDetails.getByText(order.items.length)).toBeInTheDocument(); - expect(orderDetails.getByText(order.team_code)).toBeInTheDocument(); - expect( - orderDetails.getByText(`${month} ${day}, ${hoursAndMinutes}`) - ).toBeInTheDocument(); - } - // TODO: Add tests for Checkout Orders in the future - // else { - // expect( - // orderDetails.getByText("Order Card Component") - // ).toBeInTheDocument(); - // } - }); - }); - test("Display correct amount of order results", () => { - const { getByText } = render(, { store }); - const orderCount = mockPendingOrders.length; - const resultText = getByText(`${orderCount} results`); - expect(resultText).toBeInTheDocument(); - }); }); diff --git a/hackathon_site/dashboard/frontend/src/pages/Orders/Orders.tsx b/hackathon_site/dashboard/frontend/src/pages/Orders/Orders.tsx index 1ae7055e5..544c98302 100644 --- a/hackathon_site/dashboard/frontend/src/pages/Orders/Orders.tsx +++ b/hackathon_site/dashboard/frontend/src/pages/Orders/Orders.tsx @@ -9,18 +9,16 @@ import OrdersFilter from "components/orders/OrdersFilter/OrderFilter"; import CloseIcon from "@material-ui/icons/Close"; import IconButton from "@material-ui/core/IconButton"; import styles from "./Orders.module.scss"; -import OrderCard from "components/orders/OrderCard/OrderCard"; import { useDispatch, useSelector } from "react-redux"; import { adminOrderSelectors, getOrdersWithFilters, } from "slices/order/adminOrderSlice"; -import { useHistory } from "react-router-dom"; import { clearFilters } from "slices/hardware/hardwareSlice"; +import { OrdersTable } from "components/orders/OrdersTable/OrdersTable"; const Orders = () => { const dispatch = useDispatch(); - const history = useHistory(); const allOrders = useSelector(adminOrderSelectors.selectAll); const [mobileOpen, setMobileOpen] = React.useState(false); const toggleFilter = () => { @@ -86,36 +84,7 @@ const Orders = () => { - {allOrders.map((order, idx) => ( - - history.push(`/teams/${order.team_code}`) - } - > - {[ - "Submitted", - "Ready for Pickup", - "Picked Up", - "Cancelled", - "Returned", - ].includes(order.status) && ( - - )} - - ))} + diff --git a/hackathon_site/dashboard/frontend/yarn.lock b/hackathon_site/dashboard/frontend/yarn.lock index c7e4f7c56..cb84649e2 100644 --- a/hackathon_site/dashboard/frontend/yarn.lock +++ b/hackathon_site/dashboard/frontend/yarn.lock @@ -183,6 +183,13 @@ dependencies: "@babel/types" "^7.15.4" +"@babel/helper-module-imports@^7.16.7": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.22.5.tgz#1a8f4c9f4027d23f520bd76b364d44434a72660c" + integrity sha512-8Dl6+HD/cKifutF5qGd/8ZJi84QeAKh+CEe1sBzz8UayBBGg1dAIJrdHOcOM5b2MpzWL2yuotJTtGjETq0qjXg== + dependencies: + "@babel/types" "^7.22.5" + "@babel/helper-module-transforms@^7.12.1", "@babel/helper-module-transforms@^7.14.5", "@babel/helper-module-transforms@^7.15.4": version "7.15.4" resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.15.4.tgz#962cc629a7f7f9a082dd62d0307fa75fe8788d7c" @@ -249,11 +256,21 @@ dependencies: "@babel/types" "^7.15.4" +"@babel/helper-string-parser@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz#533f36457a25814cf1df6488523ad547d784a99f" + integrity sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw== + "@babel/helper-validator-identifier@^7.14.5", "@babel/helper-validator-identifier@^7.14.9": version "7.14.9" resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.9.tgz#6654d171b2024f6d8ee151bf2509699919131d48" integrity sha512-pQYxPY0UP6IHISRitNe8bsijHex4TWZXi2HwKVsjPiltzlhse2znVcm9Ace510VT1kxIHjGJCZZQBX2gJDbo0g== +"@babel/helper-validator-identifier@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.5.tgz#9544ef6a33999343c8740fa51350f30eeaaaf193" + integrity sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ== + "@babel/helper-validator-option@^7.12.1", "@babel/helper-validator-option@^7.14.5": version "7.14.5" resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz#6e72a1fff18d5dfcb878e1e62f1a021c4b72d5a3" @@ -1164,6 +1181,13 @@ dependencies: regenerator-runtime "^0.13.4" +"@babel/runtime@^7.18.3", "@babel/runtime@^7.21.0": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.22.5.tgz#8564dd588182ce0047d55d7a75e93921107b57ec" + integrity sha512-ecjvYlnAaZ/KVneE/OdKYBYfgXV3Ptu6zQWmgEF7vwKhQnvVS6bjMD2XYgj+SNvQ1GfK/pjgokfPkC/2CO8CuA== + dependencies: + regenerator-runtime "^0.13.11" + "@babel/template@^7.10.4", "@babel/template@^7.15.4", "@babel/template@^7.3.3": version "7.15.4" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.15.4.tgz#51898d35dcf3faa670c4ee6afcfd517ee139f194" @@ -1196,6 +1220,15 @@ "@babel/helper-validator-identifier" "^7.14.9" to-fast-properties "^2.0.0" +"@babel/types@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.22.5.tgz#cd93eeaab025880a3a47ec881f4b096a5b786fbe" + integrity sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA== + dependencies: + "@babel/helper-string-parser" "^7.22.5" + "@babel/helper-validator-identifier" "^7.22.5" + to-fast-properties "^2.0.0" + "@bcoe/v8-coverage@^0.2.3": version "0.2.3" resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" @@ -1219,11 +1252,118 @@ resolved "https://registry.yarnpkg.com/@csstools/normalize.css/-/normalize.css-10.1.0.tgz#f0950bba18819512d42f7197e56c518aa491cf18" integrity sha512-ij4wRiunFfaJxjB0BdrYHIH8FxBJpOwNPhhAcunlmPdXudL1WQV1qoP9un6JsEBAgQH+7UXyyjh0g7jTxXK6tg== +"@emotion/babel-plugin@^11.11.0": + version "11.11.0" + resolved "https://registry.yarnpkg.com/@emotion/babel-plugin/-/babel-plugin-11.11.0.tgz#c2d872b6a7767a9d176d007f5b31f7d504bb5d6c" + integrity sha512-m4HEDZleaaCH+XgDDsPF15Ht6wTLsgDTeR3WYj9Q/k76JtWhrJjcP4+/XlG8LGT/Rol9qUfOIztXeA84ATpqPQ== + dependencies: + "@babel/helper-module-imports" "^7.16.7" + "@babel/runtime" "^7.18.3" + "@emotion/hash" "^0.9.1" + "@emotion/memoize" "^0.8.1" + "@emotion/serialize" "^1.1.2" + babel-plugin-macros "^3.1.0" + convert-source-map "^1.5.0" + escape-string-regexp "^4.0.0" + find-root "^1.1.0" + source-map "^0.5.7" + stylis "4.2.0" + +"@emotion/cache@^11.11.0": + version "11.11.0" + resolved "https://registry.yarnpkg.com/@emotion/cache/-/cache-11.11.0.tgz#809b33ee6b1cb1a625fef7a45bc568ccd9b8f3ff" + integrity sha512-P34z9ssTCBi3e9EI1ZsWpNHcfY1r09ZO0rZbRO2ob3ZQMnFI35jB536qoXbkdesr5EUhYi22anuEJuyxifaqAQ== + dependencies: + "@emotion/memoize" "^0.8.1" + "@emotion/sheet" "^1.2.2" + "@emotion/utils" "^1.2.1" + "@emotion/weak-memoize" "^0.3.1" + stylis "4.2.0" + "@emotion/hash@^0.8.0": version "0.8.0" resolved "https://registry.yarnpkg.com/@emotion/hash/-/hash-0.8.0.tgz#bbbff68978fefdbe68ccb533bc8cbe1d1afb5413" integrity sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow== +"@emotion/hash@^0.9.1": + version "0.9.1" + resolved "https://registry.yarnpkg.com/@emotion/hash/-/hash-0.9.1.tgz#4ffb0055f7ef676ebc3a5a91fb621393294e2f43" + integrity sha512-gJB6HLm5rYwSLI6PQa+X1t5CFGrv1J1TWG+sOyMCeKz2ojaj6Fnl/rZEspogG+cvqbt4AE/2eIyD2QfLKTBNlQ== + +"@emotion/is-prop-valid@^1.2.1": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@emotion/is-prop-valid/-/is-prop-valid-1.2.1.tgz#23116cf1ed18bfeac910ec6436561ecb1a3885cc" + integrity sha512-61Mf7Ufx4aDxx1xlDeOm8aFFigGHE4z+0sKCa+IHCeZKiyP9RLD0Mmx7m8b9/Cf37f7NAvQOOJAbQQGVr5uERw== + dependencies: + "@emotion/memoize" "^0.8.1" + +"@emotion/memoize@^0.8.1": + version "0.8.1" + resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.8.1.tgz#c1ddb040429c6d21d38cc945fe75c818cfb68e17" + integrity sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA== + +"@emotion/react@^11.11.1": + version "11.11.1" + resolved "https://registry.yarnpkg.com/@emotion/react/-/react-11.11.1.tgz#b2c36afac95b184f73b08da8c214fdf861fa4157" + integrity sha512-5mlW1DquU5HaxjLkfkGN1GA/fvVGdyHURRiX/0FHl2cfIfRxSOfmxEH5YS43edp0OldZrZ+dkBKbngxcNCdZvA== + dependencies: + "@babel/runtime" "^7.18.3" + "@emotion/babel-plugin" "^11.11.0" + "@emotion/cache" "^11.11.0" + "@emotion/serialize" "^1.1.2" + "@emotion/use-insertion-effect-with-fallbacks" "^1.0.1" + "@emotion/utils" "^1.2.1" + "@emotion/weak-memoize" "^0.3.1" + hoist-non-react-statics "^3.3.1" + +"@emotion/serialize@^1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@emotion/serialize/-/serialize-1.1.2.tgz#017a6e4c9b8a803bd576ff3d52a0ea6fa5a62b51" + integrity sha512-zR6a/fkFP4EAcCMQtLOhIgpprZOwNmCldtpaISpvz348+DP4Mz8ZoKaGGCQpbzepNIUWbq4w6hNZkwDyKoS+HA== + dependencies: + "@emotion/hash" "^0.9.1" + "@emotion/memoize" "^0.8.1" + "@emotion/unitless" "^0.8.1" + "@emotion/utils" "^1.2.1" + csstype "^3.0.2" + +"@emotion/sheet@^1.2.2": + version "1.2.2" + resolved "https://registry.yarnpkg.com/@emotion/sheet/-/sheet-1.2.2.tgz#d58e788ee27267a14342303e1abb3d508b6d0fec" + integrity sha512-0QBtGvaqtWi+nx6doRwDdBIzhNdZrXUppvTM4dtZZWEGTXL/XE/yJxLMGlDT1Gt+UHH5IX1n+jkXyytE/av7OA== + +"@emotion/styled@^11.11.0": + version "11.11.0" + resolved "https://registry.yarnpkg.com/@emotion/styled/-/styled-11.11.0.tgz#26b75e1b5a1b7a629d7c0a8b708fbf5a9cdce346" + integrity sha512-hM5Nnvu9P3midq5aaXj4I+lnSfNi7Pmd4EWk1fOZ3pxookaQTNew6bp4JaCBYM4HVFZF9g7UjJmsUmC2JlxOng== + dependencies: + "@babel/runtime" "^7.18.3" + "@emotion/babel-plugin" "^11.11.0" + "@emotion/is-prop-valid" "^1.2.1" + "@emotion/serialize" "^1.1.2" + "@emotion/use-insertion-effect-with-fallbacks" "^1.0.1" + "@emotion/utils" "^1.2.1" + +"@emotion/unitless@^0.8.1": + version "0.8.1" + resolved "https://registry.yarnpkg.com/@emotion/unitless/-/unitless-0.8.1.tgz#182b5a4704ef8ad91bde93f7a860a88fd92c79a3" + integrity sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ== + +"@emotion/use-insertion-effect-with-fallbacks@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.0.1.tgz#08de79f54eb3406f9daaf77c76e35313da963963" + integrity sha512-jT/qyKZ9rzLErtrjGgdkMBn2OP8wl0G3sQlBb3YPryvKHsjvINUhVaPFfP+fpBcOkmrVOVEEHQFJ7nbj2TH2gw== + +"@emotion/utils@^1.2.1": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@emotion/utils/-/utils-1.2.1.tgz#bbab58465738d31ae4cb3dbb6fc00a5991f755e4" + integrity sha512-Y2tGf3I+XVnajdItskUCn6LX+VUDmP6lTL4fcqsXAv43dnlbZiuW4MWQW38rW/BVWSE7Q/7+XQocmpnRYILUmg== + +"@emotion/weak-memoize@^0.3.1": + version "0.3.1" + resolved "https://registry.yarnpkg.com/@emotion/weak-memoize/-/weak-memoize-0.3.1.tgz#d0fce5d07b0620caa282b5131c297bb60f9d87e6" + integrity sha512-EsBwpc7hBUJWAsNPBmJy4hxWx12v6bshQsldrVmjxJoc3isbxhOrF2IcCpaXxfvq03NwkI7sbsOLXbYuqF/8Ww== + "@eslint/eslintrc@^0.4.3": version "0.4.3" resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.4.3.tgz#9e42981ef035beb3dd49add17acb96e8ff6f394c" @@ -1570,6 +1710,103 @@ prop-types "^15.7.2" react-is "^16.8.0 || ^17.0.0" +"@mui/base@5.0.0-beta.4": + version "5.0.0-beta.4" + resolved "https://registry.yarnpkg.com/@mui/base/-/base-5.0.0-beta.4.tgz#e3f4f4a056b88ab357194a245e223177ce35e0b0" + integrity sha512-ejhtqYJpjDgHGEljjMBQWZ22yEK0OzIXNa7toJmmXsP4TT3W7xVy8bTJ0TniPDf+JNjrsgfgiFTDGdlEhV1E+g== + dependencies: + "@babel/runtime" "^7.21.0" + "@emotion/is-prop-valid" "^1.2.1" + "@mui/types" "^7.2.4" + "@mui/utils" "^5.13.1" + "@popperjs/core" "^2.11.8" + clsx "^1.2.1" + prop-types "^15.8.1" + react-is "^18.2.0" + +"@mui/core-downloads-tracker@^5.13.4": + version "5.13.4" + resolved "https://registry.yarnpkg.com/@mui/core-downloads-tracker/-/core-downloads-tracker-5.13.4.tgz#7e4b491d8081b6d45ae51556d82cb16b31315a19" + integrity sha512-yFrMWcrlI0TqRN5jpb6Ma9iI7sGTHpytdzzL33oskFHNQ8UgrtPas33Y1K7sWAMwCrr1qbWDrOHLAQG4tAzuSw== + +"@mui/material@^5.13.5": + version "5.13.5" + resolved "https://registry.yarnpkg.com/@mui/material/-/material-5.13.5.tgz#c14f14824f3a37ae0c5ebddbc0034956bc6fec30" + integrity sha512-eMay+Ue1OYXOFMQA5Aau7qbAa/kWHLAyi0McsbPTWssCbGehqkF6CIdPsfVGw6tlO+xPee1hUitphHJNL3xpOQ== + dependencies: + "@babel/runtime" "^7.21.0" + "@mui/base" "5.0.0-beta.4" + "@mui/core-downloads-tracker" "^5.13.4" + "@mui/system" "^5.13.5" + "@mui/types" "^7.2.4" + "@mui/utils" "^5.13.1" + "@types/react-transition-group" "^4.4.6" + clsx "^1.2.1" + csstype "^3.1.2" + prop-types "^15.8.1" + react-is "^18.2.0" + react-transition-group "^4.4.5" + +"@mui/private-theming@^5.13.1": + version "5.13.1" + resolved "https://registry.yarnpkg.com/@mui/private-theming/-/private-theming-5.13.1.tgz#c3e9a0b44f9c5a51b92cfcfb660536060cb61ed7" + integrity sha512-HW4npLUD9BAkVppOUZHeO1FOKUJWAwbpy0VQoGe3McUYTlck1HezGHQCfBQ5S/Nszi7EViqiimECVl9xi+/WjQ== + dependencies: + "@babel/runtime" "^7.21.0" + "@mui/utils" "^5.13.1" + prop-types "^15.8.1" + +"@mui/styled-engine@^5.13.2": + version "5.13.2" + resolved "https://registry.yarnpkg.com/@mui/styled-engine/-/styled-engine-5.13.2.tgz#c87bd61c0ab8086d34828b6defe97c02bcd642ef" + integrity sha512-VCYCU6xVtXOrIN8lcbuPmoG+u7FYuOERG++fpY74hPpEWkyFQG97F+/XfTQVYzlR2m7nPjnwVUgATcTCMEaMvw== + dependencies: + "@babel/runtime" "^7.21.0" + "@emotion/cache" "^11.11.0" + csstype "^3.1.2" + prop-types "^15.8.1" + +"@mui/system@^5.13.5": + version "5.13.5" + resolved "https://registry.yarnpkg.com/@mui/system/-/system-5.13.5.tgz#9f67ea0c4f6974713f90b7b94c999fd3f40f8de3" + integrity sha512-n0gzUxoZ2ZHZgnExkh2Htvo9uW2oakofgPRQrDoa/GQOWyRD0NH9MDszBwOb6AAoXZb+OV5TE7I4LeZ/dzgHYA== + dependencies: + "@babel/runtime" "^7.21.0" + "@mui/private-theming" "^5.13.1" + "@mui/styled-engine" "^5.13.2" + "@mui/types" "^7.2.4" + "@mui/utils" "^5.13.1" + clsx "^1.2.1" + csstype "^3.1.2" + prop-types "^15.8.1" + +"@mui/types@^7.2.4": + version "7.2.4" + resolved "https://registry.yarnpkg.com/@mui/types/-/types-7.2.4.tgz#b6fade19323b754c5c6de679a38f068fd50b9328" + integrity sha512-LBcwa8rN84bKF+f5sDyku42w1NTxaPgPyYKODsh01U1fVstTClbUoSA96oyRBnSNyEiAVjKm6Gwx9vjR+xyqHA== + +"@mui/utils@^5.13.1": + version "5.13.1" + resolved "https://registry.yarnpkg.com/@mui/utils/-/utils-5.13.1.tgz#86199e46014215f95da046a5ec803f4a39c96eee" + integrity sha512-6lXdWwmlUbEU2jUI8blw38Kt+3ly7xkmV9ljzY4Q20WhsJMWiNry9CX8M+TaP/HbtuyR8XKsdMgQW7h7MM3n3A== + dependencies: + "@babel/runtime" "^7.21.0" + "@types/prop-types" "^15.7.5" + "@types/react-is" "^18.2.0" + prop-types "^15.8.1" + react-is "^18.2.0" + +"@mui/x-data-grid@^6.8.0": + version "6.8.0" + resolved "https://registry.yarnpkg.com/@mui/x-data-grid/-/x-data-grid-6.8.0.tgz#6f04084dceca61c71e5594f6437ee7f038c89f01" + integrity sha512-L4CJb2zJDkyBXItfY1QwXt57ap1vIigPGiNrmuJZ8APS1jHafO1dftBWSfJyDJXsnQ5UsDBXsX1nagX51AebpQ== + dependencies: + "@babel/runtime" "^7.21.0" + "@mui/utils" "^5.13.1" + clsx "^1.2.1" + prop-types "^15.8.1" + reselect "^4.1.8" + "@nodelib/fs.scandir@2.1.5": version "2.1.5" resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" @@ -1619,6 +1856,11 @@ schema-utils "^2.6.5" source-map "^0.7.3" +"@popperjs/core@^2.11.8": + version "2.11.8" + resolved "https://registry.yarnpkg.com/@popperjs/core/-/core-2.11.8.tgz#6b79032e760a0899cd4204710beede972a3a185f" + integrity sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A== + "@reduxjs/toolkit@^1.3.6": version "1.6.1" resolved "https://registry.yarnpkg.com/@reduxjs/toolkit/-/toolkit-1.6.1.tgz#7bc83b47352a663bf28db01e79d17ba54b98ade9" @@ -2007,6 +2249,11 @@ resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.4.tgz#fcf7205c25dff795ee79af1e30da2c9790808f11" integrity sha512-rZ5drC/jWjrArrS8BR6SIr4cWpW09RNTYt9AMZo3Jwwif+iacXAqgVjm0B0Bv/S1jhDXKHqRVNCbACkJ89RAnQ== +"@types/prop-types@^15.7.5": + version "15.7.5" + resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.5.tgz#5f19d2b85a98e9558036f6a3cacc8819420f05cf" + integrity sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w== + "@types/q@^1.5.1": version "1.5.5" resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.5.tgz#75a2a8e7d8ab4b230414505d92335d1dcb53a6df" @@ -2019,6 +2266,13 @@ dependencies: "@types/react" "*" +"@types/react-is@^18.2.0": + version "18.2.1" + resolved "https://registry.yarnpkg.com/@types/react-is/-/react-is-18.2.1.tgz#61d01c2a6fc089a53520c0b66996d458fdc46863" + integrity sha512-wyUkmaaSZEzFZivD8F2ftSyAfk6L+DfFliVj/mYdOXbVjRcS87fQJLTnhk6dRZPuJjI+9g6RZJO4PNCngUrmyw== + dependencies: + "@types/react" "*" + "@types/react-redux@^7.1.16": version "7.1.18" resolved "https://registry.yarnpkg.com/@types/react-redux/-/react-redux-7.1.18.tgz#2bf8fd56ebaae679a90ebffe48ff73717c438e04" @@ -2053,6 +2307,13 @@ dependencies: "@types/react" "*" +"@types/react-transition-group@^4.4.6": + version "4.4.6" + resolved "https://registry.yarnpkg.com/@types/react-transition-group/-/react-transition-group-4.4.6.tgz#18187bcda5281f8e10dfc48f0943e2fdf4f75e2e" + integrity sha512-VnCdSxfcm08KjsJVQcfBmhEQAPnLB8G08hAxn39azX1qYBQ/5RVQuoHuKIcfKOdncuaUvEpFKFzEvbtIMsfVew== + dependencies: + "@types/react" "*" + "@types/react@*", "@types/react@^17.0.5": version "17.0.20" resolved "https://registry.yarnpkg.com/@types/react/-/react-17.0.20.tgz#a4284b184d47975c71658cd69e759b6bd37c3b8c" @@ -2885,6 +3146,15 @@ babel-plugin-macros@2.8.0: cosmiconfig "^6.0.0" resolve "^1.12.0" +babel-plugin-macros@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz#9ef6dc74deb934b4db344dc973ee851d148c50c1" + integrity sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg== + dependencies: + "@babel/runtime" "^7.12.5" + cosmiconfig "^7.0.0" + resolve "^1.19.0" + babel-plugin-named-asset-import@^0.3.7: version "0.3.7" resolved "https://registry.yarnpkg.com/babel-plugin-named-asset-import/-/babel-plugin-named-asset-import-0.3.7.tgz#156cd55d3f1228a5765774340937afc8398067dd" @@ -3578,6 +3848,11 @@ clsx@^1.0.4, clsx@^1.1.0: resolved "https://registry.yarnpkg.com/clsx/-/clsx-1.1.1.tgz#98b3134f9abbdf23b2663491ace13c5c03a73188" integrity sha512-6/bPho624p3S2pMyvP5kKBPXnI3ufHLObBFCfgx+LkeR5lg2XYy2hqZqUf45ypD8COn2bhgGJSUE+l5dhNBieA== +clsx@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/clsx/-/clsx-1.2.1.tgz#0ddc4a20a549b59c93a4116bb26f5294ca17dc12" + integrity sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg== + co@^4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" @@ -3796,6 +4071,11 @@ convert-source-map@^1.4.0, convert-source-map@^1.6.0, convert-source-map@^1.7.0: dependencies: safe-buffer "~5.1.1" +convert-source-map@^1.5.0: + version "1.9.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.9.0.tgz#7faae62353fb4213366d0ca98358d22e8368b05f" + integrity sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A== + cookie-signature@1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" @@ -4210,6 +4490,11 @@ csstype@^3.0.2: resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.0.8.tgz#d2266a792729fb227cd216fb572f43728e1ad340" integrity sha512-jXKhWqXPmlUeoQnF/EhTtTl4C9SnrxSH/jZUih3jmO6lBKr99rP3/+FmrMj4EFpOXzMtXHAZkd3x0E6h6Fgflw== +csstype@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.2.tgz#1d4bf9d572f11c14031f0436e1c10bc1f571f50b" + integrity sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ== + cyclist@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-1.0.1.tgz#596e9698fd0c80e12038c2b82d6eb1b35b6224d9" @@ -4237,6 +4522,13 @@ data-urls@^2.0.0: whatwg-mimetype "^2.3.0" whatwg-url "^8.0.0" +date-fns@^2.30.0: + version "2.30.0" + resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.30.0.tgz#f367e644839ff57894ec6ac480de40cae4b0f4d0" + integrity sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw== + dependencies: + "@babel/runtime" "^7.21.0" + debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.0, debug@^2.6.9: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" @@ -5340,6 +5632,11 @@ find-cache-dir@^3.3.1: make-dir "^3.0.2" pkg-dir "^4.1.0" +find-root@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/find-root/-/find-root-1.1.0.tgz#abcfc8ba76f708c42a97b3d685b7e9450bfb9ce4" + integrity sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng== + find-up@4.1.0, find-up@^4.0.0, find-up@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" @@ -5838,7 +6135,7 @@ hmac-drbg@^1.0.1: minimalistic-assert "^1.0.0" minimalistic-crypto-utils "^1.0.1" -hoist-non-react-statics@^3.1.0, hoist-non-react-statics@^3.3.0, hoist-non-react-statics@^3.3.2: +hoist-non-react-statics@^3.1.0, hoist-non-react-statics@^3.3.0, hoist-non-react-statics@^3.3.1, hoist-non-react-statics@^3.3.2: version "3.3.2" resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45" integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw== @@ -6328,6 +6625,13 @@ is-core-module@^2.0.0, is-core-module@^2.2.0, is-core-module@^2.6.0: dependencies: has "^1.0.3" +is-core-module@^2.11.0: + version "2.12.1" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.12.1.tgz#0c0b6885b6f80011c71541ce15c8d66cf5a4f9fd" + integrity sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg== + dependencies: + has "^1.0.3" + is-data-descriptor@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" @@ -8561,7 +8865,7 @@ path-key@^3.0.0, path-key@^3.1.0: resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== -path-parse@^1.0.6: +path-parse@^1.0.6, path-parse@^1.0.7: version "1.0.7" resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== @@ -9483,6 +9787,15 @@ prop-types@^15.6.2, prop-types@^15.7.2: object-assign "^4.1.1" react-is "^16.8.1" +prop-types@^15.8.1: + version "15.8.1" + resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5" + integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== + dependencies: + loose-envify "^1.4.0" + object-assign "^4.1.1" + react-is "^16.13.1" + property-expr@^2.0.2: version "2.0.4" resolved "https://registry.yarnpkg.com/property-expr/-/property-expr-2.0.4.tgz#37b925478e58965031bb612ec5b3260f8241e910" @@ -9710,6 +10023,11 @@ react-is@^16.13.1, react-is@^16.6.0, react-is@^16.7.0, react-is@^16.8.1: resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0" integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== +react-is@^18.2.0: + version "18.2.0" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.2.0.tgz#199431eeaaa2e09f86427efbb4f1473edb47609b" + integrity sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w== + react-redux@^7.2.0: version "7.2.5" resolved "https://registry.yarnpkg.com/react-redux/-/react-redux-7.2.5.tgz#213c1b05aa1187d9c940ddfc0b29450957f6a3b8" @@ -9843,6 +10161,16 @@ react-transition-group@^4.4.0: loose-envify "^1.4.0" prop-types "^15.6.2" +react-transition-group@^4.4.5: + version "4.4.5" + resolved "https://registry.yarnpkg.com/react-transition-group/-/react-transition-group-4.4.5.tgz#e53d4e3f3344da8521489fbef8f2581d42becdd1" + integrity sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g== + dependencies: + "@babel/runtime" "^7.5.5" + dom-helpers "^5.0.1" + loose-envify "^1.4.0" + prop-types "^15.6.2" + react@^16.13.1: version "16.14.0" resolved "https://registry.yarnpkg.com/react/-/react-16.14.0.tgz#94d776ddd0aaa37da3eda8fc5b6b18a4c9a3114d" @@ -9982,6 +10310,11 @@ regenerator-runtime@^0.11.0: resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg== +regenerator-runtime@^0.13.11: + version "0.13.11" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz#f6dca3e7ceec20590d07ada785636a90cdca17f9" + integrity sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg== + regenerator-runtime@^0.13.4, regenerator-runtime@^0.13.7: version "0.13.9" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz#8925742a98ffd90814988d7566ad30ca3b263b52" @@ -10100,6 +10433,11 @@ reselect@^4.0.0: resolved "https://registry.yarnpkg.com/reselect/-/reselect-4.0.0.tgz#f2529830e5d3d0e021408b246a206ef4ea4437f7" integrity sha512-qUgANli03jjAyGlnbYVAV5vvnOmJnODyABz51RdBN7M4WaVu8mecZWgyQNkG8Yqe3KRGRt0l4K4B3XVEULC4CA== +reselect@^4.1.8: + version "4.1.8" + resolved "https://registry.yarnpkg.com/reselect/-/reselect-4.1.8.tgz#3f5dc671ea168dccdeb3e141236f69f02eaec524" + integrity sha512-ab9EmR80F/zQTMNeneUr4cv+jSwPJgIlvEmVwLerwrWVbpLlBuls9XHzIeTFy4cegU2NHBp3va0LKOzU5qFEYQ== + resize-observer-polyfill@^1.5.0: version "1.5.1" resolved "https://registry.yarnpkg.com/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz#0e9020dd3d21024458d4ebd27e23e40269810464" @@ -10176,6 +10514,15 @@ resolve@^1.10.0, resolve@^1.12.0, resolve@^1.14.2, resolve@^1.17.0, resolve@^1.1 is-core-module "^2.2.0" path-parse "^1.0.6" +resolve@^1.19.0: + version "1.22.2" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.2.tgz#0ed0943d4e301867955766c9f3e1ae6d01c6845f" + integrity sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g== + dependencies: + is-core-module "^2.11.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + resolve@^2.0.0-next.3: version "2.0.0-next.3" resolved "https://registry.yarnpkg.com/resolve/-/resolve-2.0.0-next.3.tgz#d41016293d4a8586a39ca5d9b5f15cbea1f55e46" @@ -10756,10 +11103,10 @@ source-map@0.6.1, source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, sourc resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== -source-map@^0.5.0, source-map@^0.5.6: +source-map@^0.5.0, source-map@^0.5.6, source-map@^0.5.7: version "0.5.7" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" - integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= + integrity sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ== source-map@^0.7.3, source-map@~0.7.2: version "0.7.3" @@ -11085,6 +11432,11 @@ stylehacks@^4.0.0: postcss "^7.0.0" postcss-selector-parser "^3.0.0" +stylis@4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/stylis/-/stylis-4.2.0.tgz#79daee0208964c8fe695a42fcffcac633a211a51" + integrity sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw== + supports-color@^5.3.0: version "5.5.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" @@ -11114,6 +11466,11 @@ supports-hyperlinks@^2.0.0: has-flag "^4.0.0" supports-color "^7.0.0" +supports-preserve-symlinks-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" + integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== + svg-parser@^2.0.2: version "2.0.4" resolved "https://registry.yarnpkg.com/svg-parser/-/svg-parser-2.0.4.tgz#fdc2e29e13951736140b76cb122c8ee6630eb6b5"