From 67356481b11ff349fc9e5d811623338787d79fd0 Mon Sep 17 00:00:00 2001 From: Jeremy Kahn Date: Wed, 20 Dec 2023 15:01:32 -0600 Subject: [PATCH 1/3] chore(deps): Use MUI 5 (#470) * chore(deps): use mui v5 modules * chore(deps): run `npx @mui/codemod v5.0.0/preset-safe src/components/` * chore(deps): run `npx @mui/codemod v5.0.0/variant-prop src/components/` * fix(mui): forward necessary refs * fix(tests): update breaking tests * fix(mui): pass ref to NumberFormat * fix(mui): use valid DOM for dialog title * fix(mui): make tabs readable * fix(mui): use better button colors * chore(deps): drop material v4 * chore(sourcemaps): generate sourcemaps for production * fix(mui): use correct text field variant for accounting view * fix(mui): prevent end day button from underlapping UI * fix(mui): vertically center tooltip contents * feat(mui): improve field tooltips * fix(mui): use correct API for field range slider * fix(mui): use error color for destructive actions * fix(mui): improve tooltip styles for cows * fix(mui): improve chat room styles * refactor(mui): simplify DOM for tabs * feat(mui): make field tooltip follow cursor * refactor(variables): use constant for end day button z-index --- .env | 4 - .env.development.local | 4 + package-lock.json | 1285 +++++++++++++---- package.json | 11 +- .../AccountingView/AccountingView.js | 53 +- src/components/Achievement/Achievement.js | 10 +- .../AchievementsView/AchievementsView.js | 8 +- src/components/AppBar/AppBar.js | 8 +- src/components/Cellar/Cellar.js | 23 +- .../Cellar/CellarInventoryTabPanel.js | 6 +- src/components/Cellar/FermentationTabPanel.js | 6 +- src/components/Cellar/Keg.js | 12 +- src/components/ChatRoom/ChatRoom.js | 19 +- src/components/CowCard/Bloodline/Bloodline.js | 2 +- src/components/CowCard/CowCard.js | 20 +- src/components/CowCard/Subheader/Subheader.js | 33 +- src/components/CowPen/CowPen.js | 5 +- .../CowPenContextMenu/CowPenContextMenu.js | 37 +- src/components/DebugMenu/DebugMenu.js | 8 +- src/components/Farmhand/Farmhand.js | 256 ++-- src/components/Farmhand/Farmhand.sass | 11 - .../FermentationRecipe.js | 8 +- src/components/Field/Field.js | 37 +- src/components/Field/Field.sass | 2 +- src/components/Home/Home.js | 16 +- src/components/Inventory/Inventory.js | 2 +- src/components/Item/Item.js | 20 +- src/components/Item/Item.sass | 1 - src/components/Item/Item.test.js | 2 +- .../KeybindingsView/KeybindingsView.js | 12 +- src/components/LogView/LogView.js | 4 +- src/components/LogView/LogView.test.js | 2 +- .../Navigation/DayAndProgressContainer.js | 6 +- src/components/Navigation/Navigation.js | 242 ++-- src/components/Navigation/Navigation.test.js | 2 +- .../NotificationSystem/NotificationSystem.js | 2 +- .../OnlinePeersView/OnlinePeer/OnlinePeer.js | 6 +- .../OnlinePeersView/OnlinePeersView.js | 8 +- src/components/Plot/Plot.js | 6 +- .../PriceEventView/PriceEventView.js | 2 +- src/components/QuantityInput/QuantityInput.js | 38 +- .../QuantityInput/QuantityInput.sass | 2 +- src/components/QuickSelect/QuickSelect.js | 14 +- src/components/Recipe/Recipe.js | 12 +- .../SettingsView/RandomSeedInput.js | 2 +- src/components/SettingsView/SettingsView.js | 28 +- src/components/Shop/Shop.js | 37 +- src/components/StatsView/StatsView.js | 14 +- src/components/TierPurchase/TierPurchase.js | 82 +- src/components/TierPurchase/TierPurchase.sass | 5 - .../TierPurchase/TierPurchase.test.js | 7 +- src/components/Toolbelt/Toolbelt.js | 13 +- .../UpgradePurchase/UpgradePurchase.js | 8 +- src/components/Workshop/ForgeTabPanel.js | 6 +- src/components/Workshop/KitchenTabPanel.js | 6 +- src/components/Workshop/RecyclingTabPanel.js | 6 +- src/components/Workshop/Workshop.js | 29 +- src/constants.js | 4 + src/game-logic/field-purchase.test.js | 4 +- src/mui-theme.js | 32 +- src/styles/utils.sass | 3 +- 61 files changed, 1669 insertions(+), 884 deletions(-) delete mode 100644 src/components/TierPurchase/TierPurchase.sass diff --git a/.env b/.env index 353b7cd69..50d5da8f5 100644 --- a/.env +++ b/.env @@ -4,7 +4,3 @@ REACT_APP_NAME=$npm_package_name REACT_APP_VERSION=$npm_package_version REACT_APP_ENABLE_KEGS=true - -# Silence warnings from dev server -# https://stackoverflow.com/a/70834076 -GENERATE_SOURCEMAP=false diff --git a/.env.development.local b/.env.development.local index 09062c3e0..ac7457038 100644 --- a/.env.development.local +++ b/.env.development.local @@ -1,2 +1,6 @@ REACT_APP_API_ROOT=http://localhost:3001/ REACT_APP_ENABLE_KEGS=true + +# Silence warnings from dev server +# https://stackoverflow.com/a/70834076 +GENERATE_SOURCEMAP=false diff --git a/package-lock.json b/package-lock.json index d12e503b6..a911d4581 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,13 +9,16 @@ "version": "1.18.6", "license": "GPL-2.0-or-later", "dependencies": { + "@emotion/react": "^11.11.1", + "@emotion/styled": "^11.11.0", "@fortawesome/fontawesome-svg-core": "^1.2.27", "@fortawesome/free-regular-svg-icons": "^5.12.1", "@fortawesome/free-solid-svg-icons": "^5.12.1", "@fortawesome/react-fontawesome": "^0.1.9", - "@material-ui/core": "^4.11.3", - "@material-ui/icons": "^4.9.1", - "@material-ui/lab": "^4.0.0-alpha.53", + "@mui/icons-material": "^5.15.0", + "@mui/lab": "^5.0.0-alpha.156", + "@mui/material": "^5.15.0", + "@mui/styles": "^5.15.0", "animate.css": "^4.1.0", "assert": "npm:assert-browserify@^2.0.0", "axios": "^1.6.0", @@ -37,7 +40,7 @@ "lodash.debounce": "^4.0.8", "lodash.sortby": "^4.7.0", "lodash.throttle": "^4.1.1", - "notistack": "^1.0.5", + "notistack": "^2.0.8", "path": "npm:path-browserify@^1.0.1", "process": "^0.11.10", "prop-types": "^15.6.2", @@ -741,7 +744,6 @@ }, "node_modules/@babel/helper-module-imports": { "version": "7.18.6", - "dev": true, "license": "MIT", "dependencies": { "@babel/types": "^7.18.6" @@ -2456,10 +2458,11 @@ } }, "node_modules/@babel/runtime": { - "version": "7.20.7", - "license": "MIT", + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.6.tgz", + "integrity": "sha512-zHd0eUrf5GZoOWVCXp6koAKQTfZV07eit6bGPmJgnZdnSAvvZee6zniW2XMF7Cmc4ISOOnPy3QaSiIJGJkVEDQ==", "dependencies": { - "regenerator-runtime": "^0.13.11" + "regenerator-runtime": "^0.14.0" }, "engines": { "node": ">=6.9.0" @@ -2477,6 +2480,11 @@ "node": ">=6.9.0" } }, + "node_modules/@babel/runtime/node_modules/regenerator-runtime": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz", + "integrity": "sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==" + }, "node_modules/@babel/template": { "version": "7.22.15", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", @@ -3037,9 +3045,156 @@ "node": ">= 10.0.0" } }, - "node_modules/@emotion/hash": { - "version": "0.8.0", - "license": "MIT" + "node_modules/@emotion/babel-plugin": { + "version": "11.11.0", + "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.11.0.tgz", + "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" + } + }, + "node_modules/@emotion/babel-plugin/node_modules/@emotion/hash": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.1.tgz", + "integrity": "sha512-gJB6HLm5rYwSLI6PQa+X1t5CFGrv1J1TWG+sOyMCeKz2ojaj6Fnl/rZEspogG+cvqbt4AE/2eIyD2QfLKTBNlQ==" + }, + "node_modules/@emotion/babel-plugin/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@emotion/cache": { + "version": "11.11.0", + "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.11.0.tgz", + "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" + } + }, + "node_modules/@emotion/is-prop-valid": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.2.1.tgz", + "integrity": "sha512-61Mf7Ufx4aDxx1xlDeOm8aFFigGHE4z+0sKCa+IHCeZKiyP9RLD0Mmx7m8b9/Cf37f7NAvQOOJAbQQGVr5uERw==", + "dependencies": { + "@emotion/memoize": "^0.8.1" + } + }, + "node_modules/@emotion/memoize": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.8.1.tgz", + "integrity": "sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA==" + }, + "node_modules/@emotion/react": { + "version": "11.11.1", + "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.11.1.tgz", + "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" + }, + "peerDependencies": { + "react": ">=16.8.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@emotion/serialize": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.1.2.tgz", + "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" + } + }, + "node_modules/@emotion/serialize/node_modules/@emotion/hash": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.1.tgz", + "integrity": "sha512-gJB6HLm5rYwSLI6PQa+X1t5CFGrv1J1TWG+sOyMCeKz2ojaj6Fnl/rZEspogG+cvqbt4AE/2eIyD2QfLKTBNlQ==" + }, + "node_modules/@emotion/serialize/node_modules/csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" + }, + "node_modules/@emotion/sheet": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.2.2.tgz", + "integrity": "sha512-0QBtGvaqtWi+nx6doRwDdBIzhNdZrXUppvTM4dtZZWEGTXL/XE/yJxLMGlDT1Gt+UHH5IX1n+jkXyytE/av7OA==" + }, + "node_modules/@emotion/styled": { + "version": "11.11.0", + "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-11.11.0.tgz", + "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" + }, + "peerDependencies": { + "@emotion/react": "^11.0.0-rc.0", + "react": ">=16.8.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@emotion/unitless": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.8.1.tgz", + "integrity": "sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ==" + }, + "node_modules/@emotion/use-insertion-effect-with-fallbacks": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.0.1.tgz", + "integrity": "sha512-jT/qyKZ9rzLErtrjGgdkMBn2OP8wl0G3sQlBb3YPryvKHsjvINUhVaPFfP+fpBcOkmrVOVEEHQFJ7nbj2TH2gw==", + "peerDependencies": { + "react": ">=16.8.0" + } + }, + "node_modules/@emotion/utils": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.2.1.tgz", + "integrity": "sha512-Y2tGf3I+XVnajdItskUCn6LX+VUDmP6lTL4fcqsXAv43dnlbZiuW4MWQW38rW/BVWSE7Q/7+XQocmpnRYILUmg==" + }, + "node_modules/@emotion/weak-memoize": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.3.1.tgz", + "integrity": "sha512-EsBwpc7hBUJWAsNPBmJy4hxWx12v6bshQsldrVmjxJoc3isbxhOrF2IcCpaXxfvq03NwkI7sbsOLXbYuqF/8Ww==" }, "node_modules/@esbuild/linux-x64": { "version": "0.16.17", @@ -3655,6 +3810,40 @@ "resolved": "https://registry.npmjs.org/@firebase/webchannel-wrapper/-/webchannel-wrapper-0.10.5.tgz", "integrity": "sha512-eSkJsnhBWv5kCTSU1tSUVl9mpFu+5NXXunZc83le8GMjMlsWwQArSc7cJJ4yl+aDFY0NGLi0AjZWMn1axOrkRg==" }, + "node_modules/@floating-ui/core": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.5.2.tgz", + "integrity": "sha512-Ii3MrfY/GAIN3OhXNzpCKaLxHQfJF9qvwq/kEJYdqDxeIHa01K8sldugal6TmeeXl+WMvhv9cnVzUTaFFJF09A==", + "dependencies": { + "@floating-ui/utils": "^0.1.3" + } + }, + "node_modules/@floating-ui/dom": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.5.3.tgz", + "integrity": "sha512-ClAbQnEqJAKCJOEbbLo5IUlZHkNszqhuxS4fHAVxRPXPya6Ysf2G8KypnYcOTpx6I8xcgF9bbHb6g/2KpbV8qA==", + "dependencies": { + "@floating-ui/core": "^1.4.2", + "@floating-ui/utils": "^0.1.3" + } + }, + "node_modules/@floating-ui/react-dom": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.0.4.tgz", + "integrity": "sha512-CF8k2rgKeh/49UrnIBs4BdxPUV6vize/Db1d/YbCLyp9GiVZ0BEwf5AiDSxJRCr6yOkGqTFHtmrULxkEfYZ7dQ==", + "dependencies": { + "@floating-ui/dom": "^1.5.1" + }, + "peerDependencies": { + "react": ">=16.8.0", + "react-dom": ">=16.8.0" + } + }, + "node_modules/@floating-ui/utils": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.1.6.tgz", + "integrity": "sha512-OfX7E2oUDYxtBvsuS4e/jSn4Q9Qb6DzgeYtsAdkPZ47znpoNsMgZw0+tVijiv3uGNR6dgNlty6r9rzIzHjtd/A==" + }, "node_modules/@fortawesome/fontawesome-common-types": { "version": "0.2.36", "hasInstallScript": true, @@ -5766,34 +5955,30 @@ "node": ">= 6" } }, - "node_modules/@material-ui/core": { - "version": "4.12.4", - "license": "MIT", + "node_modules/@mui/base": { + "version": "5.0.0-beta.27", + "resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-beta.27.tgz", + "integrity": "sha512-duL37qxihT1N0pW/gyXVezP7SttLkF+cLAs/y6g6ubEFmVadjbnZ45SeF12/vAiKzqwf5M0uFH1cczIPXFZygA==", "dependencies": { - "@babel/runtime": "^7.4.4", - "@material-ui/styles": "^4.11.5", - "@material-ui/system": "^4.12.2", - "@material-ui/types": "5.1.0", - "@material-ui/utils": "^4.11.3", - "@types/react-transition-group": "^4.2.0", - "clsx": "^1.0.4", - "hoist-non-react-statics": "^3.3.2", - "popper.js": "1.16.1-lts", - "prop-types": "^15.7.2", - "react-is": "^16.8.0 || ^17.0.0", - "react-transition-group": "^4.4.0" + "@babel/runtime": "^7.23.5", + "@floating-ui/react-dom": "^2.0.4", + "@mui/types": "^7.2.11", + "@mui/utils": "^5.15.0", + "@popperjs/core": "^2.11.8", + "clsx": "^2.0.0", + "prop-types": "^15.8.1" }, "engines": { - "node": ">=8.0.0" + "node": ">=12.0.0" }, "funding": { "type": "opencollective", - "url": "https://opencollective.com/material-ui" + "url": "https://opencollective.com/mui-org" }, "peerDependencies": { - "@types/react": "^16.8.6 || ^17.0.0", - "react": "^16.8.0 || ^17.0.0", - "react-dom": "^16.8.0 || ^17.0.0" + "@types/react": "^17.0.0 || ^18.0.0", + "react": "^17.0.0 || ^18.0.0", + "react-dom": "^17.0.0 || ^18.0.0" }, "peerDependenciesMeta": { "@types/react": { @@ -5801,20 +5986,41 @@ } } }, - "node_modules/@material-ui/icons": { - "version": "4.11.3", - "license": "MIT", + "node_modules/@mui/base/node_modules/clsx": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.0.0.tgz", + "integrity": "sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==", + "engines": { + "node": ">=6" + } + }, + "node_modules/@mui/core-downloads-tracker": { + "version": "5.15.0", + "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-5.15.0.tgz", + "integrity": "sha512-NpGtlHwuyLfJtdrlERXb8qRqd279O0VnuGaZAor1ehdNhUJOD1bSxHDeXKZkbqNpvi50hasFj7lsbTpluworTQ==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + } + }, + "node_modules/@mui/icons-material": { + "version": "5.15.0", + "resolved": "https://registry.npmjs.org/@mui/icons-material/-/icons-material-5.15.0.tgz", + "integrity": "sha512-zHY6fOkaK7VfhWeyxO8MjO3IAjEYpYMXuqUhX7TkUZJ9+TSH/9dn4ClG4K2j6hdgBU5Yrq2Z/89Bo6BHHp7AdQ==", "dependencies": { - "@babel/runtime": "^7.4.4" + "@babel/runtime": "^7.23.5" }, "engines": { - "node": ">=8.0.0" + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" }, "peerDependencies": { - "@material-ui/core": "^4.0.0", - "@types/react": "^16.8.6 || ^17.0.0", - "react": "^16.8.0 || ^17.0.0", - "react-dom": "^16.8.0 || ^17.0.0" + "@mui/material": "^5.0.0", + "@types/react": "^17.0.0 || ^18.0.0", + "react": "^17.0.0 || ^18.0.0" }, "peerDependenciesMeta": { "@types/react": { @@ -5822,63 +6028,135 @@ } } }, - "node_modules/@material-ui/lab": { - "version": "4.0.0-alpha.61", - "license": "MIT", + "node_modules/@mui/lab": { + "version": "5.0.0-alpha.156", + "resolved": "https://registry.npmjs.org/@mui/lab/-/lab-5.0.0-alpha.156.tgz", + "integrity": "sha512-OUAckFeqlAG6aIBG1Ud1fDCBqnU1wltWZYHsA7YCGzRBykNzQC/W/dYddp+RJLu0BgYpMiXwPXq2Hg0ERVtaog==", "dependencies": { - "@babel/runtime": "^7.4.4", - "@material-ui/utils": "^4.11.3", - "clsx": "^1.0.4", - "prop-types": "^15.7.2", - "react-is": "^16.8.0 || ^17.0.0" + "@babel/runtime": "^7.23.5", + "@mui/base": "5.0.0-beta.27", + "@mui/system": "^5.15.0", + "@mui/types": "^7.2.11", + "@mui/utils": "^5.15.0", + "clsx": "^2.0.0", + "prop-types": "^15.8.1" }, "engines": { - "node": ">=8.0.0" + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + }, + "peerDependencies": { + "@emotion/react": "^11.5.0", + "@emotion/styled": "^11.3.0", + "@mui/material": ">=5.10.11", + "@types/react": "^17.0.0 || ^18.0.0", + "react": "^17.0.0 || ^18.0.0", + "react-dom": "^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@emotion/react": { + "optional": true + }, + "@emotion/styled": { + "optional": true + }, + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/lab/node_modules/clsx": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.0.0.tgz", + "integrity": "sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==", + "engines": { + "node": ">=6" + } + }, + "node_modules/@mui/material": { + "version": "5.15.0", + "resolved": "https://registry.npmjs.org/@mui/material/-/material-5.15.0.tgz", + "integrity": "sha512-60CDI/hQNwJv9a3vEZtFG7zz0USdQhVwpBd3fZqrzhuXSdiMdYMaZcCXeX/KMuNq0ZxQEAZd74Pv+gOb408QVA==", + "dependencies": { + "@babel/runtime": "^7.23.5", + "@mui/base": "5.0.0-beta.27", + "@mui/core-downloads-tracker": "^5.15.0", + "@mui/system": "^5.15.0", + "@mui/types": "^7.2.11", + "@mui/utils": "^5.15.0", + "@types/react-transition-group": "^4.4.9", + "clsx": "^2.0.0", + "csstype": "^3.1.2", + "prop-types": "^15.8.1", + "react-is": "^18.2.0", + "react-transition-group": "^4.4.5" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" }, "peerDependencies": { - "@material-ui/core": "^4.12.1", - "@types/react": "^16.8.6 || ^17.0.0", - "react": "^16.8.0 || ^17.0.0", - "react-dom": "^16.8.0 || ^17.0.0" + "@emotion/react": "^11.5.0", + "@emotion/styled": "^11.3.0", + "@types/react": "^17.0.0 || ^18.0.0", + "react": "^17.0.0 || ^18.0.0", + "react-dom": "^17.0.0 || ^18.0.0" }, "peerDependenciesMeta": { + "@emotion/react": { + "optional": true + }, + "@emotion/styled": { + "optional": true + }, "@types/react": { "optional": true } } }, - "node_modules/@material-ui/styles": { - "version": "4.11.5", - "license": "MIT", + "node_modules/@mui/material/node_modules/clsx": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.0.0.tgz", + "integrity": "sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==", + "engines": { + "node": ">=6" + } + }, + "node_modules/@mui/material/node_modules/csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" + }, + "node_modules/@mui/material/node_modules/react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==" + }, + "node_modules/@mui/private-theming": { + "version": "5.15.0", + "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.15.0.tgz", + "integrity": "sha512-7WxtIhXxNek0JjtsYy+ut2LtFSLpsUW5JSDehQO+jF7itJ8ehy7Bd9bSt2yIllbwGjCFowLfYpPk2Ykgvqm1tA==", "dependencies": { - "@babel/runtime": "^7.4.4", - "@emotion/hash": "^0.8.0", - "@material-ui/types": "5.1.0", - "@material-ui/utils": "^4.11.3", - "clsx": "^1.0.4", - "csstype": "^2.5.2", - "hoist-non-react-statics": "^3.3.2", - "jss": "^10.5.1", - "jss-plugin-camel-case": "^10.5.1", - "jss-plugin-default-unit": "^10.5.1", - "jss-plugin-global": "^10.5.1", - "jss-plugin-nested": "^10.5.1", - "jss-plugin-props-sort": "^10.5.1", - "jss-plugin-rule-value-function": "^10.5.1", - "jss-plugin-vendor-prefixer": "^10.5.1", - "prop-types": "^15.7.2" + "@babel/runtime": "^7.23.5", + "@mui/utils": "^5.15.0", + "prop-types": "^15.8.1" }, "engines": { - "node": ">=8.0.0" + "node": ">=12.0.0" }, "funding": { "type": "opencollective", - "url": "https://opencollective.com/material-ui" + "url": "https://opencollective.com/mui-org" }, "peerDependencies": { - "@types/react": "^16.8.6 || ^17.0.0", - "react": "^16.8.0 || ^17.0.0", - "react-dom": "^16.8.0 || ^17.0.0" + "@types/react": "^17.0.0 || ^18.0.0", + "react": "^17.0.0 || ^18.0.0" }, "peerDependenciesMeta": { "@types/react": { @@ -5886,26 +6164,75 @@ } } }, - "node_modules/@material-ui/system": { - "version": "4.12.2", - "license": "MIT", + "node_modules/@mui/styled-engine": { + "version": "5.15.0", + "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.15.0.tgz", + "integrity": "sha512-6NysIsHkuUS2lF+Lzv1jiK3UjBJk854/vKVcJQVGKlPiqNEVZJNlwaSpsaU5xYXxWEZYfbVFSAomLOS/LV/ovQ==", "dependencies": { - "@babel/runtime": "^7.4.4", - "@material-ui/utils": "^4.11.3", - "csstype": "^2.5.2", - "prop-types": "^15.7.2" + "@babel/runtime": "^7.23.5", + "@emotion/cache": "^11.11.0", + "csstype": "^3.1.2", + "prop-types": "^15.8.1" }, "engines": { - "node": ">=8.0.0" + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + }, + "peerDependencies": { + "@emotion/react": "^11.4.1", + "@emotion/styled": "^11.3.0", + "react": "^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@emotion/react": { + "optional": true + }, + "@emotion/styled": { + "optional": true + } + } + }, + "node_modules/@mui/styled-engine/node_modules/csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" + }, + "node_modules/@mui/styles": { + "version": "5.15.0", + "resolved": "https://registry.npmjs.org/@mui/styles/-/styles-5.15.0.tgz", + "integrity": "sha512-YAtXHlANm7wPo2IbYcWhya2c4KI9lxJm3d6UiFhObVg9WdkXZlF+hAIspmXLXo+Z9I/3AH44se+dJfY+B+duVQ==", + "dependencies": { + "@babel/runtime": "^7.23.5", + "@emotion/hash": "^0.9.1", + "@mui/private-theming": "^5.15.0", + "@mui/types": "^7.2.11", + "@mui/utils": "^5.15.0", + "clsx": "^2.0.0", + "csstype": "^3.1.2", + "hoist-non-react-statics": "^3.3.2", + "jss": "^10.10.0", + "jss-plugin-camel-case": "^10.10.0", + "jss-plugin-default-unit": "^10.10.0", + "jss-plugin-global": "^10.10.0", + "jss-plugin-nested": "^10.10.0", + "jss-plugin-props-sort": "^10.10.0", + "jss-plugin-rule-value-function": "^10.10.0", + "jss-plugin-vendor-prefixer": "^10.10.0", + "prop-types": "^15.8.1" + }, + "engines": { + "node": ">=12.0.0" }, "funding": { "type": "opencollective", - "url": "https://opencollective.com/material-ui" + "url": "https://opencollective.com/mui-org" }, "peerDependencies": { - "@types/react": "^16.8.6 || ^17.0.0", - "react": "^16.8.0 || ^17.0.0", - "react-dom": "^16.8.0 || ^17.0.0" + "@types/react": "^17.0.0 || ^18.0.0", + "react": "^17.0.0" }, "peerDependenciesMeta": { "@types/react": { @@ -5913,34 +6240,121 @@ } } }, - "node_modules/@material-ui/types": { - "version": "5.1.0", - "license": "MIT", + "node_modules/@mui/styles/node_modules/@emotion/hash": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.1.tgz", + "integrity": "sha512-gJB6HLm5rYwSLI6PQa+X1t5CFGrv1J1TWG+sOyMCeKz2ojaj6Fnl/rZEspogG+cvqbt4AE/2eIyD2QfLKTBNlQ==" + }, + "node_modules/@mui/styles/node_modules/clsx": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.0.0.tgz", + "integrity": "sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==", + "engines": { + "node": ">=6" + } + }, + "node_modules/@mui/styles/node_modules/csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" + }, + "node_modules/@mui/system": { + "version": "5.15.0", + "resolved": "https://registry.npmjs.org/@mui/system/-/system-5.15.0.tgz", + "integrity": "sha512-8TPjfTlYBNB7/zBJRL4QOD9kImwdZObbiYNh0+hxvhXr2koezGx8USwPXj8y/JynbzGCkIybkUztCdWlMZe6OQ==", + "dependencies": { + "@babel/runtime": "^7.23.5", + "@mui/private-theming": "^5.15.0", + "@mui/styled-engine": "^5.15.0", + "@mui/types": "^7.2.11", + "@mui/utils": "^5.15.0", + "clsx": "^2.0.0", + "csstype": "^3.1.2", + "prop-types": "^15.8.1" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + }, "peerDependencies": { - "@types/react": "*" + "@emotion/react": "^11.5.0", + "@emotion/styled": "^11.3.0", + "@types/react": "^17.0.0 || ^18.0.0", + "react": "^17.0.0 || ^18.0.0" }, "peerDependenciesMeta": { + "@emotion/react": { + "optional": true + }, + "@emotion/styled": { + "optional": true + }, "@types/react": { "optional": true } } }, - "node_modules/@material-ui/utils": { - "version": "4.11.3", - "license": "MIT", + "node_modules/@mui/system/node_modules/clsx": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.0.0.tgz", + "integrity": "sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==", + "engines": { + "node": ">=6" + } + }, + "node_modules/@mui/system/node_modules/csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" + }, + "node_modules/@mui/types": { + "version": "7.2.11", + "resolved": "https://registry.npmjs.org/@mui/types/-/types-7.2.11.tgz", + "integrity": "sha512-KWe/QTEsFFlFSH+qRYf3zoFEj3z67s+qAuSnMMg+gFwbxG7P96Hm6g300inQL1Wy///gSRb8juX7Wafvp93m3w==", + "peerDependencies": { + "@types/react": "^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/utils": { + "version": "5.15.0", + "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-5.15.0.tgz", + "integrity": "sha512-XSmTKStpKYamewxyJ256+srwEnsT3/6eNo6G7+WC1tj2Iq9GfUJ/6yUoB7YXjOD2jTZ3XobToZm4pVz1LBt6GA==", "dependencies": { - "@babel/runtime": "^7.4.4", - "prop-types": "^15.7.2", - "react-is": "^16.8.0 || ^17.0.0" + "@babel/runtime": "^7.23.5", + "@types/prop-types": "^15.7.11", + "prop-types": "^15.8.1", + "react-is": "^18.2.0" }, "engines": { - "node": ">=8.0.0" + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0", - "react-dom": "^16.8.0 || ^17.0.0" + "@types/react": "^17.0.0 || ^18.0.0", + "react": "^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, + "node_modules/@mui/utils/node_modules/react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==" + }, "node_modules/@multiformats/mafmt": { "version": "12.1.6", "resolved": "https://registry.npmjs.org/@multiformats/mafmt/-/mafmt-12.1.6.tgz", @@ -6181,6 +6595,15 @@ "node": ">= 8" } }, + "node_modules/@popperjs/core": { + "version": "2.11.8", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", + "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/popperjs" + } + }, "node_modules/@protobufjs/aspromise": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", @@ -7093,7 +7516,6 @@ }, "node_modules/@types/parse-json": { "version": "4.0.0", - "dev": true, "license": "MIT" }, "node_modules/@types/prettier": { @@ -7102,8 +7524,9 @@ "license": "MIT" }, "node_modules/@types/prop-types": { - "version": "15.7.5", - "license": "MIT" + "version": "15.7.11", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.11.tgz", + "integrity": "sha512-ga8y9v9uyeiLdpKddhxYQkxNDrfvuPrlFb0N1qnZZByvcElJaXthF1UhvCh9TLWJBEHeNtdnbysW7Y6Uq8CVng==" }, "node_modules/@types/q": { "version": "1.5.5", @@ -7155,8 +7578,9 @@ "dev": true }, "node_modules/@types/react-transition-group": { - "version": "4.4.5", - "license": "MIT", + "version": "4.4.10", + "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.10.tgz", + "integrity": "sha512-hT/+s0VQs2ojCX823m60m5f0sL5idt9SO6Tj6Dg+rdphGPIeJbJ6CxvBYkgkGKrYeDjvIpKTR38UzmtHJOGW3Q==", "dependencies": { "@types/react": "*" } @@ -9266,7 +9690,6 @@ }, "node_modules/babel-plugin-macros": { "version": "3.1.0", - "dev": true, "license": "MIT", "dependencies": { "@babel/runtime": "^7.12.5", @@ -10302,7 +10725,6 @@ }, "node_modules/callsites": { "version": "3.1.0", - "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -11279,7 +11701,6 @@ }, "node_modules/cosmiconfig": { "version": "7.1.0", - "dev": true, "license": "MIT", "dependencies": { "@types/parse-json": "^4.0.0", @@ -11703,10 +12124,6 @@ "dev": true, "license": "MIT" }, - "node_modules/csstype": { - "version": "2.6.21", - "license": "MIT" - }, "node_modules/damerau-levenshtein": { "version": "1.0.8", "dev": true, @@ -13046,7 +13463,6 @@ }, "node_modules/error-ex": { "version": "1.3.2", - "dev": true, "license": "MIT", "dependencies": { "is-arrayish": "^0.2.1" @@ -13233,7 +13649,6 @@ }, "node_modules/escape-string-regexp": { "version": "4.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -14660,6 +15075,11 @@ "node": ">=8" } }, + "node_modules/find-root": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz", + "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==" + }, "node_modules/find-up": { "version": "5.0.0", "dev": true, @@ -16443,7 +16863,6 @@ }, "node_modules/import-fresh": { "version": "3.3.0", - "dev": true, "license": "MIT", "dependencies": { "parent-module": "^1.0.0", @@ -16713,7 +17132,6 @@ }, "node_modules/is-arrayish": { "version": "0.2.1", - "dev": true, "license": "MIT" }, "node_modules/is-bigint": { @@ -20494,7 +20912,6 @@ }, "node_modules/json-parse-even-better-errors": { "version": "2.3.1", - "dev": true, "license": "MIT" }, "node_modules/json-schema": { @@ -20597,8 +21014,9 @@ } }, "node_modules/jss": { - "version": "10.9.2", - "license": "MIT", + "version": "10.10.0", + "resolved": "https://registry.npmjs.org/jss/-/jss-10.10.0.tgz", + "integrity": "sha512-cqsOTS7jqPsPMjtKYDUpdFC0AbhYFLTcuGRqymgmdJIeQ8cH7+AgX7YSgQy79wXloZq2VvATYxUOUQEvS1V/Zw==", "dependencies": { "@babel/runtime": "^7.3.1", "csstype": "^3.0.2", @@ -20611,63 +21029,70 @@ } }, "node_modules/jss-plugin-camel-case": { - "version": "10.9.2", - "license": "MIT", + "version": "10.10.0", + "resolved": "https://registry.npmjs.org/jss-plugin-camel-case/-/jss-plugin-camel-case-10.10.0.tgz", + "integrity": "sha512-z+HETfj5IYgFxh1wJnUAU8jByI48ED+v0fuTuhKrPR+pRBYS2EDwbusU8aFOpCdYhtRc9zhN+PJ7iNE8pAWyPw==", "dependencies": { "@babel/runtime": "^7.3.1", "hyphenate-style-name": "^1.0.3", - "jss": "10.9.2" + "jss": "10.10.0" } }, "node_modules/jss-plugin-default-unit": { - "version": "10.9.2", - "license": "MIT", + "version": "10.10.0", + "resolved": "https://registry.npmjs.org/jss-plugin-default-unit/-/jss-plugin-default-unit-10.10.0.tgz", + "integrity": "sha512-SvpajxIECi4JDUbGLefvNckmI+c2VWmP43qnEy/0eiwzRUsafg5DVSIWSzZe4d2vFX1u9nRDP46WCFV/PXVBGQ==", "dependencies": { "@babel/runtime": "^7.3.1", - "jss": "10.9.2" + "jss": "10.10.0" } }, "node_modules/jss-plugin-global": { - "version": "10.9.2", - "license": "MIT", + "version": "10.10.0", + "resolved": "https://registry.npmjs.org/jss-plugin-global/-/jss-plugin-global-10.10.0.tgz", + "integrity": "sha512-icXEYbMufiNuWfuazLeN+BNJO16Ge88OcXU5ZDC2vLqElmMybA31Wi7lZ3lf+vgufRocvPj8443irhYRgWxP+A==", "dependencies": { "@babel/runtime": "^7.3.1", - "jss": "10.9.2" + "jss": "10.10.0" } }, "node_modules/jss-plugin-nested": { - "version": "10.9.2", - "license": "MIT", + "version": "10.10.0", + "resolved": "https://registry.npmjs.org/jss-plugin-nested/-/jss-plugin-nested-10.10.0.tgz", + "integrity": "sha512-9R4JHxxGgiZhurDo3q7LdIiDEgtA1bTGzAbhSPyIOWb7ZubrjQe8acwhEQ6OEKydzpl8XHMtTnEwHXCARLYqYA==", "dependencies": { "@babel/runtime": "^7.3.1", - "jss": "10.9.2", + "jss": "10.10.0", "tiny-warning": "^1.0.2" } }, "node_modules/jss-plugin-props-sort": { - "version": "10.9.2", - "license": "MIT", + "version": "10.10.0", + "resolved": "https://registry.npmjs.org/jss-plugin-props-sort/-/jss-plugin-props-sort-10.10.0.tgz", + "integrity": "sha512-5VNJvQJbnq/vRfje6uZLe/FyaOpzP/IH1LP+0fr88QamVrGJa0hpRRyAa0ea4U/3LcorJfBFVyC4yN2QC73lJg==", "dependencies": { "@babel/runtime": "^7.3.1", - "jss": "10.9.2" + "jss": "10.10.0" } }, "node_modules/jss-plugin-rule-value-function": { - "version": "10.9.2", - "license": "MIT", + "version": "10.10.0", + "resolved": "https://registry.npmjs.org/jss-plugin-rule-value-function/-/jss-plugin-rule-value-function-10.10.0.tgz", + "integrity": "sha512-uEFJFgaCtkXeIPgki8ICw3Y7VMkL9GEan6SqmT9tqpwM+/t+hxfMUdU4wQ0MtOiMNWhwnckBV0IebrKcZM9C0g==", "dependencies": { "@babel/runtime": "^7.3.1", - "jss": "10.9.2", + "jss": "10.10.0", "tiny-warning": "^1.0.2" } }, "node_modules/jss-plugin-vendor-prefixer": { - "version": "10.9.2", - "license": "MIT", + "version": "10.10.0", + "resolved": "https://registry.npmjs.org/jss-plugin-vendor-prefixer/-/jss-plugin-vendor-prefixer-10.10.0.tgz", + "integrity": "sha512-UY/41WumgjW8r1qMCO8l1ARg7NHnfRVWRhZ2E2m0DMYsr2DD91qIXLyNhiX83hHswR7Wm4D+oDYNC1zWCJWtqg==", "dependencies": { "@babel/runtime": "^7.3.1", "css-vendor": "^2.0.8", - "jss": "10.9.2" + "jss": "10.10.0" } }, "node_modules/jss/node_modules/csstype": { @@ -20996,7 +21421,6 @@ }, "node_modules/lines-and-columns": { "version": "1.2.4", - "dev": true, "license": "MIT" }, "node_modules/load-bmfont": { @@ -22449,8 +22873,9 @@ } }, "node_modules/notistack": { - "version": "1.0.10", - "license": "MIT", + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/notistack/-/notistack-2.0.8.tgz", + "integrity": "sha512-/IY14wkFp5qjPgKNvAdfL5Jp6q90+MjgKTPh4c81r/lW70KeuX6b9pE/4f8L4FG31cNudbN9siiFS5ql1aSLRw==", "dependencies": { "clsx": "^1.1.0", "hoist-non-react-statics": "^3.3.0" @@ -22460,9 +22885,19 @@ "url": "https://opencollective.com/notistack" }, "peerDependencies": { - "@material-ui/core": "^4.0.0", - "react": "^16.8.0 || ^17.0.0", - "react-dom": "^16.8.0 || ^17.0.0" + "@emotion/react": "^11.4.1", + "@emotion/styled": "^11.3.0", + "@mui/material": "^5.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@emotion/react": { + "optional": true + }, + "@emotion/styled": { + "optional": true + } } }, "node_modules/npm-run-all": { @@ -23376,7 +23811,6 @@ }, "node_modules/parent-module": { "version": "1.0.1", - "dev": true, "license": "MIT", "dependencies": { "callsites": "^3.0.0" @@ -23427,7 +23861,6 @@ }, "node_modules/parse-json": { "version": "5.2.0", - "dev": true, "license": "MIT", "dependencies": { "@babel/code-frame": "^7.0.0", @@ -23564,7 +23997,6 @@ }, "node_modules/path-type": { "version": "4.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -23986,10 +24418,6 @@ "node": ">=12.13.0" } }, - "node_modules/popper.js": { - "version": "1.16.1-lts", - "license": "MIT" - }, "node_modules/posix-character-classes": { "version": "0.1.1", "dev": true, @@ -25943,6 +26371,7 @@ }, "node_modules/react-is": { "version": "17.0.2", + "dev": true, "license": "MIT" }, "node_modules/react-markdown": { @@ -26915,6 +27344,7 @@ }, "node_modules/regenerator-runtime": { "version": "0.13.11", + "dev": true, "license": "MIT" }, "node_modules/regenerator-transform": { @@ -27307,7 +27737,6 @@ }, "node_modules/resolve-from": { "version": "4.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=4" @@ -29371,8 +29800,9 @@ } }, "node_modules/stylis": { - "version": "4.1.3", - "license": "MIT" + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.2.0.tgz", + "integrity": "sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==" }, "node_modules/sumchecker": { "version": "3.0.1", @@ -32285,7 +32715,6 @@ }, "node_modules/yaml": { "version": "1.10.2", - "dev": true, "license": "ISC", "engines": { "node": ">= 6" @@ -32802,7 +33231,6 @@ }, "@babel/helper-module-imports": { "version": "7.18.6", - "dev": true, "requires": { "@babel/types": "^7.18.6" } @@ -33842,9 +34270,18 @@ } }, "@babel/runtime": { - "version": "7.20.7", + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.6.tgz", + "integrity": "sha512-zHd0eUrf5GZoOWVCXp6koAKQTfZV07eit6bGPmJgnZdnSAvvZee6zniW2XMF7Cmc4ISOOnPy3QaSiIJGJkVEDQ==", "requires": { - "regenerator-runtime": "^0.13.11" + "regenerator-runtime": "^0.14.0" + }, + "dependencies": { + "regenerator-runtime": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz", + "integrity": "sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==" + } } }, "@babel/runtime-corejs3": { @@ -34209,8 +34646,137 @@ } } }, - "@emotion/hash": { - "version": "0.8.0" + "@emotion/babel-plugin": { + "version": "11.11.0", + "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.11.0.tgz", + "integrity": "sha512-m4HEDZleaaCH+XgDDsPF15Ht6wTLsgDTeR3WYj9Q/k76JtWhrJjcP4+/XlG8LGT/Rol9qUfOIztXeA84ATpqPQ==", + "requires": { + "@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" + }, + "dependencies": { + "@emotion/hash": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.1.tgz", + "integrity": "sha512-gJB6HLm5rYwSLI6PQa+X1t5CFGrv1J1TWG+sOyMCeKz2ojaj6Fnl/rZEspogG+cvqbt4AE/2eIyD2QfLKTBNlQ==" + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==" + } + } + }, + "@emotion/cache": { + "version": "11.11.0", + "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.11.0.tgz", + "integrity": "sha512-P34z9ssTCBi3e9EI1ZsWpNHcfY1r09ZO0rZbRO2ob3ZQMnFI35jB536qoXbkdesr5EUhYi22anuEJuyxifaqAQ==", + "requires": { + "@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/is-prop-valid": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.2.1.tgz", + "integrity": "sha512-61Mf7Ufx4aDxx1xlDeOm8aFFigGHE4z+0sKCa+IHCeZKiyP9RLD0Mmx7m8b9/Cf37f7NAvQOOJAbQQGVr5uERw==", + "requires": { + "@emotion/memoize": "^0.8.1" + } + }, + "@emotion/memoize": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.8.1.tgz", + "integrity": "sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA==" + }, + "@emotion/react": { + "version": "11.11.1", + "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.11.1.tgz", + "integrity": "sha512-5mlW1DquU5HaxjLkfkGN1GA/fvVGdyHURRiX/0FHl2cfIfRxSOfmxEH5YS43edp0OldZrZ+dkBKbngxcNCdZvA==", + "requires": { + "@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": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.1.2.tgz", + "integrity": "sha512-zR6a/fkFP4EAcCMQtLOhIgpprZOwNmCldtpaISpvz348+DP4Mz8ZoKaGGCQpbzepNIUWbq4w6hNZkwDyKoS+HA==", + "requires": { + "@emotion/hash": "^0.9.1", + "@emotion/memoize": "^0.8.1", + "@emotion/unitless": "^0.8.1", + "@emotion/utils": "^1.2.1", + "csstype": "^3.0.2" + }, + "dependencies": { + "@emotion/hash": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.1.tgz", + "integrity": "sha512-gJB6HLm5rYwSLI6PQa+X1t5CFGrv1J1TWG+sOyMCeKz2ojaj6Fnl/rZEspogG+cvqbt4AE/2eIyD2QfLKTBNlQ==" + }, + "csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" + } + } + }, + "@emotion/sheet": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.2.2.tgz", + "integrity": "sha512-0QBtGvaqtWi+nx6doRwDdBIzhNdZrXUppvTM4dtZZWEGTXL/XE/yJxLMGlDT1Gt+UHH5IX1n+jkXyytE/av7OA==" + }, + "@emotion/styled": { + "version": "11.11.0", + "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-11.11.0.tgz", + "integrity": "sha512-hM5Nnvu9P3midq5aaXj4I+lnSfNi7Pmd4EWk1fOZ3pxookaQTNew6bp4JaCBYM4HVFZF9g7UjJmsUmC2JlxOng==", + "requires": { + "@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": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.8.1.tgz", + "integrity": "sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ==" + }, + "@emotion/use-insertion-effect-with-fallbacks": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.0.1.tgz", + "integrity": "sha512-jT/qyKZ9rzLErtrjGgdkMBn2OP8wl0G3sQlBb3YPryvKHsjvINUhVaPFfP+fpBcOkmrVOVEEHQFJ7nbj2TH2gw==" + }, + "@emotion/utils": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.2.1.tgz", + "integrity": "sha512-Y2tGf3I+XVnajdItskUCn6LX+VUDmP6lTL4fcqsXAv43dnlbZiuW4MWQW38rW/BVWSE7Q/7+XQocmpnRYILUmg==" + }, + "@emotion/weak-memoize": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.3.1.tgz", + "integrity": "sha512-EsBwpc7hBUJWAsNPBmJy4hxWx12v6bshQsldrVmjxJoc3isbxhOrF2IcCpaXxfvq03NwkI7sbsOLXbYuqF/8Ww==" }, "@esbuild/linux-x64": { "version": "0.16.17", @@ -34696,6 +35262,36 @@ "resolved": "https://registry.npmjs.org/@firebase/webchannel-wrapper/-/webchannel-wrapper-0.10.5.tgz", "integrity": "sha512-eSkJsnhBWv5kCTSU1tSUVl9mpFu+5NXXunZc83le8GMjMlsWwQArSc7cJJ4yl+aDFY0NGLi0AjZWMn1axOrkRg==" }, + "@floating-ui/core": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.5.2.tgz", + "integrity": "sha512-Ii3MrfY/GAIN3OhXNzpCKaLxHQfJF9qvwq/kEJYdqDxeIHa01K8sldugal6TmeeXl+WMvhv9cnVzUTaFFJF09A==", + "requires": { + "@floating-ui/utils": "^0.1.3" + } + }, + "@floating-ui/dom": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.5.3.tgz", + "integrity": "sha512-ClAbQnEqJAKCJOEbbLo5IUlZHkNszqhuxS4fHAVxRPXPya6Ysf2G8KypnYcOTpx6I8xcgF9bbHb6g/2KpbV8qA==", + "requires": { + "@floating-ui/core": "^1.4.2", + "@floating-ui/utils": "^0.1.3" + } + }, + "@floating-ui/react-dom": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.0.4.tgz", + "integrity": "sha512-CF8k2rgKeh/49UrnIBs4BdxPUV6vize/Db1d/YbCLyp9GiVZ0BEwf5AiDSxJRCr6yOkGqTFHtmrULxkEfYZ7dQ==", + "requires": { + "@floating-ui/dom": "^1.5.1" + } + }, + "@floating-ui/utils": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.1.6.tgz", + "integrity": "sha512-OfX7E2oUDYxtBvsuS4e/jSn4Q9Qb6DzgeYtsAdkPZ47znpoNsMgZw0+tVijiv3uGNR6dgNlty6r9rzIzHjtd/A==" + }, "@fortawesome/fontawesome-common-types": { "version": "0.2.36" }, @@ -36370,78 +36966,214 @@ } } }, - "@material-ui/core": { - "version": "4.12.4", + "@mui/base": { + "version": "5.0.0-beta.27", + "resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-beta.27.tgz", + "integrity": "sha512-duL37qxihT1N0pW/gyXVezP7SttLkF+cLAs/y6g6ubEFmVadjbnZ45SeF12/vAiKzqwf5M0uFH1cczIPXFZygA==", "requires": { - "@babel/runtime": "^7.4.4", - "@material-ui/styles": "^4.11.5", - "@material-ui/system": "^4.12.2", - "@material-ui/types": "5.1.0", - "@material-ui/utils": "^4.11.3", - "@types/react-transition-group": "^4.2.0", - "clsx": "^1.0.4", - "hoist-non-react-statics": "^3.3.2", - "popper.js": "1.16.1-lts", - "prop-types": "^15.7.2", - "react-is": "^16.8.0 || ^17.0.0", - "react-transition-group": "^4.4.0" + "@babel/runtime": "^7.23.5", + "@floating-ui/react-dom": "^2.0.4", + "@mui/types": "^7.2.11", + "@mui/utils": "^5.15.0", + "@popperjs/core": "^2.11.8", + "clsx": "^2.0.0", + "prop-types": "^15.8.1" + }, + "dependencies": { + "clsx": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.0.0.tgz", + "integrity": "sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==" + } } }, - "@material-ui/icons": { - "version": "4.11.3", + "@mui/core-downloads-tracker": { + "version": "5.15.0", + "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-5.15.0.tgz", + "integrity": "sha512-NpGtlHwuyLfJtdrlERXb8qRqd279O0VnuGaZAor1ehdNhUJOD1bSxHDeXKZkbqNpvi50hasFj7lsbTpluworTQ==" + }, + "@mui/icons-material": { + "version": "5.15.0", + "resolved": "https://registry.npmjs.org/@mui/icons-material/-/icons-material-5.15.0.tgz", + "integrity": "sha512-zHY6fOkaK7VfhWeyxO8MjO3IAjEYpYMXuqUhX7TkUZJ9+TSH/9dn4ClG4K2j6hdgBU5Yrq2Z/89Bo6BHHp7AdQ==", "requires": { - "@babel/runtime": "^7.4.4" + "@babel/runtime": "^7.23.5" } }, - "@material-ui/lab": { - "version": "4.0.0-alpha.61", + "@mui/lab": { + "version": "5.0.0-alpha.156", + "resolved": "https://registry.npmjs.org/@mui/lab/-/lab-5.0.0-alpha.156.tgz", + "integrity": "sha512-OUAckFeqlAG6aIBG1Ud1fDCBqnU1wltWZYHsA7YCGzRBykNzQC/W/dYddp+RJLu0BgYpMiXwPXq2Hg0ERVtaog==", "requires": { - "@babel/runtime": "^7.4.4", - "@material-ui/utils": "^4.11.3", - "clsx": "^1.0.4", - "prop-types": "^15.7.2", - "react-is": "^16.8.0 || ^17.0.0" + "@babel/runtime": "^7.23.5", + "@mui/base": "5.0.0-beta.27", + "@mui/system": "^5.15.0", + "@mui/types": "^7.2.11", + "@mui/utils": "^5.15.0", + "clsx": "^2.0.0", + "prop-types": "^15.8.1" + }, + "dependencies": { + "clsx": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.0.0.tgz", + "integrity": "sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==" + } } }, - "@material-ui/styles": { - "version": "4.11.5", + "@mui/material": { + "version": "5.15.0", + "resolved": "https://registry.npmjs.org/@mui/material/-/material-5.15.0.tgz", + "integrity": "sha512-60CDI/hQNwJv9a3vEZtFG7zz0USdQhVwpBd3fZqrzhuXSdiMdYMaZcCXeX/KMuNq0ZxQEAZd74Pv+gOb408QVA==", "requires": { - "@babel/runtime": "^7.4.4", - "@emotion/hash": "^0.8.0", - "@material-ui/types": "5.1.0", - "@material-ui/utils": "^4.11.3", - "clsx": "^1.0.4", - "csstype": "^2.5.2", + "@babel/runtime": "^7.23.5", + "@mui/base": "5.0.0-beta.27", + "@mui/core-downloads-tracker": "^5.15.0", + "@mui/system": "^5.15.0", + "@mui/types": "^7.2.11", + "@mui/utils": "^5.15.0", + "@types/react-transition-group": "^4.4.9", + "clsx": "^2.0.0", + "csstype": "^3.1.2", + "prop-types": "^15.8.1", + "react-is": "^18.2.0", + "react-transition-group": "^4.4.5" + }, + "dependencies": { + "clsx": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.0.0.tgz", + "integrity": "sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==" + }, + "csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" + }, + "react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==" + } + } + }, + "@mui/private-theming": { + "version": "5.15.0", + "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.15.0.tgz", + "integrity": "sha512-7WxtIhXxNek0JjtsYy+ut2LtFSLpsUW5JSDehQO+jF7itJ8ehy7Bd9bSt2yIllbwGjCFowLfYpPk2Ykgvqm1tA==", + "requires": { + "@babel/runtime": "^7.23.5", + "@mui/utils": "^5.15.0", + "prop-types": "^15.8.1" + } + }, + "@mui/styled-engine": { + "version": "5.15.0", + "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.15.0.tgz", + "integrity": "sha512-6NysIsHkuUS2lF+Lzv1jiK3UjBJk854/vKVcJQVGKlPiqNEVZJNlwaSpsaU5xYXxWEZYfbVFSAomLOS/LV/ovQ==", + "requires": { + "@babel/runtime": "^7.23.5", + "@emotion/cache": "^11.11.0", + "csstype": "^3.1.2", + "prop-types": "^15.8.1" + }, + "dependencies": { + "csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" + } + } + }, + "@mui/styles": { + "version": "5.15.0", + "resolved": "https://registry.npmjs.org/@mui/styles/-/styles-5.15.0.tgz", + "integrity": "sha512-YAtXHlANm7wPo2IbYcWhya2c4KI9lxJm3d6UiFhObVg9WdkXZlF+hAIspmXLXo+Z9I/3AH44se+dJfY+B+duVQ==", + "requires": { + "@babel/runtime": "^7.23.5", + "@emotion/hash": "^0.9.1", + "@mui/private-theming": "^5.15.0", + "@mui/types": "^7.2.11", + "@mui/utils": "^5.15.0", + "clsx": "^2.0.0", + "csstype": "^3.1.2", "hoist-non-react-statics": "^3.3.2", - "jss": "^10.5.1", - "jss-plugin-camel-case": "^10.5.1", - "jss-plugin-default-unit": "^10.5.1", - "jss-plugin-global": "^10.5.1", - "jss-plugin-nested": "^10.5.1", - "jss-plugin-props-sort": "^10.5.1", - "jss-plugin-rule-value-function": "^10.5.1", - "jss-plugin-vendor-prefixer": "^10.5.1", - "prop-types": "^15.7.2" + "jss": "^10.10.0", + "jss-plugin-camel-case": "^10.10.0", + "jss-plugin-default-unit": "^10.10.0", + "jss-plugin-global": "^10.10.0", + "jss-plugin-nested": "^10.10.0", + "jss-plugin-props-sort": "^10.10.0", + "jss-plugin-rule-value-function": "^10.10.0", + "jss-plugin-vendor-prefixer": "^10.10.0", + "prop-types": "^15.8.1" + }, + "dependencies": { + "@emotion/hash": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.1.tgz", + "integrity": "sha512-gJB6HLm5rYwSLI6PQa+X1t5CFGrv1J1TWG+sOyMCeKz2ojaj6Fnl/rZEspogG+cvqbt4AE/2eIyD2QfLKTBNlQ==" + }, + "clsx": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.0.0.tgz", + "integrity": "sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==" + }, + "csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" + } } }, - "@material-ui/system": { - "version": "4.12.2", + "@mui/system": { + "version": "5.15.0", + "resolved": "https://registry.npmjs.org/@mui/system/-/system-5.15.0.tgz", + "integrity": "sha512-8TPjfTlYBNB7/zBJRL4QOD9kImwdZObbiYNh0+hxvhXr2koezGx8USwPXj8y/JynbzGCkIybkUztCdWlMZe6OQ==", "requires": { - "@babel/runtime": "^7.4.4", - "@material-ui/utils": "^4.11.3", - "csstype": "^2.5.2", - "prop-types": "^15.7.2" + "@babel/runtime": "^7.23.5", + "@mui/private-theming": "^5.15.0", + "@mui/styled-engine": "^5.15.0", + "@mui/types": "^7.2.11", + "@mui/utils": "^5.15.0", + "clsx": "^2.0.0", + "csstype": "^3.1.2", + "prop-types": "^15.8.1" + }, + "dependencies": { + "clsx": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.0.0.tgz", + "integrity": "sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==" + }, + "csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" + } } }, - "@material-ui/types": { - "version": "5.1.0" + "@mui/types": { + "version": "7.2.11", + "resolved": "https://registry.npmjs.org/@mui/types/-/types-7.2.11.tgz", + "integrity": "sha512-KWe/QTEsFFlFSH+qRYf3zoFEj3z67s+qAuSnMMg+gFwbxG7P96Hm6g300inQL1Wy///gSRb8juX7Wafvp93m3w==" }, - "@material-ui/utils": { - "version": "4.11.3", + "@mui/utils": { + "version": "5.15.0", + "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-5.15.0.tgz", + "integrity": "sha512-XSmTKStpKYamewxyJ256+srwEnsT3/6eNo6G7+WC1tj2Iq9GfUJ/6yUoB7YXjOD2jTZ3XobToZm4pVz1LBt6GA==", "requires": { - "@babel/runtime": "^7.4.4", - "prop-types": "^15.7.2", - "react-is": "^16.8.0 || ^17.0.0" + "@babel/runtime": "^7.23.5", + "@types/prop-types": "^15.7.11", + "prop-types": "^15.8.1", + "react-is": "^18.2.0" + }, + "dependencies": { + "react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==" + } } }, "@multiformats/mafmt": { @@ -36596,6 +37328,11 @@ } } }, + "@popperjs/core": { + "version": "2.11.8", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", + "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==" + }, "@protobufjs/aspromise": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", @@ -37261,15 +37998,16 @@ "dev": true }, "@types/parse-json": { - "version": "4.0.0", - "dev": true + "version": "4.0.0" }, "@types/prettier": { "version": "2.7.2", "dev": true }, "@types/prop-types": { - "version": "15.7.5" + "version": "15.7.11", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.11.tgz", + "integrity": "sha512-ga8y9v9uyeiLdpKddhxYQkxNDrfvuPrlFb0N1qnZZByvcElJaXthF1UhvCh9TLWJBEHeNtdnbysW7Y6Uq8CVng==" }, "@types/q": { "version": "1.5.5", @@ -37324,7 +38062,9 @@ } }, "@types/react-transition-group": { - "version": "4.4.5", + "version": "4.4.10", + "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.10.tgz", + "integrity": "sha512-hT/+s0VQs2ojCX823m60m5f0sL5idt9SO6Tj6Dg+rdphGPIeJbJ6CxvBYkgkGKrYeDjvIpKTR38UzmtHJOGW3Q==", "requires": { "@types/react": "*" } @@ -38824,7 +39564,6 @@ }, "babel-plugin-macros": { "version": "3.1.0", - "dev": true, "requires": { "@babel/runtime": "^7.12.5", "cosmiconfig": "^7.0.0", @@ -39532,8 +40271,7 @@ } }, "callsites": { - "version": "3.1.0", - "dev": true + "version": "3.1.0" }, "camel-case": { "version": "4.1.2", @@ -40171,7 +40909,6 @@ }, "cosmiconfig": { "version": "7.1.0", - "dev": true, "requires": { "@types/parse-json": "^4.0.0", "import-fresh": "^3.2.1", @@ -40416,9 +41153,6 @@ } } }, - "csstype": { - "version": "2.6.21" - }, "damerau-levenshtein": { "version": "1.0.8", "dev": true @@ -41373,7 +42107,6 @@ }, "error-ex": { "version": "1.3.2", - "dev": true, "requires": { "is-arrayish": "^0.2.1" } @@ -41511,8 +42244,7 @@ "version": "1.0.3" }, "escape-string-regexp": { - "version": "4.0.0", - "dev": true + "version": "4.0.0" }, "escodegen": { "version": "2.0.0", @@ -42472,6 +43204,11 @@ } } }, + "find-root": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz", + "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==" + }, "find-up": { "version": "5.0.0", "dev": true, @@ -43664,7 +44401,6 @@ }, "import-fresh": { "version": "3.3.0", - "dev": true, "requires": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" @@ -43831,8 +44567,7 @@ } }, "is-arrayish": { - "version": "0.2.1", - "dev": true + "version": "0.2.1" }, "is-bigint": { "version": "1.0.4", @@ -46474,8 +47209,7 @@ "dev": true }, "json-parse-even-better-errors": { - "version": "2.3.1", - "dev": true + "version": "2.3.1" }, "json-schema": { "version": "0.4.0", @@ -46552,7 +47286,9 @@ } }, "jss": { - "version": "10.9.2", + "version": "10.10.0", + "resolved": "https://registry.npmjs.org/jss/-/jss-10.10.0.tgz", + "integrity": "sha512-cqsOTS7jqPsPMjtKYDUpdFC0AbhYFLTcuGRqymgmdJIeQ8cH7+AgX7YSgQy79wXloZq2VvATYxUOUQEvS1V/Zw==", "requires": { "@babel/runtime": "^7.3.1", "csstype": "^3.0.2", @@ -46566,56 +47302,70 @@ } }, "jss-plugin-camel-case": { - "version": "10.9.2", + "version": "10.10.0", + "resolved": "https://registry.npmjs.org/jss-plugin-camel-case/-/jss-plugin-camel-case-10.10.0.tgz", + "integrity": "sha512-z+HETfj5IYgFxh1wJnUAU8jByI48ED+v0fuTuhKrPR+pRBYS2EDwbusU8aFOpCdYhtRc9zhN+PJ7iNE8pAWyPw==", "requires": { "@babel/runtime": "^7.3.1", "hyphenate-style-name": "^1.0.3", - "jss": "10.9.2" + "jss": "10.10.0" } }, "jss-plugin-default-unit": { - "version": "10.9.2", + "version": "10.10.0", + "resolved": "https://registry.npmjs.org/jss-plugin-default-unit/-/jss-plugin-default-unit-10.10.0.tgz", + "integrity": "sha512-SvpajxIECi4JDUbGLefvNckmI+c2VWmP43qnEy/0eiwzRUsafg5DVSIWSzZe4d2vFX1u9nRDP46WCFV/PXVBGQ==", "requires": { "@babel/runtime": "^7.3.1", - "jss": "10.9.2" + "jss": "10.10.0" } }, "jss-plugin-global": { - "version": "10.9.2", + "version": "10.10.0", + "resolved": "https://registry.npmjs.org/jss-plugin-global/-/jss-plugin-global-10.10.0.tgz", + "integrity": "sha512-icXEYbMufiNuWfuazLeN+BNJO16Ge88OcXU5ZDC2vLqElmMybA31Wi7lZ3lf+vgufRocvPj8443irhYRgWxP+A==", "requires": { "@babel/runtime": "^7.3.1", - "jss": "10.9.2" + "jss": "10.10.0" } }, "jss-plugin-nested": { - "version": "10.9.2", + "version": "10.10.0", + "resolved": "https://registry.npmjs.org/jss-plugin-nested/-/jss-plugin-nested-10.10.0.tgz", + "integrity": "sha512-9R4JHxxGgiZhurDo3q7LdIiDEgtA1bTGzAbhSPyIOWb7ZubrjQe8acwhEQ6OEKydzpl8XHMtTnEwHXCARLYqYA==", "requires": { "@babel/runtime": "^7.3.1", - "jss": "10.9.2", + "jss": "10.10.0", "tiny-warning": "^1.0.2" } }, "jss-plugin-props-sort": { - "version": "10.9.2", + "version": "10.10.0", + "resolved": "https://registry.npmjs.org/jss-plugin-props-sort/-/jss-plugin-props-sort-10.10.0.tgz", + "integrity": "sha512-5VNJvQJbnq/vRfje6uZLe/FyaOpzP/IH1LP+0fr88QamVrGJa0hpRRyAa0ea4U/3LcorJfBFVyC4yN2QC73lJg==", "requires": { "@babel/runtime": "^7.3.1", - "jss": "10.9.2" + "jss": "10.10.0" } }, "jss-plugin-rule-value-function": { - "version": "10.9.2", + "version": "10.10.0", + "resolved": "https://registry.npmjs.org/jss-plugin-rule-value-function/-/jss-plugin-rule-value-function-10.10.0.tgz", + "integrity": "sha512-uEFJFgaCtkXeIPgki8ICw3Y7VMkL9GEan6SqmT9tqpwM+/t+hxfMUdU4wQ0MtOiMNWhwnckBV0IebrKcZM9C0g==", "requires": { "@babel/runtime": "^7.3.1", - "jss": "10.9.2", + "jss": "10.10.0", "tiny-warning": "^1.0.2" } }, "jss-plugin-vendor-prefixer": { - "version": "10.9.2", + "version": "10.10.0", + "resolved": "https://registry.npmjs.org/jss-plugin-vendor-prefixer/-/jss-plugin-vendor-prefixer-10.10.0.tgz", + "integrity": "sha512-UY/41WumgjW8r1qMCO8l1ARg7NHnfRVWRhZ2E2m0DMYsr2DD91qIXLyNhiX83hHswR7Wm4D+oDYNC1zWCJWtqg==", "requires": { "@babel/runtime": "^7.3.1", "css-vendor": "^2.0.8", - "jss": "10.9.2" + "jss": "10.10.0" } }, "jsx-ast-utils": { @@ -46884,8 +47634,7 @@ "dev": true }, "lines-and-columns": { - "version": "1.2.4", - "dev": true + "version": "1.2.4" }, "load-bmfont": { "version": "1.4.1", @@ -47872,7 +48621,9 @@ "dev": true }, "notistack": { - "version": "1.0.10", + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/notistack/-/notistack-2.0.8.tgz", + "integrity": "sha512-/IY14wkFp5qjPgKNvAdfL5Jp6q90+MjgKTPh4c81r/lW70KeuX6b9pE/4f8L4FG31cNudbN9siiFS5ql1aSLRw==", "requires": { "clsx": "^1.1.0", "hoist-non-react-statics": "^3.3.0" @@ -48487,7 +49238,6 @@ }, "parent-module": { "version": "1.0.1", - "dev": true, "requires": { "callsites": "^3.0.0" } @@ -48533,7 +49283,6 @@ }, "parse-json": { "version": "5.2.0", - "dev": true, "requires": { "@babel/code-frame": "^7.0.0", "error-ex": "^1.3.1", @@ -48624,8 +49373,7 @@ } }, "path-type": { - "version": "4.0.0", - "dev": true + "version": "4.0.0" }, "pathval": { "version": "1.1.1", @@ -48917,9 +49665,6 @@ "integrity": "sha512-TRzzuFRRmEoSW/p1KVAmiOgPco2Irlah+bGFCeNfJXxxYGwSw7YwAOAcd7X28K/m5bjBWKsC29KyoMfHbypayg==", "dev": true }, - "popper.js": { - "version": "1.16.1-lts" - }, "posix-character-classes": { "version": "0.1.1", "dev": true @@ -50016,7 +50761,8 @@ } }, "react-is": { - "version": "17.0.2" + "version": "17.0.2", + "dev": true }, "react-markdown": { "version": "4.3.1", @@ -50670,7 +51416,8 @@ } }, "regenerator-runtime": { - "version": "0.13.11" + "version": "0.13.11", + "dev": true }, "regenerator-transform": { "version": "0.15.1", @@ -50946,8 +51693,7 @@ } }, "resolve-from": { - "version": "4.0.0", - "dev": true + "version": "4.0.0" }, "resolve-pathname": { "version": "3.0.0" @@ -52318,7 +53064,9 @@ } }, "stylis": { - "version": "4.1.3" + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.2.0.tgz", + "integrity": "sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==" }, "sumchecker": { "version": "3.0.1", @@ -54348,8 +55096,7 @@ "version": "4.0.0" }, "yaml": { - "version": "1.10.2", - "dev": true + "version": "1.10.2" }, "yargs": { "version": "17.7.2", diff --git a/package.json b/package.json index 2186abfc5..6fe650b5b 100644 --- a/package.json +++ b/package.json @@ -85,13 +85,16 @@ "wait-on": "^6.0.1" }, "dependencies": { + "@emotion/react": "^11.11.1", + "@emotion/styled": "^11.11.0", "@fortawesome/fontawesome-svg-core": "^1.2.27", "@fortawesome/free-regular-svg-icons": "^5.12.1", "@fortawesome/free-solid-svg-icons": "^5.12.1", "@fortawesome/react-fontawesome": "^0.1.9", - "@material-ui/core": "^4.11.3", - "@material-ui/icons": "^4.9.1", - "@material-ui/lab": "^4.0.0-alpha.53", + "@mui/icons-material": "^5.15.0", + "@mui/lab": "^5.0.0-alpha.156", + "@mui/material": "^5.15.0", + "@mui/styles": "^5.15.0", "animate.css": "^4.1.0", "assert": "npm:assert-browserify@^2.0.0", "axios": "^1.6.0", @@ -113,7 +116,7 @@ "lodash.debounce": "^4.0.8", "lodash.sortby": "^4.7.0", "lodash.throttle": "^4.1.1", - "notistack": "^1.0.5", + "notistack": "^2.0.8", "path": "npm:path-browserify@^1.0.1", "process": "^0.11.10", "prop-types": "^15.6.2", diff --git a/src/components/AccountingView/AccountingView.js b/src/components/AccountingView/AccountingView.js index fd93b43c4..e6c5c7fac 100644 --- a/src/components/AccountingView/AccountingView.js +++ b/src/components/AccountingView/AccountingView.js @@ -1,10 +1,10 @@ -import React, { useEffect, useState } from 'react' -import Card from '@material-ui/core/Card' -import CardHeader from '@material-ui/core/CardHeader' -import CardContent from '@material-ui/core/CardContent' -import Button from '@material-ui/core/Button' -import TextField from '@material-ui/core/TextField' -import AccountBalanceIcon from '@material-ui/icons/AccountBalance' +import React, { useEffect, useState, forwardRef } from 'react' +import Card from '@mui/material/Card' +import CardHeader from '@mui/material/CardHeader' +import CardContent from '@mui/material/CardContent' +import Button from '@mui/material/Button' +import TextField from '@mui/material/TextField' +import AccountBalanceIcon from '@mui/icons-material/AccountBalance' import NumberFormat from 'react-number-format' import { func, number } from 'prop-types' @@ -19,26 +19,22 @@ import { import './AccountingView.sass' -const MoneyNumberFormat = ({ - inputRef, - max, - min, - onChange, - setLoanInputValue, - ...rest -}) => ( - min >= 0 && floatValue <= max, - onValueChange: ({ floatValue = 0 }) => onChange(floatValue), - }} - /> +const MoneyNumberFormat = forwardRef( + ({ max, min, onChange, setLoanInputValue, ...rest }, ref) => ( + min >= 0 && floatValue <= max, + onValueChange: ({ floatValue = 0 }) => onChange(floatValue), + }} + /> + ) ) const AccountingView = ({ @@ -69,6 +65,7 @@ const AccountingView = ({
- - - -) + + + {dialogContentMap[currentDialogView]} + + + + + + + ) +} Navigation.propTypes = { activePlayers: number, diff --git a/src/components/Navigation/Navigation.test.js b/src/components/Navigation/Navigation.test.js index dd50ca981..808fffefe 100644 --- a/src/components/Navigation/Navigation.test.js +++ b/src/components/Navigation/Navigation.test.js @@ -1,6 +1,6 @@ import React from 'react' import { shallow } from 'enzyme' -import MenuItem from '@material-ui/core/MenuItem' +import MenuItem from '@mui/material/MenuItem' import { dialogView, stageFocusType } from '../../enums' import { INFINITE_STORAGE_LIMIT } from '../../constants' diff --git a/src/components/NotificationSystem/NotificationSystem.js b/src/components/NotificationSystem/NotificationSystem.js index a14f053f2..97974b2b3 100644 --- a/src/components/NotificationSystem/NotificationSystem.js +++ b/src/components/NotificationSystem/NotificationSystem.js @@ -1,6 +1,6 @@ import React, { useEffect } from 'react' import { func, shape, string } from 'prop-types' -import Alert from '@material-ui/lab/Alert' +import Alert from '@mui/material/Alert' import ReactMarkdown from 'react-markdown' import { withSnackbar } from 'notistack' diff --git a/src/components/OnlinePeersView/OnlinePeer/OnlinePeer.js b/src/components/OnlinePeersView/OnlinePeer/OnlinePeer.js index 5d55b35fa..0bbb92b34 100644 --- a/src/components/OnlinePeersView/OnlinePeer/OnlinePeer.js +++ b/src/components/OnlinePeersView/OnlinePeer/OnlinePeer.js @@ -1,8 +1,8 @@ import React from 'react' import { number, object, shape, string } from 'prop-types' -import Card from '@material-ui/core/Card' -import CardContent from '@material-ui/core/CardContent' -import CardHeader from '@material-ui/core/CardHeader' +import Card from '@mui/material/Card' +import CardContent from '@mui/material/CardContent' +import CardHeader from '@mui/material/CardHeader' import CowCard from '../../CowCard' diff --git a/src/components/OnlinePeersView/OnlinePeersView.js b/src/components/OnlinePeersView/OnlinePeersView.js index 7469a1c3f..984ad1d3a 100644 --- a/src/components/OnlinePeersView/OnlinePeersView.js +++ b/src/components/OnlinePeersView/OnlinePeersView.js @@ -1,9 +1,9 @@ import React from 'react' import ReactMarkdown from 'react-markdown' -import Alert from '@material-ui/lab/Alert' -import Divider from '@material-ui/core/Divider' -import Card from '@material-ui/core/Card' -import CardContent from '@material-ui/core/CardContent' +import Alert from '@mui/material/Alert' +import Divider from '@mui/material/Divider' +import Card from '@mui/material/Card' +import CardContent from '@mui/material/CardContent' import sortBy from 'lodash.sortby' import { array, number, object, string } from 'prop-types' diff --git a/src/components/Plot/Plot.js b/src/components/Plot/Plot.js index 9d3c23ca2..bbd03eb0a 100644 --- a/src/components/Plot/Plot.js +++ b/src/components/Plot/Plot.js @@ -3,8 +3,8 @@ import React, { useEffect, useState } from 'react' import { bool, func, number, object, string } from 'prop-types' -import Tooltip from '@material-ui/core/Tooltip' -import Typography from '@material-ui/core/Typography' +import Tooltip from '@mui/material/Tooltip' +import Typography from '@mui/material/Typography' import classNames from 'classnames' import FarmhandContext from '../Farmhand/Farmhand.context' @@ -191,8 +191,8 @@ export const Plot = ({ return ( diff --git a/src/components/PriceEventView/PriceEventView.js b/src/components/PriceEventView/PriceEventView.js index a9241237b..f82d7ded3 100644 --- a/src/components/PriceEventView/PriceEventView.js +++ b/src/components/PriceEventView/PriceEventView.js @@ -1,6 +1,6 @@ import React from 'react' import { object } from 'prop-types' -import Divider from '@material-ui/core/Divider' +import Divider from '@mui/material/Divider' import { itemsMap } from '../../data/maps' import FarmhandContext from '../Farmhand/Farmhand.context' diff --git a/src/components/QuantityInput/QuantityInput.js b/src/components/QuantityInput/QuantityInput.js index e3360403f..8ea0117f7 100644 --- a/src/components/QuantityInput/QuantityInput.js +++ b/src/components/QuantityInput/QuantityInput.js @@ -1,10 +1,10 @@ -import React from 'react' +import React, { forwardRef } from 'react' import { func, number } from 'prop-types' -import Fab from '@material-ui/core/Fab' -import KeyboardArrowUp from '@material-ui/icons/KeyboardArrowUp' -import KeyboardArrowDown from '@material-ui/icons/KeyboardArrowDown' +import Fab from '@mui/material/Fab' +import KeyboardArrowUp from '@mui/icons-material/KeyboardArrowUp' +import KeyboardArrowDown from '@mui/icons-material/KeyboardArrowDown' import NumberFormat from 'react-number-format' -import TextField from '@material-ui/core/TextField' +import TextField from '@mui/material/TextField' import AnimatedNumber from '../AnimatedNumber' @@ -12,18 +12,21 @@ import { integerString } from '../../utils' import './QuantityInput.sass' -const QuantityNumberFormat = ({ inputRef, min, max, onChange, ...rest }) => ( - - onChange(Math.min(floatValue, max)), - }} - /> +const QuantityNumberFormat = forwardRef( + ({ min, max, onChange, ...rest }, ref) => ( + + onChange(Math.min(floatValue, max)), + }} + /> + ) ) // TODO: Rename event handlers to use on* format @@ -35,6 +38,7 @@ const QuantityTextInput = ({ value, }) => ( {sortItems(items).map(item => ( {item.name}, }} > - - - + + + + )} ) diff --git a/src/components/TierPurchase/TierPurchase.sass b/src/components/TierPurchase/TierPurchase.sass deleted file mode 100644 index f9bebe247..000000000 --- a/src/components/TierPurchase/TierPurchase.sass +++ /dev/null @@ -1,5 +0,0 @@ -.TierPurchase - .MuiInput-root - flex-grow: 1 - margin: 0 - max-width: 300px diff --git a/src/components/TierPurchase/TierPurchase.test.js b/src/components/TierPurchase/TierPurchase.test.js index 6da0f4c26..47c2d1a83 100644 --- a/src/components/TierPurchase/TierPurchase.test.js +++ b/src/components/TierPurchase/TierPurchase.test.js @@ -28,7 +28,7 @@ describe('', () => { const buyButton = () => screen.getByRole('button', { name: 'Buy' }) // MUI doesn't give this button a name but clicking it is required to get the listbox to render - const openSelect = () => userEvent.click(screen.getAllByRole('button')[1]) + const openSelect = () => userEvent.click(screen.getByRole('combobox')) describe('renders', () => { beforeEach(() => { @@ -88,9 +88,8 @@ describe('', () => { render() openSelect() - expect(screen.getByRole('option', { name: 'foo' })).toHaveAttribute( - 'aria-disabled', - 'false' + expect(screen.getByRole('option', { name: 'foo' })).not.toHaveAttribute( + 'aria-disabled' ) }) diff --git a/src/components/Toolbelt/Toolbelt.js b/src/components/Toolbelt/Toolbelt.js index a74ea4d9e..3364ec545 100644 --- a/src/components/Toolbelt/Toolbelt.js +++ b/src/components/Toolbelt/Toolbelt.js @@ -3,8 +3,9 @@ import PropTypes from 'prop-types' import classNames from 'classnames' import ReactMarkdown from 'react-markdown' -import Button from '@material-ui/core/Button' -import Tooltip from '@material-ui/core/Tooltip' +import Button from '@mui/material/Button' +import Tooltip from '@mui/material/Tooltip' +import Typography from '@mui/material/Typography' import { toolLevel } from '../../enums' import { memoize } from '../../utils/memoize' @@ -40,7 +41,6 @@ const getToolImage = tool => { export const Toolbelt = ({ fieldMode: currentFieldMode, handleFieldModeSelect, - completedAchievements, toolLevels, }) => { const tools = getTools(toolLevels) @@ -51,11 +51,12 @@ export const Toolbelt = ({ {tools.map( ({ alt, fieldMode, fieldKey, hiddenText, id, levelInfo, type }) => ( +

{alt}

({fieldKey})

- +
), }} > @@ -106,12 +107,10 @@ export const Toolbelt = ({ Toolbelt.propTypes = { fieldMode: PropTypes.string.isRequired, handleFieldModeSelect: PropTypes.func, - completedAchievements: PropTypes.object, } Toolbelt.defaultProps = { handleFieldModeSelect: noop, - completedAchievements: {}, toolLevels: {}, } diff --git a/src/components/UpgradePurchase/UpgradePurchase.js b/src/components/UpgradePurchase/UpgradePurchase.js index b94587cef..d2a1f049d 100644 --- a/src/components/UpgradePurchase/UpgradePurchase.js +++ b/src/components/UpgradePurchase/UpgradePurchase.js @@ -1,9 +1,9 @@ import React from 'react' import classNames from 'classnames' -import Button from '@material-ui/core/Button' -import Card from '@material-ui/core/Card' -import CardHeader from '@material-ui/core/CardHeader' -import CardActions from '@material-ui/core/CardActions' +import Button from '@mui/material/Button' +import Card from '@mui/material/Card' +import CardHeader from '@mui/material/CardHeader' +import CardActions from '@mui/material/CardActions' import { array, func, number, object } from 'prop-types' import IngredientsList from '../IngredientsList' diff --git a/src/components/Workshop/ForgeTabPanel.js b/src/components/Workshop/ForgeTabPanel.js index 4d78572a9..925f7fec2 100644 --- a/src/components/Workshop/ForgeTabPanel.js +++ b/src/components/Workshop/ForgeTabPanel.js @@ -1,9 +1,9 @@ import React from 'react' import { number, array, object } from 'prop-types' -import Card from '@material-ui/core/Card' -import CardContent from '@material-ui/core/CardContent' -import Divider from '@material-ui/core/Divider' +import Card from '@mui/material/Card' +import CardContent from '@mui/material/CardContent' +import Divider from '@mui/material/Divider' import ReactMarkdown from 'react-markdown' import { recipeType } from '../../enums' diff --git a/src/components/Workshop/KitchenTabPanel.js b/src/components/Workshop/KitchenTabPanel.js index edf4eb17d..4fe25330d 100644 --- a/src/components/Workshop/KitchenTabPanel.js +++ b/src/components/Workshop/KitchenTabPanel.js @@ -1,9 +1,9 @@ import React from 'react' import { number, array } from 'prop-types' -import Card from '@material-ui/core/Card' -import CardContent from '@material-ui/core/CardContent' -import Divider from '@material-ui/core/Divider' +import Card from '@mui/material/Card' +import CardContent from '@mui/material/CardContent' +import Divider from '@mui/material/Divider' import ReactMarkdown from 'react-markdown' import { recipeType } from '../../enums' diff --git a/src/components/Workshop/RecyclingTabPanel.js b/src/components/Workshop/RecyclingTabPanel.js index f8cc088a4..1ba80efc1 100644 --- a/src/components/Workshop/RecyclingTabPanel.js +++ b/src/components/Workshop/RecyclingTabPanel.js @@ -1,9 +1,9 @@ import React from 'react' import { number, array } from 'prop-types' -import Card from '@material-ui/core/Card' -import CardContent from '@material-ui/core/CardContent' -import Divider from '@material-ui/core/Divider' +import Card from '@mui/material/Card' +import CardContent from '@mui/material/CardContent' +import Divider from '@mui/material/Divider' import ReactMarkdown from 'react-markdown' import { recipeType } from '../../enums' diff --git a/src/components/Workshop/Workshop.js b/src/components/Workshop/Workshop.js index 08a7dac11..002505fd6 100644 --- a/src/components/Workshop/Workshop.js +++ b/src/components/Workshop/Workshop.js @@ -1,8 +1,7 @@ import React, { useState } from 'react' import { number, object } from 'prop-types' -import AppBar from '@material-ui/core/AppBar' -import Tab from '@material-ui/core/Tab' -import Tabs from '@material-ui/core/Tabs' +import Tab from '@mui/material/Tab' +import Tabs from '@mui/material/Tabs' import { recipeType } from '../../enums' @@ -44,19 +43,17 @@ const Workshop = ({ return (
- - setCurrentTab(newTab)} - aria-label="Workshop tabs" - > - - {showForge ? : null} - {purchasedComposter ? ( - - ) : null} - - + setCurrentTab(newTab)} + aria-label="Workshop tabs" + > + + {showForge ? : null} + {purchasedComposter ? ( + + ) : null} + { .closest('.TierPurchase') // Open the list of field options - userEvent.click(within(expandFieldContainer).getAllByRole('button')[1]) + userEvent.click(within(expandFieldContainer).getByRole('combobox')) userEvent.click(screen.getByRole('option', { name: '$1,000: 8 x 12' })) // Make the purchase - userEvent.click(within(expandFieldContainer).getAllByRole('button')[0]) + userEvent.click(within(expandFieldContainer).getByRole('button')) await nextView() diff --git a/src/mui-theme.js b/src/mui-theme.js index 352775f97..1f20298e7 100644 --- a/src/mui-theme.js +++ b/src/mui-theme.js @@ -1,9 +1,31 @@ -import { createTheme } from '@material-ui/core' +import createTheme from '@mui/material/styles/createTheme' export default createTheme({ - typography: { - // Needed to silence this warning: - // https://material-ui.com/style/typography/#migration-to-typography-v2 - useNextVariants: true, + palette: { + mode: 'light', + }, + shape: {}, + components: { + MuiTabs: { + styleOverrides: { + root: ({ theme }) => ({ + background: '#ffeec6', + borderColor: '#9b6d00', + borderWidth: 2, + borderStyle: 'solid', + borderRadius: `${theme.shape.borderRadius}px ${theme.shape.borderRadius}px 0 0`, + }), + }, + }, + MuiInput: { + styleOverrides: { + root: { + margin: '1rem 0', + '& input': { + padding: '0.5rem', + }, + }, + }, + }, }, }) diff --git a/src/styles/utils.sass b/src/styles/utils.sass index 21eb584c5..080acd085 100644 --- a/src/styles/utils.sass +++ b/src/styles/utils.sass @@ -27,8 +27,7 @@ img .MuiTabs-flexContainer justify-content: center - .MuiAppBar-root - border-radius: .5em .5em 0 0 + > .MuiTabs-root margin-top: 4em [role=tabpanel] From 00b158f46ac556020e13fff7b6be5f87ff19fcd1 Mon Sep 17 00:00:00 2001 From: Jeremy Kahn Date: Wed, 20 Dec 2023 21:10:19 -0600 Subject: [PATCH 2/3] fix(settings): Prevent invalid state when booting save with Home screen disabled (#471) * fix(ui): prevent crash when loading a save that has home screen hidden * fix(cow): avoid setting image states on unmounted components --- src/components/CowCard/CowCard.js | 11 +++++++++-- src/components/CowPen/CowPen.js | 9 ++++++++- src/components/Farmhand/Farmhand.js | 5 +++-- src/constants.js | 2 ++ src/hooks/useMountState/index.ts | 1 + src/hooks/useMountState/useMountState.ts | 17 +++++++++++++++++ src/utils/index.js | 11 ++++++++++- 7 files changed, 50 insertions(+), 6 deletions(-) create mode 100644 src/hooks/useMountState/index.ts create mode 100644 src/hooks/useMountState/useMountState.ts diff --git a/src/components/CowCard/CowCard.js b/src/components/CowCard/CowCard.js index 217f79a2e..89ce5d2ab 100644 --- a/src/components/CowCard/CowCard.js +++ b/src/components/CowCard/CowCard.js @@ -31,6 +31,7 @@ import { } from '../../utils' import { PURCHASEABLE_COW_PENS } from '../../constants' import { OFFER_COW_FOR_TRADE, WITHDRAW_COW_FROM_TRADE } from '../../templates' +import { useMountState } from '../../hooks/useMountState' import Subheader from './Subheader' @@ -119,13 +120,19 @@ export const CowCard = ( isCowOfferedForTradeByPeer && cowIdOfferedForTrade.length > 0 ) + const { isMounted } = useMountState() + useEffect(() => { ;(async () => { - setCowImage(await getCowImage(cow)) + const cowImage = await getCowImage(cow) + + if (isMounted() === false) return + + setCowImage(cowImage) })() setDisplayName(getCowDisplayName(cow, id, allowCustomPeerCowNames)) - }, [cow, id, allowCustomPeerCowNames]) + }, [cow, id, allowCustomPeerCowNames, isMounted]) useEffect(() => { if (isSelected) { diff --git a/src/components/CowPen/CowPen.js b/src/components/CowPen/CowPen.js index 11544dff0..4d5f31730 100644 --- a/src/components/CowPen/CowPen.js +++ b/src/components/CowPen/CowPen.js @@ -34,6 +34,7 @@ export class Cow extends Component { repositionTimeoutId = null animateHugTimeoutId = null tweenable = new Tweenable() + isComponentMounted = false static flipAnimationDuration = 1000 static transitionAnimationDuration = 3000 @@ -162,15 +163,21 @@ export class Cow extends Component { } componentDidMount() { + this.isComponentMounted = true this.scheduleMove() ;(async () => { - this.setState({ cowImage: await getCowImage(this.props.cow) }) + const cowImage = await getCowImage(this.props.cow) + + if (!this.isComponentMounted) return + + this.setState({ cowImage: cowImage }) })() } componentWillUnmount() { ;[this.repositionTimeoutId, this.animateHugTimeoutId].forEach(clearTimeout) + this.isComponentMounted = false this.tweenable.cancel() } diff --git a/src/components/Farmhand/Farmhand.js b/src/components/Farmhand/Farmhand.js index 652080e83..72567e4c8 100644 --- a/src/components/Farmhand/Farmhand.js +++ b/src/components/Farmhand/Farmhand.js @@ -91,6 +91,7 @@ import { STAGE_TITLE_MAP, STANDARD_LOAN_AMOUNT, Z_INDEX, + STANDARD_VIEW_LIST, } from '../../constants' import { HEARTBEAT_INTERVAL_PERIOD, @@ -363,8 +364,8 @@ export default class Farmhand extends FarmhandReducers { } get viewList() { - const { CELLAR, COW_PEN, FIELD, HOME, WORKSHOP, SHOP } = stageFocusType - const viewList = [SHOP, FIELD] + const { CELLAR, COW_PEN, HOME, WORKSHOP } = stageFocusType + const viewList = [...STANDARD_VIEW_LIST] if (this.state.showHomeScreen) { viewList.unshift(HOME) diff --git a/src/constants.js b/src/constants.js index 9517b4a5f..916f16dad 100644 --- a/src/constants.js +++ b/src/constants.js @@ -280,6 +280,8 @@ export const EXPERIENCE_VALUES = { SMELTER_ACQUIRED: 10, } +export const STANDARD_VIEW_LIST = [stageFocusType.SHOP, stageFocusType.FIELD] + export const Z_INDEX = { END_DAY_BUTTON: 1100, } diff --git a/src/hooks/useMountState/index.ts b/src/hooks/useMountState/index.ts new file mode 100644 index 000000000..b43ae1328 --- /dev/null +++ b/src/hooks/useMountState/index.ts @@ -0,0 +1 @@ +export * from './useMountState' diff --git a/src/hooks/useMountState/useMountState.ts b/src/hooks/useMountState/useMountState.ts new file mode 100644 index 000000000..14331f958 --- /dev/null +++ b/src/hooks/useMountState/useMountState.ts @@ -0,0 +1,17 @@ +import { useEffect, useRef } from 'react' + +export const useMountState = () => { + const isMountedRef = useRef(false) + + useEffect(() => { + isMountedRef.current = true + + return () => { + isMountedRef.current = false + } + }, [isMountedRef]) + + const isMounted = () => isMountedRef.current + + return { isMounted } +} diff --git a/src/utils/index.js b/src/utils/index.js index 5747ec3d4..74de5f279 100644 --- a/src/utils/index.js +++ b/src/utils/index.js @@ -47,6 +47,7 @@ import { fertilizerType, genders, itemType, + stageFocusType, standardCowColors, toolLevel, } from '../enums' @@ -80,6 +81,7 @@ import { STORAGE_EXPANSION_BASE_PRICE, STORM_CHANCE, STORAGE_EXPANSION_SCALE_PREMIUM, + STANDARD_VIEW_LIST, } from '../constants' import { random } from '../common/utils' @@ -944,7 +946,7 @@ export const unlockTool = (currentToolLevels, toolType) => { * @return {farmhand.state} */ export const transformStateDataForImport = state => { - const sanitizedState = { ...state } + let sanitizedState = { ...state } const rejectedKeys = ['version'] rejectedKeys.forEach(rejectedKey => delete sanitizedState[rejectedKey]) @@ -953,6 +955,13 @@ export const transformStateDataForImport = state => { sanitizedState.experience = farmProductsSold(sanitizedState.itemsSold) } + if ( + sanitizedState.showHomeScreen === false && + sanitizedState.stageFocus === stageFocusType.HOME + ) { + sanitizedState = { ...sanitizedState, stageFocus: STANDARD_VIEW_LIST[0] } + } + return sanitizedState } From 0830a241bab37cd77a26f6e1dbbea10504f8b8d0 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 21 Dec 2023 03:15:01 +0000 Subject: [PATCH 3/3] 1.18.7 --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index a911d4581..9fa01ddd7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@jeremyckahn/farmhand", - "version": "1.18.6", + "version": "1.18.7", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@jeremyckahn/farmhand", - "version": "1.18.6", + "version": "1.18.7", "license": "GPL-2.0-or-later", "dependencies": { "@emotion/react": "^11.11.1", diff --git a/package.json b/package.json index 6fe650b5b..4ee83c75f 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@jeremyckahn/farmhand", - "version": "1.18.6", + "version": "1.18.7", "publishConfig": { "access": "public" },