From 52e408ce8c2c14a4e12f103855499c1afc6fa793 Mon Sep 17 00:00:00 2001 From: Sidney Alcantara Date: Thu, 21 Jul 2022 16:39:53 +1000 Subject: [PATCH] nav updates --- package.json | 3 + src/components/EmojiAvatar.tsx | 66 ++++++++ .../Settings/UserManagement/UserItem.tsx | 8 +- src/hooks/useScrollToHash.ts | 51 ++++++ .../Navigation/NavDrawer/CommunityMenu.tsx | 2 +- src/layouts/Navigation/NavDrawer/HelpMenu.tsx | 2 +- .../Navigation/NavDrawer/NavDrawer.tsx | 4 +- src/layouts/Navigation/NavDrawer/NavItem.tsx | 22 ++- src/pages/Settings/DebugSettingsPage.tsx | 2 + src/pages/Settings/ProjectSettingsPage.tsx | 2 + src/pages/Settings/UserSettingsPage.tsx | 2 + src/pages/TablesPage.tsx | 3 + yarn.lock | 152 +++++++++++++++++- 13 files changed, 308 insertions(+), 11 deletions(-) create mode 100644 src/components/EmojiAvatar.tsx create mode 100644 src/hooks/useScrollToHash.ts diff --git a/package.json b/package.json index a6bc52bf..b224e159 100644 --- a/package.json +++ b/package.json @@ -37,6 +37,7 @@ "jszip": "^3.10.0", "lodash-es": "^4.17.21", "match-sorter": "^6.3.1", + "material-ui-popup-state": "^4.0.1", "mdi-material-ui": "^7.3.0", "monaco-editor-auto-typings": "^0.4.0", "notistack": "^2.0.4", @@ -64,6 +65,7 @@ "react-scripts": "^5.0.0", "react-usestateref": "^1.0.8", "remark-gfm": "^3.0.1", + "seedrandom": "^3.0.5", "stream-browserify": "^3.0.0", "swr": "^1.3.0", "tinymce": "^5", @@ -159,6 +161,7 @@ "@types/react-dom": "^18.0.0", "@types/react-router-dom": "^5.3.3", "@types/react-router-hash-link": "^2.4.5", + "@types/seedrandom": "^3.0.2", "@typescript-eslint/parser": "^5.18.0", "craco-alias": "^3.0.1", "craco-swc": "^0.5.1", diff --git a/src/components/EmojiAvatar.tsx b/src/components/EmojiAvatar.tsx new file mode 100644 index 00000000..ea11a4b2 --- /dev/null +++ b/src/components/EmojiAvatar.tsx @@ -0,0 +1,66 @@ +import seedrandom from "seedrandom"; +import { colord } from "colord"; + +import { useTheme, Avatar, AvatarProps } from "@mui/material"; +import { spreadSx } from "@src/utils/ui"; + +export interface IEmojiAvatarProps extends Partial { + bgColor?: string; + emoji?: string; + fallback: string; + size?: number; +} + +export default function EmojiAvatar({ + bgColor, + emoji, + fallback, + children, + size = 40, + ...props +}: IEmojiAvatarProps) { + const theme = useTheme(); + const darkMode = theme.palette.mode === "dark"; + + const bgcolor = bgColor || generateRandomColor(fallback, darkMode); + const bgcolorLch = colord(bgcolor).toLch(); + const textColor = colord({ + l: + bgcolorLch.l > 50 + ? Math.max(bgcolorLch.l - 50, 0) + : Math.min(bgcolorLch.l + 50, 100), + c: 30, + h: bgcolorLch.h, + }).toHslString(); + + return ( + + {children || + emoji || + fallback + .split(" ") + .slice(0, 2) + .map((s) => s.slice(0, 1)) + .join("")} + + ); +} + +const generateRandomColor = (seed: string, darkMode: boolean) => { + const rng = seedrandom(seed); + const color = colord({ l: darkMode ? 30 : 90, c: 15, h: rng() * 360 }); + return color.toHslString(); +}; diff --git a/src/components/Settings/UserManagement/UserItem.tsx b/src/components/Settings/UserManagement/UserItem.tsx index 5415088c..53e0b26b 100644 --- a/src/components/Settings/UserManagement/UserItem.tsx +++ b/src/components/Settings/UserManagement/UserItem.tsx @@ -15,6 +15,7 @@ import { Copy as CopyIcon } from "@src/assets/icons"; import DeleteIcon from "@mui/icons-material/DeleteOutlined"; import MultiSelect from "@rowy/multiselect"; +import EmojiAvatar from "@src/components/EmojiAvatar"; import { projectScope, @@ -72,9 +73,10 @@ export default function UserItem({ const listItemChildren = ( <> - - {user?.displayName ? user.displayName[0] : undefined} - + { + if (hash) { + const id = hash.replace("#", ""); + const element = document.getElementById(id); + + if (element) { + element.scrollIntoView(); + + /** + * From rafgraph/react-router-hash-link + * https://github.com/rafgraph/react-router-hash-link/blob/2084a987b2f34479005ffbcb16ab7b9dc1fd6c93/src/HashLink.jsx + * + * Copyright (c) 2017 Rafael Pedicini, MIT License + */ + + let originalTabIndex = element.getAttribute("tabindex"); + if (originalTabIndex === null && !isInteractiveElement(element)) { + element.setAttribute("tabindex", "-1"); + } + element.focus({ preventScroll: true }); + if (originalTabIndex === null && !isInteractiveElement(element)) { + element.removeAttribute("tabindex"); + } + } + } + }, [pathname, hash]); +} + +export default useScrollToHash; + +/** + * From rafgraph/react-router-hash-link + * https://github.com/rafgraph/react-router-hash-link/blob/2084a987b2f34479005ffbcb16ab7b9dc1fd6c93/src/HashLink.jsx + * + * Copyright (c) 2017 Rafael Pedicini, MIT License + */ +function isInteractiveElement(element: HTMLElement) { + const formTags = ["BUTTON", "INPUT", "SELECT", "TEXTAREA"]; + const linkTags = ["A", "AREA"]; + return ( + (formTags.includes(element.tagName) && !element.hasAttribute("disabled")) || + (linkTags.includes(element.tagName) && element.hasAttribute("href")) + ); +} diff --git a/src/layouts/Navigation/NavDrawer/CommunityMenu.tsx b/src/layouts/Navigation/NavDrawer/CommunityMenu.tsx index ec68e76a..5d027992 100644 --- a/src/layouts/Navigation/NavDrawer/CommunityMenu.tsx +++ b/src/layouts/Navigation/NavDrawer/CommunityMenu.tsx @@ -38,7 +38,7 @@ export default function HelpMenu({ anchorOrigin={{ vertical: "bottom", horizontal: "right" }} transformOrigin={{ vertical: "bottom", horizontal: "left" }} sx={{ "& .MuiPaper-root": { mt: 1.5, py: 1 } }} - PaperProps={{ elevation: 10 }} + PaperProps={{ elevation: 12 }} > (false); + const [hover, _setHover] = useState(false); const collapsed = !open && isPermanent; + const setHover = collapsed ? _setHover : () => {}; const tempExpanded = hover && collapsed; + const width = collapsed && !tempExpanded ? NAV_DRAWER_COLLAPSED_WIDTH : NAV_DRAWER_WIDTH; const closeDrawer = isPermanent diff --git a/src/layouts/Navigation/NavDrawer/NavItem.tsx b/src/layouts/Navigation/NavDrawer/NavItem.tsx index 23f53138..5174f11c 100644 --- a/src/layouts/Navigation/NavDrawer/NavItem.tsx +++ b/src/layouts/Navigation/NavDrawer/NavItem.tsx @@ -1,19 +1,33 @@ import { Link, useLocation } from "react-router-dom"; +import { HashLink } from "react-router-hash-link"; + import { MenuItem, MenuItemProps } from "@mui/material"; import { spreadSx } from "@src/utils/ui"; const linkProps = { target: "_blank", rel: "noopener noreferrer" }; -export default function NavItem( - props: MenuItemProps -) { +type NavItemComponent = typeof HashLink | typeof Link | "a" | "button"; + +export default function NavItem(props: MenuItemProps) { const { pathname } = useLocation(); + let component: NavItemComponent = "button"; + if ("to" in props) { + component = Link; + if ( + typeof props.to === "string" ? props.to.includes("#") : !!props.to.hash + ) { + component = HashLink; + } + } else if ("href" in props) { + component = "a"; + } + return ( ; @@ -35,6 +36,7 @@ export default function DebugSettingsPage() { const [users] = useAtom(allUsersAtom, projectScope); const [updateUser] = useAtom(updateUserAtom, projectScope); const { enqueueSnackbar, closeSnackbar } = useSnackbar(); + useScrollToHash(); return ( diff --git a/src/pages/Settings/ProjectSettingsPage.tsx b/src/pages/Settings/ProjectSettingsPage.tsx index a8454954..96f0e93c 100644 --- a/src/pages/Settings/ProjectSettingsPage.tsx +++ b/src/pages/Settings/ProjectSettingsPage.tsx @@ -18,6 +18,7 @@ import { publicSettingsAtom, updatePublicSettingsAtom, } from "@src/atoms/projectScope"; +import { useScrollToHash } from "@src/hooks/useScrollToHash"; export interface IProjectSettingsChildProps { settings: Record; @@ -31,6 +32,7 @@ export default function ProjectSettingsPage() { const [publicSettings] = useAtom(publicSettingsAtom, projectScope); const { enqueueSnackbar } = useSnackbar(); + useScrollToHash(); const [_updateProjectSettingsDoc] = useAtom( updateProjectSettingsAtom, diff --git a/src/pages/Settings/UserSettingsPage.tsx b/src/pages/Settings/UserSettingsPage.tsx index 53536a2b..be4d43ec 100644 --- a/src/pages/Settings/UserSettingsPage.tsx +++ b/src/pages/Settings/UserSettingsPage.tsx @@ -17,6 +17,7 @@ import { userSettingsAtom, updateUserSettingsAtom, } from "@src/atoms/projectScope"; +import { useScrollToHash } from "@src/hooks/useScrollToHash"; export interface IUserSettingsChildProps { settings: Record; @@ -27,6 +28,7 @@ export default function UserSettingsPage() { const [currentUser] = useAtom(currentUserAtom, projectScope); const [userSettings] = useAtom(userSettingsAtom, projectScope); const { enqueueSnackbar } = useSnackbar(); + useScrollToHash(); const [_updateUserSettings] = useAtom(updateUserSettingsAtom, projectScope); const updateSettings = useDebouncedCallback((data) => { diff --git a/src/pages/TablesPage.tsx b/src/pages/TablesPage.tsx index ea133c07..4c914754 100644 --- a/src/pages/TablesPage.tsx +++ b/src/pages/TablesPage.tsx @@ -40,6 +40,7 @@ import { TableSettings } from "@src/types/table"; import { ROUTES } from "@src/constants/routes"; import useBasicSearch from "@src/hooks/useBasicSearch"; import { TOP_BAR_HEIGHT } from "@src/layouts/Navigation/TopBar"; +import { useScrollToHash } from "@src/hooks/useScrollToHash"; const SEARCH_KEYS = ["id", "name", "section", "description"]; @@ -54,6 +55,8 @@ export default function HomePage() { projectScope ); + useScrollToHash(); + const [results, query, handleQuery] = useBasicSearch( tables ?? [], SEARCH_KEYS diff --git a/yarn.lock b/yarn.lock index da7f9913..b6edf05b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2096,6 +2096,17 @@ "@emotion/weak-memoize" "^0.2.5" stylis "4.0.13" +"@emotion/cache@^11.9.3": + version "11.9.3" + resolved "https://registry.yarnpkg.com/@emotion/cache/-/cache-11.9.3.tgz#96638449f6929fd18062cfe04d79b29b44c0d6cb" + integrity sha512-0dgkI/JKlCXa+lEXviaMtGBL0ynpx4osh7rjOXE71q9bIF8G+XhJgvi+wDu0B0IdCVx37BffiwXlN9I3UuzFvg== + dependencies: + "@emotion/memoize" "^0.7.4" + "@emotion/sheet" "^1.1.1" + "@emotion/utils" "^1.0.0" + "@emotion/weak-memoize" "^0.2.5" + stylis "4.0.13" + "@emotion/hash@^0.8.0": version "0.8.0" resolved "https://registry.yarnpkg.com/@emotion/hash/-/hash-0.8.0.tgz#bbbff68978fefdbe68ccb533bc8cbe1d1afb5413" @@ -2108,6 +2119,13 @@ dependencies: "@emotion/memoize" "^0.7.4" +"@emotion/is-prop-valid@^1.1.3": + version "1.1.3" + resolved "https://registry.yarnpkg.com/@emotion/is-prop-valid/-/is-prop-valid-1.1.3.tgz#f0907a416368cf8df9e410117068e20fe87c0a3a" + integrity sha512-RFg04p6C+1uO19uG8N+vqanzKqiM9eeV1LDOG3bmkYmuOj7NbKNlFC/4EZq5gnwAIlcC/jOT24f8Td0iax2SXA== + dependencies: + "@emotion/memoize" "^0.7.4" + "@emotion/memoize@^0.7.4", "@emotion/memoize@^0.7.5": version "0.7.5" resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.7.5.tgz#2c40f81449a4e554e9fc6396910ed4843ec2be50" @@ -2153,6 +2171,11 @@ resolved "https://registry.yarnpkg.com/@emotion/sheet/-/sheet-1.1.0.tgz#56d99c41f0a1cda2726a05aa6a20afd4c63e58d2" integrity sha512-u0AX4aSo25sMAygCuQTzS+HsImZFuS8llY8O7b9MDRzbJM0kVJlAz6KNDqcG7pOuQZJmj/8X/rAW+66kMnMW+g== +"@emotion/sheet@^1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@emotion/sheet/-/sheet-1.1.1.tgz#015756e2a9a3c7c5f11d8ec22966a8dbfbfac787" + integrity sha512-J3YPccVRMiTZxYAY0IOq3kd+hUP8idY8Kz6B/Cyo+JuXq52Ek+zbPbSQUrVQp95aJ+lsAW7DPL1P2Z+U1jGkKA== + "@emotion/styled@^11.8.1": version "11.8.1" resolved "https://registry.yarnpkg.com/@emotion/styled/-/styled-11.8.1.tgz#856f6f63aceef0eb783985fa2322e2bf66d04e17" @@ -2902,6 +2925,20 @@ prop-types "^15.7.2" react-is "^17.0.2" +"@mui/base@5.0.0-alpha.90": + version "5.0.0-alpha.90" + resolved "https://registry.yarnpkg.com/@mui/base/-/base-5.0.0-alpha.90.tgz#73700ba74e5c75096ee5d0bfe3ba4a3b3b81beef" + integrity sha512-hNKwzr+RkiuGsGrakz8Q2i5ezr4Dz4b4Qsdipt9SiMrhuFAra/i501VSaEIzwec9LC4G+vtW4fE7yJBB0XaAYw== + dependencies: + "@babel/runtime" "^7.17.2" + "@emotion/is-prop-valid" "^1.1.3" + "@mui/types" "^7.1.4" + "@mui/utils" "^5.9.1" + "@popperjs/core" "^2.11.5" + clsx "^1.2.1" + prop-types "^15.8.1" + react-is "^18.2.0" + "@mui/icons-material@5.6.0": version "5.6.0" resolved "https://registry.yarnpkg.com/@mui/icons-material/-/icons-material-5.6.0.tgz#bce757f7c7a8eb31b238311a15fa0a0bcdf9ec39" @@ -2943,6 +2980,23 @@ react-is "^17.0.2" react-transition-group "^4.4.2" +"@mui/material@^5.0.0": + version "5.9.1" + resolved "https://registry.yarnpkg.com/@mui/material/-/material-5.9.1.tgz#92990e6d4035792430dcf548b91db6f335aebdd3" + integrity sha512-c09SbaMm7Rl7Df9JRkXwPWNbnfrutmHERTJC46OJ9OMAM9+HGQihIbGln1k2Xj65jb3E+G498FZFAoSrrBDvwQ== + dependencies: + "@babel/runtime" "^7.17.2" + "@mui/base" "5.0.0-alpha.90" + "@mui/system" "^5.9.1" + "@mui/types" "^7.1.4" + "@mui/utils" "^5.9.1" + "@types/react-transition-group" "^4.4.5" + clsx "^1.2.1" + csstype "^3.1.0" + prop-types "^15.8.1" + react-is "^18.2.0" + react-transition-group "^4.4.2" + "@mui/private-theming@^5.6.0": version "5.6.0" resolved "https://registry.yarnpkg.com/@mui/private-theming/-/private-theming-5.6.0.tgz#b907e055a0a19caf554d5b43209a143edaa9b398" @@ -2952,6 +3006,15 @@ "@mui/utils" "^5.6.0" prop-types "^15.7.2" +"@mui/private-theming@^5.9.1": + version "5.9.1" + resolved "https://registry.yarnpkg.com/@mui/private-theming/-/private-theming-5.9.1.tgz#4f714ed9ebd587373dc77b3fc69e9f3e720f0190" + integrity sha512-eIh2IZJInNTdgPLMo9cruzm8UDX5amBBxxsSoNre7lRj3wcsu3TG5OKjIbzkf4VxHHEhdPeNNQyt92k7L78u2A== + dependencies: + "@babel/runtime" "^7.17.2" + "@mui/utils" "^5.9.1" + prop-types "^15.8.1" + "@mui/styled-engine@^5.6.0": version "5.6.0" resolved "https://registry.yarnpkg.com/@mui/styled-engine/-/styled-engine-5.6.0.tgz#c7c34d2e319158559cef49b796457a4e6a4c58f7" @@ -2961,6 +3024,16 @@ "@emotion/cache" "^11.7.1" prop-types "^15.7.2" +"@mui/styled-engine@^5.8.7": + version "5.8.7" + resolved "https://registry.yarnpkg.com/@mui/styled-engine/-/styled-engine-5.8.7.tgz#63d0779c07677fe76d4705a02c7ae99f89b50780" + integrity sha512-tVqtowjbYmiRq+qcqXK731L9eWoL9H8xTRhuTgaDGKdch1zlt4I2UwInUe1w2N9N/u3/jHsFbLcl1Un3uOwpQg== + dependencies: + "@babel/runtime" "^7.17.2" + "@emotion/cache" "^11.9.3" + csstype "^3.1.0" + prop-types "^15.8.1" + "@mui/styles@5.6.0": version "5.6.0" resolved "https://registry.yarnpkg.com/@mui/styles/-/styles-5.6.0.tgz#c57b80974ca31c980acdd58d13b21d46fbcd81cf" @@ -2998,11 +3071,30 @@ csstype "^3.0.11" prop-types "^15.7.2" +"@mui/system@^5.9.1": + version "5.9.1" + resolved "https://registry.yarnpkg.com/@mui/system/-/system-5.9.1.tgz#dadd1094b1582781cc524b112a0a126f60b23c25" + integrity sha512-ZixTmc2+sYp++avoYJ38eM70nfwwudN06vYCU4kfwa4nQPiH+bhLYZnfYkcXRKiDR/hfT0dptbOOfQGZqBYczQ== + dependencies: + "@babel/runtime" "^7.17.2" + "@mui/private-theming" "^5.9.1" + "@mui/styled-engine" "^5.8.7" + "@mui/types" "^7.1.4" + "@mui/utils" "^5.9.1" + clsx "^1.2.1" + csstype "^3.1.0" + prop-types "^15.8.1" + "@mui/types@^7.1.3": version "7.1.3" resolved "https://registry.yarnpkg.com/@mui/types/-/types-7.1.3.tgz#d7636f3046110bcccc63e6acfd100e2ad9ca712a" integrity sha512-DDF0UhMBo4Uezlk+6QxrlDbchF79XG6Zs0zIewlR4c0Dt6GKVFfUtzPtHCH1tTbcSlq/L2bGEdiaoHBJ9Y1gSA== +"@mui/types@^7.1.4": + version "7.1.4" + resolved "https://registry.yarnpkg.com/@mui/types/-/types-7.1.4.tgz#4185c05d6df63ec673cda15feab80440abadc764" + integrity sha512-uveM3byMbthO+6tXZ1n2zm0W3uJCQYtwt/v5zV5I77v2v18u0ITkb8xwhsDD2i3V2Kye7SaNR6FFJ6lMuY/WqQ== + "@mui/utils@^5.2.3", "@mui/utils@^5.6.0": version "5.6.0" resolved "https://registry.yarnpkg.com/@mui/utils/-/utils-5.6.0.tgz#0ec741f5ac7c89ac76054832bed2d6e17ab1c011" @@ -3025,6 +3117,17 @@ prop-types "^15.8.1" react-is "^17.0.2" +"@mui/utils@^5.9.1": + version "5.9.1" + resolved "https://registry.yarnpkg.com/@mui/utils/-/utils-5.9.1.tgz#2b2c9dadbf8ba6561e145b5688fb7df5ef15a934" + integrity sha512-8+4adOR3xusyJwvbnZxcjqcmbWvl7Og+260ZKIrSvwnFs0aLubL+8MhiceeDDGcmb0bTKxfUgRJ96j32Jb7P+A== + dependencies: + "@babel/runtime" "^7.17.2" + "@types/prop-types" "^15.7.5" + "@types/react-is" "^16.7.1 || ^17.0.0" + prop-types "^15.8.1" + react-is "^18.2.0" + "@mui/x-date-pickers@5.0.0-alpha.0": version "5.0.0-alpha.0" resolved "https://registry.yarnpkg.com/@mui/x-date-pickers/-/x-date-pickers-5.0.0-alpha.0.tgz#a62ffbab453d3c2dcd4ec20bd4f3f6338ad2ed3f" @@ -3092,7 +3195,7 @@ schema-utils "^3.0.0" source-map "^0.7.3" -"@popperjs/core@^2.11.4": +"@popperjs/core@^2.11.4", "@popperjs/core@^2.11.5": version "2.11.5" resolved "https://registry.yarnpkg.com/@popperjs/core/-/core-2.11.5.tgz#db5a11bf66bdab39569719555b0f76e138d7bd64" integrity sha512-9X2obfABZuDVLCgPK9aX0a/x4jaOEweTTWE2+9sr0Qqqevj2Uv5XorvusThmc9XGYpS9yI+fhh8RTafBtGposw== @@ -3983,6 +4086,13 @@ dependencies: "@types/react" "*" +"@types/react-transition-group@^4.4.5": + version "4.4.5" + resolved "https://registry.yarnpkg.com/@types/react-transition-group/-/react-transition-group-4.4.5.tgz#aae20dcf773c5aa275d5b9f7cdbca638abc5e416" + integrity sha512-juKD/eiSM3/xZYzjuzH6ZwpP+/lejltmiS3QEzV/vmb/Q8+HfDmxu+Baga8UEMGBqV88Nbg4l2hY/K2DkyaLLA== + dependencies: + "@types/react" "*" + "@types/react@*", "@types/react@^18", "@types/react@^18.0.5": version "18.0.5" resolved "https://registry.yarnpkg.com/@types/react/-/react-18.0.5.tgz#1a4d4b705ae6af5aed369dec22800b20f89f5301" @@ -4009,6 +4119,11 @@ resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.2.tgz#1a62f89525723dde24ba1b01b092bf5df8ad4d39" integrity sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew== +"@types/seedrandom@^3.0.2": + version "3.0.2" + resolved "https://registry.yarnpkg.com/@types/seedrandom/-/seedrandom-3.0.2.tgz#7f30db28221067a90b02e73ffd46b6685b18df1a" + integrity sha512-YPLqEOo0/X8JU3rdiq+RgUKtQhQtrppE766y7vMTu8dGML7TVtZNiiiaC/hhU9Zqw9UYopXxhuWWENclMVBwKQ== + "@types/serve-index@^1.9.1": version "1.9.1" resolved "https://registry.yarnpkg.com/@types/serve-index/-/serve-index-1.9.1.tgz#1b5e85370a192c01ec6cec4735cf2917337a6278" @@ -5242,6 +5357,11 @@ cjs-module-lexer@^1.0.0: resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz#9f84ba3244a512f3a54e5277e8eef4c489864e40" integrity sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA== +classnames@^2.2.6: + version "2.3.1" + resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.3.1.tgz#dfcfa3891e306ec1dad105d0e88f4417b8535e8e" + integrity sha512-OlQdbZ7gLfGarSqxesMesDa5uz7KFbID8Kpq/SxIoNGDqY8lSYs0D+hhtBXhcdB3rcbXArFr7vlHheLk1voeNA== + clean-css@^5.2.2: version "5.3.0" resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-5.3.0.tgz#ad3d8238d5f3549e83d5f87205189494bc7cbb59" @@ -5291,6 +5411,11 @@ clsx@^1.1.0, clsx@^1.1.1: 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" @@ -5833,6 +5958,11 @@ csstype@^3.0.11, csstype@^3.0.2: resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.0.11.tgz#d66700c5eacfac1940deb4e3ee5642792d85cd33" integrity sha512-sa6P2wJ+CAbgyy4KFssIb/JNMLxFvKF1pCYCSXS8ZMuqZnMsrxqI2E5sPyoTpxoPU/gVZMzr2zjOfg8GIZOMsw== +csstype@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.0.tgz#4ddcac3718d787cf9df0d1b7d15033925c8f29f2" + integrity sha512-uX1KG+x9h5hIJsaKR9xHUeUraxf8IODOwq9JLNPq6BwB04a/xgpq3rcx47l5BZu5zBPlgD342tdke3Hom/nJRA== + csv-parse@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/csv-parse/-/csv-parse-5.1.0.tgz#e587e969bf0385ecf4f36f584ed5ddebba0237ab" @@ -9168,6 +9298,16 @@ material-design-lite@^1.2.0: resolved "https://registry.yarnpkg.com/material-design-lite/-/material-design-lite-1.3.0.tgz#d004ce3fee99a1eeb74a78b8a325134a5f1171d3" integrity sha1-0ATOP+6Zoe63Sni4oyUTSl8RcdM= +material-ui-popup-state@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/material-ui-popup-state/-/material-ui-popup-state-4.0.1.tgz#356258aa5d6be40d22512c1e9bb4c58f303d0e3f" + integrity sha512-4Ywj2QFOaS4mirRRtX4xps1waJQPa+IIEnVj/nnA4+aglinEcPkALPq+akAlvzKAjkjkmIjiku8SbdmTl0hTCQ== + dependencies: + "@babel/runtime" "^7.12.5" + "@mui/material" "^5.0.0" + classnames "^2.2.6" + prop-types "^15.7.2" + mdast-util-definitions@^5.0.0: version "5.1.0" resolved "https://registry.yarnpkg.com/mdast-util-definitions/-/mdast-util-definitions-5.1.0.tgz#b6d10ef00a3c4cf191e8d9a5fa58d7f4a366f817" @@ -11338,6 +11478,11 @@ react-is@^18.0.0: resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.1.0.tgz#61aaed3096d30eacf2a2127118b5b41387d32a67" integrity sha512-Fl7FuabXsJnV5Q1qIOQwx/sagGF18kogb4gpfcG4gjLBWO0WDiiz1ko/ExayuxE7InyQkBLkxRFG5oxY6Uu3Kg== +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-json-view@^1.21.3: version "1.21.3" resolved "https://registry.yarnpkg.com/react-json-view/-/react-json-view-1.21.3.tgz#f184209ee8f1bf374fb0c41b0813cff54549c475" @@ -12052,6 +12197,11 @@ schema-utils@^4.0.0: ajv-formats "^2.1.1" ajv-keywords "^5.0.0" +seedrandom@^3.0.5: + version "3.0.5" + resolved "https://registry.yarnpkg.com/seedrandom/-/seedrandom-3.0.5.tgz#54edc85c95222525b0c7a6f6b3543d8e0b3aa0a7" + integrity sha512-8OwmbklUNzwezjGInmZ+2clQmExQPvomqjL7LFqOYqtmuxRgQYqOD3mHaU+MvZn5FLUeVxVfQjwLZW/n/JFuqg== + select-hose@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca"