diff --git a/package-lock.json b/package-lock.json index 35fa2131d4c03e9e96ccdf50f97ee680cdcd0645..132ac32edbcf52bf846ff0160a0e9da66158e7d9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,9 +10,15 @@ "@amcharts/amcharts5": "^5.0.3", "@babel/runtime": "^7.15.4", "@date-io/moment": "^1.3.11", + "@emotion/react": "^11.7.1", + "@emotion/styled": "^11.6.0", "@material-ui/core": "^4.12.3", "@material-ui/icons": "^4.11.2", "@material-ui/pickers": "^3.3.10", + "@mui/icons-material": "^5.2.5", + "@mui/lab": "^5.0.0-alpha.64", + "@mui/material": "^5.2.8", + "@mui/styles": "^5.2.3", "@nosferatu500/react-sortable-tree": "^3.0.5", "@shakacode/recompose": "^0.30.3", "@turf/buffer": "^6.3.0", @@ -57,7 +63,7 @@ "react-sortable-tree-theme-file-explorer": "git+https://github.com/SemanticComputing/react-sortable-tree-theme-file-explorer.git#e60a5a73b4c5892b1dcd598a27a72bd3ebbd5e96", "react-virtualized": "^9.22.3", "react-wordcloud": "^1.2.7", - "redux": "^4.1.0", + "redux": "^4.1.2", "redux-observable": "^2.0.0", "reselect": "^4.0.0", "rxjs": "^7.2.0", @@ -188,7 +194,6 @@ "version": "7.16.0", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.0.tgz", "integrity": "sha512-IF4EOMEV+bfYwOmNxGzSnjR2EmQod7f1UXOpZM3l4i4o4QNwzjtJAu/HxdjHq0aYBvdqMuQEY1eg0nqW9ZPORA==", - "dev": true, "dependencies": { "@babel/highlight": "^7.16.0" }, @@ -200,7 +205,6 @@ "version": "7.16.0", "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.16.0.tgz", "integrity": "sha512-DGjt2QZse5SGd9nfOSqO4WLJ8NN/oHkijbXbPrxuoJO3oIPJL3TciZs9FX+cOHNiY9E9l0opL8g7BmLe3T+9ew==", - "dev": true, "engines": { "node": ">=6.9.0" } @@ -209,7 +213,6 @@ "version": "7.16.0", "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.16.0.tgz", "integrity": "sha512-mYZEvshBRHGsIAiyH5PzCFTCfbWfoYbO/jcSdXQSUQu1/pW0xDZAUP7KEc32heqWTAfAHhV9j1vH8Sav7l+JNQ==", - "dev": true, "dependencies": { "@babel/code-frame": "^7.16.0", "@babel/generator": "^7.16.0", @@ -257,7 +260,6 @@ "version": "7.16.0", "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.16.0.tgz", "integrity": "sha512-RR8hUCfRQn9j9RPKEVXo9LiwoxLPYn6hNZlvUOR8tSnaxlD0p0+la00ZP9/SnRt6HchKr+X0fO2r8vrETiJGew==", - "dev": true, "dependencies": { "@babel/types": "^7.16.0", "jsesc": "^2.5.1", @@ -296,7 +298,6 @@ "version": "7.16.3", "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.3.tgz", "integrity": "sha512-vKsoSQAyBmxS35JUOOt+07cLc6Nk/2ljLIHwmq2/NM6hdioUaqEXq/S+nXvbvXbZkNDlWOymPanJGOc4CBjSJA==", - "dev": true, "dependencies": { "@babel/compat-data": "^7.16.0", "@babel/helper-validator-option": "^7.14.5", @@ -381,7 +382,6 @@ "version": "7.16.0", "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.0.tgz", "integrity": "sha512-BZh4mEk1xi2h4HFjWUXRQX5AEx4rvaZxHgax9gcjdLWdkjsY7MKt5p0otjsg5noXw+pB+clMCjw+aEVYADMjog==", - "dev": true, "dependencies": { "@babel/helper-get-function-arity": "^7.16.0", "@babel/template": "^7.16.0", @@ -395,7 +395,6 @@ "version": "7.16.0", "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.0.tgz", "integrity": "sha512-ASCquNcywC1NkYh/z7Cgp3w31YW8aojjYIlNg4VeJiHkqyP4AzIvr4qx7pYDb4/s8YcsZWqqOSxgkvjUz1kpDQ==", - "dev": true, "dependencies": { "@babel/types": "^7.16.0" }, @@ -407,7 +406,6 @@ "version": "7.16.0", "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.0.tgz", "integrity": "sha512-1AZlpazjUR0EQZQv3sgRNfM9mEVWPK3M6vlalczA+EECcPz3XPh6VplbErL5UoMpChhSck5wAJHthlj1bYpcmg==", - "dev": true, "dependencies": { "@babel/types": "^7.16.0" }, @@ -419,7 +417,6 @@ "version": "7.16.0", "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.16.0.tgz", "integrity": "sha512-bsjlBFPuWT6IWhl28EdrQ+gTvSvj5tqVP5Xeftp07SEuz5pLnsXZuDkDD3Rfcxy0IsHmbZ+7B2/9SHzxO0T+sQ==", - "dev": true, "dependencies": { "@babel/types": "^7.16.0" }, @@ -431,7 +428,6 @@ "version": "7.16.0", "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.0.tgz", "integrity": "sha512-kkH7sWzKPq0xt3H1n+ghb4xEMP8k0U7XV3kkB+ZGy69kDk2ySFW1qPi06sjKzFY3t1j6XbJSqr4mF9L7CYVyhg==", - "dev": true, "dependencies": { "@babel/types": "^7.16.0" }, @@ -443,7 +439,6 @@ "version": "7.16.0", "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.16.0.tgz", "integrity": "sha512-My4cr9ATcaBbmaEa8M0dZNA74cfI6gitvUAskgDtAFmAqyFKDSHQo5YstxPbN+lzHl2D9l/YOEFqb2mtUh4gfA==", - "dev": true, "dependencies": { "@babel/helper-module-imports": "^7.16.0", "@babel/helper-replace-supers": "^7.16.0", @@ -462,7 +457,6 @@ "version": "7.16.0", "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.0.tgz", "integrity": "sha512-SuI467Gi2V8fkofm2JPnZzB/SUuXoJA5zXe/xzyPP2M04686RzFKFHPK6HDVN6JvWBIEW8tt9hPR7fXdn2Lgpw==", - "dev": true, "dependencies": { "@babel/types": "^7.16.0" }, @@ -474,7 +468,6 @@ "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz", "integrity": "sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ==", - "dev": true, "engines": { "node": ">=6.9.0" } @@ -497,7 +490,6 @@ "version": "7.16.0", "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.16.0.tgz", "integrity": "sha512-TQxuQfSCdoha7cpRNJvfaYxxxzmbxXw/+6cS7V02eeDYyhxderSoMVALvwupA54/pZcOTtVeJ0xccp1nGWladA==", - "dev": true, "dependencies": { "@babel/helper-member-expression-to-functions": "^7.16.0", "@babel/helper-optimise-call-expression": "^7.16.0", @@ -512,7 +504,6 @@ "version": "7.16.0", "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.16.0.tgz", "integrity": "sha512-o1rjBT/gppAqKsYfUdfHq5Rk03lMQrkPHG1OWzHWpLgVXRH4HnMM9Et9CVdIqwkCQlobnGHEJMsgWP/jE1zUiw==", - "dev": true, "dependencies": { "@babel/types": "^7.16.0" }, @@ -536,7 +527,6 @@ "version": "7.16.0", "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.0.tgz", "integrity": "sha512-0YMMRpuDFNGTHNRiiqJX19GjNXA4H0E8jZ2ibccfSxaCogbm3am5WN/2nQNj0YnQwGWM1J06GOcQ2qnh3+0paw==", - "dev": true, "dependencies": { "@babel/types": "^7.16.0" }, @@ -548,7 +538,6 @@ "version": "7.15.7", "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz", "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==", - "dev": true, "engines": { "node": ">=6.9.0" } @@ -557,7 +546,6 @@ "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz", "integrity": "sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==", - "dev": true, "engines": { "node": ">=6.9.0" } @@ -581,7 +569,6 @@ "version": "7.16.3", "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.16.3.tgz", "integrity": "sha512-Xn8IhDlBPhvYTvgewPKawhADichOsbkZuzN7qz2BusOM0brChsyXMDJvldWaYMMUNiCQdQzNEioXTp3sC8Nt8w==", - "dev": true, "dependencies": { "@babel/template": "^7.16.0", "@babel/traverse": "^7.16.3", @@ -595,7 +582,6 @@ "version": "7.16.0", "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.0.tgz", "integrity": "sha512-t8MH41kUQylBtu2+4IQA3atqevA2lRgqA2wyVB/YiWmsDSuylZZuXOUy9ric30hfzauEFfdsuk/eXTRrGrfd0g==", - "dev": true, "dependencies": { "@babel/helper-validator-identifier": "^7.15.7", "chalk": "^2.0.0", @@ -632,7 +618,6 @@ "version": "7.16.3", "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.16.3.tgz", "integrity": "sha512-dcNwU1O4sx57ClvLBVFbEgx0UZWfd0JQX5X6fxFRCLHelFBGXFfSz6Y0FAq2PEwUqlqLkdVjVr4VASEOuUnLJw==", - "dev": true, "bin": { "parser": "bin/babel-parser.js" }, @@ -999,7 +984,6 @@ "version": "7.16.0", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.16.0.tgz", "integrity": "sha512-8zv2+xiPHwly31RK4RmnEYY5zziuF3O7W2kIDW+07ewWDh6Oi0dRq8kwvulRkFgt6DB97RlKs5c1y068iPlCUg==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" }, @@ -1859,7 +1843,6 @@ "version": "7.16.0", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.0.tgz", "integrity": "sha512-MnZdpFD/ZdYhXwiunMqqgyZyucaYsbL0IrjoGjaVhGilz+x8YB++kRfygSOIj1yOtWKPlx7NBp+9I1RQSgsd5A==", - "dev": true, "dependencies": { "@babel/code-frame": "^7.16.0", "@babel/parser": "^7.16.0", @@ -1873,7 +1856,6 @@ "version": "7.16.3", "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.16.3.tgz", "integrity": "sha512-eolumr1vVMjqevCpwVO99yN/LoGL0EyHiLO5I043aYQvwOJ9eR5UsZSClHVCzfhBduMAsSzgA/6AyqPjNayJag==", - "dev": true, "dependencies": { "@babel/code-frame": "^7.16.0", "@babel/generator": "^7.16.0", @@ -1893,7 +1875,6 @@ "version": "7.16.0", "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.0.tgz", "integrity": "sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg==", - "dev": true, "dependencies": { "@babel/helper-validator-identifier": "^7.15.7", "to-fast-properties": "^2.0.0" @@ -1907,6 +1888,69 @@ "resolved": "https://registry.npmjs.org/@date-io/core/-/core-1.3.13.tgz", "integrity": "sha512-AlEKV7TxjeK+jxWVKcCFrfYAk8spX9aCyiToFIiLPtfQbsjmRGLIhb5VZgptQcJdHtLXo7+m0DuurwFgUToQuA==" }, + "node_modules/@date-io/date-fns": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/@date-io/date-fns/-/date-fns-2.11.0.tgz", + "integrity": "sha512-mPQ71plBeFrArvBSHtjWMHXA89IUbZ6kuo2dsjlRC/1uNOybo91spIb+wTu03NxKTl8ut07s0jJ9svF71afpRg==", + "dependencies": { + "@date-io/core": "^2.11.0" + }, + "peerDependencies": { + "date-fns": "^2.0.0" + }, + "peerDependenciesMeta": { + "date-fns": { + "optional": true + } + } + }, + "node_modules/@date-io/date-fns/node_modules/@date-io/core": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/@date-io/core/-/core-2.11.0.tgz", + "integrity": "sha512-DvPBnNoeuLaoSJZaxgpu54qzRhRKjSYVyQjhznTFrllKuDpm0sDFjHo6lvNLCM/cfMx2gb2PM2zY2kc9C8nmuw==" + }, + "node_modules/@date-io/dayjs": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/@date-io/dayjs/-/dayjs-2.11.0.tgz", + "integrity": "sha512-w67vRK56NZJIKhJM/CrNbfnIcuMvR3ApfxzNZiCZ5w29sxgBDeKuX4M+P7A9r5HXOMGcsOcpgaoTDINNGkdpGQ==", + "dependencies": { + "@date-io/core": "^2.11.0" + }, + "peerDependencies": { + "dayjs": "^1.8.17" + }, + "peerDependenciesMeta": { + "dayjs": { + "optional": true + } + } + }, + "node_modules/@date-io/dayjs/node_modules/@date-io/core": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/@date-io/core/-/core-2.11.0.tgz", + "integrity": "sha512-DvPBnNoeuLaoSJZaxgpu54qzRhRKjSYVyQjhznTFrllKuDpm0sDFjHo6lvNLCM/cfMx2gb2PM2zY2kc9C8nmuw==" + }, + "node_modules/@date-io/luxon": { + "version": "2.11.1", + "resolved": "https://registry.npmjs.org/@date-io/luxon/-/luxon-2.11.1.tgz", + "integrity": "sha512-JUXo01kdPQxLORxqdENrgdUhooKgDUggsNRSdi2BcUhASIY2KGwwWXu8ikVHHGkw+DUF4FOEKGfkQd0RHSvX6g==", + "dependencies": { + "@date-io/core": "^2.11.0" + }, + "peerDependencies": { + "luxon": "^1.21.3 || ^2.x" + }, + "peerDependenciesMeta": { + "luxon": { + "optional": true + } + } + }, + "node_modules/@date-io/luxon/node_modules/@date-io/core": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/@date-io/core/-/core-2.11.0.tgz", + "integrity": "sha512-DvPBnNoeuLaoSJZaxgpu54qzRhRKjSYVyQjhznTFrllKuDpm0sDFjHo6lvNLCM/cfMx2gb2PM2zY2kc9C8nmuw==" + }, "node_modules/@date-io/moment": { "version": "1.3.13", "resolved": "https://registry.npmjs.org/@date-io/moment/-/moment-1.3.13.tgz", @@ -2108,6 +2152,56 @@ "node": ">=10.0.0" } }, + "node_modules/@emotion/babel-plugin": { + "version": "11.7.2", + "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.7.2.tgz", + "integrity": "sha512-6mGSCWi9UzXut/ZAN6lGFu33wGR3SJisNl3c0tvlmb8XChH1b2SUvxvnOh7hvLpqyRdHHU9AiazV3Cwbk5SXKQ==", + "dependencies": { + "@babel/helper-module-imports": "^7.12.13", + "@babel/plugin-syntax-jsx": "^7.12.13", + "@babel/runtime": "^7.13.10", + "@emotion/hash": "^0.8.0", + "@emotion/memoize": "^0.7.5", + "@emotion/serialize": "^1.0.2", + "babel-plugin-macros": "^2.6.1", + "convert-source-map": "^1.5.0", + "escape-string-regexp": "^4.0.0", + "find-root": "^1.1.0", + "source-map": "^0.5.7", + "stylis": "4.0.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@emotion/babel-plugin/node_modules/@emotion/memoize": { + "version": "0.7.5", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.5.tgz", + "integrity": "sha512-igX9a37DR2ZPGYtV6suZ6whr8pTFtyHL3K/oLUotxpSVO2ASaprmAe2Dkq7tBo7CRY7MMDrAa9nuQP9/YG8FxQ==" + }, + "node_modules/@emotion/babel-plugin/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@emotion/cache": { + "version": "11.7.1", + "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.7.1.tgz", + "integrity": "sha512-r65Zy4Iljb8oyjtLeCuBH8Qjiy107dOYC6SJq7g7GV5UCQWMObY4SJDPGFjiiVpPrOJ2hmJOoBiYTC7hwx9E2A==", + "dependencies": { + "@emotion/memoize": "^0.7.4", + "@emotion/sheet": "^1.1.0", + "@emotion/utils": "^1.0.0", + "@emotion/weak-memoize": "^0.2.5", + "stylis": "4.0.13" + } + }, "node_modules/@emotion/hash": { "version": "0.8.0", "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.8.0.tgz", @@ -2125,8 +2219,103 @@ "node_modules/@emotion/memoize": { "version": "0.7.4", "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.4.tgz", - "integrity": "sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==", - "optional": true + "integrity": "sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==" + }, + "node_modules/@emotion/react": { + "version": "11.7.1", + "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.7.1.tgz", + "integrity": "sha512-DV2Xe3yhkF1yT4uAUoJcYL1AmrnO5SVsdfvu+fBuS7IbByDeTVx9+wFmvx9Idzv7/78+9Mgx2Hcmr7Fex3tIyw==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@emotion/cache": "^11.7.1", + "@emotion/serialize": "^1.0.2", + "@emotion/sheet": "^1.1.0", + "@emotion/utils": "^1.0.0", + "@emotion/weak-memoize": "^0.2.5", + "hoist-non-react-statics": "^3.3.1" + }, + "peerDependencies": { + "@babel/core": "^7.0.0", + "react": ">=16.8.0" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + }, + "@types/react": { + "optional": true + } + } + }, + "node_modules/@emotion/serialize": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.0.2.tgz", + "integrity": "sha512-95MgNJ9+/ajxU7QIAruiOAdYNjxZX7G2mhgrtDWswA21VviYIRP1R5QilZ/bDY42xiKsaktP4egJb3QdYQZi1A==", + "dependencies": { + "@emotion/hash": "^0.8.0", + "@emotion/memoize": "^0.7.4", + "@emotion/unitless": "^0.7.5", + "@emotion/utils": "^1.0.0", + "csstype": "^3.0.2" + } + }, + "node_modules/@emotion/serialize/node_modules/csstype": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.10.tgz", + "integrity": "sha512-2u44ZG2OcNUO9HDp/Jl8C07x6pU/eTR3ncV91SiK3dhG9TWvRVsCoJw14Ckx5DgWkzGA3waZWO3d7pgqpUI/XA==" + }, + "node_modules/@emotion/sheet": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.1.0.tgz", + "integrity": "sha512-u0AX4aSo25sMAygCuQTzS+HsImZFuS8llY8O7b9MDRzbJM0kVJlAz6KNDqcG7pOuQZJmj/8X/rAW+66kMnMW+g==" + }, + "node_modules/@emotion/styled": { + "version": "11.6.0", + "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-11.6.0.tgz", + "integrity": "sha512-mxVtVyIOTmCAkFbwIp+nCjTXJNgcz4VWkOYQro87jE2QBTydnkiYusMrRGFtzuruiGK4dDaNORk4gH049iiQuw==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@emotion/babel-plugin": "^11.3.0", + "@emotion/is-prop-valid": "^1.1.1", + "@emotion/serialize": "^1.0.2", + "@emotion/utils": "^1.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0", + "@emotion/react": "^11.0.0-rc.0", + "react": ">=16.8.0" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + }, + "@types/react": { + "optional": true + } + } + }, + "node_modules/@emotion/styled/node_modules/@emotion/is-prop-valid": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.1.1.tgz", + "integrity": "sha512-bW1Tos67CZkOURLc0OalnfxtSXQJMrAMV0jZTVGJUPSOd4qgjF3+tTD5CwJM13PHA8cltGW1WGbbvV9NpvUZPw==", + "dependencies": { + "@emotion/memoize": "^0.7.4" + } + }, + "node_modules/@emotion/unitless": { + "version": "0.7.5", + "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.7.5.tgz", + "integrity": "sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==" + }, + "node_modules/@emotion/utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.0.0.tgz", + "integrity": "sha512-mQC2b3XLDs6QCW+pDQDiyO/EdGZYOygE8s5N5rrzjSI4M3IejPE/JPndCBwRT9z982aqQNi6beWs1UeayrQxxA==" + }, + "node_modules/@emotion/weak-memoize": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.2.5.tgz", + "integrity": "sha512-6U71C2Wp7r5XtFtQzYrW5iKFT67OixrSxjI4MptCHzdSVlgabczzqLe0ZSgnub/5Kp4hSbpDB1tMytZY9pwxxA==" }, "node_modules/@eslint/eslintrc": { "version": "0.3.0", @@ -2806,33 +2995,409 @@ "gl-matrix": "~3.3.0" } }, - "node_modules/@math.gl/geospatial/node_modules/gl-matrix": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/gl-matrix/-/gl-matrix-3.3.0.tgz", - "integrity": "sha512-COb7LDz+SXaHtl/h4LeaFcNdJdAQSDeVqjiIihSXNrkWObZLhDI4hIkZC11Aeqp7bcE72clzB0BnDXr2SmslRA==" + "node_modules/@math.gl/geospatial/node_modules/gl-matrix": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/gl-matrix/-/gl-matrix-3.3.0.tgz", + "integrity": "sha512-COb7LDz+SXaHtl/h4LeaFcNdJdAQSDeVqjiIihSXNrkWObZLhDI4hIkZC11Aeqp7bcE72clzB0BnDXr2SmslRA==" + }, + "node_modules/@math.gl/polygon": { + "version": "3.5.6", + "resolved": "https://registry.npmjs.org/@math.gl/polygon/-/polygon-3.5.6.tgz", + "integrity": "sha512-CUGPmD8Y9elPRsb4+wG0nuElbEYcTK+Azks96M9zleMaOACUDqUY6D4rDtqpyEIeqcun85Aq+7eV/rjVMahWgA==", + "dependencies": { + "@math.gl/core": "3.5.6" + } + }, + "node_modules/@math.gl/web-mercator": { + "version": "3.5.6", + "resolved": "https://registry.npmjs.org/@math.gl/web-mercator/-/web-mercator-3.5.6.tgz", + "integrity": "sha512-siWHLJGp9o8fDEM1t0Rby+JXftl6il0z3927liWGzkHqFftXPHY858ShPy45ThDU8q5lyCftg8aVgrv4nfD+Zw==", + "dependencies": { + "@babel/runtime": "^7.12.0", + "gl-matrix": "~3.3.0" + } + }, + "node_modules/@math.gl/web-mercator/node_modules/gl-matrix": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/gl-matrix/-/gl-matrix-3.3.0.tgz", + "integrity": "sha512-COb7LDz+SXaHtl/h4LeaFcNdJdAQSDeVqjiIihSXNrkWObZLhDI4hIkZC11Aeqp7bcE72clzB0BnDXr2SmslRA==" + }, + "node_modules/@mui/base": { + "version": "5.0.0-alpha.64", + "resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-alpha.64.tgz", + "integrity": "sha512-lqUFbAyYPl3uDaTxGWIUWx9Zin5APv5Rrn/oUcnm/71Isd5dJ94zoGHCTdNy2sxhDRcXRshsdC2dfdwIWxhkZA==", + "dependencies": { + "@babel/runtime": "^7.16.3", + "@emotion/is-prop-valid": "^1.1.1", + "@mui/utils": "^5.2.3", + "@popperjs/core": "^2.4.4", + "clsx": "^1.1.1", + "prop-types": "^15.7.2", + "react-is": "^17.0.2" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui" + }, + "peerDependencies": { + "@types/react": "^16.8.6 || ^17.0.0", + "react": "^17.0.2", + "react-dom": "^17.0.2" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/base/node_modules/@emotion/is-prop-valid": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.1.1.tgz", + "integrity": "sha512-bW1Tos67CZkOURLc0OalnfxtSXQJMrAMV0jZTVGJUPSOd4qgjF3+tTD5CwJM13PHA8cltGW1WGbbvV9NpvUZPw==", + "dependencies": { + "@emotion/memoize": "^0.7.4" + } + }, + "node_modules/@mui/icons-material": { + "version": "5.2.5", + "resolved": "https://registry.npmjs.org/@mui/icons-material/-/icons-material-5.2.5.tgz", + "integrity": "sha512-uQiUz+l0xy+2jExyKyU19MkMAR2F7bQFcsQ5hdqAtsB14Jw2zlmIAD55mV6f0NxKCut7Rx6cA3ZpfzlzAfoK8Q==", + "dependencies": { + "@babel/runtime": "^7.16.3" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui" + }, + "peerDependencies": { + "@mui/material": "^5.0.0", + "@types/react": "^16.8.6 || ^17.0.0", + "react": "^17.0.2" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/lab": { + "version": "5.0.0-alpha.64", + "resolved": "https://registry.npmjs.org/@mui/lab/-/lab-5.0.0-alpha.64.tgz", + "integrity": "sha512-YqTWT4TBHSGyV3dS4/TQctpKh0s4CDgWNrA2UnEnXFAfXmFET2Zm6W06fJ1VZDmJfyCVD8Wq0WsiwVZj4ay+Uw==", + "dependencies": { + "@babel/runtime": "^7.16.3", + "@date-io/date-fns": "^2.11.0", + "@date-io/dayjs": "^2.11.0", + "@date-io/luxon": "^2.11.1", + "@date-io/moment": "^2.11.0", + "@mui/base": "5.0.0-alpha.64", + "@mui/system": "^5.2.8", + "@mui/utils": "^5.2.3", + "clsx": "^1.1.1", + "prop-types": "^15.7.2", + "react-is": "^17.0.2", + "react-transition-group": "^4.4.2", + "rifm": "^0.12.1" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui" + }, + "peerDependencies": { + "@mui/material": "^5.0.0", + "@types/react": "^16.8.6 || ^17.0.0", + "date-fns": "^2.25.0", + "dayjs": "^1.10.7", + "luxon": "^1.28.0 || ^2.0.0", + "moment": "^2.29.1", + "react": "^17.0.2", + "react-dom": "^17.0.2" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "date-fns": { + "optional": true + }, + "dayjs": { + "optional": true + }, + "luxon": { + "optional": true + }, + "moment": { + "optional": true + } + } + }, + "node_modules/@mui/lab/node_modules/@date-io/core": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/@date-io/core/-/core-2.11.0.tgz", + "integrity": "sha512-DvPBnNoeuLaoSJZaxgpu54qzRhRKjSYVyQjhznTFrllKuDpm0sDFjHo6lvNLCM/cfMx2gb2PM2zY2kc9C8nmuw==" + }, + "node_modules/@mui/lab/node_modules/@date-io/moment": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/@date-io/moment/-/moment-2.11.0.tgz", + "integrity": "sha512-QSL+83qezQ9Ty0dtFgAkk6eC0GMl/lgYfDajeVUDB3zVA2A038hzczRLBg29ifnBGhQMPABxuOafgWwhDjlarg==", + "dependencies": { + "@date-io/core": "^2.11.0" + }, + "peerDependencies": { + "moment": "^2.24.0" + }, + "peerDependenciesMeta": { + "moment": { + "optional": true + } + } + }, + "node_modules/@mui/lab/node_modules/rifm": { + "version": "0.12.1", + "resolved": "https://registry.npmjs.org/rifm/-/rifm-0.12.1.tgz", + "integrity": "sha512-OGA1Bitg/dSJtI/c4dh90svzaUPt228kzFsUkJbtA2c964IqEAwWXeL9ZJi86xWv3j5SMqRvGULl7bA6cK0Bvg==", + "peerDependencies": { + "react": ">=16.8" + } + }, + "node_modules/@mui/material": { + "version": "5.2.8", + "resolved": "https://registry.npmjs.org/@mui/material/-/material-5.2.8.tgz", + "integrity": "sha512-GYNYoTDw3C07D1rkB9pTS3xMH3gL0p3kb27SVMrMqP3AWrFxfrS73OnsonJh6Uy/F22pYX6rJxiFOhPq5+i4Eg==", + "dependencies": { + "@babel/runtime": "^7.16.3", + "@mui/base": "5.0.0-alpha.64", + "@mui/system": "^5.2.8", + "@mui/types": "^7.1.0", + "@mui/utils": "^5.2.3", + "@types/react-transition-group": "^4.4.4", + "clsx": "^1.1.1", + "csstype": "^3.0.10", + "hoist-non-react-statics": "^3.3.2", + "prop-types": "^15.7.2", + "react-is": "^17.0.2", + "react-transition-group": "^4.4.2" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui" + }, + "peerDependencies": { + "@emotion/react": "^11.5.0", + "@emotion/styled": "^11.3.0", + "@types/react": "^16.8.6 || ^17.0.0", + "react": "^17.0.2", + "react-dom": "^17.0.2" + }, + "peerDependenciesMeta": { + "@emotion/react": { + "optional": true + }, + "@emotion/styled": { + "optional": true + }, + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/material/node_modules/csstype": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.10.tgz", + "integrity": "sha512-2u44ZG2OcNUO9HDp/Jl8C07x6pU/eTR3ncV91SiK3dhG9TWvRVsCoJw14Ckx5DgWkzGA3waZWO3d7pgqpUI/XA==" + }, + "node_modules/@mui/private-theming": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.2.3.tgz", + "integrity": "sha512-Lc1Cmu8lSsYZiXADi9PBb17Ho82ZbseHQujUFAcp6bCJ5x/d+87JYCIpCBMagPu/isRlFCwbziuXPmz7WOzJPQ==", + "dependencies": { + "@babel/runtime": "^7.16.3", + "@mui/utils": "^5.2.3", + "prop-types": "^15.7.2" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui" + }, + "peerDependencies": { + "@types/react": "^16.8.6 || ^17.0.0", + "react": "^17.0.2" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/styled-engine": { + "version": "5.2.6", + "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.2.6.tgz", + "integrity": "sha512-bqAhli8eGS6v2qxivy2/4K0Ag8o//jsu1G2G6QcieFiT6y7oIF/nd/6Tvw6OSm3roOTifVQWNKwkt1yFWhGS+w==", + "dependencies": { + "@babel/runtime": "^7.16.3", + "@emotion/cache": "^11.7.1", + "prop-types": "^15.7.2" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui" + }, + "peerDependencies": { + "@emotion/react": "^11.4.1", + "@emotion/styled": "^11.3.0", + "react": "^17.0.2" + }, + "peerDependenciesMeta": { + "@emotion/react": { + "optional": true + }, + "@emotion/styled": { + "optional": true + } + } + }, + "node_modules/@mui/styles": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/@mui/styles/-/styles-5.2.3.tgz", + "integrity": "sha512-Art4qjlEI9H2h34mLL8s+CE9nWZWZbuJLbNpievaIM6DGuayz3DYkJHcH5mXJYFPhTNoe9IQYbpyKofjE0YVag==", + "dependencies": { + "@babel/runtime": "^7.16.3", + "@emotion/hash": "^0.8.0", + "@mui/private-theming": "^5.2.3", + "@mui/types": "^7.1.0", + "@mui/utils": "^5.2.3", + "clsx": "^1.1.1", + "csstype": "^3.0.10", + "hoist-non-react-statics": "^3.3.2", + "jss": "^10.8.2", + "jss-plugin-camel-case": "^10.8.2", + "jss-plugin-default-unit": "^10.8.2", + "jss-plugin-global": "^10.8.2", + "jss-plugin-nested": "^10.8.2", + "jss-plugin-props-sort": "^10.8.2", + "jss-plugin-rule-value-function": "^10.8.2", + "jss-plugin-vendor-prefixer": "^10.8.2", + "prop-types": "^15.7.2" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui" + }, + "peerDependencies": { + "@types/react": "^16.8.6 || ^17.0.0", + "react": "^17.0.2" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/styles/node_modules/csstype": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.10.tgz", + "integrity": "sha512-2u44ZG2OcNUO9HDp/Jl8C07x6pU/eTR3ncV91SiK3dhG9TWvRVsCoJw14Ckx5DgWkzGA3waZWO3d7pgqpUI/XA==" + }, + "node_modules/@mui/system": { + "version": "5.2.8", + "resolved": "https://registry.npmjs.org/@mui/system/-/system-5.2.8.tgz", + "integrity": "sha512-tje1HRubQUk+cDJBG5F83X1j0XzVe+qhellKxByrJVOEEDHoSpbc8UW+NCLSuBBHvOikxihuv3SS4VOWOo2/BQ==", + "dependencies": { + "@babel/runtime": "^7.16.3", + "@mui/private-theming": "^5.2.3", + "@mui/styled-engine": "^5.2.6", + "@mui/types": "^7.1.0", + "@mui/utils": "^5.2.3", + "clsx": "^1.1.1", + "csstype": "^3.0.10", + "prop-types": "^15.7.2" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui" + }, + "peerDependencies": { + "@emotion/react": "^11.5.0", + "@emotion/styled": "^11.3.0", + "@types/react": "^16.8.6 || ^17.0.0", + "react": "^17.0.2" + }, + "peerDependenciesMeta": { + "@emotion/react": { + "optional": true + }, + "@emotion/styled": { + "optional": true + }, + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/system/node_modules/csstype": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.10.tgz", + "integrity": "sha512-2u44ZG2OcNUO9HDp/Jl8C07x6pU/eTR3ncV91SiK3dhG9TWvRVsCoJw14Ckx5DgWkzGA3waZWO3d7pgqpUI/XA==" }, - "node_modules/@math.gl/polygon": { - "version": "3.5.6", - "resolved": "https://registry.npmjs.org/@math.gl/polygon/-/polygon-3.5.6.tgz", - "integrity": "sha512-CUGPmD8Y9elPRsb4+wG0nuElbEYcTK+Azks96M9zleMaOACUDqUY6D4rDtqpyEIeqcun85Aq+7eV/rjVMahWgA==", - "dependencies": { - "@math.gl/core": "3.5.6" + "node_modules/@mui/types": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@mui/types/-/types-7.1.0.tgz", + "integrity": "sha512-Hh7ALdq/GjfIwLvqH3XftuY3bcKhupktTm+S6qRIDGOtPtRuq2L21VWzOK4p7kblirK0XgGVH5BLwa6u8z/6QQ==", + "peerDependencies": { + "@types/react": "*" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "node_modules/@math.gl/web-mercator": { - "version": "3.5.6", - "resolved": "https://registry.npmjs.org/@math.gl/web-mercator/-/web-mercator-3.5.6.tgz", - "integrity": "sha512-siWHLJGp9o8fDEM1t0Rby+JXftl6il0z3927liWGzkHqFftXPHY858ShPy45ThDU8q5lyCftg8aVgrv4nfD+Zw==", + "node_modules/@mui/utils": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-5.2.3.tgz", + "integrity": "sha512-sQujlajIS0zQKcGIS6tZR0L1R+ib26B6UtuEn+cZqwKHsPo3feuS+SkdscYBdcCdMbrZs4gj8WIJHl2z6tbSzQ==", "dependencies": { - "@babel/runtime": "^7.12.0", - "gl-matrix": "~3.3.0" + "@babel/runtime": "^7.16.3", + "@types/prop-types": "^15.7.4", + "@types/react-is": "^16.7.1 || ^17.0.0", + "prop-types": "^15.7.2", + "react-is": "^17.0.2" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui" + }, + "peerDependencies": { + "react": "^17.0.2" } }, - "node_modules/@math.gl/web-mercator/node_modules/gl-matrix": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/gl-matrix/-/gl-matrix-3.3.0.tgz", - "integrity": "sha512-COb7LDz+SXaHtl/h4LeaFcNdJdAQSDeVqjiIihSXNrkWObZLhDI4hIkZC11Aeqp7bcE72clzB0BnDXr2SmslRA==" - }, "node_modules/@nicolo-ribaudo/chokidar-2": { "version": "2.1.8-no-fsevents.3", "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/chokidar-2/-/chokidar-2-2.1.8-no-fsevents.3.tgz", @@ -3064,6 +3629,15 @@ "@types/node": "*" } }, + "node_modules/@types/bonjour": { + "version": "3.5.10", + "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.10.tgz", + "integrity": "sha512-p7ienRMiS41Nu2/igbJxxLDWrSZ0WxM8UQgCeO9KhoVF7cOVFkrKsiDr1EsJIla8vV3oEEjGcz11jc5yimhzZw==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, "node_modules/@types/connect": { "version": "3.4.35", "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", @@ -3072,6 +3646,16 @@ "@types/node": "*" } }, + "node_modules/@types/connect-history-api-fallback": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.3.5.tgz", + "integrity": "sha512-h8QJa8xSb1WD4fpKBDcATDNGXghFj6/3GRWG6dhmRcu0RX1Ubasur2Uvx5aeEwlf0MwblEC2bMzzMQntxnw/Cw==", + "dev": true, + "dependencies": { + "@types/express-serve-static-core": "*", + "@types/node": "*" + } + }, "node_modules/@types/d3": { "version": "6.7.5", "resolved": "https://registry.npmjs.org/@types/d3/-/d3-6.7.5.tgz", @@ -3454,6 +4038,11 @@ "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.7.tgz", "integrity": "sha512-QB5D2sqfSjCmTuWcBWyJ+/44bcjO7VbjSbOE0ucoVbAsSNQc4Lt6QkgkVXkTDwkL4z/beecZNDvVX15D4P8Jbw==" }, + "node_modules/@types/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==" + }, "node_modules/@types/polylabel": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/@types/polylabel/-/polylabel-1.0.5.tgz", @@ -3484,6 +4073,14 @@ "csstype": "^3.0.2" } }, + "node_modules/@types/react-is": { + "version": "17.0.3", + "resolved": "https://registry.npmjs.org/@types/react-is/-/react-is-17.0.3.tgz", + "integrity": "sha512-aBTIWg1emtu95bLTLx0cpkxwGW3ueZv71nE2YFBpL8k/z5czEW8yYpOo8Dp+UUAFAtKwNaOsh/ioSeQnWlZcfw==", + "dependencies": { + "@types/react": "*" + } + }, "node_modules/@types/react-redux": { "version": "7.1.20", "resolved": "https://registry.npmjs.org/@types/react-redux/-/react-redux-7.1.20.tgz", @@ -3528,6 +4125,15 @@ "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz", "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==" }, + "node_modules/@types/serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha512-d/Hs3nWDxNL2xAczmOVZNj92YZCS6RGxfBPjKzuu/XirCgXdpKEb88dYNbrYGint6IVWLNP+yonwVAuRC0T2Dg==", + "dev": true, + "dependencies": { + "@types/express": "*" + } + }, "node_modules/@types/serve-static": { "version": "1.13.10", "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.10.tgz", @@ -3537,6 +4143,15 @@ "@types/node": "*" } }, + "node_modules/@types/sockjs": { + "version": "0.3.33", + "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.33.tgz", + "integrity": "sha512-f0KEEe05NvUnat+boPTZ0dgaLZ4SfSouXUgv5noUiefG2ajgKjmETo9ZJyuqsl7dfl2aHlLJUiki6B4ZYldiiw==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, "node_modules/@types/source-list-map": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/@types/source-list-map/-/source-list-map-0.1.2.tgz", @@ -3628,6 +4243,15 @@ "node": ">=0.10.0" } }, + "node_modules/@types/ws": { + "version": "8.2.2", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.2.2.tgz", + "integrity": "sha512-NOn5eIcgWLOo6qW8AcuLZ7G8PycXu0xTxxkS6Q18VWFxgPUSOwV0pBj2a/4viNZVu25i7RIB7GttdkAIUUXOOg==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, "node_modules/@webassemblyjs/ast": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", @@ -4408,6 +5032,16 @@ "object.assign": "^4.1.0" } }, + "node_modules/babel-plugin-macros": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz", + "integrity": "sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg==", + "dependencies": { + "@babel/runtime": "^7.7.2", + "cosmiconfig": "^6.0.0", + "resolve": "^1.12.0" + } + }, "node_modules/babel-plugin-polyfill-corejs2": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.2.3.tgz", @@ -4661,7 +5295,6 @@ "version": "4.17.6", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.17.6.tgz", "integrity": "sha512-uPgz3vyRTlEiCv4ee9KlsKgo2V6qPk7Jsn0KAn2OBqbqKo3iNcPEC1Ti6J4dwnz+aIRfEEEuOzC9IBk8tXUomw==", - "dev": true, "dependencies": { "caniuse-lite": "^1.0.30001274", "electron-to-chromium": "^1.3.886", @@ -4769,7 +5402,6 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true, "engines": { "node": ">=6" } @@ -4788,7 +5420,6 @@ "version": "1.0.30001279", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001279.tgz", "integrity": "sha512-VfEHpzHEXj6/CxggTwSFoZBBYGQfQv9Cf42KPlO79sWXCD1QNKWKsKzFeWL7QpZHJQYAvocqV6Rty1yJMkqWLQ==", - "dev": true, "funding": { "type": "opencollective", "url": "https://opencollective.com/browserslist" @@ -5501,6 +6132,38 @@ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" }, + "node_modules/cosmiconfig": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", + "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", + "dependencies": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.1.0", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.7.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cosmiconfig/node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/crc-32": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.0.tgz", @@ -6256,7 +6919,6 @@ "version": "4.3.2", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", - "dev": true, "dependencies": { "ms": "2.1.2" }, @@ -6657,8 +7319,7 @@ "node_modules/electron-to-chromium": { "version": "1.3.893", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.893.tgz", - "integrity": "sha512-ChtwF7qB03INq1SyMpue08wc6cve+ktj2UC/Y7se9vB+JryfzziJeYwsgb8jLaCA5GMkHCdn5M62PfSMWhifZg==", - "dev": true + "integrity": "sha512-ChtwF7qB03INq1SyMpue08wc6cve+ktj2UC/Y7se9vB+JryfzziJeYwsgb8jLaCA5GMkHCdn5M62PfSMWhifZg==" }, "node_modules/emoji-regex": { "version": "8.0.0", @@ -6729,7 +7390,6 @@ "version": "1.3.2", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, "dependencies": { "is-arrayish": "^0.2.1" } @@ -6866,7 +7526,6 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true, "engines": { "node": ">=6" } @@ -8037,6 +8696,11 @@ "node": ">=4.0.0" } }, + "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": "3.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", @@ -8097,9 +8761,9 @@ "dev": true }, "node_modules/follow-redirects": { - "version": "1.14.5", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.5.tgz", - "integrity": "sha512-wtphSXy7d4/OR+MvIFbCVBDzZ5520qV8XfPklSN5QtxuMUJZ+b0Wnst1e1lCDocfzuCkHqj8k0FpZqO+UIaKNA==", + "version": "1.14.7", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.7.tgz", + "integrity": "sha512-+hbxoLbFMbRKDwohX8GkTataGqO6Jb7jGwpAlwgy2bIz25XtRm7KEzJM76R1WiNT5SwZkX4Y75SwBolkpmE7iQ==", "funding": [ { "type": "individual", @@ -8268,7 +8932,6 @@ "version": "1.0.0-beta.2", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true, "engines": { "node": ">=6.9.0" } @@ -8391,7 +9054,6 @@ "version": "11.12.0", "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true, "engines": { "node": ">=4" } @@ -8446,12 +9108,12 @@ } }, "node_modules/google-p12-pem": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/google-p12-pem/-/google-p12-pem-3.1.2.tgz", - "integrity": "sha512-tjf3IQIt7tWCDsa0ofDQ1qqSCNzahXDxdAGJDbruWqu3eCg5CKLYKN+hi0s6lfvzYZ1GDVr+oDF9OOWlDSdf0A==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/google-p12-pem/-/google-p12-pem-3.1.3.tgz", + "integrity": "sha512-MC0jISvzymxePDVembypNefkAQp+DRP7dBE+zNUPaIjEspIlYg0++OrsNr248V9tPbz6iqtZ7rX1hxWA5B8qBQ==", "dev": true, "dependencies": { - "node-forge": "^0.10.0" + "node-forge": "^1.0.0" }, "bin": { "gp12-pem": "build/src/bin/gp12-pem.js" @@ -9100,7 +9762,6 @@ "version": "3.3.0", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, "dependencies": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" @@ -9343,8 +10004,7 @@ "node_modules/is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", - "dev": true + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" }, "node_modules/is-bigint": { "version": "1.0.4", @@ -9752,7 +10412,6 @@ "version": "2.5.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true, "bin": { "jsesc": "bin/jsesc" }, @@ -9783,6 +10442,11 @@ "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", "dev": true }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" + }, "node_modules/json-schema-ref-parser": { "version": "9.0.9", "resolved": "https://registry.npmjs.org/json-schema-ref-parser/-/json-schema-ref-parser-9.0.9.tgz", @@ -9809,7 +10473,6 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", - "dev": true, "dependencies": { "minimist": "^1.2.5" }, @@ -10057,6 +10720,11 @@ "tiny-inflate": "^1.0.0" } }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" + }, "node_modules/load-json-file": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", @@ -10326,9 +10994,9 @@ } }, "node_modules/memfs": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.3.0.tgz", - "integrity": "sha512-BEE62uMfKOavX3iG7GYX43QJ+hAeeWnwIAuJ/R6q96jaMtiLzhsxHJC8B1L7fK7Pt/vXDRwb3SG/yBpNGDPqzg==", + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.4.1.tgz", + "integrity": "sha512-1c9VPVvW5P7I85c35zAdEr1TD5+F11IToIHIlrVIcflfnzPkJa0ZoYEoEdYDP8KgPFoSZ/opDrUsAoZWym3mtw==", "dev": true, "dependencies": { "fs-monkey": "1.0.3" @@ -10510,8 +11178,7 @@ "node_modules/ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, "node_modules/multer": { "version": "1.4.3", @@ -10658,12 +11325,12 @@ } }, "node_modules/node-forge": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.10.0.tgz", - "integrity": "sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.2.1.tgz", + "integrity": "sha512-Fcvtbb+zBcZXbTTVwqGA5W+MKBj56UjVRevvchv5XrcyXbmNdesfZL37nlcWOfpgHhgmxApw3tQbTr4CqNmX4w==", "dev": true, "engines": { - "node": ">= 6.0.0" + "node": ">= 6.13.0" } }, "node_modules/node-modules-regexp": { @@ -10678,8 +11345,7 @@ "node_modules/node-releases": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.1.tgz", - "integrity": "sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==", - "dev": true + "integrity": "sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==" }, "node_modules/normalize-package-data": { "version": "2.5.0", @@ -11065,7 +11731,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, "dependencies": { "callsites": "^3.0.0" }, @@ -11160,7 +11825,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true, "engines": { "node": ">=8" } @@ -11222,8 +11886,7 @@ "node_modules/picocolors": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" }, "node_modules/picomatch": { "version": "2.3.0", @@ -12584,9 +13247,9 @@ "dev": true }, "node_modules/reselect": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/reselect/-/reselect-4.1.2.tgz", - "integrity": "sha512-wg60ebcPOtxcptIUfrr7Jt3h4BR86cCW3R7y4qt65lnNb4yz4QgrXcbSioVsIOYguyz42+XTHIyJ5TEruzkFgQ==" + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/reselect/-/reselect-4.1.5.tgz", + "integrity": "sha512-uVdlz8J7OO+ASpBYoz1Zypgx0KasCY20H+N8JD13oUMtPvSHQuscrHop4KbXrbsBcdB9Ds7lVK7eRkBIfO43vQ==" }, "node_modules/resize-observer-polyfill": { "version": "1.5.1", @@ -12630,7 +13293,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true, "engines": { "node": ">=4" } @@ -12952,19 +13614,21 @@ "dev": true }, "node_modules/selfsigned": { - "version": "1.10.11", - "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.11.tgz", - "integrity": "sha512-aVmbPOfViZqOZPgRBT0+3u4yZFHpmnIghLMlAcb5/xhp5ZtB/RVnKhz5vl2M32CLXAqR4kha9zfhNg0Lf/sxKA==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.0.0.tgz", + "integrity": "sha512-cUdFiCbKoa1mZ6osuJs2uDHrs0k0oprsKveFiiaBKCNq3SYyb5gs2HxhQyDNLCmL51ZZThqi4YNDpCK6GOP1iQ==", "dev": true, "dependencies": { - "node-forge": "^0.10.0" + "node-forge": "^1.2.0" + }, + "engines": { + "node": ">=10" } }, "node_modules/semver": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, "bin": { "semver": "bin/semver.js" } @@ -13989,9 +14653,9 @@ } }, "node_modules/stylis": { - "version": "4.0.10", - "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.0.10.tgz", - "integrity": "sha512-m3k+dk7QeJw660eIKRRn3xPF6uuvHs/FFzjX3HQ5ove0qYsiygoAhwn5a3IYKaZPo5LrYD0rfVmtv1gNY1uYwg==" + "version": "4.0.13", + "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.0.13.tgz", + "integrity": "sha512-xGPXiFVl4YED9Jh7Euv2V220mriG9u4B2TA6Ybjc1catrstKD2PpIdU3U0RKpkVBC2EhmL/F0sPCr9vrFTNRag==" }, "node_modules/subscribe-event": { "version": "1.1.1", @@ -14417,7 +15081,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", - "dev": true, "engines": { "node": ">=4" } @@ -14649,38 +15312,12 @@ "punycode": "^2.1.0" } }, - "node_modules/url": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", - "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", - "dev": true, - "dependencies": { - "punycode": "1.3.2", - "querystring": "0.2.0" - } - }, "node_modules/url-template": { "version": "2.0.8", "resolved": "https://registry.npmjs.org/url-template/-/url-template-2.0.8.tgz", "integrity": "sha1-/FZaPMy/93MMd19WQflVV5FDnyE=", "dev": true }, - "node_modules/url/node_modules/punycode": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", - "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", - "dev": true - }, - "node_modules/url/node_modules/querystring": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", - "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", - "deprecated": "The querystring API is considered Legacy. new code should use the URLSearchParams API instead.", - "dev": true, - "engines": { - "node": ">=0.4.x" - } - }, "node_modules/use-debounce": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/use-debounce/-/use-debounce-7.0.1.tgz", @@ -15050,16 +15687,16 @@ } }, "node_modules/webpack-dev-middleware": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.2.1.tgz", - "integrity": "sha512-Kx1X+36Rn9JaZcQMrJ7qN3PMAuKmEDD9ZISjUj3Cgq4A6PtwYsC4mpaKotSRYH3iOF6HsUa8viHKS59FlyVifQ==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.0.tgz", + "integrity": "sha512-MouJz+rXAm9B1OTOYaJnn6rtD/lWZPy2ufQCH3BPs8Rloh/Du6Jze4p7AeLYHkVi0giJnYLaSGDC7S+GM9arhg==", "dev": true, "dependencies": { "colorette": "^2.0.10", "memfs": "^3.2.2", "mime-types": "^2.1.31", "range-parser": "^1.2.1", - "schema-utils": "^3.1.0" + "schema-utils": "^4.0.0" }, "engines": { "node": ">= 12.13.0" @@ -15072,18 +15709,53 @@ "webpack": "^4.0.0 || ^5.0.0" } }, + "node_modules/webpack-dev-middleware/node_modules/ajv": { + "version": "8.9.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.9.0.tgz", + "integrity": "sha512-qOKJyNj/h+OWx7s5DePL6Zu1KeM9jPZhwBqs+7DzP6bGOvqzVCSf0xueYmVuaC/oQ/VtS2zLMLHdQFbkka+XDQ==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/webpack-dev-middleware/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/webpack-dev-middleware/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, "node_modules/webpack-dev-middleware/node_modules/schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", + "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", "dev": true, "dependencies": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" + "@types/json-schema": "^7.0.9", + "ajv": "^8.8.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.0.0" }, "engines": { - "node": ">= 10.13.0" + "node": ">= 12.13.0" }, "funding": { "type": "opencollective", @@ -15091,11 +15763,16 @@ } }, "node_modules/webpack-dev-server": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.6.0.tgz", - "integrity": "sha512-oojcBIKvx3Ya7qs1/AVWHDgmP1Xml8rGsEBnSobxU/UJSX1xP1GPM3MwsAnDzvqcVmVki8tV7lbcsjEjk0PtYg==", + "version": "4.7.3", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.7.3.tgz", + "integrity": "sha512-mlxq2AsIw2ag016nixkzUkdyOE8ST2GTy34uKSABp1c4nhjZvH90D5ZRR+UOLSsG4Z3TFahAi72a3ymRtfRm+Q==", "dev": true, "dependencies": { + "@types/bonjour": "^3.5.9", + "@types/connect-history-api-fallback": "^1.3.5", + "@types/serve-index": "^1.9.1", + "@types/sockjs": "^0.3.33", + "@types/ws": "^8.2.2", "ansi-html-community": "^0.0.8", "bonjour": "^3.5.0", "chokidar": "^3.5.2", @@ -15113,13 +15790,12 @@ "p-retry": "^4.5.0", "portfinder": "^1.0.28", "schema-utils": "^4.0.0", - "selfsigned": "^1.10.11", + "selfsigned": "^2.0.0", "serve-index": "^1.9.1", "sockjs": "^0.3.21", "spdy": "^4.0.2", "strip-ansi": "^7.0.0", - "url": "^0.11.0", - "webpack-dev-middleware": "^5.2.1", + "webpack-dev-middleware": "^5.3.0", "ws": "^8.1.0" }, "bin": { @@ -15607,6 +16283,14 @@ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "dev": true }, + "node_modules/yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "engines": { + "node": ">= 6" + } + }, "node_modules/yargs": { "version": "16.2.0", "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", @@ -15721,7 +16405,6 @@ "version": "7.16.0", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.0.tgz", "integrity": "sha512-IF4EOMEV+bfYwOmNxGzSnjR2EmQod7f1UXOpZM3l4i4o4QNwzjtJAu/HxdjHq0aYBvdqMuQEY1eg0nqW9ZPORA==", - "dev": true, "requires": { "@babel/highlight": "^7.16.0" } @@ -15729,14 +16412,12 @@ "@babel/compat-data": { "version": "7.16.0", "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.16.0.tgz", - "integrity": "sha512-DGjt2QZse5SGd9nfOSqO4WLJ8NN/oHkijbXbPrxuoJO3oIPJL3TciZs9FX+cOHNiY9E9l0opL8g7BmLe3T+9ew==", - "dev": true + "integrity": "sha512-DGjt2QZse5SGd9nfOSqO4WLJ8NN/oHkijbXbPrxuoJO3oIPJL3TciZs9FX+cOHNiY9E9l0opL8g7BmLe3T+9ew==" }, "@babel/core": { "version": "7.16.0", "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.16.0.tgz", "integrity": "sha512-mYZEvshBRHGsIAiyH5PzCFTCfbWfoYbO/jcSdXQSUQu1/pW0xDZAUP7KEc32heqWTAfAHhV9j1vH8Sav7l+JNQ==", - "dev": true, "requires": { "@babel/code-frame": "^7.16.0", "@babel/generator": "^7.16.0", @@ -15770,7 +16451,6 @@ "version": "7.16.0", "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.16.0.tgz", "integrity": "sha512-RR8hUCfRQn9j9RPKEVXo9LiwoxLPYn6hNZlvUOR8tSnaxlD0p0+la00ZP9/SnRt6HchKr+X0fO2r8vrETiJGew==", - "dev": true, "requires": { "@babel/types": "^7.16.0", "jsesc": "^2.5.1", @@ -15800,7 +16480,6 @@ "version": "7.16.3", "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.3.tgz", "integrity": "sha512-vKsoSQAyBmxS35JUOOt+07cLc6Nk/2ljLIHwmq2/NM6hdioUaqEXq/S+nXvbvXbZkNDlWOymPanJGOc4CBjSJA==", - "dev": true, "requires": { "@babel/compat-data": "^7.16.0", "@babel/helper-validator-option": "^7.14.5", @@ -15861,7 +16540,6 @@ "version": "7.16.0", "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.0.tgz", "integrity": "sha512-BZh4mEk1xi2h4HFjWUXRQX5AEx4rvaZxHgax9gcjdLWdkjsY7MKt5p0otjsg5noXw+pB+clMCjw+aEVYADMjog==", - "dev": true, "requires": { "@babel/helper-get-function-arity": "^7.16.0", "@babel/template": "^7.16.0", @@ -15872,7 +16550,6 @@ "version": "7.16.0", "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.0.tgz", "integrity": "sha512-ASCquNcywC1NkYh/z7Cgp3w31YW8aojjYIlNg4VeJiHkqyP4AzIvr4qx7pYDb4/s8YcsZWqqOSxgkvjUz1kpDQ==", - "dev": true, "requires": { "@babel/types": "^7.16.0" } @@ -15881,7 +16558,6 @@ "version": "7.16.0", "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.0.tgz", "integrity": "sha512-1AZlpazjUR0EQZQv3sgRNfM9mEVWPK3M6vlalczA+EECcPz3XPh6VplbErL5UoMpChhSck5wAJHthlj1bYpcmg==", - "dev": true, "requires": { "@babel/types": "^7.16.0" } @@ -15890,7 +16566,6 @@ "version": "7.16.0", "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.16.0.tgz", "integrity": "sha512-bsjlBFPuWT6IWhl28EdrQ+gTvSvj5tqVP5Xeftp07SEuz5pLnsXZuDkDD3Rfcxy0IsHmbZ+7B2/9SHzxO0T+sQ==", - "dev": true, "requires": { "@babel/types": "^7.16.0" } @@ -15899,7 +16574,6 @@ "version": "7.16.0", "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.0.tgz", "integrity": "sha512-kkH7sWzKPq0xt3H1n+ghb4xEMP8k0U7XV3kkB+ZGy69kDk2ySFW1qPi06sjKzFY3t1j6XbJSqr4mF9L7CYVyhg==", - "dev": true, "requires": { "@babel/types": "^7.16.0" } @@ -15908,7 +16582,6 @@ "version": "7.16.0", "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.16.0.tgz", "integrity": "sha512-My4cr9ATcaBbmaEa8M0dZNA74cfI6gitvUAskgDtAFmAqyFKDSHQo5YstxPbN+lzHl2D9l/YOEFqb2mtUh4gfA==", - "dev": true, "requires": { "@babel/helper-module-imports": "^7.16.0", "@babel/helper-replace-supers": "^7.16.0", @@ -15924,7 +16597,6 @@ "version": "7.16.0", "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.0.tgz", "integrity": "sha512-SuI467Gi2V8fkofm2JPnZzB/SUuXoJA5zXe/xzyPP2M04686RzFKFHPK6HDVN6JvWBIEW8tt9hPR7fXdn2Lgpw==", - "dev": true, "requires": { "@babel/types": "^7.16.0" } @@ -15932,8 +16604,7 @@ "@babel/helper-plugin-utils": { "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz", - "integrity": "sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ==", - "dev": true + "integrity": "sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ==" }, "@babel/helper-remap-async-to-generator": { "version": "7.16.0", @@ -15950,7 +16621,6 @@ "version": "7.16.0", "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.16.0.tgz", "integrity": "sha512-TQxuQfSCdoha7cpRNJvfaYxxxzmbxXw/+6cS7V02eeDYyhxderSoMVALvwupA54/pZcOTtVeJ0xccp1nGWladA==", - "dev": true, "requires": { "@babel/helper-member-expression-to-functions": "^7.16.0", "@babel/helper-optimise-call-expression": "^7.16.0", @@ -15962,7 +16632,6 @@ "version": "7.16.0", "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.16.0.tgz", "integrity": "sha512-o1rjBT/gppAqKsYfUdfHq5Rk03lMQrkPHG1OWzHWpLgVXRH4HnMM9Et9CVdIqwkCQlobnGHEJMsgWP/jE1zUiw==", - "dev": true, "requires": { "@babel/types": "^7.16.0" } @@ -15980,7 +16649,6 @@ "version": "7.16.0", "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.0.tgz", "integrity": "sha512-0YMMRpuDFNGTHNRiiqJX19GjNXA4H0E8jZ2ibccfSxaCogbm3am5WN/2nQNj0YnQwGWM1J06GOcQ2qnh3+0paw==", - "dev": true, "requires": { "@babel/types": "^7.16.0" } @@ -15988,14 +16656,12 @@ "@babel/helper-validator-identifier": { "version": "7.15.7", "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz", - "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==", - "dev": true + "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==" }, "@babel/helper-validator-option": { "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz", - "integrity": "sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==", - "dev": true + "integrity": "sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==" }, "@babel/helper-wrap-function": { "version": "7.16.0", @@ -16013,7 +16679,6 @@ "version": "7.16.3", "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.16.3.tgz", "integrity": "sha512-Xn8IhDlBPhvYTvgewPKawhADichOsbkZuzN7qz2BusOM0brChsyXMDJvldWaYMMUNiCQdQzNEioXTp3sC8Nt8w==", - "dev": true, "requires": { "@babel/template": "^7.16.0", "@babel/traverse": "^7.16.3", @@ -16024,7 +16689,6 @@ "version": "7.16.0", "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.0.tgz", "integrity": "sha512-t8MH41kUQylBtu2+4IQA3atqevA2lRgqA2wyVB/YiWmsDSuylZZuXOUy9ric30hfzauEFfdsuk/eXTRrGrfd0g==", - "dev": true, "requires": { "@babel/helper-validator-identifier": "^7.15.7", "chalk": "^2.0.0", @@ -16048,8 +16712,7 @@ "@babel/parser": { "version": "7.16.3", "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.16.3.tgz", - "integrity": "sha512-dcNwU1O4sx57ClvLBVFbEgx0UZWfd0JQX5X6fxFRCLHelFBGXFfSz6Y0FAq2PEwUqlqLkdVjVr4VASEOuUnLJw==", - "dev": true + "integrity": "sha512-dcNwU1O4sx57ClvLBVFbEgx0UZWfd0JQX5X6fxFRCLHelFBGXFfSz6Y0FAq2PEwUqlqLkdVjVr4VASEOuUnLJw==" }, "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { "version": "7.16.2", @@ -16287,7 +16950,6 @@ "version": "7.16.0", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.16.0.tgz", "integrity": "sha512-8zv2+xiPHwly31RK4RmnEYY5zziuF3O7W2kIDW+07ewWDh6Oi0dRq8kwvulRkFgt6DB97RlKs5c1y068iPlCUg==", - "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5" } @@ -16865,7 +17527,6 @@ "version": "7.16.0", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.0.tgz", "integrity": "sha512-MnZdpFD/ZdYhXwiunMqqgyZyucaYsbL0IrjoGjaVhGilz+x8YB++kRfygSOIj1yOtWKPlx7NBp+9I1RQSgsd5A==", - "dev": true, "requires": { "@babel/code-frame": "^7.16.0", "@babel/parser": "^7.16.0", @@ -16876,7 +17537,6 @@ "version": "7.16.3", "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.16.3.tgz", "integrity": "sha512-eolumr1vVMjqevCpwVO99yN/LoGL0EyHiLO5I043aYQvwOJ9eR5UsZSClHVCzfhBduMAsSzgA/6AyqPjNayJag==", - "dev": true, "requires": { "@babel/code-frame": "^7.16.0", "@babel/generator": "^7.16.0", @@ -16893,16 +17553,60 @@ "version": "7.16.0", "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.0.tgz", "integrity": "sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg==", - "dev": true, "requires": { "@babel/helper-validator-identifier": "^7.15.7", "to-fast-properties": "^2.0.0" } }, - "@date-io/core": { - "version": "1.3.13", - "resolved": "https://registry.npmjs.org/@date-io/core/-/core-1.3.13.tgz", - "integrity": "sha512-AlEKV7TxjeK+jxWVKcCFrfYAk8spX9aCyiToFIiLPtfQbsjmRGLIhb5VZgptQcJdHtLXo7+m0DuurwFgUToQuA==" + "@date-io/core": { + "version": "1.3.13", + "resolved": "https://registry.npmjs.org/@date-io/core/-/core-1.3.13.tgz", + "integrity": "sha512-AlEKV7TxjeK+jxWVKcCFrfYAk8spX9aCyiToFIiLPtfQbsjmRGLIhb5VZgptQcJdHtLXo7+m0DuurwFgUToQuA==" + }, + "@date-io/date-fns": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/@date-io/date-fns/-/date-fns-2.11.0.tgz", + "integrity": "sha512-mPQ71plBeFrArvBSHtjWMHXA89IUbZ6kuo2dsjlRC/1uNOybo91spIb+wTu03NxKTl8ut07s0jJ9svF71afpRg==", + "requires": { + "@date-io/core": "^2.11.0" + }, + "dependencies": { + "@date-io/core": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/@date-io/core/-/core-2.11.0.tgz", + "integrity": "sha512-DvPBnNoeuLaoSJZaxgpu54qzRhRKjSYVyQjhznTFrllKuDpm0sDFjHo6lvNLCM/cfMx2gb2PM2zY2kc9C8nmuw==" + } + } + }, + "@date-io/dayjs": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/@date-io/dayjs/-/dayjs-2.11.0.tgz", + "integrity": "sha512-w67vRK56NZJIKhJM/CrNbfnIcuMvR3ApfxzNZiCZ5w29sxgBDeKuX4M+P7A9r5HXOMGcsOcpgaoTDINNGkdpGQ==", + "requires": { + "@date-io/core": "^2.11.0" + }, + "dependencies": { + "@date-io/core": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/@date-io/core/-/core-2.11.0.tgz", + "integrity": "sha512-DvPBnNoeuLaoSJZaxgpu54qzRhRKjSYVyQjhznTFrllKuDpm0sDFjHo6lvNLCM/cfMx2gb2PM2zY2kc9C8nmuw==" + } + } + }, + "@date-io/luxon": { + "version": "2.11.1", + "resolved": "https://registry.npmjs.org/@date-io/luxon/-/luxon-2.11.1.tgz", + "integrity": "sha512-JUXo01kdPQxLORxqdENrgdUhooKgDUggsNRSdi2BcUhASIY2KGwwWXu8ikVHHGkw+DUF4FOEKGfkQd0RHSvX6g==", + "requires": { + "@date-io/core": "^2.11.0" + }, + "dependencies": { + "@date-io/core": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/@date-io/core/-/core-2.11.0.tgz", + "integrity": "sha512-DvPBnNoeuLaoSJZaxgpu54qzRhRKjSYVyQjhznTFrllKuDpm0sDFjHo6lvNLCM/cfMx2gb2PM2zY2kc9C8nmuw==" + } + } }, "@date-io/moment": { "version": "1.3.13", @@ -17050,6 +17754,49 @@ "integrity": "sha512-6nFkfkmSeV/rqSaS4oWHgmpnYw194f6hmWF5is6b0J1naJZoiD0NTc9AiUwPHvWsowkjuHErCZT1wa0jg+BLIA==", "dev": true }, + "@emotion/babel-plugin": { + "version": "11.7.2", + "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.7.2.tgz", + "integrity": "sha512-6mGSCWi9UzXut/ZAN6lGFu33wGR3SJisNl3c0tvlmb8XChH1b2SUvxvnOh7hvLpqyRdHHU9AiazV3Cwbk5SXKQ==", + "requires": { + "@babel/helper-module-imports": "^7.12.13", + "@babel/plugin-syntax-jsx": "^7.12.13", + "@babel/runtime": "^7.13.10", + "@emotion/hash": "^0.8.0", + "@emotion/memoize": "^0.7.5", + "@emotion/serialize": "^1.0.2", + "babel-plugin-macros": "^2.6.1", + "convert-source-map": "^1.5.0", + "escape-string-regexp": "^4.0.0", + "find-root": "^1.1.0", + "source-map": "^0.5.7", + "stylis": "4.0.13" + }, + "dependencies": { + "@emotion/memoize": { + "version": "0.7.5", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.5.tgz", + "integrity": "sha512-igX9a37DR2ZPGYtV6suZ6whr8pTFtyHL3K/oLUotxpSVO2ASaprmAe2Dkq7tBo7CRY7MMDrAa9nuQP9/YG8FxQ==" + }, + "escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==" + } + } + }, + "@emotion/cache": { + "version": "11.7.1", + "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.7.1.tgz", + "integrity": "sha512-r65Zy4Iljb8oyjtLeCuBH8Qjiy107dOYC6SJq7g7GV5UCQWMObY4SJDPGFjiiVpPrOJ2hmJOoBiYTC7hwx9E2A==", + "requires": { + "@emotion/memoize": "^0.7.4", + "@emotion/sheet": "^1.1.0", + "@emotion/utils": "^1.0.0", + "@emotion/weak-memoize": "^0.2.5", + "stylis": "4.0.13" + } + }, "@emotion/hash": { "version": "0.8.0", "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.8.0.tgz", @@ -17067,8 +17814,82 @@ "@emotion/memoize": { "version": "0.7.4", "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.4.tgz", - "integrity": "sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==", - "optional": true + "integrity": "sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==" + }, + "@emotion/react": { + "version": "11.7.1", + "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.7.1.tgz", + "integrity": "sha512-DV2Xe3yhkF1yT4uAUoJcYL1AmrnO5SVsdfvu+fBuS7IbByDeTVx9+wFmvx9Idzv7/78+9Mgx2Hcmr7Fex3tIyw==", + "requires": { + "@babel/runtime": "^7.13.10", + "@emotion/cache": "^11.7.1", + "@emotion/serialize": "^1.0.2", + "@emotion/sheet": "^1.1.0", + "@emotion/utils": "^1.0.0", + "@emotion/weak-memoize": "^0.2.5", + "hoist-non-react-statics": "^3.3.1" + } + }, + "@emotion/serialize": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.0.2.tgz", + "integrity": "sha512-95MgNJ9+/ajxU7QIAruiOAdYNjxZX7G2mhgrtDWswA21VviYIRP1R5QilZ/bDY42xiKsaktP4egJb3QdYQZi1A==", + "requires": { + "@emotion/hash": "^0.8.0", + "@emotion/memoize": "^0.7.4", + "@emotion/unitless": "^0.7.5", + "@emotion/utils": "^1.0.0", + "csstype": "^3.0.2" + }, + "dependencies": { + "csstype": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.10.tgz", + "integrity": "sha512-2u44ZG2OcNUO9HDp/Jl8C07x6pU/eTR3ncV91SiK3dhG9TWvRVsCoJw14Ckx5DgWkzGA3waZWO3d7pgqpUI/XA==" + } + } + }, + "@emotion/sheet": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.1.0.tgz", + "integrity": "sha512-u0AX4aSo25sMAygCuQTzS+HsImZFuS8llY8O7b9MDRzbJM0kVJlAz6KNDqcG7pOuQZJmj/8X/rAW+66kMnMW+g==" + }, + "@emotion/styled": { + "version": "11.6.0", + "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-11.6.0.tgz", + "integrity": "sha512-mxVtVyIOTmCAkFbwIp+nCjTXJNgcz4VWkOYQro87jE2QBTydnkiYusMrRGFtzuruiGK4dDaNORk4gH049iiQuw==", + "requires": { + "@babel/runtime": "^7.13.10", + "@emotion/babel-plugin": "^11.3.0", + "@emotion/is-prop-valid": "^1.1.1", + "@emotion/serialize": "^1.0.2", + "@emotion/utils": "^1.0.0" + }, + "dependencies": { + "@emotion/is-prop-valid": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.1.1.tgz", + "integrity": "sha512-bW1Tos67CZkOURLc0OalnfxtSXQJMrAMV0jZTVGJUPSOd4qgjF3+tTD5CwJM13PHA8cltGW1WGbbvV9NpvUZPw==", + "requires": { + "@emotion/memoize": "^0.7.4" + } + } + } + }, + "@emotion/unitless": { + "version": "0.7.5", + "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.7.5.tgz", + "integrity": "sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==" + }, + "@emotion/utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.0.0.tgz", + "integrity": "sha512-mQC2b3XLDs6QCW+pDQDiyO/EdGZYOygE8s5N5rrzjSI4M3IejPE/JPndCBwRT9z982aqQNi6beWs1UeayrQxxA==" + }, + "@emotion/weak-memoize": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.2.5.tgz", + "integrity": "sha512-6U71C2Wp7r5XtFtQzYrW5iKFT67OixrSxjI4MptCHzdSVlgabczzqLe0ZSgnub/5Kp4hSbpDB1tMytZY9pwxxA==" }, "@eslint/eslintrc": { "version": "0.3.0", @@ -17650,6 +18471,196 @@ } } }, + "@mui/base": { + "version": "5.0.0-alpha.64", + "resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-alpha.64.tgz", + "integrity": "sha512-lqUFbAyYPl3uDaTxGWIUWx9Zin5APv5Rrn/oUcnm/71Isd5dJ94zoGHCTdNy2sxhDRcXRshsdC2dfdwIWxhkZA==", + "requires": { + "@babel/runtime": "^7.16.3", + "@emotion/is-prop-valid": "^1.1.1", + "@mui/utils": "^5.2.3", + "@popperjs/core": "^2.4.4", + "clsx": "^1.1.1", + "prop-types": "^15.7.2", + "react-is": "^17.0.2" + }, + "dependencies": { + "@emotion/is-prop-valid": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.1.1.tgz", + "integrity": "sha512-bW1Tos67CZkOURLc0OalnfxtSXQJMrAMV0jZTVGJUPSOd4qgjF3+tTD5CwJM13PHA8cltGW1WGbbvV9NpvUZPw==", + "requires": { + "@emotion/memoize": "^0.7.4" + } + } + } + }, + "@mui/icons-material": { + "version": "5.2.5", + "resolved": "https://registry.npmjs.org/@mui/icons-material/-/icons-material-5.2.5.tgz", + "integrity": "sha512-uQiUz+l0xy+2jExyKyU19MkMAR2F7bQFcsQ5hdqAtsB14Jw2zlmIAD55mV6f0NxKCut7Rx6cA3ZpfzlzAfoK8Q==", + "requires": { + "@babel/runtime": "^7.16.3" + } + }, + "@mui/lab": { + "version": "5.0.0-alpha.64", + "resolved": "https://registry.npmjs.org/@mui/lab/-/lab-5.0.0-alpha.64.tgz", + "integrity": "sha512-YqTWT4TBHSGyV3dS4/TQctpKh0s4CDgWNrA2UnEnXFAfXmFET2Zm6W06fJ1VZDmJfyCVD8Wq0WsiwVZj4ay+Uw==", + "requires": { + "@babel/runtime": "^7.16.3", + "@date-io/date-fns": "^2.11.0", + "@date-io/dayjs": "^2.11.0", + "@date-io/luxon": "^2.11.1", + "@date-io/moment": "^2.11.0", + "@mui/base": "5.0.0-alpha.64", + "@mui/system": "^5.2.8", + "@mui/utils": "^5.2.3", + "clsx": "^1.1.1", + "prop-types": "^15.7.2", + "react-is": "^17.0.2", + "react-transition-group": "^4.4.2", + "rifm": "^0.12.1" + }, + "dependencies": { + "@date-io/core": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/@date-io/core/-/core-2.11.0.tgz", + "integrity": "sha512-DvPBnNoeuLaoSJZaxgpu54qzRhRKjSYVyQjhznTFrllKuDpm0sDFjHo6lvNLCM/cfMx2gb2PM2zY2kc9C8nmuw==" + }, + "@date-io/moment": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/@date-io/moment/-/moment-2.11.0.tgz", + "integrity": "sha512-QSL+83qezQ9Ty0dtFgAkk6eC0GMl/lgYfDajeVUDB3zVA2A038hzczRLBg29ifnBGhQMPABxuOafgWwhDjlarg==", + "requires": { + "@date-io/core": "^2.11.0" + } + }, + "rifm": { + "version": "0.12.1", + "resolved": "https://registry.npmjs.org/rifm/-/rifm-0.12.1.tgz", + "integrity": "sha512-OGA1Bitg/dSJtI/c4dh90svzaUPt228kzFsUkJbtA2c964IqEAwWXeL9ZJi86xWv3j5SMqRvGULl7bA6cK0Bvg==", + "requires": {} + } + } + }, + "@mui/material": { + "version": "5.2.8", + "resolved": "https://registry.npmjs.org/@mui/material/-/material-5.2.8.tgz", + "integrity": "sha512-GYNYoTDw3C07D1rkB9pTS3xMH3gL0p3kb27SVMrMqP3AWrFxfrS73OnsonJh6Uy/F22pYX6rJxiFOhPq5+i4Eg==", + "requires": { + "@babel/runtime": "^7.16.3", + "@mui/base": "5.0.0-alpha.64", + "@mui/system": "^5.2.8", + "@mui/types": "^7.1.0", + "@mui/utils": "^5.2.3", + "@types/react-transition-group": "^4.4.4", + "clsx": "^1.1.1", + "csstype": "^3.0.10", + "hoist-non-react-statics": "^3.3.2", + "prop-types": "^15.7.2", + "react-is": "^17.0.2", + "react-transition-group": "^4.4.2" + }, + "dependencies": { + "csstype": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.10.tgz", + "integrity": "sha512-2u44ZG2OcNUO9HDp/Jl8C07x6pU/eTR3ncV91SiK3dhG9TWvRVsCoJw14Ckx5DgWkzGA3waZWO3d7pgqpUI/XA==" + } + } + }, + "@mui/private-theming": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.2.3.tgz", + "integrity": "sha512-Lc1Cmu8lSsYZiXADi9PBb17Ho82ZbseHQujUFAcp6bCJ5x/d+87JYCIpCBMagPu/isRlFCwbziuXPmz7WOzJPQ==", + "requires": { + "@babel/runtime": "^7.16.3", + "@mui/utils": "^5.2.3", + "prop-types": "^15.7.2" + } + }, + "@mui/styled-engine": { + "version": "5.2.6", + "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.2.6.tgz", + "integrity": "sha512-bqAhli8eGS6v2qxivy2/4K0Ag8o//jsu1G2G6QcieFiT6y7oIF/nd/6Tvw6OSm3roOTifVQWNKwkt1yFWhGS+w==", + "requires": { + "@babel/runtime": "^7.16.3", + "@emotion/cache": "^11.7.1", + "prop-types": "^15.7.2" + } + }, + "@mui/styles": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/@mui/styles/-/styles-5.2.3.tgz", + "integrity": "sha512-Art4qjlEI9H2h34mLL8s+CE9nWZWZbuJLbNpievaIM6DGuayz3DYkJHcH5mXJYFPhTNoe9IQYbpyKofjE0YVag==", + "requires": { + "@babel/runtime": "^7.16.3", + "@emotion/hash": "^0.8.0", + "@mui/private-theming": "^5.2.3", + "@mui/types": "^7.1.0", + "@mui/utils": "^5.2.3", + "clsx": "^1.1.1", + "csstype": "^3.0.10", + "hoist-non-react-statics": "^3.3.2", + "jss": "^10.8.2", + "jss-plugin-camel-case": "^10.8.2", + "jss-plugin-default-unit": "^10.8.2", + "jss-plugin-global": "^10.8.2", + "jss-plugin-nested": "^10.8.2", + "jss-plugin-props-sort": "^10.8.2", + "jss-plugin-rule-value-function": "^10.8.2", + "jss-plugin-vendor-prefixer": "^10.8.2", + "prop-types": "^15.7.2" + }, + "dependencies": { + "csstype": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.10.tgz", + "integrity": "sha512-2u44ZG2OcNUO9HDp/Jl8C07x6pU/eTR3ncV91SiK3dhG9TWvRVsCoJw14Ckx5DgWkzGA3waZWO3d7pgqpUI/XA==" + } + } + }, + "@mui/system": { + "version": "5.2.8", + "resolved": "https://registry.npmjs.org/@mui/system/-/system-5.2.8.tgz", + "integrity": "sha512-tje1HRubQUk+cDJBG5F83X1j0XzVe+qhellKxByrJVOEEDHoSpbc8UW+NCLSuBBHvOikxihuv3SS4VOWOo2/BQ==", + "requires": { + "@babel/runtime": "^7.16.3", + "@mui/private-theming": "^5.2.3", + "@mui/styled-engine": "^5.2.6", + "@mui/types": "^7.1.0", + "@mui/utils": "^5.2.3", + "clsx": "^1.1.1", + "csstype": "^3.0.10", + "prop-types": "^15.7.2" + }, + "dependencies": { + "csstype": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.10.tgz", + "integrity": "sha512-2u44ZG2OcNUO9HDp/Jl8C07x6pU/eTR3ncV91SiK3dhG9TWvRVsCoJw14Ckx5DgWkzGA3waZWO3d7pgqpUI/XA==" + } + } + }, + "@mui/types": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@mui/types/-/types-7.1.0.tgz", + "integrity": "sha512-Hh7ALdq/GjfIwLvqH3XftuY3bcKhupktTm+S6qRIDGOtPtRuq2L21VWzOK4p7kblirK0XgGVH5BLwa6u8z/6QQ==", + "requires": {} + }, + "@mui/utils": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-5.2.3.tgz", + "integrity": "sha512-sQujlajIS0zQKcGIS6tZR0L1R+ib26B6UtuEn+cZqwKHsPo3feuS+SkdscYBdcCdMbrZs4gj8WIJHl2z6tbSzQ==", + "requires": { + "@babel/runtime": "^7.16.3", + "@types/prop-types": "^15.7.4", + "@types/react-is": "^16.7.1 || ^17.0.0", + "prop-types": "^15.7.2", + "react-is": "^17.0.2" + } + }, "@nicolo-ribaudo/chokidar-2": { "version": "2.1.8-no-fsevents.3", "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/chokidar-2/-/chokidar-2-2.1.8-no-fsevents.3.tgz", @@ -17836,6 +18847,15 @@ "@types/node": "*" } }, + "@types/bonjour": { + "version": "3.5.10", + "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.10.tgz", + "integrity": "sha512-p7ienRMiS41Nu2/igbJxxLDWrSZ0WxM8UQgCeO9KhoVF7cOVFkrKsiDr1EsJIla8vV3oEEjGcz11jc5yimhzZw==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, "@types/connect": { "version": "3.4.35", "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", @@ -17844,6 +18864,16 @@ "@types/node": "*" } }, + "@types/connect-history-api-fallback": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.3.5.tgz", + "integrity": "sha512-h8QJa8xSb1WD4fpKBDcATDNGXghFj6/3GRWG6dhmRcu0RX1Ubasur2Uvx5aeEwlf0MwblEC2bMzzMQntxnw/Cw==", + "dev": true, + "requires": { + "@types/express-serve-static-core": "*", + "@types/node": "*" + } + }, "@types/d3": { "version": "6.7.5", "resolved": "https://registry.npmjs.org/@types/d3/-/d3-6.7.5.tgz", @@ -18228,6 +19258,11 @@ "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.7.tgz", "integrity": "sha512-QB5D2sqfSjCmTuWcBWyJ+/44bcjO7VbjSbOE0ucoVbAsSNQc4Lt6QkgkVXkTDwkL4z/beecZNDvVX15D4P8Jbw==" }, + "@types/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==" + }, "@types/polylabel": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/@types/polylabel/-/polylabel-1.0.5.tgz", @@ -18265,6 +19300,14 @@ } } }, + "@types/react-is": { + "version": "17.0.3", + "resolved": "https://registry.npmjs.org/@types/react-is/-/react-is-17.0.3.tgz", + "integrity": "sha512-aBTIWg1emtu95bLTLx0cpkxwGW3ueZv71nE2YFBpL8k/z5czEW8yYpOo8Dp+UUAFAtKwNaOsh/ioSeQnWlZcfw==", + "requires": { + "@types/react": "*" + } + }, "@types/react-redux": { "version": "7.1.20", "resolved": "https://registry.npmjs.org/@types/react-redux/-/react-redux-7.1.20.tgz", @@ -18304,6 +19347,15 @@ "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz", "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==" }, + "@types/serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha512-d/Hs3nWDxNL2xAczmOVZNj92YZCS6RGxfBPjKzuu/XirCgXdpKEb88dYNbrYGint6IVWLNP+yonwVAuRC0T2Dg==", + "dev": true, + "requires": { + "@types/express": "*" + } + }, "@types/serve-static": { "version": "1.13.10", "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.10.tgz", @@ -18313,6 +19365,15 @@ "@types/node": "*" } }, + "@types/sockjs": { + "version": "0.3.33", + "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.33.tgz", + "integrity": "sha512-f0KEEe05NvUnat+boPTZ0dgaLZ4SfSouXUgv5noUiefG2ajgKjmETo9ZJyuqsl7dfl2aHlLJUiki6B4ZYldiiw==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, "@types/source-list-map": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/@types/source-list-map/-/source-list-map-0.1.2.tgz", @@ -18401,6 +19462,15 @@ } } }, + "@types/ws": { + "version": "8.2.2", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.2.2.tgz", + "integrity": "sha512-NOn5eIcgWLOo6qW8AcuLZ7G8PycXu0xTxxkS6Q18VWFxgPUSOwV0pBj2a/4viNZVu25i7RIB7GttdkAIUUXOOg==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, "@webassemblyjs/ast": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", @@ -19020,6 +20090,16 @@ "object.assign": "^4.1.0" } }, + "babel-plugin-macros": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz", + "integrity": "sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg==", + "requires": { + "@babel/runtime": "^7.7.2", + "cosmiconfig": "^6.0.0", + "resolve": "^1.12.0" + } + }, "babel-plugin-polyfill-corejs2": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.2.3.tgz", @@ -19238,7 +20318,6 @@ "version": "4.17.6", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.17.6.tgz", "integrity": "sha512-uPgz3vyRTlEiCv4ee9KlsKgo2V6qPk7Jsn0KAn2OBqbqKo3iNcPEC1Ti6J4dwnz+aIRfEEEuOzC9IBk8tXUomw==", - "dev": true, "requires": { "caniuse-lite": "^1.0.30001274", "electron-to-chromium": "^1.3.886", @@ -19309,8 +20388,7 @@ "callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" }, "camel-case": { "version": "4.1.2", @@ -19325,8 +20403,7 @@ "caniuse-lite": { "version": "1.0.30001279", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001279.tgz", - "integrity": "sha512-VfEHpzHEXj6/CxggTwSFoZBBYGQfQv9Cf42KPlO79sWXCD1QNKWKsKzFeWL7QpZHJQYAvocqV6Rty1yJMkqWLQ==", - "dev": true + "integrity": "sha512-VfEHpzHEXj6/CxggTwSFoZBBYGQfQv9Cf42KPlO79sWXCD1QNKWKsKzFeWL7QpZHJQYAvocqV6Rty1yJMkqWLQ==" }, "cartocolor": { "version": "4.0.2", @@ -19877,6 +20954,31 @@ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" }, + "cosmiconfig": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", + "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", + "requires": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.1.0", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.7.2" + }, + "dependencies": { + "parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "requires": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + } + } + } + }, "crc-32": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.0.tgz", @@ -20535,7 +21637,6 @@ "version": "4.3.2", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", - "dev": true, "requires": { "ms": "2.1.2" } @@ -20887,8 +21988,7 @@ "electron-to-chromium": { "version": "1.3.893", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.893.tgz", - "integrity": "sha512-ChtwF7qB03INq1SyMpue08wc6cve+ktj2UC/Y7se9vB+JryfzziJeYwsgb8jLaCA5GMkHCdn5M62PfSMWhifZg==", - "dev": true + "integrity": "sha512-ChtwF7qB03INq1SyMpue08wc6cve+ktj2UC/Y7se9vB+JryfzziJeYwsgb8jLaCA5GMkHCdn5M62PfSMWhifZg==" }, "emoji-regex": { "version": "8.0.0", @@ -20941,7 +22041,6 @@ "version": "1.3.2", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, "requires": { "is-arrayish": "^0.2.1" } @@ -21067,8 +22166,7 @@ "escalade": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==" }, "escape-html": { "version": "1.0.3", @@ -21969,6 +23067,11 @@ "array-back": "^3.0.1" } }, + "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": "3.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", @@ -22016,9 +23119,9 @@ "dev": true }, "follow-redirects": { - "version": "1.14.5", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.5.tgz", - "integrity": "sha512-wtphSXy7d4/OR+MvIFbCVBDzZ5520qV8XfPklSN5QtxuMUJZ+b0Wnst1e1lCDocfzuCkHqj8k0FpZqO+UIaKNA==" + "version": "1.14.7", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.7.tgz", + "integrity": "sha512-+hbxoLbFMbRKDwohX8GkTataGqO6Jb7jGwpAlwgy2bIz25XtRm7KEzJM76R1WiNT5SwZkX4Y75SwBolkpmE7iQ==" }, "fontkit": { "version": "1.8.1", @@ -22146,8 +23249,7 @@ "gensync": { "version": "1.0.0-beta.2", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==" }, "geojson-vt": { "version": "3.2.1", @@ -22233,8 +23335,7 @@ "globals": { "version": "11.12.0", "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==" }, "globby": { "version": "11.0.4", @@ -22276,12 +23377,12 @@ } }, "google-p12-pem": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/google-p12-pem/-/google-p12-pem-3.1.2.tgz", - "integrity": "sha512-tjf3IQIt7tWCDsa0ofDQ1qqSCNzahXDxdAGJDbruWqu3eCg5CKLYKN+hi0s6lfvzYZ1GDVr+oDF9OOWlDSdf0A==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/google-p12-pem/-/google-p12-pem-3.1.3.tgz", + "integrity": "sha512-MC0jISvzymxePDVembypNefkAQp+DRP7dBE+zNUPaIjEspIlYg0++OrsNr248V9tPbz6iqtZ7rX1hxWA5B8qBQ==", "dev": true, "requires": { - "node-forge": "^0.10.0" + "node-forge": "^1.0.0" } }, "googleapis": { @@ -22773,7 +23874,6 @@ "version": "3.3.0", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, "requires": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" @@ -22963,8 +24063,7 @@ "is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", - "dev": true + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" }, "is-bigint": { "version": "1.0.4", @@ -23241,8 +24340,7 @@ "jsesc": { "version": "2.5.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==" }, "json-bigint": { "version": "1.0.0", @@ -23264,6 +24362,11 @@ "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", "dev": true }, + "json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" + }, "json-schema-ref-parser": { "version": "9.0.9", "resolved": "https://registry.npmjs.org/json-schema-ref-parser/-/json-schema-ref-parser-9.0.9.tgz", @@ -23287,7 +24390,6 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", - "dev": true, "requires": { "minimist": "^1.2.5" } @@ -23508,6 +24610,11 @@ } } }, + "lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" + }, "load-json-file": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", @@ -23746,9 +24853,9 @@ "integrity": "sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==" }, "memfs": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.3.0.tgz", - "integrity": "sha512-BEE62uMfKOavX3iG7GYX43QJ+hAeeWnwIAuJ/R6q96jaMtiLzhsxHJC8B1L7fK7Pt/vXDRwb3SG/yBpNGDPqzg==", + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.4.1.tgz", + "integrity": "sha512-1c9VPVvW5P7I85c35zAdEr1TD5+F11IToIHIlrVIcflfnzPkJa0ZoYEoEdYDP8KgPFoSZ/opDrUsAoZWym3mtw==", "dev": true, "requires": { "fs-monkey": "1.0.3" @@ -23880,8 +24987,7 @@ "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, "multer": { "version": "1.4.3", @@ -24007,9 +25113,9 @@ } }, "node-forge": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.10.0.tgz", - "integrity": "sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.2.1.tgz", + "integrity": "sha512-Fcvtbb+zBcZXbTTVwqGA5W+MKBj56UjVRevvchv5XrcyXbmNdesfZL37nlcWOfpgHhgmxApw3tQbTr4CqNmX4w==", "dev": true }, "node-modules-regexp": { @@ -24021,8 +25127,7 @@ "node-releases": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.1.tgz", - "integrity": "sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==", - "dev": true + "integrity": "sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==" }, "normalize-package-data": { "version": "2.5.0", @@ -24307,7 +25412,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, "requires": { "callsites": "^3.0.0" } @@ -24380,8 +25484,7 @@ "path-type": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==" }, "pbf": { "version": "3.2.1", @@ -24433,8 +25536,7 @@ "picocolors": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" }, "picomatch": { "version": "2.3.0", @@ -25485,9 +26587,9 @@ "dev": true }, "reselect": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/reselect/-/reselect-4.1.2.tgz", - "integrity": "sha512-wg60ebcPOtxcptIUfrr7Jt3h4BR86cCW3R7y4qt65lnNb4yz4QgrXcbSioVsIOYguyz42+XTHIyJ5TEruzkFgQ==" + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/reselect/-/reselect-4.1.5.tgz", + "integrity": "sha512-uVdlz8J7OO+ASpBYoz1Zypgx0KasCY20H+N8JD13oUMtPvSHQuscrHop4KbXrbsBcdB9Ds7lVK7eRkBIfO43vQ==" }, "resize-observer-polyfill": { "version": "1.5.1", @@ -25523,8 +26625,7 @@ "resolve-from": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==" }, "resolve-pathname": { "version": "3.0.0", @@ -25760,19 +26861,18 @@ "dev": true }, "selfsigned": { - "version": "1.10.11", - "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.11.tgz", - "integrity": "sha512-aVmbPOfViZqOZPgRBT0+3u4yZFHpmnIghLMlAcb5/xhp5ZtB/RVnKhz5vl2M32CLXAqR4kha9zfhNg0Lf/sxKA==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.0.0.tgz", + "integrity": "sha512-cUdFiCbKoa1mZ6osuJs2uDHrs0k0oprsKveFiiaBKCNq3SYyb5gs2HxhQyDNLCmL51ZZThqi4YNDpCK6GOP1iQ==", "dev": true, "requires": { - "node-forge": "^0.10.0" + "node-forge": "^1.2.0" } }, "semver": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" }, "send": { "version": "0.17.1", @@ -26582,9 +27682,9 @@ } }, "stylis": { - "version": "4.0.10", - "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.0.10.tgz", - "integrity": "sha512-m3k+dk7QeJw660eIKRRn3xPF6uuvHs/FFzjX3HQ5ove0qYsiygoAhwn5a3IYKaZPo5LrYD0rfVmtv1gNY1uYwg==" + "version": "4.0.13", + "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.0.13.tgz", + "integrity": "sha512-xGPXiFVl4YED9Jh7Euv2V220mriG9u4B2TA6Ybjc1catrstKD2PpIdU3U0RKpkVBC2EhmL/F0sPCr9vrFTNRag==" }, "subscribe-event": { "version": "1.1.1", @@ -26926,8 +28026,7 @@ "to-fast-properties": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", - "dev": true + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=" }, "to-regex-range": { "version": "5.0.1", @@ -27115,30 +28214,6 @@ "punycode": "^2.1.0" } }, - "url": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", - "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", - "dev": true, - "requires": { - "punycode": "1.3.2", - "querystring": "0.2.0" - }, - "dependencies": { - "punycode": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", - "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", - "dev": true - }, - "querystring": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", - "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", - "dev": true - } - } - }, "url-template": { "version": "2.0.8", "resolved": "https://registry.npmjs.org/url-template/-/url-template-2.0.8.tgz", @@ -27466,37 +28541,70 @@ } }, "webpack-dev-middleware": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.2.1.tgz", - "integrity": "sha512-Kx1X+36Rn9JaZcQMrJ7qN3PMAuKmEDD9ZISjUj3Cgq4A6PtwYsC4mpaKotSRYH3iOF6HsUa8viHKS59FlyVifQ==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.0.tgz", + "integrity": "sha512-MouJz+rXAm9B1OTOYaJnn6rtD/lWZPy2ufQCH3BPs8Rloh/Du6Jze4p7AeLYHkVi0giJnYLaSGDC7S+GM9arhg==", "dev": true, "requires": { "colorette": "^2.0.10", "memfs": "^3.2.2", "mime-types": "^2.1.31", "range-parser": "^1.2.1", - "schema-utils": "^3.1.0" + "schema-utils": "^4.0.0" }, "dependencies": { + "ajv": { + "version": "8.9.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.9.0.tgz", + "integrity": "sha512-qOKJyNj/h+OWx7s5DePL6Zu1KeM9jPZhwBqs+7DzP6bGOvqzVCSf0xueYmVuaC/oQ/VtS2zLMLHdQFbkka+XDQ==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.3" + } + }, + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, "schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", + "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", "dev": true, "requires": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" + "@types/json-schema": "^7.0.9", + "ajv": "^8.8.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.0.0" } } } }, "webpack-dev-server": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.6.0.tgz", - "integrity": "sha512-oojcBIKvx3Ya7qs1/AVWHDgmP1Xml8rGsEBnSobxU/UJSX1xP1GPM3MwsAnDzvqcVmVki8tV7lbcsjEjk0PtYg==", + "version": "4.7.3", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.7.3.tgz", + "integrity": "sha512-mlxq2AsIw2ag016nixkzUkdyOE8ST2GTy34uKSABp1c4nhjZvH90D5ZRR+UOLSsG4Z3TFahAi72a3ymRtfRm+Q==", "dev": true, "requires": { + "@types/bonjour": "^3.5.9", + "@types/connect-history-api-fallback": "^1.3.5", + "@types/serve-index": "^1.9.1", + "@types/sockjs": "^0.3.33", + "@types/ws": "^8.2.2", "ansi-html-community": "^0.0.8", "bonjour": "^3.5.0", "chokidar": "^3.5.2", @@ -27514,13 +28622,12 @@ "p-retry": "^4.5.0", "portfinder": "^1.0.28", "schema-utils": "^4.0.0", - "selfsigned": "^1.10.11", + "selfsigned": "^2.0.0", "serve-index": "^1.9.1", "sockjs": "^0.3.21", "spdy": "^4.0.2", "strip-ansi": "^7.0.0", - "url": "^0.11.0", - "webpack-dev-middleware": "^5.2.1", + "webpack-dev-middleware": "^5.3.0", "ws": "^8.1.0" }, "dependencies": { @@ -27839,6 +28946,11 @@ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "dev": true }, + "yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==" + }, "yargs": { "version": "16.2.0", "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", diff --git a/package.json b/package.json index 1b13decd5b4664601bc7adf1a919cc970a4c1e38..fb9c1cc19a1d297a7a3e51e27c27cd35858dcfde 100644 --- a/package.json +++ b/package.json @@ -25,9 +25,15 @@ "@amcharts/amcharts5": "^5.0.3", "@babel/runtime": "^7.15.4", "@date-io/moment": "^1.3.11", + "@emotion/react": "^11.7.1", + "@emotion/styled": "^11.6.0", "@material-ui/core": "^4.12.3", "@material-ui/icons": "^4.11.2", "@material-ui/pickers": "^3.3.10", + "@mui/icons-material": "^5.2.5", + "@mui/lab": "^5.0.0-alpha.64", + "@mui/material": "^5.2.8", + "@mui/styles": "^5.2.3", "@nosferatu500/react-sortable-tree": "^3.0.5", "@shakacode/recompose": "^0.30.3", "@turf/buffer": "^6.3.0", @@ -72,7 +78,7 @@ "react-sortable-tree-theme-file-explorer": "git+https://github.com/SemanticComputing/react-sortable-tree-theme-file-explorer.git#e60a5a73b4c5892b1dcd598a27a72bd3ebbd5e96", "react-virtualized": "^9.22.3", "react-wordcloud": "^1.2.7", - "redux": "^4.1.0", + "redux": "^4.1.2", "redux-observable": "^2.0.0", "reselect": "^4.0.0", "rxjs": "^7.2.0", diff --git a/src/client/components/App.js b/src/client/components/App.js index 15d5caeae448e4859362c3564910734ef59a897e..cf785afd49b166a8efb41cc0d5b1a396af96f8a2 100644 --- a/src/client/components/App.js +++ b/src/client/components/App.js @@ -1,7 +1,11 @@ import React from 'react' -import { MuiThemeProvider, createTheme } from '@material-ui/core/styles' +import { ThemeProvider, StyledEngineProvider, createTheme } from '@mui/material/styles' +import AdapterMoment from '@mui/lab/AdapterDateFns' +import LocalizationProvider from '@mui/lab/LocalizationProvider' +// import 'moment/locale/fi' import SemanticPortal from '../containers/SemanticPortal' import portalConfig from '../../configs/portalConfig.json' + const { colorPalette } = portalConfig.layoutConfig const theme = createTheme({ @@ -13,7 +17,7 @@ const theme = createTheme({ main: colorPalette.secondary.main } }, - overrides: { + components: { MuiTooltip: { tooltip: { fontSize: '1 rem' @@ -59,9 +63,13 @@ const theme = createTheme({ }) const App = () => ( - <MuiThemeProvider theme={theme}> - <SemanticPortal /> - </MuiThemeProvider> + <LocalizationProvider dateAdapter={AdapterMoment}> + <StyledEngineProvider injectFirst> + <ThemeProvider theme={theme}> + <SemanticPortal /> + </ThemeProvider> + </StyledEngineProvider> + </LocalizationProvider> ) export default App diff --git a/src/client/components/facet_bar/ChartDialog.js b/src/client/components/facet_bar/ChartDialog.js index 899e6a4bfcac0d2743d91b6d95adb4467fc9b2eb..7a83ee0f23ed36c19ad544e1c0fadb651474c3d5 100644 --- a/src/client/components/facet_bar/ChartDialog.js +++ b/src/client/components/facet_bar/ChartDialog.js @@ -1,10 +1,10 @@ import React from 'react' import PropTypes from 'prop-types' -import IconButton from '@material-ui/core/IconButton' -import Tooltip from '@material-ui/core/Tooltip' +import IconButton from '@mui/material/IconButton' +import Tooltip from '@mui/material/Tooltip' import GeneralDialog from '../main_layout/GeneralDialog' import ApexCharts from '../facet_results/ApexCharts' -import { makeStyles } from '@material-ui/core/styles' +import makeStyles from '@mui/styles/makeStyles'; const useStyles = makeStyles(theme => ({ chartContainer: { @@ -33,41 +33,39 @@ const ChartDialog = props => { setOpen(false) } - return ( - <> - <Tooltip disableFocusListener title={tooltip}> - <IconButton - aria-label={tooltip} - aria-owns={open ? 'facet-option-menu' : undefined} - aria-haspopup='true' - onClick={handleClickOpen} - > - {props.icon} - </IconButton> - </Tooltip> - <GeneralDialog - open={open} - onClose={handleClose} - dialogTitle={props.dialogTitle} - > - <div className={classes.chartContainer}> - <ApexCharts - portalConfig={props.portalConfig} - perspectiveConfig={props.perspectiveConfig} - apexChartsConfig={props.apexChartsConfig} - results={results} - resultUpdateID={resultUpdateID} - fetching={fetching} - fetchData={fetchData} - resultClass={resultClass} - facetClass={facetClass} - facetID={facetID} - resultClassConfig={resultClassConfig} - /> - </div> - </GeneralDialog> - </> - ) + return <> + <Tooltip disableFocusListener title={tooltip}> + <IconButton + aria-label={tooltip} + aria-owns={open ? 'facet-option-menu' : undefined} + aria-haspopup='true' + onClick={handleClickOpen} + size="large"> + {props.icon} + </IconButton> + </Tooltip> + <GeneralDialog + open={open} + onClose={handleClose} + dialogTitle={props.dialogTitle} + > + <div className={classes.chartContainer}> + <ApexCharts + portalConfig={props.portalConfig} + perspectiveConfig={props.perspectiveConfig} + apexChartsConfig={props.apexChartsConfig} + results={results} + resultUpdateID={resultUpdateID} + fetching={fetching} + fetchData={fetchData} + resultClass={resultClass} + facetClass={facetClass} + facetID={facetID} + resultClassConfig={resultClassConfig} + /> + </div> + </GeneralDialog> + </>; } ChartDialog.propTypes = { diff --git a/src/client/components/facet_bar/ChipsArray.js b/src/client/components/facet_bar/ChipsArray.js index ea2898f890596eccbf2e744ecde978b2aff7babc..2e28f5260c2cd1444894605d2e8f805f81ca8333 100644 --- a/src/client/components/facet_bar/ChipsArray.js +++ b/src/client/components/facet_bar/ChipsArray.js @@ -1,8 +1,8 @@ import React from 'react' import PropTypes from 'prop-types' -import { withStyles } from '@material-ui/core/styles' -import Chip from '@material-ui/core/Chip' -import Tooltip from '@material-ui/core/Tooltip' +import withStyles from '@mui/styles/withStyles'; +import Chip from '@mui/material/Chip' +import Tooltip from '@mui/material/Tooltip' import { ISOStringToYear } from './FacetHelpers' const styles = theme => ({ diff --git a/src/client/components/facet_bar/DatasetSelector.js b/src/client/components/facet_bar/DatasetSelector.js index 1bd28339aaa086b6efb9d4e7cb893c27e6b6e527..b8844501bb03373e85cf0b4b0a80516d2500bc84 100644 --- a/src/client/components/facet_bar/DatasetSelector.js +++ b/src/client/components/facet_bar/DatasetSelector.js @@ -1,13 +1,13 @@ import React from 'react' import PropTypes from 'prop-types' -import { withStyles } from '@material-ui/core/styles' +import withStyles from '@mui/styles/withStyles'; import intl from 'react-intl-universal' -import FormControlLabel from '@material-ui/core/FormControlLabel' -import FormControl from '@material-ui/core/FormControl' -// import FormLabel from '@material-ui/core/FormLabel'; -import FormGroup from '@material-ui/core/FormGroup' -import Checkbox from '@material-ui/core/Checkbox' -import InfoIcon from '@material-ui/icons/Info' +import FormControlLabel from '@mui/material/FormControlLabel' +import FormControl from '@mui/material/FormControl' +// import FormLabel from '@mui/material/FormLabel'; +import FormGroup from '@mui/material/FormGroup' +import Checkbox from '@mui/material/Checkbox' +import InfoIcon from '@mui/icons-material/Info' const styles = theme => ({ root: { @@ -20,7 +20,7 @@ const styles = theme => ({ }, formControlLabelRoot: { width: '100%', - [theme.breakpoints.down('md')]: { + [theme.breakpoints.down('lg')]: { marginBottom: theme.spacing(1) } }, diff --git a/src/client/components/facet_bar/DateFacet.js b/src/client/components/facet_bar/DateFacet.js index 270e3a5faee11ab2d5c2f3c25b2f91a09dbb484d..7036902dae986af4172bf77f5f4fadcf27deb3b7 100644 --- a/src/client/components/facet_bar/DateFacet.js +++ b/src/client/components/facet_bar/DateFacet.js @@ -1,10 +1,10 @@ import React from 'react' import PropTypes from 'prop-types' -import { withStyles } from '@material-ui/core/styles' +import withStyles from '@mui/styles/withStyles'; import { KeyboardDatePicker } from '@material-ui/pickers' import moment from 'moment' import intl from 'react-intl-universal' -import FormHelperText from '@material-ui/core/FormHelperText' +import FormHelperText from '@mui/material/FormHelperText' import classNames from 'classnames' const styles = theme => ({ diff --git a/src/client/components/facet_bar/FacetBar.js b/src/client/components/facet_bar/FacetBar.js index db93363918d9f5988e747e11eff53eee8f9f047c..1399e23e52de03fdbecb225972f871342dd415f9 100644 --- a/src/client/components/facet_bar/FacetBar.js +++ b/src/client/components/facet_bar/FacetBar.js @@ -1,23 +1,23 @@ import React from 'react' import PropTypes from 'prop-types' import intl from 'react-intl-universal' -import { withStyles } from '@material-ui/core/styles' +import withStyles from '@mui/styles/withStyles'; import HierarchicalFacet from './HierarchicalFacet' import TextFacet from './TextFacet' import SliderFacet from './SliderFacet' import RangeFacet from './RangeFacet' import DateFacet from './DateFacet' -import Paper from '@material-ui/core/Paper' +import Paper from '@mui/material/Paper' import FacetHeader from './FacetHeader' import FacetInfo from './FacetInfo' import DatasetSelector from './DatasetSelector' import SearchField from './SearchField' import LeafletMapDialog from './LeafletMapDialog' -import Accordion from '@material-ui/core/Accordion' -import AccordionSummary from '@material-ui/core/AccordionSummary' -import AccordionDetails from '@material-ui/core/AccordionDetails' -import ExpandMoreIcon from '@material-ui/icons/ExpandMore' -import Typography from '@material-ui/core/Typography' +import Accordion from '@mui/material/Accordion' +import AccordionSummary from '@mui/material/AccordionSummary' +import AccordionDetails from '@mui/material/AccordionDetails' +import ExpandMoreIcon from '@mui/icons-material/ExpandMore' +import Typography from '@mui/material/Typography' import clsx from 'clsx' import { has } from 'lodash' diff --git a/src/client/components/facet_bar/FacetHeader.js b/src/client/components/facet_bar/FacetHeader.js index b0cdf467ed5f3a6d1a41586a37c9ddf4567f222a..be2577cc7d7f7c49fd441001a80af5b5c38d85aa 100644 --- a/src/client/components/facet_bar/FacetHeader.js +++ b/src/client/components/facet_bar/FacetHeader.js @@ -1,20 +1,20 @@ import React from 'react' import PropTypes from 'prop-types' import intl from 'react-intl-universal' -import { withStyles } from '@material-ui/core/styles' -import IconButton from '@material-ui/core/IconButton' -import Tooltip from '@material-ui/core/Tooltip' -import Menu from '@material-ui/core/Menu' -import MenuItem from '@material-ui/core/MenuItem' -import MoreVertIcon from '@material-ui/icons/MoreVert' -import Typography from '@material-ui/core/Typography' -import InfoIcon from '@material-ui/icons/InfoOutlined' -import ListSubheader from '@material-ui/core/ListSubheader' +import withStyles from '@mui/styles/withStyles'; +import IconButton from '@mui/material/IconButton' +import Tooltip from '@mui/material/Tooltip' +import Menu from '@mui/material/Menu' +import MenuItem from '@mui/material/MenuItem' +import MoreVertIcon from '@mui/icons-material/MoreVert' +import Typography from '@mui/material/Typography' +import InfoIcon from '@mui/icons-material/InfoOutlined' +import ListSubheader from '@mui/material/ListSubheader' import history from '../../History' import ChartDialog from './ChartDialog' -import PieChartIcon from '@material-ui/icons/PieChart' -import LineChartIcon from '@material-ui/icons/ShowChart' -import BarChartIcon from '@material-ui/icons/BarChart' +import PieChartIcon from '@mui/icons-material/PieChart' +import LineChartIcon from '@mui/icons-material/ShowChart' +import BarChartIcon from '@mui/icons-material/BarChart' const styles = theme => ({ root: { @@ -283,89 +283,87 @@ class FacetHeader extends React.Component { ) } } - return ( - <> - {pieChartButton && - <ChartDialog - portalConfig={this.props.portalConfig} - perspectiveConfig={this.props.perspectiveConfig} - apexChartsConfig={this.props.apexChartsConfig} - results={this.props.facetConstrainSelf.values} - resultUpdateID={this.props.facetConstrainSelfUpdateID} - fetching={this.props.facetConstrainSelf.isFetching} - fetchData={this.props.fetchFacetConstrainSelf} - facetClass={this.props.facetClass} - facetID={this.props.facetID} - icon={<PieChartIcon />} - tooltip={intl.get('facetBar.pieChart.tooltip')} - dialogTitle={this.props.facetLabel} - resultClassConfig={{ - createChartData: 'createApexPieChartData', - property: this.props.facetID - }} - />} - {barChartButton && - <ChartDialog - portalConfig={this.props.portalConfig} - perspectiveConfig={this.props.perspectiveConfig} - apexChartsConfig={this.props.apexChartsConfig} - results={this.props.facetConstrainSelf.values} - resultUpdateID={this.props.facetConstrainSelfUpdateID} - fetching={this.props.facetConstrainSelf.isFetching} - fetchData={this.props.fetchFacetConstrainSelf} - facetClass={this.props.facetClass} - facetID={this.props.facetID} - icon={<BarChartIcon />} - tooltip={intl.get('facetBar.barChart.tooltip')} - resultClassConfig={{ - createChartData: 'createApexBarChartData', - property: this.props.facetID, - title: intl.get(`facetBar.barChart.${this.props.facetID}.title`), - xaxisTitle: intl.get(`facetBar.barChart.${this.props.facetID}.xaxisTitle`), - yaxisTitle: intl.get(`facetBar.barChart.${this.props.facetID}.yaxisTitle`), - seriesTitle: intl.get(`facetBar.barChart.${this.props.facetID}.seriesTitle`) - }} - />} - {lineChartButton && - <ChartDialog - portalConfig={this.props.portalConfig} - perspectiveConfig={this.props.perspectiveConfig} - apexChartsConfig={this.props.apexChartsConfig} - results={this.props.perspectiveState.results} - resultUpdateID={this.props.perspectiveState.resultUpdateID} - fetching={this.props.perspectiveState.fetching} - fetchData={this.props.fetchResults} - resultClass={`${this.props.facetID}LineChart`} - facetClass={this.props.facetClass} - facetID={this.props.facetID} - icon={<LineChartIcon />} - tooltip={intl.get('facetBar.lineChart.tooltip')} - resultClassConfig={this.props.perspectiveConfig.resultClasses[`${this.props.facetID}LineChart`]} - />} - {menuButtons.length > 0 && - <> - <Tooltip disableFocusListener title={intl.get('facetBar.filterOptions')}> - <IconButton - className='facetMenuButton' - aria-label={intl.get('facetBar.filterOptions')} - aria-owns={open ? 'facet-option-menu' : undefined} - aria-haspopup='true' - onClick={this.handleMenuButtonClick} - > - <MoreVertIcon /> - </IconButton> - </Tooltip> - <Menu - id='facet-option-menu' - anchorEl={anchorEl} - open={open} - onClose={this.handleMenuClose} - > - {menuButtons} - </Menu> - </>} - </> - ) + return <> + {pieChartButton && + <ChartDialog + portalConfig={this.props.portalConfig} + perspectiveConfig={this.props.perspectiveConfig} + apexChartsConfig={this.props.apexChartsConfig} + results={this.props.facetConstrainSelf.values} + resultUpdateID={this.props.facetConstrainSelfUpdateID} + fetching={this.props.facetConstrainSelf.isFetching} + fetchData={this.props.fetchFacetConstrainSelf} + facetClass={this.props.facetClass} + facetID={this.props.facetID} + icon={<PieChartIcon />} + tooltip={intl.get('facetBar.pieChart.tooltip')} + dialogTitle={this.props.facetLabel} + resultClassConfig={{ + createChartData: 'createApexPieChartData', + property: this.props.facetID + }} + />} + {barChartButton && + <ChartDialog + portalConfig={this.props.portalConfig} + perspectiveConfig={this.props.perspectiveConfig} + apexChartsConfig={this.props.apexChartsConfig} + results={this.props.facetConstrainSelf.values} + resultUpdateID={this.props.facetConstrainSelfUpdateID} + fetching={this.props.facetConstrainSelf.isFetching} + fetchData={this.props.fetchFacetConstrainSelf} + facetClass={this.props.facetClass} + facetID={this.props.facetID} + icon={<BarChartIcon />} + tooltip={intl.get('facetBar.barChart.tooltip')} + resultClassConfig={{ + createChartData: 'createApexBarChartData', + property: this.props.facetID, + title: intl.get(`facetBar.barChart.${this.props.facetID}.title`), + xaxisTitle: intl.get(`facetBar.barChart.${this.props.facetID}.xaxisTitle`), + yaxisTitle: intl.get(`facetBar.barChart.${this.props.facetID}.yaxisTitle`), + seriesTitle: intl.get(`facetBar.barChart.${this.props.facetID}.seriesTitle`) + }} + />} + {lineChartButton && + <ChartDialog + portalConfig={this.props.portalConfig} + perspectiveConfig={this.props.perspectiveConfig} + apexChartsConfig={this.props.apexChartsConfig} + results={this.props.perspectiveState.results} + resultUpdateID={this.props.perspectiveState.resultUpdateID} + fetching={this.props.perspectiveState.fetching} + fetchData={this.props.fetchResults} + resultClass={`${this.props.facetID}LineChart`} + facetClass={this.props.facetClass} + facetID={this.props.facetID} + icon={<LineChartIcon />} + tooltip={intl.get('facetBar.lineChart.tooltip')} + resultClassConfig={this.props.perspectiveConfig.resultClasses[`${this.props.facetID}LineChart`]} + />} + {menuButtons.length > 0 && + <> + <Tooltip disableFocusListener title={intl.get('facetBar.filterOptions')}> + <IconButton + className='facetMenuButton' + aria-label={intl.get('facetBar.filterOptions')} + aria-owns={open ? 'facet-option-menu' : undefined} + aria-haspopup='true' + onClick={this.handleMenuButtonClick} + size="large"> + <MoreVertIcon /> + </IconButton> + </Tooltip> + <Menu + id='facet-option-menu' + anchorEl={anchorEl} + open={open} + onClose={this.handleMenuClose} + > + {menuButtons} + </Menu> + </>} + </>; } render () { @@ -381,7 +379,7 @@ class FacetHeader extends React.Component { title={facetDescription} enterDelay={300} > - <IconButton aria-label='description'> + <IconButton aria-label='description' size="large"> <InfoIcon /> </IconButton> </Tooltip> @@ -390,7 +388,7 @@ class FacetHeader extends React.Component { {this.renderFacetMenu()} </div>} </div> - ) + ); } } diff --git a/src/client/components/facet_bar/FacetHeader.stories.js b/src/client/components/facet_bar/FacetHeader.stories.js index 3f55be4a6bd61a8697c9beb7a9992fb17a56d91d..9eb82d277fcf7a2a40cbe5d219a4a50d734a591a 100644 --- a/src/client/components/facet_bar/FacetHeader.stories.js +++ b/src/client/components/facet_bar/FacetHeader.stories.js @@ -1,6 +1,6 @@ import React from 'react' import FacetHeader, { FacetHeaderComponent } from './FacetHeader' -import Paper from '@material-ui/core/Paper' +import Paper from '@mui/material/Paper' import { useSelector } from 'react-redux' import intl from 'react-intl-universal' import Center from '../../../../.storybook/Center' diff --git a/src/client/components/facet_bar/FacetInfo.js b/src/client/components/facet_bar/FacetInfo.js index 032f8a3b54d870fc8057fa9f8aa3b8dbcc22ac7e..9c33bf7bc29f93013055989a2b91de114967a930 100644 --- a/src/client/components/facet_bar/FacetInfo.js +++ b/src/client/components/facet_bar/FacetInfo.js @@ -2,14 +2,14 @@ import React from 'react' import PropTypes from 'prop-types' import intl from 'react-intl-universal' import { has } from 'lodash' -import { withStyles } from '@material-ui/core/styles' +import withStyles from '@mui/styles/withStyles'; import ActiveFilters from './ActiveFilters' -import Button from '@material-ui/core/Button' -import DeleteIcon from '@material-ui/icons/Delete' -import Divider from '@material-ui/core/Divider' -import Typography from '@material-ui/core/Typography' -import CircularProgress from '@material-ui/core/CircularProgress' -import purple from '@material-ui/core/colors/purple' +import Button from '@mui/material/Button' +import DeleteIcon from '@mui/icons-material/Delete' +import Divider from '@mui/material/Divider' +import Typography from '@mui/material/Typography' +import CircularProgress from '@mui/material/CircularProgress' +import { purple } from '@mui/material/colors'; const styles = theme => ({ facetInfoDivider: { diff --git a/src/client/components/facet_bar/HierarchicalFacet.js b/src/client/components/facet_bar/HierarchicalFacet.js index 700fe66a907c4117d59ba9e42c84810b2c8f8ac6..159806b184a9fbfa233b4d5e9b59fd9fa6279164 100644 --- a/src/client/components/facet_bar/HierarchicalFacet.js +++ b/src/client/components/facet_bar/HierarchicalFacet.js @@ -1,20 +1,20 @@ import React, { Component } from 'react' import PropTypes from 'prop-types' import intl from 'react-intl-universal' -import { withStyles } from '@material-ui/core/styles' +import withStyles from '@mui/styles/withStyles'; import { has } from 'lodash' import SortableTree, { changeNodeAtPath } from '@nosferatu500/react-sortable-tree' import FileExplorerTheme from 'react-sortable-tree-theme-file-explorer' -import Checkbox from '@material-ui/core/Checkbox' -import FormControlLabel from '@material-ui/core/FormControlLabel' -import CircularProgress from '@material-ui/core/CircularProgress' -import purple from '@material-ui/core/colors/purple' -import Input from '@material-ui/core/Input' -import IconButton from '@material-ui/core/IconButton' -import NavigateNextIcon from '@material-ui/icons/NavigateNext' -import NavigateBeforeIcon from '@material-ui/icons/NavigateBefore' -import Typography from '@material-ui/core/Typography' +import Checkbox from '@mui/material/Checkbox' +import FormControlLabel from '@mui/material/FormControlLabel' +import CircularProgress from '@mui/material/CircularProgress' +import Input from '@mui/material/Input' +import IconButton from '@mui/material/IconButton' +import NavigateNextIcon from '@mui/icons-material/NavigateNext' +import NavigateBeforeIcon from '@mui/icons-material/NavigateBefore' +import Typography from '@mui/material/Typography' import { generateLabelForMissingValue } from '../../helpers/helpers' +import { purple } from '@mui/material/colors'; const styles = () => ({ facetSearchContainer: { @@ -304,78 +304,76 @@ class HierarchicalFacet extends Component { : 0 }) - return ( - <> - {isFetching - ? ( - <div className={classes.spinnerContainer}> - <CircularProgress style={{ color: purple[500] }} thickness={5} /> - </div> - ) - : ( - <> - {searchField && facet.filterType !== 'spatialFilter' && - <div className={classes.facetSearchContainer}> - <Input - placeholder={intl.get('facetBar.facetSearchFieldPlaceholder')} - onChange={this.handleSearchFieldOnChange} - value={this.state.searchString} - /> - {searchFoundCount > 0 && - <> - <IconButton - className={classes.facetSearchIconButton} - aria-label='Previous' - onClick={selectPrevMatch} - > - <NavigateBeforeIcon /> - </IconButton> - <IconButton - className={classes.facetSearchIconButton} - aria-label='Next' - onClick={selectNextMatch} - > - <NavigateNextIcon /> - </IconButton> - <Typography> - {searchFoundCount > 0 ? searchFocusIndex + 1 : 0} / {searchFoundCount || 0} - </Typography> - </>} - </div>} - {facet.filterType !== 'spatialFilter' && - <div className={searchField ? classes.treeContainerWithSearchField : classes.treeContainer}> - <SortableTree - treeData={this.state.treeData} - onChange={treeData => this.setState({ treeData })} - canDrag={false} - rowHeight={30} - searchMethod={customSearchMethod} - searchQuery={searchString} - searchFocusOffset={searchFocusIndex} - searchFinishCallback={matches => { - this.setState({ - searchFoundCount: matches.length, - searchFocusIndex: - matches.length > 0 ? searchFocusIndex % matches.length : 0, - matches - }) - }} - onlyExpandSearchedNodes - theme={FileExplorerTheme} - generateNodeProps={this.generateNodeProps} - isVirtualized={this.props.facetedSearchMode !== 'storybook'} - /> - </div>} - {facet.filterType === 'spatialFilter' && - <div className={classes.spinnerContainer}> - <Typography> - Draw a bounding box on the map to filter by {intl.get(`perspectives.${facetClass}.properties.${facetID}.label`)}. - </Typography> - </div>} - </> - )} - </> - ) + return <> + {isFetching + ? ( + <div className={classes.spinnerContainer}> + <CircularProgress style={{ color: purple[500] }} thickness={5} /> + </div> + ) + : ( + <> + {searchField && facet.filterType !== 'spatialFilter' && + <div className={classes.facetSearchContainer}> + <Input + placeholder={intl.get('facetBar.facetSearchFieldPlaceholder')} + onChange={this.handleSearchFieldOnChange} + value={this.state.searchString} + /> + {searchFoundCount > 0 && + <> + <IconButton + className={classes.facetSearchIconButton} + aria-label='Previous' + onClick={selectPrevMatch} + size="large"> + <NavigateBeforeIcon /> + </IconButton> + <IconButton + className={classes.facetSearchIconButton} + aria-label='Next' + onClick={selectNextMatch} + size="large"> + <NavigateNextIcon /> + </IconButton> + <Typography> + {searchFoundCount > 0 ? searchFocusIndex + 1 : 0} / {searchFoundCount || 0} + </Typography> + </>} + </div>} + {facet.filterType !== 'spatialFilter' && + <div className={searchField ? classes.treeContainerWithSearchField : classes.treeContainer}> + <SortableTree + treeData={this.state.treeData} + onChange={treeData => this.setState({ treeData })} + canDrag={false} + rowHeight={30} + searchMethod={customSearchMethod} + searchQuery={searchString} + searchFocusOffset={searchFocusIndex} + searchFinishCallback={matches => { + this.setState({ + searchFoundCount: matches.length, + searchFocusIndex: + matches.length > 0 ? searchFocusIndex % matches.length : 0, + matches + }) + }} + onlyExpandSearchedNodes + theme={FileExplorerTheme} + generateNodeProps={this.generateNodeProps} + isVirtualized={this.props.facetedSearchMode !== 'storybook'} + /> + </div>} + {facet.filterType === 'spatialFilter' && + <div className={classes.spinnerContainer}> + <Typography> + Draw a bounding box on the map to filter by {intl.get(`perspectives.${facetClass}.properties.${facetID}.label`)}. + </Typography> + </div>} + </> + )} + </>; } } diff --git a/src/client/components/facet_bar/LeafletMapDialog.js b/src/client/components/facet_bar/LeafletMapDialog.js index 353adb886eafcd234d294e0d251c15b2ee0c7376..51deda91314150fe72c69bf3e866af6eb37f13aa 100644 --- a/src/client/components/facet_bar/LeafletMapDialog.js +++ b/src/client/components/facet_bar/LeafletMapDialog.js @@ -1,15 +1,15 @@ import React from 'react' import PropTypes from 'prop-types' -import { withStyles } from '@material-ui/core/styles' +import withStyles from '@mui/styles/withStyles'; import intl from 'react-intl-universal' -import Button from '@material-ui/core/Button' -import Dialog from '@material-ui/core/Dialog' -import DialogActions from '@material-ui/core/DialogActions' -import DialogTitle from '@material-ui/core/DialogTitle' -import CropFreeIcon from '@material-ui/icons/CropFree' +import Button from '@mui/material/Button' +import Dialog from '@mui/material/Dialog' +import DialogActions from '@mui/material/DialogActions' +import DialogTitle from '@mui/material/DialogTitle' +import CropFreeIcon from '@mui/icons-material/CropFree' import LeafletMap from '../facet_results/LeafletMap' -import CircularProgress from '@material-ui/core/CircularProgress' -import Paper from '@material-ui/core/Paper' +import CircularProgress from '@mui/material/CircularProgress' +import Paper from '@mui/material/Paper' const styles = theme => ({ root: { diff --git a/src/client/components/facet_bar/RangeFacet.js b/src/client/components/facet_bar/RangeFacet.js index caccd2a4fea3e141c0eb0fbed632ba2a239b3044..fb423b82a30af467577829253c40b3383a843684 100644 --- a/src/client/components/facet_bar/RangeFacet.js +++ b/src/client/components/facet_bar/RangeFacet.js @@ -1,12 +1,12 @@ import React, { Component } from 'react' import PropTypes from 'prop-types' -import CircularProgress from '@material-ui/core/CircularProgress' -import purple from '@material-ui/core/colors/purple' -import { withStyles } from '@material-ui/core/styles' -import TextField from '@material-ui/core/TextField' -import Button from '@material-ui/core/Button' -import InputAdornment from '@material-ui/core/InputAdornment' +import CircularProgress from '@mui/material/CircularProgress' +import withStyles from '@mui/styles/withStyles'; +import TextField from '@mui/material/TextField' +import Button from '@mui/material/Button' +import InputAdornment from '@mui/material/InputAdornment' import { has } from 'lodash' +import { purple } from '@mui/material/colors'; const styles = theme => ({ root: { diff --git a/src/client/components/facet_bar/SearchField.js b/src/client/components/facet_bar/SearchField.js index 75aabb7310cd8ca86aca1f7425e527ec825d617b..7e15e289d3be94cd22fe17f2b2c81d234dc618f9 100644 --- a/src/client/components/facet_bar/SearchField.js +++ b/src/client/components/facet_bar/SearchField.js @@ -1,15 +1,15 @@ import React from 'react' import PropTypes from 'prop-types' -import { withStyles } from '@material-ui/core/styles' +import withStyles from '@mui/styles/withStyles'; import intl from 'react-intl-universal' -import IconButton from '@material-ui/core/IconButton' -import SearchIcon from '@material-ui/icons/Search' -import Input from '@material-ui/core/Input' -import InputLabel from '@material-ui/core/InputLabel' -import InputAdornment from '@material-ui/core/InputAdornment' -import FormControl from '@material-ui/core/FormControl' -import CircularProgress from '@material-ui/core/CircularProgress' -import Paper from '@material-ui/core/Paper' +import IconButton from '@mui/material/IconButton' +import SearchIcon from '@mui/icons-material/Search' +import Input from '@mui/material/Input' +import InputLabel from '@mui/material/InputLabel' +import InputAdornment from '@mui/material/InputAdornment' +import FormControl from '@mui/material/FormControl' +import CircularProgress from '@mui/material/CircularProgress' +import Paper from '@mui/material/Paper' const styles = theme => ({ root: { @@ -89,9 +89,7 @@ class SearchField extends React.Component { let searchButton = null if (this.props.search.textResultsFetching) { searchButton = ( - <IconButton - aria-label='Search places' - > + <IconButton aria-label='Search places' size="large"> <CircularProgress size={24} /> </IconButton> ) @@ -101,7 +99,7 @@ class SearchField extends React.Component { aria-label='Search' onClick={this.handleClick} onMouseDown={this.handleMouseDown} - > + size="large"> <SearchIcon /> </IconButton> ) diff --git a/src/client/components/facet_bar/SliderFacet.js b/src/client/components/facet_bar/SliderFacet.js index 14a1912ba5a9bd0a41b7b65f0f30fd939cb06cdd..eab4bc8253a961f2d647783183901e0b11fe8c27 100644 --- a/src/client/components/facet_bar/SliderFacet.js +++ b/src/client/components/facet_bar/SliderFacet.js @@ -1,13 +1,13 @@ import React, { Component } from 'react' import PropTypes from 'prop-types' import intl from 'react-intl-universal' -import CircularProgress from '@material-ui/core/CircularProgress' -import purple from '@material-ui/core/colors/purple' -import { withStyles } from '@material-ui/core/styles' -import Slider from '@material-ui/core/Slider' -import TextField from '@material-ui/core/TextField' -import Button from '@material-ui/core/Button' +import CircularProgress from '@mui/material/CircularProgress' +import withStyles from '@mui/styles/withStyles'; +import Slider from '@mui/material/Slider' +import TextField from '@mui/material/TextField' +import Button from '@mui/material/Button' import { yearToISOString, ISOStringToYear } from './FacetHelpers' +import { purple } from '@mui/material/colors'; const styles = theme => ({ root: { diff --git a/src/client/components/facet_bar/TextFacet.js b/src/client/components/facet_bar/TextFacet.js index 1b898104b5f2afa0758f31ef3e171ac11806b5bf..6fcd04af059b4540890eb9c20905ec783c8040e1 100644 --- a/src/client/components/facet_bar/TextFacet.js +++ b/src/client/components/facet_bar/TextFacet.js @@ -1,14 +1,14 @@ import React from 'react' import PropTypes from 'prop-types' import intl from 'react-intl-universal' -import { withStyles } from '@material-ui/core/styles' -import IconButton from '@material-ui/core/IconButton' -import SearchIcon from '@material-ui/icons/Search' -import Input from '@material-ui/core/Input' -import InputLabel from '@material-ui/core/InputLabel' -import InputAdornment from '@material-ui/core/InputAdornment' -import FormControl from '@material-ui/core/FormControl' -import CircularProgress from '@material-ui/core/CircularProgress' +import withStyles from '@mui/styles/withStyles'; +import IconButton from '@mui/material/IconButton' +import SearchIcon from '@mui/icons-material/Search' +import Input from '@mui/material/Input' +import InputLabel from '@mui/material/InputLabel' +import InputAdornment from '@mui/material/InputAdornment' +import FormControl from '@mui/material/FormControl' +import CircularProgress from '@mui/material/CircularProgress' const styles = theme => ({ textSearch: { @@ -70,9 +70,7 @@ class TextFacet extends React.Component { const textResultsFetching = false if (textResultsFetching) { searchButton = ( - <IconButton - aria-label={placeholder} - > + <IconButton aria-label={placeholder} size="large"> <CircularProgress size={24} /> </IconButton> ) @@ -82,7 +80,7 @@ class TextFacet extends React.Component { aria-label='search' onClick={this.handleClick} onMouseDown={this.handleMouseDown} - > + size="large"> <SearchIcon /> </IconButton> ) diff --git a/src/client/components/facet_results/ApexCharts.js b/src/client/components/facet_results/ApexCharts.js index 70a2648cceac0a6cb64974a08dcdba11610f6cf4..59858ac6e52aea617eae6218cdac8a57f1acae7f 100644 --- a/src/client/components/facet_results/ApexCharts.js +++ b/src/client/components/facet_results/ApexCharts.js @@ -1,16 +1,16 @@ import React from 'react' import PropTypes from 'prop-types' import intl from 'react-intl-universal' -import { withStyles } from '@material-ui/core/styles' +import withStyles from '@mui/styles/withStyles'; import ApexCharts from 'apexcharts' -import purple from '@material-ui/core/colors/purple' -import CircularProgress from '@material-ui/core/CircularProgress' -import MenuItem from '@material-ui/core/MenuItem' -import FormControl from '@material-ui/core/FormControl' -import Select from '@material-ui/core/Select' -import Typography from '@material-ui/core/Typography' +import CircularProgress from '@mui/material/CircularProgress' +import MenuItem from '@mui/material/MenuItem' +import FormControl from '@mui/material/FormControl' +import Select from '@mui/material/Select' +import Typography from '@mui/material/Typography' import GeneralDialog from '../main_layout/GeneralDialog' import InstaceList from '../main_layout/InstanceList' +import { purple } from '@mui/material/colors'; const defaultPadding = 32 const smallScreenPadding = 8 diff --git a/src/client/components/facet_results/BarChartRace.js b/src/client/components/facet_results/BarChartRace.js index b9b0900df21087a08dbf259653dc2d00f0b3a170..1fc22a2148392311dba28944dee501d07c5fca93 100644 --- a/src/client/components/facet_results/BarChartRace.js +++ b/src/client/components/facet_results/BarChartRace.js @@ -3,7 +3,7 @@ import React from 'react' import * as am5 from '@amcharts/amcharts5' import * as am5xy from '@amcharts/amcharts5/xy' import am5themesAnimated from '@amcharts/amcharts5/themes/Animated' -import Paper from '@material-ui/core/Paper' +import Paper from '@mui/material/Paper' // https://www.amcharts.com/docs/v5/ diff --git a/src/client/components/facet_results/CSVButton.js b/src/client/components/facet_results/CSVButton.js index 61154ad68c1f0ed29abf4c21515b4b37c6203ae2..9de216622d0f3a8e733bfc7f42a5253f9ddb58a1 100644 --- a/src/client/components/facet_results/CSVButton.js +++ b/src/client/components/facet_results/CSVButton.js @@ -1,9 +1,9 @@ import React from 'react' import PropTypes from 'prop-types' -import { withStyles } from '@material-ui/core/styles' +import withStyles from '@mui/styles/withStyles'; import { CSVLink } from 'react-csv' -import CloudDownloadIcon from '@material-ui/icons/CloudDownload' -import Button from '@material-ui/core/Button' +import CloudDownloadIcon from '@mui/icons-material/CloudDownload' +import Button from '@mui/material/Button' import intl from 'react-intl-universal' const styles = theme => ({ diff --git a/src/client/components/facet_results/Deck.js b/src/client/components/facet_results/Deck.js index 36707a2e03d42434a9780078f0e196fa5c6e9435..4bd78515a7331258091035491e6005ab1ce70477 100644 --- a/src/client/components/facet_results/Deck.js +++ b/src/client/components/facet_results/Deck.js @@ -1,6 +1,6 @@ import React from 'react' import PropTypes from 'prop-types' -import { withStyles } from '@material-ui/core/styles' +import withStyles from '@mui/styles/withStyles'; import DeckGL from '@deck.gl/react' import { ArcLayer, PolygonLayer } from '@deck.gl/layers' import { HeatmapLayer, HexagonLayer } from '@deck.gl/aggregation-layers' @@ -8,8 +8,8 @@ import ReactMapGL, { NavigationControl, FullscreenControl, HTMLOverlay } from 'r import DeckArcLayerLegend from './DeckArcLayerLegend' import DeckArcLayerDialog from './DeckArcLayerDialog' import DeckArcLayerTooltip from './DeckArcLayerTooltip' -import CircularProgress from '@material-ui/core/CircularProgress' -import { purple } from '@material-ui/core/colors' +import CircularProgress from '@mui/material/CircularProgress' +import { purple } from '@mui/material/colors' /* Documentation links: https://deck.gl/#/documentation/getting-started/using-with-react?section=adding-a-base-map diff --git a/src/client/components/facet_results/DeckArcLayerDialog.js b/src/client/components/facet_results/DeckArcLayerDialog.js index df60fabe380ec719aca9afa4a94c8e0549984a81..54535ceed0b3bedd86c5b8a9b7b6b59feb989bae 100644 --- a/src/client/components/facet_results/DeckArcLayerDialog.js +++ b/src/client/components/facet_results/DeckArcLayerDialog.js @@ -1,9 +1,9 @@ import React from 'react' import PropTypes from 'prop-types' -import Dialog from '@material-ui/core/Dialog' -import DialogContent from '@material-ui/core/DialogContent' -import { withStyles } from '@material-ui/core/styles' -import Typography from '@material-ui/core/Typography' +import Dialog from '@mui/material/Dialog' +import DialogContent from '@mui/material/DialogContent' +import withStyles from '@mui/styles/withStyles'; +import Typography from '@mui/material/Typography' import InstanceList from '../main_layout/InstanceList' import { Link } from 'react-router-dom' diff --git a/src/client/components/facet_results/DeckArcLayerLegend.js b/src/client/components/facet_results/DeckArcLayerLegend.js index feac7e2439bdcb5c4b770dd1ace130cd783cd8e8..3a173a1e02070bec0f56374ab473723feec1e06e 100644 --- a/src/client/components/facet_results/DeckArcLayerLegend.js +++ b/src/client/components/facet_results/DeckArcLayerLegend.js @@ -1,9 +1,9 @@ import React from 'react' import PropTypes from 'prop-types' -import { withStyles } from '@material-ui/core/styles' -import Card from '@material-ui/core/Card' -import CardContent from '@material-ui/core/CardContent' -import Typography from '@material-ui/core/Typography' +import withStyles from '@mui/styles/withStyles'; +import Card from '@mui/material/Card' +import CardContent from '@mui/material/CardContent' +import Typography from '@mui/material/Typography' const styles = theme => ({ legend: { diff --git a/src/client/components/facet_results/DeckArcLayerTooltip.js b/src/client/components/facet_results/DeckArcLayerTooltip.js index 1fc781df931be8e86e9a3c54d02de559bac434fd..a16e1643145bdb8295bf384242375e38a985a1ea 100644 --- a/src/client/components/facet_results/DeckArcLayerTooltip.js +++ b/src/client/components/facet_results/DeckArcLayerTooltip.js @@ -1,7 +1,7 @@ import React from 'react' import PropTypes from 'prop-types' -import Paper from '@material-ui/core/Paper' -import Typography from '@material-ui/core/Typography' +import Paper from '@mui/material/Paper' +import Typography from '@mui/material/Typography' const MigrationsMapTooltip = props => { const { data, fromText, toText, countText, showMoreText } = props diff --git a/src/client/components/facet_results/Export.js b/src/client/components/facet_results/Export.js index 9f32c3f08e8fbe73e545924c7513c487b5a332e9..4d9cbe49fc10ec0a295cabee6fb8a845d110dcb5 100644 --- a/src/client/components/facet_results/Export.js +++ b/src/client/components/facet_results/Export.js @@ -1,7 +1,7 @@ import React from 'react' import PropTypes from 'prop-types' -import { withStyles } from '@material-ui/core/styles' -import Button from '@material-ui/core/Button' +import withStyles from '@mui/styles/withStyles'; +import Button from '@mui/material/Button' import querystring from 'querystring' import intl from 'react-intl-universal' diff --git a/src/client/components/facet_results/ExportCSV.js b/src/client/components/facet_results/ExportCSV.js index d2b1ae042d0ff196d5b1182c658b45719c5d8832..561eced12467193cfbbdeec911e6b222a41983b0 100644 --- a/src/client/components/facet_results/ExportCSV.js +++ b/src/client/components/facet_results/ExportCSV.js @@ -1,8 +1,8 @@ import React from 'react' import PropTypes from 'prop-types' -import { withStyles } from '@material-ui/core/styles' -import Button from '@material-ui/core/Button' -import Paper from '@material-ui/core/Paper' +import withStyles from '@mui/styles/withStyles'; +import Button from '@mui/material/Button' +import Paper from '@mui/material/Paper' import { stateToUrl } from '../../helpers/helpers' const apiUrl = process.env.API_URL diff --git a/src/client/components/facet_results/LeafletMap.js b/src/client/components/facet_results/LeafletMap.js index bcbe34019f60dce76be1966af8fd9355c59dd27d..700d4616e0d6c818cc342cfd59375aee063fc285 100644 --- a/src/client/components/facet_results/LeafletMap.js +++ b/src/client/components/facet_results/LeafletMap.js @@ -1,11 +1,11 @@ import React from 'react' import PropTypes from 'prop-types' -import { withStyles } from '@material-ui/core/styles' +import withStyles from '@mui/styles/withStyles'; import intl from 'react-intl-universal' import L from 'leaflet' import { has } from 'lodash' -import CircularProgress from '@material-ui/core/CircularProgress' -import { purple } from '@material-ui/core/colors' +import CircularProgress from '@mui/material/CircularProgress' +import { purple } from '@mui/material/colors' import history from '../../History' // import { apiUrl } from '../../epics' import 'leaflet/dist/leaflet.css' // Official Leaflet styles diff --git a/src/client/components/facet_results/Network.js b/src/client/components/facet_results/Network.js index 7f9d4e3c9cccb790bc2b802f930b68453bafcbfa..f4260e347e77fce49e799a70dfe6596f0c2e8533 100644 --- a/src/client/components/facet_results/Network.js +++ b/src/client/components/facet_results/Network.js @@ -4,10 +4,10 @@ import history from '../../History' import cytoscape from 'cytoscape' import panzoom from 'cytoscape-panzoom' import 'cytoscape-panzoom/cytoscape.js-panzoom.css' -import purple from '@material-ui/core/colors/purple' -import CircularProgress from '@material-ui/core/CircularProgress' +import CircularProgress from '@mui/material/CircularProgress' import { library, dom } from '@fortawesome/fontawesome-svg-core' import { faMinus, faPlus, faExpand } from '@fortawesome/free-solid-svg-icons' +import { purple } from '@mui/material/colors'; const zoomControlOptions = { zoomFactor: 0.05, // zoom factor per zoom tick diff --git a/src/client/components/facet_results/ObjectListCollapsible.js b/src/client/components/facet_results/ObjectListCollapsible.js index e6e08f250f6547021acfac5aa9baa27906a77a8b..48e8f971b270f2bcf38bc9c598503ced423f68af 100644 --- a/src/client/components/facet_results/ObjectListCollapsible.js +++ b/src/client/components/facet_results/ObjectListCollapsible.js @@ -1,7 +1,7 @@ import React from 'react' import PropTypes from 'prop-types' -import { withStyles } from '@material-ui/core/styles' -import Collapse from '@material-ui/core/Collapse' +import withStyles from '@mui/styles/withStyles'; +import Collapse from '@mui/material/Collapse' import { ISOStringToDate } from './Dates' import { orderBy, has } from 'lodash' import ObjectListItem from './ObjectListItem' diff --git a/src/client/components/facet_results/ObjectListItemEvent.js b/src/client/components/facet_results/ObjectListItemEvent.js index b44aed2067fd7d69aa369f72ac13fa60c9fd27c5..14ad2b9f754fc2c451c3a2c2870bd632f5a644bb 100644 --- a/src/client/components/facet_results/ObjectListItemEvent.js +++ b/src/client/components/facet_results/ObjectListItemEvent.js @@ -1,6 +1,6 @@ import React from 'react' import PropTypes from 'prop-types' -import { withStyles } from '@material-ui/core/styles' +import withStyles from '@mui/styles/withStyles'; import ObjectListItemLink from './ObjectListItemLink' const styles = () => ({ diff --git a/src/client/components/facet_results/ObjectListItemLink.js b/src/client/components/facet_results/ObjectListItemLink.js index e129856ce9fd386a2c9fee3416772903ec1562a1..24002aba1a82a50d19ac3921ef17e52f8002050f 100644 --- a/src/client/components/facet_results/ObjectListItemLink.js +++ b/src/client/components/facet_results/ObjectListItemLink.js @@ -1,6 +1,6 @@ import React from 'react' import PropTypes from 'prop-types' -import Button from '@material-ui/core/Button' +import Button from '@mui/material/Button' import { Link } from 'react-router-dom' const ObjectListLink = props => { diff --git a/src/client/components/facet_results/Pie.js b/src/client/components/facet_results/Pie.js index 0228d3c0ae77fd18654439660c3775fa640a18cd..f3fa0738463394e1eb02b18f4ef53b20cbe4c979 100644 --- a/src/client/components/facet_results/Pie.js +++ b/src/client/components/facet_results/Pie.js @@ -8,9 +8,9 @@ import { } from 'victory' import PieTooltip from './PieTooltip' import _ from 'lodash' -import { withStyles } from '@material-ui/core/styles' -import Grid from '@material-ui/core/Grid' -import Paper from '@material-ui/core/Paper' +import withStyles from '@mui/styles/withStyles'; +import Grid from '@mui/material/Grid' +import Paper from '@mui/material/Paper' import ResultInfo from './ResultInfo' const styles = theme => ({ diff --git a/src/client/components/facet_results/ReactVirtualizedList.js b/src/client/components/facet_results/ReactVirtualizedList.js index 8dd0cf597c18c712d29be51bc7f63a78c246ef90..f7bb92733350e19b2a9a39137e3d8924b594ff3c 100644 --- a/src/client/components/facet_results/ReactVirtualizedList.js +++ b/src/client/components/facet_results/ReactVirtualizedList.js @@ -1,15 +1,15 @@ import React, { useEffect } from 'react' import { List, AutoSizer } from 'react-virtualized' -import { makeStyles } from '@material-ui/core/styles' -import Card from '@material-ui/core/Card' -import CardActionArea from '@material-ui/core/CardActionArea' -import CardContent from '@material-ui/core/CardContent' -import CardMedia from '@material-ui/core/CardMedia' -import Typography from '@material-ui/core/Typography' +import makeStyles from '@mui/styles/makeStyles'; +import Card from '@mui/material/Card' +import CardActionArea from '@mui/material/CardActionArea' +import CardContent from '@mui/material/CardContent' +import CardMedia from '@mui/material/CardMedia' +import Typography from '@mui/material/Typography' import intl from 'react-intl-universal' import { Link } from 'react-router-dom' -import CircularProgress from '@material-ui/core/CircularProgress' -import purple from '@material-ui/core/colors/purple' +import CircularProgress from '@mui/material/CircularProgress' +import { purple } from '@mui/material/colors'; const useStyles = makeStyles(theme => ({ root: props => { diff --git a/src/client/components/facet_results/ReactVirtualizedTable.js b/src/client/components/facet_results/ReactVirtualizedTable.js index 5a0e2fbef964499580b4d2f2021ac689fc5632d0..6c73fd5666ac7b990a46bcc12a7f18ea7d08447e 100644 --- a/src/client/components/facet_results/ReactVirtualizedTable.js +++ b/src/client/components/facet_results/ReactVirtualizedTable.js @@ -1,16 +1,16 @@ import React from 'react' import PropTypes from 'prop-types' import clsx from 'clsx' -import { withStyles } from '@material-ui/core/styles' -import TableCell from '@material-ui/core/TableCell' -import TableSortLabel from '@material-ui/core/TableSortLabel' -import Tooltip from '@material-ui/core/Tooltip' +import withStyles from '@mui/styles/withStyles'; +import TableCell from '@mui/material/TableCell' +import TableSortLabel from '@mui/material/TableSortLabel' +import Tooltip from '@mui/material/Tooltip' import ResultTableCell from './ResultTableCell' -import Paper from '@material-ui/core/Paper' +import Paper from '@mui/material/Paper' import { AutoSizer, Column, Table } from 'react-virtualized' import intl from 'react-intl-universal' -import CircularProgress from '@material-ui/core/CircularProgress' -import purple from '@material-ui/core/colors/purple' +import CircularProgress from '@mui/material/CircularProgress' +import { purple } from '@mui/material/colors'; const styles = theme => ({ flexContainer: { diff --git a/src/client/components/facet_results/ResultInfo.js b/src/client/components/facet_results/ResultInfo.js index d709b59e0e63b4b4324251342acc884c418b2dca..26f09f7ee83a2b12e31ed77e874a29ce4e56aa73 100644 --- a/src/client/components/facet_results/ResultInfo.js +++ b/src/client/components/facet_results/ResultInfo.js @@ -1,7 +1,7 @@ import React from 'react' import PropTypes from 'prop-types' -import { withStyles } from '@material-ui/core/styles' -import Typography from '@material-ui/core/Typography' +import withStyles from '@mui/styles/withStyles'; +import Typography from '@mui/material/Typography' const styles = () => ({ root: { diff --git a/src/client/components/facet_results/ResultTable.js b/src/client/components/facet_results/ResultTable.js index bf45132a2988322d1383e46cb39642d6509b9aee..1d6ea20ac45198e91c5f56a4a5691516d2e3fe1a 100644 --- a/src/client/components/facet_results/ResultTable.js +++ b/src/client/components/facet_results/ResultTable.js @@ -1,22 +1,22 @@ import React from 'react' import PropTypes from 'prop-types' import intl from 'react-intl-universal' -import { withStyles } from '@material-ui/core/styles' +import withStyles from '@mui/styles/withStyles'; import clsx from 'clsx' -import Table from '@material-ui/core/Table' -import TableBody from '@material-ui/core/TableBody' +import Table from '@mui/material/Table' +import TableBody from '@mui/material/TableBody' import ResultTableCell from './ResultTableCell' -import TableRow from '@material-ui/core/TableRow' -import TableCell from '@material-ui/core/TableCell' -import IconButton from '@material-ui/core/IconButton' -import CircularProgress from '@material-ui/core/CircularProgress' -import ExpandMoreIcon from '@material-ui/icons/ExpandMore' -import purple from '@material-ui/core/colors/purple' +import TableRow from '@mui/material/TableRow' +import TableCell from '@mui/material/TableCell' +import IconButton from '@mui/material/IconButton' +import CircularProgress from '@mui/material/CircularProgress' +import ExpandMoreIcon from '@mui/icons-material/ExpandMore' import querystring from 'querystring' import ResultTableHead from './ResultTableHead' -import TablePagination from '@material-ui/core/TablePagination' +import TablePagination from '@mui/material/TablePagination' import ResultTablePaginationActions from './ResultTablePaginationActions' import history from '../../History' +import { purple } from '@mui/material/colors'; const styles = theme => ({ tableContainer: props => ({ @@ -42,7 +42,7 @@ const styles = theme => ({ paginationToolbar: props => ({ '& p': { fontSize: '0.75rem' }, minHeight: props.layoutConfig.paginationToolbarHeight, - [theme.breakpoints.down(480)]: { + [theme.breakpoints.down(undefined)]: { display: 'flex', flexWrap: 'wrap', marginTop: theme.spacing(0.5) @@ -266,13 +266,13 @@ class ResultTable extends React.Component { onClick={this.handleExpandRow(row.id)} aria-expanded={expanded} aria-label='Show more' - > + size="large"> <ExpandMoreIcon /> </IconButton>} </TableCell> {dataCells} </TableRow> - ) + ); } render () { diff --git a/src/client/components/facet_results/ResultTableCell.js b/src/client/components/facet_results/ResultTableCell.js index db757bfa0c29733593f7b35423c7f916c73ab153..d1380c8a6e5816b0e9e583159c935090afd4e384 100644 --- a/src/client/components/facet_results/ResultTableCell.js +++ b/src/client/components/facet_results/ResultTableCell.js @@ -1,6 +1,6 @@ import React from 'react' import PropTypes from 'prop-types' -import TableCell from '@material-ui/core/TableCell' +import TableCell from '@mui/material/TableCell' import ObjectListCollapsible from './ObjectListCollapsible' import StringList from './StringList' import SimpleReactLightbox from 'simple-react-lightbox' diff --git a/src/client/components/facet_results/ResultTableHead.js b/src/client/components/facet_results/ResultTableHead.js index 5c021a6db07b32bd18e0fc9e1bd984e1abe94638..4f3200fe968451be5369bf140ec46c80b1a4d0f9 100644 --- a/src/client/components/facet_results/ResultTableHead.js +++ b/src/client/components/facet_results/ResultTableHead.js @@ -2,14 +2,14 @@ import React from 'react' import PropTypes from 'prop-types' import intl from 'react-intl-universal' import classNames from 'classnames' -import { withStyles } from '@material-ui/core/styles' -import TableHead from '@material-ui/core/TableHead' -import TableRow from '@material-ui/core/TableRow' -import TableCell from '@material-ui/core/TableCell' -import Tooltip from '@material-ui/core/Tooltip' -import TableSortLabel from '@material-ui/core/TableSortLabel' -import IconButton from '@material-ui/core/IconButton' -import InfoIcon from '@material-ui/icons/InfoOutlined' +import withStyles from '@mui/styles/withStyles'; +import TableHead from '@mui/material/TableHead' +import TableRow from '@mui/material/TableRow' +import TableCell from '@mui/material/TableCell' +import Tooltip from '@mui/material/Tooltip' +import TableSortLabel from '@mui/material/TableSortLabel' +import IconButton from '@mui/material/IconButton' +import InfoIcon from '@mui/icons-material/InfoOutlined' const styles = theme => ({ headerCol: { @@ -50,7 +50,7 @@ const ResultTableHead = props => { title={description} enterDelay={300} > - <IconButton> + <IconButton size="large"> <InfoIcon /> </IconButton> </Tooltip> @@ -78,18 +78,18 @@ const ResultTableHead = props => { title={description} enterDelay={300} > - <IconButton> + <IconButton size="large"> <InfoIcon /> </IconButton> </Tooltip> </TableCell> )} </React.Fragment> - ) + ); })} </TableRow> </TableHead> - ) + ); } ResultTableHead.propTypes = { diff --git a/src/client/components/facet_results/ResultTablePaginationActions.js b/src/client/components/facet_results/ResultTablePaginationActions.js index 33cd1adaa453aef30ce2caca1fe86e42aa8a93ae..64082c88827eef513a607a8ec333ca7d688eccf1 100644 --- a/src/client/components/facet_results/ResultTablePaginationActions.js +++ b/src/client/components/facet_results/ResultTablePaginationActions.js @@ -1,11 +1,11 @@ import React from 'react' import PropTypes from 'prop-types' -import { withStyles } from '@material-ui/core/styles' -import IconButton from '@material-ui/core/IconButton' -import FirstPageIcon from '@material-ui/icons/FirstPage' -import KeyboardArrowLeft from '@material-ui/icons/KeyboardArrowLeft' -import KeyboardArrowRight from '@material-ui/icons/KeyboardArrowRight' -import LastPageIcon from '@material-ui/icons/LastPage' +import withStyles from '@mui/styles/withStyles'; +import IconButton from '@mui/material/IconButton' +import FirstPageIcon from '@mui/icons-material/FirstPage' +import KeyboardArrowLeft from '@mui/icons-material/KeyboardArrowLeft' +import KeyboardArrowRight from '@mui/icons-material/KeyboardArrowRight' +import LastPageIcon from '@mui/icons-material/LastPage' const styles = theme => ({ root: { @@ -34,28 +34,32 @@ const ResultTablePaginationActions = props => { onClick={handleFirstPageButtonClick} disabled={page === 0} aria-label='First Page' - > + size="large"> {theme.direction === 'rtl' ? <LastPageIcon /> : <FirstPageIcon />} </IconButton> - <IconButton onClick={handleBackButtonClick} disabled={page === 0} aria-label='Previous Page'> + <IconButton + onClick={handleBackButtonClick} + disabled={page === 0} + aria-label='Previous Page' + size="large"> {theme.direction === 'rtl' ? <KeyboardArrowRight /> : <KeyboardArrowLeft />} </IconButton> <IconButton onClick={handleNextButtonClick} disabled={page >= Math.ceil(count / rowsPerPage) - 1} aria-label='Next Page' - > + size="large"> {theme.direction === 'rtl' ? <KeyboardArrowLeft /> : <KeyboardArrowRight />} </IconButton> <IconButton onClick={handleLastPageButtonClick} disabled={page >= Math.ceil(count / rowsPerPage) - 1} aria-label='Last Page' - > + size="large"> {theme.direction === 'rtl' ? <FirstPageIcon /> : <LastPageIcon />} </IconButton> </div> - ) + ); } ResultTablePaginationActions.propTypes = { diff --git a/src/client/components/facet_results/StringList.js b/src/client/components/facet_results/StringList.js index 20c5adb7c46b7bd063f4b6830e34d16473cb1b04..082aec11244730a65e525cc7cfb5c7e32952e4cd 100644 --- a/src/client/components/facet_results/StringList.js +++ b/src/client/components/facet_results/StringList.js @@ -1,7 +1,7 @@ import React from 'react' import PropTypes from 'prop-types' -import { withStyles } from '@material-ui/core/styles' -import Collapse from '@material-ui/core/Collapse' +import withStyles from '@mui/styles/withStyles'; +import Collapse from '@mui/material/Collapse' import HTMLParser from '../../helpers/HTMLParser' import classNames from 'classnames' diff --git a/src/client/components/facet_results/TemporalMap.js b/src/client/components/facet_results/TemporalMap.js index 4b04d1085459d4105c519a7170170087fcc10bd4..e6bb1481973c5f784bd4ab9d498c1aca1353ec5c 100644 --- a/src/client/components/facet_results/TemporalMap.js +++ b/src/client/components/facet_results/TemporalMap.js @@ -1,13 +1,13 @@ import React, { Component } from 'react' import PropTypes from 'prop-types' -import { withStyles } from '@material-ui/core/styles' +import withStyles from '@mui/styles/withStyles'; import intl from 'react-intl-universal' import ReactMapGL, { NavigationControl, FullscreenControl } from 'react-map-gl' import DeckGL, { ScatterplotLayer } from 'deck.gl' -import Paper from '@material-ui/core/Paper' +import Paper from '@mui/material/Paper' import TemporalMapTimeSlider from './TemporalMapTimeSlider' import './TemporalMapCommon.scss' -import Typography from '@material-ui/core/Typography' +import Typography from '@mui/material/Typography' import { has } from 'lodash' import Moment from 'moment' import { extendMoment } from 'moment-range' diff --git a/src/client/components/facet_results/TemporalMapTimeSlider.js b/src/client/components/facet_results/TemporalMapTimeSlider.js index 0385ad806dba78ace9aec942bf2825b2868b6cd3..4aade73420bc293207ba3f3439fa87afe8fb75c6 100644 --- a/src/client/components/facet_results/TemporalMapTimeSlider.js +++ b/src/client/components/facet_results/TemporalMapTimeSlider.js @@ -1,7 +1,7 @@ import React from 'react' -import { withStyles } from '@material-ui/core/styles' +import withStyles from '@mui/styles/withStyles'; import PropTypes from 'prop-types' -import Slider from '@material-ui/core/Slider' +import Slider from '@mui/material/Slider' import { BaseControl } from 'react-map-gl' import moment from 'moment' diff --git a/src/client/components/facet_results/VirtualizedTable.js b/src/client/components/facet_results/VirtualizedTable.js index 770e8822e284bae2d59b64f5351748f363e79900..f13d311d6101b82a1839e94eb43396384699182e 100644 --- a/src/client/components/facet_results/VirtualizedTable.js +++ b/src/client/components/facet_results/VirtualizedTable.js @@ -2,9 +2,9 @@ import React from 'react' import Immutable from 'immutable' import PropTypes from 'prop-types' import intl from 'react-intl-universal' -import { withStyles } from '@material-ui/core/styles' -import IconButton from '@material-ui/core/IconButton' -import PlaceIcon from '@material-ui/icons/Place' +import withStyles from '@mui/styles/withStyles'; +import IconButton from '@mui/material/IconButton' +import PlaceIcon from '@mui/icons-material/Place' import { has } from 'lodash' import { AutoSizer, @@ -119,10 +119,7 @@ class VirtualizedTable extends React.PureComponent { let marker = '' if (typeof rowData.lat !== 'undefined' || typeof rowData.long !== 'undefined') { marker = ( - <IconButton - disabled - aria-label='Marker' - > + <IconButton disabled aria-label='Marker' size="large"> <PlaceIcon /> </IconButton> ) diff --git a/src/client/components/main_layout/FullTextSearch.js b/src/client/components/main_layout/FullTextSearch.js index f7582bf04c8405054f94b9f5fe6118d2fe63907f..f3f129eeb9f5f38ead85d299382dbd48ca323be8 100644 --- a/src/client/components/main_layout/FullTextSearch.js +++ b/src/client/components/main_layout/FullTextSearch.js @@ -1,10 +1,10 @@ import React from 'react' import PropTypes from 'prop-types' import { Route, Redirect } from 'react-router-dom' -import { makeStyles } from '@material-ui/core/styles' +import makeStyles from '@mui/styles/makeStyles'; import PerspectiveTabs from './PerspectiveTabs' import ReactVirtualizedTable from '../facet_results/ReactVirtualizedTable' -import CalendarViewDayIcon from '@material-ui/icons/CalendarViewDay' +import CalendarViewDayIcon from '@mui/icons-material/CalendarViewDay' const useStyles = makeStyles(theme => ({ root: props => ({ diff --git a/src/client/components/main_layout/GeneralDialog.js b/src/client/components/main_layout/GeneralDialog.js index 4b5af19a020e8a3140011627428f0b79e90a14d3..e7ed9211af7c651471d37206a49ccedffeccc65f 100644 --- a/src/client/components/main_layout/GeneralDialog.js +++ b/src/client/components/main_layout/GeneralDialog.js @@ -1,11 +1,11 @@ import React from 'react' import PropTypes from 'prop-types' -import Dialog from '@material-ui/core/Dialog' -import MuiDialogTitle from '@material-ui/core/DialogTitle' -import IconButton from '@material-ui/core/IconButton' -import CloseIcon from '@material-ui/icons/Close' -import Typography from '@material-ui/core/Typography' -import { withStyles } from '@material-ui/core/styles' +import Dialog from '@mui/material/Dialog' +import MuiDialogTitle from '@mui/material/DialogTitle' +import IconButton from '@mui/material/IconButton' +import CloseIcon from '@mui/icons-material/Close' +import Typography from '@mui/material/Typography' +import withStyles from '@mui/styles/withStyles'; const styles = theme => ({ dialogPaper: { @@ -26,13 +26,17 @@ const DialogTitle = withStyles(styles)((props) => { <Typography variant='h6'>{children}</Typography> {onClose ? ( - <IconButton aria-label='close' className={classes.closeButton} onClick={onClose}> + <IconButton + aria-label='close' + className={classes.closeButton} + onClick={onClose} + size="large"> <CloseIcon /> </IconButton> ) : null} </MuiDialogTitle> - ) + ); }) const GeneralDialog = props => { diff --git a/src/client/components/main_layout/ImageGallerySRL.js b/src/client/components/main_layout/ImageGallerySRL.js index 006f47fa86b54bf636dafaaa864043949ee57642..d4e5fdfd55c203a559a3724ca41a82a59c860493 100644 --- a/src/client/components/main_layout/ImageGallerySRL.js +++ b/src/client/components/main_layout/ImageGallerySRL.js @@ -1,7 +1,7 @@ import React from 'react' -import { makeStyles } from '@material-ui/core/styles' +import makeStyles from '@mui/styles/makeStyles'; import { SRLWrapper, useLightbox } from 'simple-react-lightbox' -import Button from '@material-ui/core/Button' +import Button from '@mui/material/Button' const useStyles = makeStyles({ previewImage: { diff --git a/src/client/components/main_layout/InfoHeader.js b/src/client/components/main_layout/InfoHeader.js index 3cf5bdc8561ca7ba35d5e0bd9b0414e598cba28d..40254da639ab02d945f870b82b77c10f9497a479 100644 --- a/src/client/components/main_layout/InfoHeader.js +++ b/src/client/components/main_layout/InfoHeader.js @@ -1,15 +1,15 @@ import React from 'react' import PropTypes from 'prop-types' -import { makeStyles } from '@material-ui/core/styles' -import Accordion from '@material-ui/core/Accordion' -import AccordionSummary from '@material-ui/core/AccordionSummary' -import AccordionDetails from '@material-ui/core/AccordionDetails' -import ExpandMoreIcon from '@material-ui/icons/ExpandMore' -import Typography from '@material-ui/core/Typography' -// import Divider from '@material-ui/core/Divider'; -import IconButton from '@material-ui/core/IconButton' -import InfoIcon from '@material-ui/icons/InfoOutlined' -import Tooltip from '@material-ui/core/Tooltip' +import makeStyles from '@mui/styles/makeStyles'; +import Accordion from '@mui/material/Accordion' +import AccordionSummary from '@mui/material/AccordionSummary' +import AccordionDetails from '@mui/material/AccordionDetails' +import ExpandMoreIcon from '@mui/icons-material/ExpandMore' +import Typography from '@mui/material/Typography' +// import Divider from '@mui/material/Divider'; +import IconButton from '@mui/material/IconButton' +import InfoIcon from '@mui/icons-material/InfoOutlined' +import Tooltip from '@mui/material/Tooltip' import intl from 'react-intl-universal' const useStyles = makeStyles(theme => ({ @@ -31,7 +31,7 @@ const useStyles = makeStyles(theme => ({ summaryContent: { display: 'block', marginTop: theme.spacing(0.5), - marginBottom: `${theme.spacing(0.5)}px !important` + marginBottom: `${theme.spacing(0.5)} !important` }, headingContainer: { display: 'flex' @@ -133,7 +133,11 @@ const InfoHeader = props => { {props.pageType === 'instancePage' && intl.get(`perspectives.${props.resultClass}.instancePage.label`)} </Typography> <Tooltip title={intl.get('infoHeader.toggleInstructions')}> - <IconButton aria-label='toggle instructions' className={classes.infoIconButton} onClick={handleExpandButtonOnClick}> + <IconButton + aria-label='toggle instructions' + className={classes.infoIconButton} + onClick={handleExpandButtonOnClick} + size="large"> <InfoIcon className={classes.infoIcon} /> </IconButton> </Tooltip> @@ -153,7 +157,7 @@ const InfoHeader = props => { </AccordionDetails> </Accordion> </div> - ) + ); } InfoHeader.propTypes = { diff --git a/src/client/components/main_layout/InstanceList.js b/src/client/components/main_layout/InstanceList.js index bd7f35ffb946b3ffed33ee04b0686800b497fea3..d6727735239e4482d1d0d707bd154e284d88040b 100644 --- a/src/client/components/main_layout/InstanceList.js +++ b/src/client/components/main_layout/InstanceList.js @@ -1,8 +1,8 @@ import React from 'react' import PropTypes from 'prop-types' -import { withStyles } from '@material-ui/core/styles' +import withStyles from '@mui/styles/withStyles'; import { Link } from 'react-router-dom' -import Typography from '@material-ui/core/Typography' +import Typography from '@mui/material/Typography' const styles = theme => ({ root: { diff --git a/src/client/components/main_layout/InstancePage.js b/src/client/components/main_layout/InstancePage.js index 0dc9b2a0e4b87ac30e9d87141871527cb8a1f89a..db882a43bff4f0b2fe39ac29d447c66b4be14140 100644 --- a/src/client/components/main_layout/InstancePage.js +++ b/src/client/components/main_layout/InstancePage.js @@ -1,15 +1,15 @@ import React from 'react' import PropTypes from 'prop-types' -import { withStyles } from '@material-ui/core/styles' -import Paper from '@material-ui/core/Paper' -import Typography from '@material-ui/core/Typography' -import CircularProgress from '@material-ui/core/CircularProgress' -import purple from '@material-ui/core/colors/purple' +import withStyles from '@mui/styles/withStyles'; +import Paper from '@mui/material/Paper' +import Typography from '@mui/material/Typography' +import CircularProgress from '@mui/material/CircularProgress' import PerspectiveTabs from './PerspectiveTabs' import ResultClassRoute from '../facet_results/ResultClassRoute' import { getLocalIDFromAppLocation, createURIfromLocalID } from '../../helpers/helpers' import { Route, Redirect } from 'react-router-dom' import { has } from 'lodash' +import { purple } from '@mui/material/colors'; const styles = () => ({ root: { diff --git a/src/client/components/main_layout/InstancePageTable.js b/src/client/components/main_layout/InstancePageTable.js index dd7c73ee59d43ce5b31a7a6008160f84dac5c3bf..b882c1d681cc4500d0507f5d509bb554d840c2a9 100644 --- a/src/client/components/main_layout/InstancePageTable.js +++ b/src/client/components/main_layout/InstancePageTable.js @@ -1,23 +1,23 @@ import React from 'react' import PropTypes from 'prop-types' import intl from 'react-intl-universal' -import { withStyles } from '@material-ui/core/styles' +import withStyles from '@mui/styles/withStyles'; import clsx from 'clsx' -import ExpandMoreIcon from '@material-ui/icons/ExpandMore' -import Table from '@material-ui/core/Table' -import TableBody from '@material-ui/core/TableBody' -import TableRow from '@material-ui/core/TableRow' -import TableCell from '@material-ui/core/TableCell' +import ExpandMoreIcon from '@mui/icons-material/ExpandMore' +import Table from '@mui/material/Table' +import TableBody from '@mui/material/TableBody' +import TableRow from '@mui/material/TableRow' +import TableCell from '@mui/material/TableCell' import ResultTableCell from '../facet_results/ResultTableCell' -import Tooltip from '@material-ui/core/Tooltip' -import IconButton from '@material-ui/core/IconButton' -import InfoIcon from '@material-ui/icons/InfoOutlined' +import Tooltip from '@mui/material/Tooltip' +import IconButton from '@mui/material/IconButton' +import InfoIcon from '@mui/icons-material/InfoOutlined' const styles = theme => ({ instanceTable: { maxWidth: 1200, width: '100%', - [theme.breakpoints.down('md')]: { + [theme.breakpoints.down('lg')]: { tableLayout: 'fixed', overflowWrap: 'break-word' }, @@ -38,7 +38,7 @@ const styles = theme => ({ justifyContent: 'center' }, labelCell: { - [theme.breakpoints.down('md')]: { + [theme.breakpoints.down('lg')]: { paddingRight: 0 }, [theme.breakpoints.up('md')]: { @@ -53,7 +53,7 @@ const styles = theme => ({ paddingTop: 0, paddingBottom: 0, width: 32, - [theme.breakpoints.down('md')]: { + [theme.breakpoints.down('lg')]: { paddingLeft: 0 } }, @@ -126,81 +126,79 @@ class InstancePageTable extends React.Component { render = () => { const { classes, data, properties, screenSize, perspectiveConfig } = this.props const perspectiveID = perspectiveConfig.id - return ( - <> - {data && - <Table className={classes.instanceTable} size='small'> - <TableBody> - {properties.map(row => { - const label = intl.get(`perspectives.${perspectiveID}.properties.${row.id}.label`) - const description = intl.get(`perspectives.${perspectiveID}.properties.${row.id}.description`) - const { - id, valueType, makeLink, externalLink, sortValues, sortBy, numberedList, minWidth, - linkAsButton, collapsedMaxWords, showSource, sourceExternalLink, renderAsHTML, HTMLParserTask - } = row - let { previewImageHeight } = row - if (screenSize === 'xs' || screenSize === 'sm') { - previewImageHeight = 50 - } - const expanded = this.state.expandedRows.has(row.id) - return ( - <TableRow key={row.id}> - <TableCell className={classes.labelCell}> - {label} - <Tooltip - className={classes.tooltip} - title={description} - enterDelay={300} - > - <IconButton> - <InfoIcon /> - </IconButton> - </Tooltip> - </TableCell> - <TableCell className={classes.expandCell}> - {this.hasExpandableContent({ data: data[id], config: row }) && - <IconButton - className={clsx(classes.expand, { - [classes.expandOpen]: expanded - })} - onClick={this.handleExpandRow(row.id)} - aria-expanded={expanded} - aria-label='Show more' - > - <ExpandMoreIcon /> - </IconButton>} - </TableCell> - <ResultTableCell - key={id} - columnId={id} - data={data[id]} - valueType={valueType} - makeLink={makeLink} - externalLink={externalLink} - sortValues={sortValues} - sortBy={sortBy} - numberedList={numberedList} - minWidth={minWidth} - previewImageHeight={previewImageHeight} - container='cell' - expanded={expanded} - shortenLabel={false} - linkAsButton={linkAsButton} - collapsedMaxWords={collapsedMaxWords} - showSource={showSource} - sourceExternalLink={sourceExternalLink} - renderAsHTML={renderAsHTML} - HTMLParserTask={HTMLParserTask} - referencedTerm={data.referencedTerm} - /> - </TableRow> - ) + return <> + {data && + <Table className={classes.instanceTable} size='small'> + <TableBody> + {properties.map(row => { + const label = intl.get(`perspectives.${perspectiveID}.properties.${row.id}.label`) + const description = intl.get(`perspectives.${perspectiveID}.properties.${row.id}.description`) + const { + id, valueType, makeLink, externalLink, sortValues, sortBy, numberedList, minWidth, + linkAsButton, collapsedMaxWords, showSource, sourceExternalLink, renderAsHTML, HTMLParserTask + } = row + let { previewImageHeight } = row + if (screenSize === 'xs' || screenSize === 'sm') { + previewImageHeight = 50 } - )} - </TableBody> - </Table>} - </> - ) + const expanded = this.state.expandedRows.has(row.id) + return ( + <TableRow key={row.id}> + <TableCell className={classes.labelCell}> + {label} + <Tooltip + className={classes.tooltip} + title={description} + enterDelay={300} + > + <IconButton size="large"> + <InfoIcon /> + </IconButton> + </Tooltip> + </TableCell> + <TableCell className={classes.expandCell}> + {this.hasExpandableContent({ data: data[id], config: row }) && + <IconButton + className={clsx(classes.expand, { + [classes.expandOpen]: expanded + })} + onClick={this.handleExpandRow(row.id)} + aria-expanded={expanded} + aria-label='Show more' + size="large"> + <ExpandMoreIcon /> + </IconButton>} + </TableCell> + <ResultTableCell + key={id} + columnId={id} + data={data[id]} + valueType={valueType} + makeLink={makeLink} + externalLink={externalLink} + sortValues={sortValues} + sortBy={sortBy} + numberedList={numberedList} + minWidth={minWidth} + previewImageHeight={previewImageHeight} + container='cell' + expanded={expanded} + shortenLabel={false} + linkAsButton={linkAsButton} + collapsedMaxWords={collapsedMaxWords} + showSource={showSource} + sourceExternalLink={sourceExternalLink} + renderAsHTML={renderAsHTML} + HTMLParserTask={HTMLParserTask} + referencedTerm={data.referencedTerm} + /> + </TableRow> + ); + } + )} + </TableBody> + </Table>} + </>; } } diff --git a/src/client/components/main_layout/KnowledgeGraphMetadataTable.js b/src/client/components/main_layout/KnowledgeGraphMetadataTable.js index 58822256e0b362db83119c1a6924a2cdb496c6e6..6c116a3fe686a5e54e6525521768c43c6cafb98d 100644 --- a/src/client/components/main_layout/KnowledgeGraphMetadataTable.js +++ b/src/client/components/main_layout/KnowledgeGraphMetadataTable.js @@ -1,13 +1,13 @@ import React, { useEffect } from 'react' import PropTypes from 'prop-types' -import { makeStyles } from '@material-ui/core/styles' -import Table from '@material-ui/core/Table' -import TableBody from '@material-ui/core/TableBody' -import TableCell from '@material-ui/core/TableCell' -import TableContainer from '@material-ui/core/TableContainer' -import TableHead from '@material-ui/core/TableHead' -import TableRow from '@material-ui/core/TableRow' -import Paper from '@material-ui/core/Paper' +import makeStyles from '@mui/styles/makeStyles'; +import Table from '@mui/material/Table' +import TableBody from '@mui/material/TableBody' +import TableCell from '@mui/material/TableCell' +import TableContainer from '@mui/material/TableContainer' +import TableHead from '@mui/material/TableHead' +import TableRow from '@mui/material/TableRow' +import Paper from '@mui/material/Paper' const useStyles = makeStyles(theme => ({ root: { diff --git a/src/client/components/main_layout/MuiIcon.js b/src/client/components/main_layout/MuiIcon.js index 5c107aef0a6c29f45b914b38fc11ff184fd3fa12..d60bf295f4f555bbb072df90f2789a1ae0d4f910 100644 --- a/src/client/components/main_layout/MuiIcon.js +++ b/src/client/components/main_layout/MuiIcon.js @@ -20,7 +20,7 @@ import { PlayArrow, MailOutline, TrendingDown -} from '@material-ui/icons' +} from '@mui/icons-material' import has from 'lodash' const MuiIcon = props => { diff --git a/src/client/components/main_layout/PerspectiveTabs.js b/src/client/components/main_layout/PerspectiveTabs.js index 0773cd6409e7efe959ff721ca70c5880b269acee..96b32667f356cb454ec046e47dc76775b40f09c0 100644 --- a/src/client/components/main_layout/PerspectiveTabs.js +++ b/src/client/components/main_layout/PerspectiveTabs.js @@ -1,11 +1,11 @@ import React from 'react' import PropTypes from 'prop-types' -import { withStyles } from '@material-ui/core/styles' -import Grow from '@material-ui/core/Grow' -import Tabs from '@material-ui/core/Tabs' -import Tab from '@material-ui/core/Tab' +import withStyles from '@mui/styles/withStyles'; +import Grow from '@mui/material/Grow' +import Tabs from '@mui/material/Tabs' +import Tab from '@mui/material/Tab' import { Link } from 'react-router-dom' -import Paper from '@material-ui/core/Paper' +import Paper from '@mui/material/Paper' import intl from 'react-intl-universal' const styles = theme => ({ diff --git a/src/client/components/main_layout/Player.js b/src/client/components/main_layout/Player.js index f2cc5c7d25e9e6a54f9ab098572b700949d824fe..d01ec655fd5774d857247f043691d7738ba80560 100644 --- a/src/client/components/main_layout/Player.js +++ b/src/client/components/main_layout/Player.js @@ -1,5 +1,5 @@ import React from 'react' -import { withStyles } from '@material-ui/core/styles' +import withStyles from '@mui/styles/withStyles'; const styles = theme => ({ // https://www.w3schools.com/howto/howto_css_responsive_iframes.asp diff --git a/src/client/components/main_layout/TextPage.js b/src/client/components/main_layout/TextPage.js index b3a7c3b269c73387d977f1c0eb01e6311a649963..5f7f70cddebd67007a1a7fa803863219d29dd531 100644 --- a/src/client/components/main_layout/TextPage.js +++ b/src/client/components/main_layout/TextPage.js @@ -1,7 +1,7 @@ import React from 'react' import PropTypes from 'prop-types' -import { makeStyles } from '@material-ui/core/styles' -import Paper from '@material-ui/core/Paper' +import makeStyles from '@mui/styles/makeStyles'; +import Paper from '@mui/material/Paper' const useStyles = makeStyles(theme => ({ root: { @@ -15,7 +15,7 @@ const useStyles = makeStyles(theme => ({ padding: theme.spacing(3), marginLeft: theme.spacing(3), marginRight: theme.spacing(3), - [theme.breakpoints.down('sm')]: { + [theme.breakpoints.down('md')]: { padding: theme.spacing(1.5), marginLeft: 0, marginRight: 0 diff --git a/src/client/components/main_layout/TopBar.js b/src/client/components/main_layout/TopBar.js index 37b128ee61beb33d1dabd8f51f7df197817ebd85..312f6d578a339eeaabfdd16231761acd8ebe7c11 100644 --- a/src/client/components/main_layout/TopBar.js +++ b/src/client/components/main_layout/TopBar.js @@ -1,20 +1,20 @@ import React from 'react' import PropTypes from 'prop-types' import intl from 'react-intl-universal' -import AppBar from '@material-ui/core/AppBar' -import Toolbar from '@material-ui/core/Toolbar' -import IconButton from '@material-ui/core/IconButton' -import Typography from '@material-ui/core/Typography' -import MenuItem from '@material-ui/core/MenuItem' -import Menu from '@material-ui/core/Menu' -import { makeStyles } from '@material-ui/core/styles' -import MoreIcon from '@material-ui/icons/MoreVert' -import Button from '@material-ui/core/Button' +import AppBar from '@mui/material/AppBar' +import Toolbar from '@mui/material/Toolbar' +import IconButton from '@mui/material/IconButton' +import Typography from '@mui/material/Typography' +import MenuItem from '@mui/material/MenuItem' +import Menu from '@mui/material/Menu' +import makeStyles from '@mui/styles/makeStyles' +import MoreIcon from '@mui/icons-material/MoreVert' +import Button from '@mui/material/Button' import { Link, NavLink } from 'react-router-dom' import TopBarSearchField from './TopBarSearchField' import TopBarInfoButton from './TopBarInfoButton' import TopBarLanguageButton from './TopBarLanguageButton' -import Divider from '@material-ui/core/Divider' +import Divider from '@mui/material/Divider' import { has } from 'lodash' import secoLogo from '../../img/logos/seco-logo-48x50.png' @@ -79,7 +79,7 @@ const useStyles = makeStyles(theme => ({ }), mainLogoButtonRoot: { paddingLeft: 0, - [theme.breakpoints.down('xs')]: { + [theme.breakpoints.down('sm')]: { minWidth: 48 } }, @@ -92,11 +92,11 @@ const useStyles = makeStyles(theme => ({ background: theme.palette.primary.main, whiteSpace: 'nowrap', textTransform: props.layoutConfig.topBar.logoTextTransform, - [theme.breakpoints.down('sm')]: { + [theme.breakpoints.down('md')]: { fontSize: '1.5rem' }, ...(props.layoutConfig.topBar.hideLogoTextOnMobile && { - [theme.breakpoints.down('xs')]: { + [theme.breakpoints.down('sm')]: { display: 'none' } }) @@ -382,9 +382,11 @@ const TopBar = props => { location={props.location} />} <IconButton - aria-label='display more actions' color='inherit' + aria-label='display more actions' + color='inherit' className={classes.mobileMenuButton} onClick={handleMobileMenuOpen} + size='large' > <MoreIcon /> </IconButton> diff --git a/src/client/components/main_layout/TopBarInfoButton.js b/src/client/components/main_layout/TopBarInfoButton.js index dd34179ccdef26664fdd58b0db76dda03965446d..48d6d5a2b6084f0cc5ba8e9be88ad6fddda0281c 100644 --- a/src/client/components/main_layout/TopBarInfoButton.js +++ b/src/client/components/main_layout/TopBarInfoButton.js @@ -1,11 +1,11 @@ import React from 'react' import PropTypes from 'prop-types' import intl from 'react-intl-universal' -import Button from '@material-ui/core/Button' -import MenuItem from '@material-ui/core/MenuItem' -import Menu from '@material-ui/core/Menu' -import ExpandMoreIcon from '@material-ui/icons/ExpandMore' -import { withStyles } from '@material-ui/core/styles' +import Button from '@mui/material/Button' +import MenuItem from '@mui/material/MenuItem' +import Menu from '@mui/material/Menu' +import ExpandMoreIcon from '@mui/icons-material/ExpandMore' +import withStyles from '@mui/styles/withStyles' import { Link } from 'react-router-dom' const styles = theme => ({ @@ -80,7 +80,6 @@ class TopBarInfoButton extends React.Component { </Button> <Menu anchorEl={this.state.anchorEl} - getContentAnchorEl={null} anchorOrigin={{ vertical: 'bottom', horizontal: 'center' diff --git a/src/client/components/main_layout/TopBarLanguageButton.js b/src/client/components/main_layout/TopBarLanguageButton.js index 5725a5419884b1be31ae762914a80da170bbc797..9229e68e06e8c60aeeb3a3aac9c903f4dc7ed32f 100644 --- a/src/client/components/main_layout/TopBarLanguageButton.js +++ b/src/client/components/main_layout/TopBarLanguageButton.js @@ -1,10 +1,10 @@ import React from 'react' import PropTypes from 'prop-types' -import Button from '@material-ui/core/Button' -import MenuItem from '@material-ui/core/MenuItem' -import Menu from '@material-ui/core/Menu' -import ExpandMoreIcon from '@material-ui/icons/ExpandMore' -import { withStyles } from '@material-ui/core/styles' +import Button from '@mui/material/Button' +import MenuItem from '@mui/material/MenuItem' +import Menu from '@mui/material/Menu' +import ExpandMoreIcon from '@mui/icons-material/ExpandMore' +import withStyles from '@mui/styles/withStyles' import { Link } from 'react-router-dom' import history from '../../History' import { updateLocaleToPathname } from '../../helpers/helpers' @@ -57,7 +57,6 @@ class TopBarLanguageButton extends React.Component { </Button> <Menu anchorEl={this.state.anchorEl} - getContentAnchorEl={null} anchorOrigin={{ vertical: 'bottom', horizontal: 'center' diff --git a/src/client/components/main_layout/TopBarSearchField.js b/src/client/components/main_layout/TopBarSearchField.js index 8e848cbff8d40ab8ae00d1e26c06f6356524eaac..0c89fb4708e67a8354a7c68dccf749c4ec7f0699 100644 --- a/src/client/components/main_layout/TopBarSearchField.js +++ b/src/client/components/main_layout/TopBarSearchField.js @@ -1,11 +1,11 @@ import React from 'react' import PropTypes from 'prop-types' import intl from 'react-intl-universal' -import { withStyles } from '@material-ui/core/styles' -import { alpha } from '@material-ui/core/styles/colorManipulator' -import SearchIcon from '@material-ui/icons/Search' -import InputBase from '@material-ui/core/InputBase' -// import CircularProgress from '@material-ui/core/CircularProgress'; +import { alpha } from '@mui/material/styles'; +import withStyles from '@mui/styles/withStyles'; +import SearchIcon from '@mui/icons-material/Search' +import InputBase from '@mui/material/InputBase' +// import CircularProgress from '@mui/material/CircularProgress'; import history from '../../History' const styles = theme => ({ diff --git a/src/client/components/main_layout/VideoPage.js b/src/client/components/main_layout/VideoPage.js index 1c357cb2985e54a2ffc38dd768cca0c19195b461..19ae3796d8015bce32d115737d3c94105fcda757 100644 --- a/src/client/components/main_layout/VideoPage.js +++ b/src/client/components/main_layout/VideoPage.js @@ -1,8 +1,8 @@ import React from 'react' -import { makeStyles } from '@material-ui/core/styles' -import Paper from '@material-ui/core/Paper' -import Grid from '@material-ui/core/Grid' -import { Typography } from '@material-ui/core' +import makeStyles from '@mui/styles/makeStyles'; +import Paper from '@mui/material/Paper' +import Grid from '@mui/material/Grid' +import { Typography } from '@mui/material' import InstancePageTable from './InstancePageTable' import Player from './Player' import VideoTableOfContents from './VideoTableOfContents' @@ -24,7 +24,7 @@ const useStyles = makeStyles(theme => ({ marginTop: theme.spacing(1), // flexWrap: 'wrap-reverse', [theme.breakpoints.up(props.layoutConfig.hundredPercentHeightBreakPoint)]: { - height: `calc(100% - ${theme.spacing(2.5)}px)` + height: `calc(100% - ${theme.spacing(2.5)})` } }), gridItem: props => ({ @@ -46,7 +46,7 @@ const useStyles = makeStyles(theme => ({ [theme.breakpoints.up(props.layoutConfig.hundredPercentHeightBreakPoint)]: { height: '60%' }, - [theme.breakpoints.down('sm')]: { + [theme.breakpoints.down('md')]: { maxWidth: 500 }, overflow: 'auto', @@ -57,7 +57,7 @@ const useStyles = makeStyles(theme => ({ tableContainer: props => ({ marginBottom: theme.spacing(1), [theme.breakpoints.up(props.layoutConfig.hundredPercentHeightBreakPoint)]: { - height: `calc(40% - ${theme.spacing(1)}px)`, + height: `calc(40% - ${theme.spacing(1)})`, overflow: 'auto' } }), diff --git a/src/client/components/main_layout/VideoTableOfContents.js b/src/client/components/main_layout/VideoTableOfContents.js index 6e7d2dc7935970dced6ce29c2cb74fe06a083d74..7480500c371ca9db41e133c592cc34eb5ddffcca 100644 --- a/src/client/components/main_layout/VideoTableOfContents.js +++ b/src/client/components/main_layout/VideoTableOfContents.js @@ -1,12 +1,12 @@ import React from 'react' -import { withStyles } from '@material-ui/core/styles' -import Accordion from '@material-ui/core/Accordion' -import AccordionDetails from '@material-ui/core/AccordionDetails' -import AccordionSummary from '@material-ui/core/AccordionSummary' -import Typography from '@material-ui/core/Typography' -import ExpandMoreIcon from '@material-ui/icons/ExpandMore' -import Divider from '@material-ui/core/Divider' -import Tooltip from '@material-ui/core/Tooltip' +import withStyles from '@mui/styles/withStyles'; +import Accordion from '@mui/material/Accordion' +import AccordionDetails from '@mui/material/AccordionDetails' +import AccordionSummary from '@mui/material/AccordionSummary' +import Typography from '@mui/material/Typography' +import ExpandMoreIcon from '@mui/icons-material/ExpandMore' +import Divider from '@mui/material/Divider' +import Tooltip from '@mui/material/Tooltip' import { Link } from 'react-router-dom' import { has } from 'lodash' import parse from 'html-react-parser' diff --git a/src/client/components/main_layout/WordCloud.js b/src/client/components/main_layout/WordCloud.js index 284335c82a8146060b2861f440d3ca89b893c36c..c261ae19ad5b3d1e210d0bd58cd8d6720cf28b72 100644 --- a/src/client/components/main_layout/WordCloud.js +++ b/src/client/components/main_layout/WordCloud.js @@ -1,7 +1,7 @@ import React from 'react' import ReactWordcloud from 'react-wordcloud' -import { makeStyles } from '@material-ui/core/styles' -import Paper from '@material-ui/core/Paper' +import makeStyles from '@mui/styles/makeStyles'; +import Paper from '@mui/material/Paper' import 'tippy.js/dist/tippy.css' import 'tippy.js/animations/scale.css' @@ -22,7 +22,7 @@ const useStyles = makeStyles(theme => ({ wordCloudInnerContainer: props => ({ width: '100%', height: '100%', - [theme.breakpoints.down('md')]: { + [theme.breakpoints.down('lg')]: { minHeight: 400, overflow: 'auto' }, diff --git a/src/client/components/perspectives/sampo/Footer.js b/src/client/components/perspectives/sampo/Footer.js index 6be5b73c7803641bf1129081321c4290adc4961e..6a3018660c0ec4ad740133ac690a8f97ee2a4c48 100644 --- a/src/client/components/perspectives/sampo/Footer.js +++ b/src/client/components/perspectives/sampo/Footer.js @@ -1,8 +1,8 @@ import React from 'react' -import Paper from '@material-ui/core/Paper' +import Paper from '@mui/material/Paper' import PropTypes from 'prop-types' -import Grid from '@material-ui/core/Grid' -import { makeStyles } from '@material-ui/core/styles' +import Grid from '@mui/material/Grid' +import makeStyles from '@mui/styles/makeStyles'; import aaltoLogo from '../../../img/logos/Aalto_SCI_EN_13_BLACK_2_cropped.png' import hyLogo from '../../../img/logos/university-of-helsinki-logo-transparent-black.png' import heldigLogo from '../../../img/logos/heldig-logo-transparent-black.png' @@ -44,7 +44,7 @@ const useStyles = makeStyles(theme => ({ paddingTop: '0px !important', paddingBottom: '0px !important' }, - [theme.breakpoints.down('sm')]: { + [theme.breakpoints.down('md')]: { paddingTop: '12px !important', paddingBottom: '12px !important' } diff --git a/src/client/components/perspectives/sampo/Main.js b/src/client/components/perspectives/sampo/Main.js index 172a59cde39314cc9350dfdcc6dfa2d79f1c385e..62df9eea49e5716cf4320c5b04bf26c04e0913a3 100644 --- a/src/client/components/perspectives/sampo/Main.js +++ b/src/client/components/perspectives/sampo/Main.js @@ -1,92 +1,18 @@ import React from 'react' import PropTypes from 'prop-types' import intl from 'react-intl-universal' -import Grid from '@material-ui/core/Grid' -import Typography from '@material-ui/core/Typography' -import { makeStyles } from '@material-ui/core/styles' -import MainCard from './MainCard' +import Box from '@mui/material/Box' +import Grid from '@mui/material/Grid' +import Typography from '@mui/material/Typography' import has from 'lodash' - -const useStyles = makeStyles(theme => ({ - root: props => ({ - [theme.breakpoints.up(props.layoutConfig.hundredPercentHeightBreakPoint)]: { - overflow: 'auto', - height: `calc(100% - ${props.layoutConfig.topBar.reducedHeight + props.layoutConfig.footer.reducedHeight + theme.spacing(1)}px)` - }, - [theme.breakpoints.up(props.layoutConfig.reducedHeightBreakpoint)]: { - overflow: 'auto', - height: `calc(100% - ${props.layoutConfig.topBar.defaultHeight + props.layoutConfig.footer.defaultHeight + theme.spacing(1)}px)` - }, - marginBottom: theme.spacing(1) - }), - banner: props => ({ - background: props.layoutConfig.mainPage.bannerBackround, - backgroundRepeat: 'no-repeat', - backgroundSize: 'cover', - backgroundPosition: 'center', - height: props.layoutConfig.mainPage.bannerMobileHeight, - [theme.breakpoints.up('md')]: { - height: props.layoutConfig.mainPage.bannerReducedHeight - }, - [theme.breakpoints.up('xl')]: { - height: props.layoutConfig.mainPage.bannerDefaultHeight - }, - boxShadow: '0 -15px 15px 0px #bdbdbd inset', - display: 'flex', - alignItems: 'center', - justifyContent: 'center' - }), - bannerContent: { - display: 'inline-block', - color: '#fff' - }, - bannerHeading: { - display: 'flex', - justifyContent: 'center' - }, - bannerSubheading: { - marginTop: theme.spacing(1.5), - [theme.breakpoints.up('md')]: { - display: 'flex', - '& div': { - flexGrow: 1, - width: 0 - } - } - }, - layout: { - marginLeft: theme.spacing(1), - marginRight: theme.spacing(1), - [theme.breakpoints.up(800 + theme.spacing(6))]: { - width: 800, - marginLeft: 'auto', - marginRight: 'auto' - } - }, - heroContent: { - // paddingTop: theme.spacing(3), - paddingBottom: theme.spacing(1) - }, - licenceText: { - marginTop: theme.spacing(0.5), - fontSize: '0.7em' - }, - lowerRow: { - marginTop: theme.spacing(1) - }, - licenceTextContainer: { - marginTop: theme.spacing(1), - display: 'flex', - justifyContent: 'center' - } -})) +import MainCard from './MainCard' +import { getSpacing } from '../../../helpers/helpers' /** - * A component for generating a landing page for a semantic portal. + * A component for generating a front page for a semantic portal. */ const Main = props => { const { perspectives, screenSize } = props - const classes = useStyles(props) let headingVariant = 'h5' let subheadingVariant = 'body1' let descriptionVariant = 'body1' @@ -119,37 +45,106 @@ const Main = props => { } return ( - <div className={classes.root}> - <div className={classes.banner}> - <div className={classes.bannerContent}> - <div className={classes.bannerHeading}> + <Box + sx={theme => { + const { layoutConfig } = props + const defaultHeightReduction = layoutConfig.topBar.defaultHeight + + layoutConfig.footer.defaultHeight + getSpacing(theme, 1) + const reducedHeightReduction = layoutConfig.topBar.reducedHeight + + layoutConfig.footer.reducedHeight + getSpacing(theme, 1) + return { + [theme.breakpoints.up(props.layoutConfig.hundredPercentHeightBreakPoint)]: { + overflow: 'auto', + height: `calc(100% - ${reducedHeightReduction}px)` + }, + [theme.breakpoints.up(props.layoutConfig.reducedHeightBreakpoint)]: { + overflow: 'auto', + height: `calc(100% - ${defaultHeightReduction}px)` + }, + marginBottom: theme.spacing(1) + } + }} + > + <Box + sx={theme => ({ + background: props.layoutConfig.mainPage.bannerBackround, + backgroundRepeat: 'no-repeat', + backgroundSize: 'cover', + backgroundPosition: 'center', + height: props.layoutConfig.mainPage.bannerMobileHeight, + [theme.breakpoints.up('md')]: { + height: props.layoutConfig.mainPage.bannerReducedHeight + }, + [theme.breakpoints.up('xl')]: { + height: props.layoutConfig.mainPage.bannerDefaultHeight + }, + boxShadow: '0 -15px 15px 0px #bdbdbd inset', + display: 'flex', + alignItems: 'center', + justifyContent: 'center' + })} + > + <Box + sx={{ + color: '#fff' + }} + > + <Box + sx={{ + display: 'flex', + justifyContent: 'center' + }} + > <Typography component='h1' variant={headingVariant} align='center'> {intl.getHTML('appTitle.long')} </Typography> - </div> - <div className={classes.bannerSubheading}> - <div> + </Box> + <Box + sx={theme => ({ + marginTop: theme.spacing(1.5), + [theme.breakpoints.up('md')]: { + display: 'flex', + '& div': { + flexGrow: 1, + width: 0 + } + } + })} + > + <Box> <Typography component='p' variant={subheadingVariant} align='center'> {intl.getHTML('appTitle.subheading')} </Typography> - </div> - </div> - - </div> - - </div> - <div className={classes.layout}> - <div className={classes.heroContent}> + </Box> + </Box> + </Box> + </Box> + <Box + sx={theme => ({ + marginLeft: theme.spacing(1), + marginRight: theme.spacing(1), + [theme.breakpoints.up(800 + getSpacing(theme, 6))]: { + width: 800, + marginLeft: 'auto', + marginRight: 'auto' + } + })} + > + <Box + sx={theme => ({ + paddingBottom: theme.spacing(1) + })} + > <Typography variant={descriptionVariant} color='textPrimary' paragraph> {intl.getHTML('appDescription')} </Typography> <Typography variant={descriptionVariant} align='center' color='textPrimary' paragraph> {intl.get('selectPerspective')} </Typography> - </div> + </Box> <Grid container spacing={screenSize === 'sm' ? 2 : 1} - justify={screenSize === 'xs' || screenSize === 'sm' ? 'center' : 'flex-start'} + justifyContent={screenSize === 'xs' || screenSize === 'sm' ? 'center' : 'flex-start'} > {perspectives.map(perspective => { const hideCard = (has(perspective.hideCardOnFrontPage) && perspective.hideCardOnFrontPage) @@ -166,11 +161,24 @@ const Main = props => { return null })} </Grid> - <div className={classes.licenceTextContainer}> - <Typography className={classes.licenceText}>{intl.getHTML('mainPageImageLicence')}</Typography> - </div> - </div> - </div> + <Box + sx={theme => ({ + marginTop: theme.spacing(1), + display: 'flex', + justifyContent: 'center' + })} + > + <Typography + sx={theme => ({ + marginTop: theme.spacing(0.5), + fontSize: '0.7em' + })} + > + {intl.getHTML('mainPageImageLicence')} + </Typography> + </Box> + </Box> + </Box> ) } diff --git a/src/client/components/perspectives/sampo/MainCard.js b/src/client/components/perspectives/sampo/MainCard.js index c536120ea1ee5b77167a0a37ad84c754f048b6a6..e0efd4847b6584775f01bcefdae4df70ba2d4d30 100644 --- a/src/client/components/perspectives/sampo/MainCard.js +++ b/src/client/components/perspectives/sampo/MainCard.js @@ -1,15 +1,15 @@ import React from 'react' import PropTypes from 'prop-types' -import Typography from '@material-ui/core/Typography' -import Paper from '@material-ui/core/Paper' -import Grid from '@material-ui/core/Grid' +import Typography from '@mui/material/Typography' +import Paper from '@mui/material/Paper' +import Grid from '@mui/material/Grid' import intl from 'react-intl-universal' -import Card from '@material-ui/core/Card' -import CardActionArea from '@material-ui/core/CardActionArea' -import CardContent from '@material-ui/core/CardContent' -import CardMedia from '@material-ui/core/CardMedia' -import { makeStyles } from '@material-ui/core/styles' -import useMediaQuery from '@material-ui/core/useMediaQuery' +import Card from '@mui/material/Card' +import CardActionArea from '@mui/material/CardActionArea' +import CardContent from '@mui/material/CardContent' +import CardMedia from '@mui/material/CardMedia' +import makeStyles from '@mui/styles/makeStyles'; +import useMediaQuery from '@mui/material/useMediaQuery' import { Link } from 'react-router-dom' import { has } from 'lodash' import defaultImage from '../../../img/main_page/thumb.png' @@ -17,11 +17,11 @@ import defaultImage from '../../../img/main_page/thumb.png' const useStyles = makeStyles(theme => ({ gridItem: props => ({ textDecoration: 'none', - [theme.breakpoints.down('xs')]: { + [theme.breakpoints.down('sm')]: { justifyContent: 'center' }, height: 228, - [theme.breakpoints.down('sm')]: { + [theme.breakpoints.down('md')]: { height: 170, maxWidth: 300 }, @@ -65,7 +65,7 @@ const useStyles = makeStyles(theme => ({ const MainCard = props => { const classes = useStyles(props) const { perspective, cardHeadingVariant } = props - const xsScreen = useMediaQuery(theme => theme.breakpoints.down('xs')) + const xsScreen = useMediaQuery(theme => theme.breakpoints.down('sm')) // const smScreen = useMediaQuery(theme => theme.breakpoints.between('sm', 'md')) const externalPerspective = has(perspective, 'externalUrl') const card = has(perspective, 'frontPageElement') && perspective.frontPageElement === 'card' diff --git a/src/client/components/perspectives/sampo/MainClientFS.js b/src/client/components/perspectives/sampo/MainClientFS.js index 0aa7a59cfa2556d55c2f5d1cd4de9bbb421f32f1..a341435abc10761fbcf9de0e78fb0a85dec53569 100644 --- a/src/client/components/perspectives/sampo/MainClientFS.js +++ b/src/client/components/perspectives/sampo/MainClientFS.js @@ -1,8 +1,8 @@ import React from 'react' import PropTypes from 'prop-types' -import { withStyles } from '@material-ui/core/styles' -import Typography from '@material-ui/core/Typography' -import Paper from '@material-ui/core/Paper' +import withStyles from '@mui/styles/withStyles'; +import Typography from '@mui/material/Typography' +import Paper from '@mui/material/Paper' import intl from 'react-intl-universal' import bgImage from '../../../img/main_page/bg2.jpg' @@ -20,17 +20,17 @@ const styles = theme => ({ backgroundColor: 'rgba(255, 255, 255, 0.8)', margin: theme.spacing(3), padding: theme.spacing(3), - [theme.breakpoints.down('md')]: { + [theme.breakpoints.down('lg')]: { padding: theme.spacing(1) } }, frontPageHeading: { - [theme.breakpoints.down('md')]: { + [theme.breakpoints.down('lg')]: { fontSize: '1.2rem' } }, frontPageText: { - [theme.breakpoints.down('md')]: { + [theme.breakpoints.down('lg')]: { fontSize: '1.0rem' } } diff --git a/src/client/containers/SemanticPortal.js b/src/client/containers/SemanticPortal.js index db9921307b7405b3ed6e2c91855d1086820af1e3..7b24a5d1c1de884e76d8da0b98494703dfe773f1 100644 --- a/src/client/containers/SemanticPortal.js +++ b/src/client/containers/SemanticPortal.js @@ -7,11 +7,8 @@ import { makeStyles } from '@material-ui/core/styles' import { withRouter, Route, Redirect, Switch } from 'react-router-dom' import classNames from 'classnames' import { compose } from '@shakacode/recompose' -import useMediaQuery from '@material-ui/core/useMediaQuery' -import { MuiPickersUtilsProvider } from '@material-ui/pickers' -import moment from 'moment' -import MomentUtils from '@date-io/moment' -import 'moment/locale/fi' +import { useTheme } from '@mui/material/styles' +import useMediaQuery from '@mui/material/useMediaQuery' import Grid from '@material-ui/core/Grid' import { fetchResultCount, @@ -245,12 +242,13 @@ const useStyles = makeStyles(theme => ({ */ const SemanticPortal = props => { const { error } = props + const theme = useTheme() const classes = useStyles(props) - const xsScreen = useMediaQuery(theme => theme.breakpoints.down('xs')) - const smScreen = useMediaQuery(theme => theme.breakpoints.between('sm', 'md')) - const mdScreen = useMediaQuery(theme => theme.breakpoints.between('md', 'lg')) - const lgScreen = useMediaQuery(theme => theme.breakpoints.between('lg', 'xl')) - const xlScreen = useMediaQuery(theme => theme.breakpoints.up('xl')) + const xsScreen = useMediaQuery(theme.breakpoints.down('xs')) + const smScreen = useMediaQuery(theme.breakpoints.between('sm', 'md')) + const mdScreen = useMediaQuery(theme.breakpoints.between('md', 'lg')) + const lgScreen = useMediaQuery(theme.breakpoints.between('lg', 'xl')) + const xlScreen = useMediaQuery(theme.breakpoints.up('xl')) let screenSize = '' if (xsScreen) { screenSize = 'xs' } if (smScreen) { screenSize = 'sm' } @@ -267,73 +265,167 @@ const SemanticPortal = props => { }, [props.options.currentLocale]) return ( - <MuiPickersUtilsProvider libInstance={moment} utils={MomentUtils} locale={props.options.currentLocale}> - <div className={classes.root}> - <Message error={error} /> - <> - <TopBar - rootUrl={rootUrlWithLang} - search={props.fullTextSearch} - fetchFullTextResults={props.fetchFullTextResults} - clearResults={props.clearResults} - clientFSClearResults={props.clientFSClearResults} - perspectives={perspectiveConfig} - currentLocale={props.options.currentLocale} - availableLocales={props.options.availableLocales} - loadLocales={props.loadLocales} - xsScreen={xsScreen} - location={props.location} - layoutConfig={layoutConfig} - /> - <Route exact path={`${rootUrl}/`}> - <Redirect to={rootUrlWithLang} /> - </Route> - <Route - exact path={`${rootUrlWithLang}/`} - render={() => - <> - <Main - perspectives={perspectiveConfig} - screenSize={screenSize} - rootUrl={rootUrlWithLang} - layoutConfig={layoutConfig} - /> - <Footer - portalConfig={portalConfig} - layoutConfig={layoutConfig} - /> - </>} - /> - {/* https://stackoverflow.com/a/41024944 */} - <Route - path={`${rootUrlWithLang}/`} render={({ location }) => { - if (typeof window.ga === 'function') { - window.ga('set', 'page', location.pathname + location.search) - window.ga('send', 'pageview') - } - return null - }} - /> - {/* route for full text search results */} - <Route - path={`${rootUrlWithLang}/full-text-search`} - render={routeProps => - <FullTextSearch - fullTextSearch={props.fullTextSearch} - sortFullTextResults={props.sortFullTextResults} - routeProps={routeProps} + <div className={classes.root}> + <Message error={error} /> + <> + <TopBar + rootUrl={rootUrlWithLang} + search={props.fullTextSearch} + fetchFullTextResults={props.fetchFullTextResults} + clearResults={props.clearResults} + clientFSClearResults={props.clientFSClearResults} + perspectives={perspectiveConfig} + currentLocale={props.options.currentLocale} + availableLocales={props.options.availableLocales} + loadLocales={props.loadLocales} + xsScreen={xsScreen} + location={props.location} + layoutConfig={layoutConfig} + /> + <Route exact path={`${rootUrl}/`}> + <Redirect to={rootUrlWithLang} /> + </Route> + <Route + exact path={`${rootUrlWithLang}/`} + render={() => + <> + <Main + perspectives={perspectiveConfig} screenSize={screenSize} rootUrl={rootUrlWithLang} layoutConfig={layoutConfig} - />} - /> - {/* routes for faceted search perspectives */} - {perspectiveConfig.map(perspective => { - if (!has(perspective, 'externalUrl') && perspective.searchMode === 'faceted-search') { - return ( - <React.Fragment key={perspective.id}> + /> + <Footer + portalConfig={portalConfig} + layoutConfig={layoutConfig} + /> + </>} + /> + {/* https://stackoverflow.com/a/41024944 */} + <Route + path={`${rootUrlWithLang}/`} render={({ location }) => { + if (typeof window.ga === 'function') { + window.ga('set', 'page', location.pathname + location.search) + window.ga('send', 'pageview') + } + return null + }} + /> + {/* route for full text search results */} + <Route + path={`${rootUrlWithLang}/full-text-search`} + render={routeProps => + <FullTextSearch + fullTextSearch={props.fullTextSearch} + sortFullTextResults={props.sortFullTextResults} + routeProps={routeProps} + screenSize={screenSize} + rootUrl={rootUrlWithLang} + layoutConfig={layoutConfig} + />} + /> + {/* routes for faceted search perspectives */} + {perspectiveConfig.map(perspective => { + if (!has(perspective, 'externalUrl') && perspective.searchMode === 'faceted-search') { + return ( + <React.Fragment key={perspective.id}> + <Route + path={`${rootUrlWithLang}/${perspective.id}/faceted-search`} + render={routeProps => { + return ( + <> + <InfoHeader + portalConfig={portalConfig} + layoutConfig={layoutConfig} + resultClass={perspective.id} + pageType='facetResults' + expanded={props[perspective.id].facetedSearchHeaderExpanded} + updateExpanded={props.updatePerspectiveHeaderExpanded} + screenSize={screenSize} + /> + <Grid + container spacing={1} className={props[perspective.id].facetedSearchHeaderExpanded + ? classes.perspectiveContainerHeaderExpanded + : classes.perspectiveContainer} + > + <Grid item xs={12} md={3} className={classes.facetBarContainer}> + <FacetBar + portalConfig={portalConfig} + perspectiveConfig={perspective} + layoutConfig={layoutConfig} + facetedSearchMode='serverFS' + facetData={props[`${perspective.id}Facets`]} + facetDataConstrainSelf={props[`${perspective.id}FacetsConstrainSelf`]} + perspectiveState={props[perspective.id]} + facetClass={perspective.id} + resultClass={perspective.id} + fetchingResultCount={props[perspective.id].fetchingResultCount} + resultCount={props[perspective.id].resultCount} + fetchFacet={props.fetchFacet} + fetchFacetConstrainSelf={props.fetchFacetConstrainSelf} + fetchResults={props.fetchResults} + clearFacet={props.clearFacet} + clearAllFacets={props.clearAllFacets} + fetchResultCount={props.fetchResultCount} + updateFacetOption={props.updateFacetOption} + showError={props.showError} + defaultActiveFacets={perspective.defaultActiveFacets} + rootUrl={rootUrlWithLang} + screenSize={screenSize} + apexChartsConfig={apexChartsConfig} + leafletConfig={leafletConfig} + networkConfig={networkConfig} + /> + </Grid> + <Grid item xs={12} md={9} className={classes.resultsContainer}> + <FacetResults + portalConfig={portalConfig} + layoutConfig={layoutConfig} + perspectiveConfig={perspective} + perspectiveState={props[`${perspective.id}`]} + facetState={props[`${perspective.id}Facets`]} + facetConstrainSelfState={props[`${perspective.id}FacetsConstrainSelf`]} + leafletMapState={props.leafletMap} + fetchPaginatedResults={props.fetchPaginatedResults} + fetchResults={props.fetchResults} + fetchInstanceAnalysis={props.fetchInstanceAnalysis} + fetchFacetConstrainSelf={props.fetchFacetConstrainSelf} + fetchGeoJSONLayers={props.fetchGeoJSONLayers} + fetchGeoJSONLayersBackend={props.fetchGeoJSONLayersBackend} + clearGeoJSONLayers={props.clearGeoJSONLayers} + fetchByURI={props.fetchByURI} + updatePage={props.updatePage} + updateRowsPerPage={props.updateRowsPerPage} + updateFacetOption={props.updateFacetOption} + updateMapBounds={props.updateMapBounds} + sortResults={props.sortResults} + showError={props.showError} + routeProps={routeProps} + perspective={perspective} + animationValue={props.animationValue} + animateMap={props.animateMap} + screenSize={screenSize} + rootUrl={rootUrlWithLang} + apexChartsConfig={apexChartsConfig} + leafletConfig={leafletConfig} + networkConfig={networkConfig} + /> + </Grid> + </Grid> + </> + ) + }} + /> + <Switch> + <Redirect + from={`/${perspective.id}/page/:id`} + to={{ + pathname: `${rootUrlWithLang}/${perspective.id}/page/:id`, + hash: props.location.hash + }} + /> <Route - path={`${rootUrlWithLang}/${perspective.id}/faceted-search`} + path={`${rootUrlWithLang}/${perspective.id}/page/:id`} render={routeProps => { return ( <> @@ -341,53 +433,23 @@ const SemanticPortal = props => { portalConfig={portalConfig} layoutConfig={layoutConfig} resultClass={perspective.id} - pageType='facetResults' - expanded={props[perspective.id].facetedSearchHeaderExpanded} + pageType='instancePage' + instanceData={props[perspective.id].instanceTableData} + expanded={props[perspective.id].instancePageHeaderExpanded} updateExpanded={props.updatePerspectiveHeaderExpanded} screenSize={screenSize} /> <Grid - container spacing={1} className={props[perspective.id].facetedSearchHeaderExpanded - ? classes.perspectiveContainerHeaderExpanded - : classes.perspectiveContainer} + container spacing={1} className={props[perspective.id].instancePageHeaderExpanded + ? classes.instancePageContainerHeaderExpanded + : classes.instancePageContainer} > - <Grid item xs={12} md={3} className={classes.facetBarContainer}> - <FacetBar - portalConfig={portalConfig} - perspectiveConfig={perspective} - layoutConfig={layoutConfig} - facetedSearchMode='serverFS' - facetData={props[`${perspective.id}Facets`]} - facetDataConstrainSelf={props[`${perspective.id}FacetsConstrainSelf`]} - perspectiveState={props[perspective.id]} - facetClass={perspective.id} - resultClass={perspective.id} - fetchingResultCount={props[perspective.id].fetchingResultCount} - resultCount={props[perspective.id].resultCount} - fetchFacet={props.fetchFacet} - fetchFacetConstrainSelf={props.fetchFacetConstrainSelf} - fetchResults={props.fetchResults} - clearFacet={props.clearFacet} - clearAllFacets={props.clearAllFacets} - fetchResultCount={props.fetchResultCount} - updateFacetOption={props.updateFacetOption} - showError={props.showError} - defaultActiveFacets={perspective.defaultActiveFacets} - rootUrl={rootUrlWithLang} - screenSize={screenSize} - apexChartsConfig={apexChartsConfig} - leafletConfig={leafletConfig} - networkConfig={networkConfig} - /> - </Grid> - <Grid item xs={12} md={9} className={classes.resultsContainer}> - <FacetResults + <Grid item xs={12} className={classes.instancePageContent}> + <InstancePage portalConfig={portalConfig} layoutConfig={layoutConfig} perspectiveConfig={perspective} perspectiveState={props[`${perspective.id}`]} - facetState={props[`${perspective.id}Facets`]} - facetConstrainSelfState={props[`${perspective.id}FacetsConstrainSelf`]} leafletMapState={props.leafletMap} fetchPaginatedResults={props.fetchPaginatedResults} fetchResults={props.fetchResults} @@ -407,6 +469,8 @@ const SemanticPortal = props => { perspective={perspective} animationValue={props.animationValue} animateMap={props.animateMap} + videoPlayerState={props.videoPlayer} + updateVideoPlayerTime={props.updateVideoPlayerTime} screenSize={screenSize} rootUrl={rootUrlWithLang} apexChartsConfig={apexChartsConfig} @@ -419,246 +483,177 @@ const SemanticPortal = props => { ) }} /> - <Switch> - <Redirect - from={`/${perspective.id}/page/:id`} - to={{ - pathname: `${rootUrlWithLang}/${perspective.id}/page/:id`, - hash: props.location.hash - }} - /> - <Route - path={`${rootUrlWithLang}/${perspective.id}/page/:id`} - render={routeProps => { - return ( - <> - <InfoHeader - portalConfig={portalConfig} - layoutConfig={layoutConfig} - resultClass={perspective.id} - pageType='instancePage' - instanceData={props[perspective.id].instanceTableData} - expanded={props[perspective.id].instancePageHeaderExpanded} - updateExpanded={props.updatePerspectiveHeaderExpanded} - screenSize={screenSize} - /> - <Grid - container spacing={1} className={props[perspective.id].instancePageHeaderExpanded - ? classes.instancePageContainerHeaderExpanded - : classes.instancePageContainer} - > - <Grid item xs={12} className={classes.instancePageContent}> - <InstancePage - portalConfig={portalConfig} - layoutConfig={layoutConfig} - perspectiveConfig={perspective} - perspectiveState={props[`${perspective.id}`]} - leafletMapState={props.leafletMap} - fetchPaginatedResults={props.fetchPaginatedResults} - fetchResults={props.fetchResults} - fetchInstanceAnalysis={props.fetchInstanceAnalysis} - fetchFacetConstrainSelf={props.fetchFacetConstrainSelf} - fetchGeoJSONLayers={props.fetchGeoJSONLayers} - fetchGeoJSONLayersBackend={props.fetchGeoJSONLayersBackend} - clearGeoJSONLayers={props.clearGeoJSONLayers} - fetchByURI={props.fetchByURI} - updatePage={props.updatePage} - updateRowsPerPage={props.updateRowsPerPage} - updateFacetOption={props.updateFacetOption} - updateMapBounds={props.updateMapBounds} - sortResults={props.sortResults} - showError={props.showError} - routeProps={routeProps} - perspective={perspective} - animationValue={props.animationValue} - animateMap={props.animateMap} - videoPlayerState={props.videoPlayer} - updateVideoPlayerTime={props.updateVideoPlayerTime} - screenSize={screenSize} - rootUrl={rootUrlWithLang} - apexChartsConfig={apexChartsConfig} - leafletConfig={leafletConfig} - networkConfig={networkConfig} - /> - </Grid> - </Grid> - </> - ) - }} + </Switch> + </React.Fragment> + ) + } + return null + })} + {/* create routes for classes that have only info pages and no faceted search perspective */} + {perspectiveConfigOnlyInfoPages.map(perspective => + <Switch key={perspective.id}> + <Redirect + from={`${rootUrl}/${perspective.id}/page/:id`} + to={`${rootUrlWithLang}/${perspective.id}/page/:id`} + /> + <Route + path={`${rootUrlWithLang}/${perspective.id}/page/:id`} + render={routeProps => { + return ( + <> + <InfoHeader + portalConfig={portalConfig} + layoutConfig={layoutConfig} + resultClass={perspective.id} + pageType='instancePage' + instanceData={props[perspective.id].instanceTableData} + expanded={props[perspective.id].instancePageHeaderExpanded} + updateExpanded={props.updatePerspectiveHeaderExpanded} + screenSize={screenSize} /> - </Switch> - </React.Fragment> - ) - } - return null - })} - {/* create routes for classes that have only info pages and no faceted search perspective */} - {perspectiveConfigOnlyInfoPages.map(perspective => - <Switch key={perspective.id}> - <Redirect - from={`${rootUrl}/${perspective.id}/page/:id`} - to={`${rootUrlWithLang}/${perspective.id}/page/:id`} - /> - <Route - path={`${rootUrlWithLang}/${perspective.id}/page/:id`} - render={routeProps => { - return ( - <> - <InfoHeader - portalConfig={portalConfig} - layoutConfig={layoutConfig} - resultClass={perspective.id} - pageType='instancePage' - instanceData={props[perspective.id].instanceTableData} - expanded={props[perspective.id].instancePageHeaderExpanded} - updateExpanded={props.updatePerspectiveHeaderExpanded} - screenSize={screenSize} - /> - <Grid - container spacing={1} className={props[perspective.id].instancePageHeaderExpanded - ? classes.instancePageContainerHeaderExpanded - : classes.instancePageContainer} - > - <Grid item xs={12} className={classes.instancePageContent}> - <InstancePage - portalConfig={portalConfig} - layoutConfig={layoutConfig} - perspectiveConfig={perspective} - perspectiveState={props[`${perspective.id}`]} - leafletMapState={props.leafletMap} - fetchPaginatedResults={props.fetchPaginatedResults} - fetchResults={props.fetchResults} - fetchInstanceAnalysis={props.fetchInstanceAnalysis} - fetchFacetConstrainSelf={props.fetchFacetConstrainSelf} - fetchGeoJSONLayers={props.fetchGeoJSONLayers} - fetchGeoJSONLayersBackend={props.fetchGeoJSONLayersBackend} - clearGeoJSONLayers={props.clearGeoJSONLayers} - fetchByURI={props.fetchByURI} - updatePage={props.updatePage} - updateRowsPerPage={props.updateRowsPerPage} - updateFacetOption={props.updateFacetOption} - updateMapBounds={props.updateMapBounds} - sortResults={props.sortResults} - showError={props.showError} - routeProps={routeProps} - perspective={perspective} - animationValue={props.animationValue} - animateMap={props.animateMap} - videoPlayerState={props.videoPlayer} - updateVideoPlayerTime={props.updateVideoPlayerTime} - screenSize={screenSize} - rootUrl={rootUrlWithLang} - apexChartsConfig={apexChartsConfig} - leafletConfig={leafletConfig} - networkConfig={networkConfig} - /> - </Grid> + <Grid + container spacing={1} className={props[perspective.id].instancePageHeaderExpanded + ? classes.instancePageContainerHeaderExpanded + : classes.instancePageContainer} + > + <Grid item xs={12} className={classes.instancePageContent}> + <InstancePage + portalConfig={portalConfig} + layoutConfig={layoutConfig} + perspectiveConfig={perspective} + perspectiveState={props[`${perspective.id}`]} + leafletMapState={props.leafletMap} + fetchPaginatedResults={props.fetchPaginatedResults} + fetchResults={props.fetchResults} + fetchInstanceAnalysis={props.fetchInstanceAnalysis} + fetchFacetConstrainSelf={props.fetchFacetConstrainSelf} + fetchGeoJSONLayers={props.fetchGeoJSONLayers} + fetchGeoJSONLayersBackend={props.fetchGeoJSONLayersBackend} + clearGeoJSONLayers={props.clearGeoJSONLayers} + fetchByURI={props.fetchByURI} + updatePage={props.updatePage} + updateRowsPerPage={props.updateRowsPerPage} + updateFacetOption={props.updateFacetOption} + updateMapBounds={props.updateMapBounds} + sortResults={props.sortResults} + showError={props.showError} + routeProps={routeProps} + perspective={perspective} + animationValue={props.animationValue} + animateMap={props.animateMap} + videoPlayerState={props.videoPlayer} + updateVideoPlayerTime={props.updateVideoPlayerTime} + screenSize={screenSize} + rootUrl={rootUrlWithLang} + apexChartsConfig={apexChartsConfig} + leafletConfig={leafletConfig} + networkConfig={networkConfig} + /> </Grid> - </> - ) - }} - /> - </Switch> - )} - <Route - path={`${rootUrlWithLang}/perspective4/federated-search`} - render={routeProps => - <> - <Grid container className={classes.mainContainerClientFS}> - <Grid item sm={12} md={4} lg={3} className={classes.facetBarContainerClientFS}> - <FacetBar + </Grid> + </> + ) + }} + /> + </Switch> + )} + <Route + path={`${rootUrlWithLang}/perspective4/federated-search`} + render={routeProps => + <> + <Grid container className={classes.mainContainerClientFS}> + <Grid item sm={12} md={4} lg={3} className={classes.facetBarContainerClientFS}> + <FacetBar + portalConfig={portalConfig} + layoutConfig={layoutConfig} + facetedSearchMode='clientFS' + facetClass='perspective4' + resultClass='perspective4' + facetData={props.clientFSState} + clientFSFacetValues={props.clientFSFacetValues} + fetchingResultCount={props.clientFSState.textResultsFetching} + resultCount={noClientFSResults ? 0 : props.clientFSState.results.length} + clientFSState={props.clientFSState} + clientFSToggleDataset={props.clientFSToggleDataset} + clientFSFetchResults={props.clientFSFetchResults} + clientFSClearResults={props.clientFSClearResults} + clientFSUpdateQuery={props.clientFSUpdateQuery} + clientFSUpdateFacet={props.clientFSUpdateFacet} + defaultActiveFacets={perspectiveConfig.find(p => p.id === 'perspective4').defaultActiveFacets} + leafletMap={props.leafletMap} + updateMapBounds={props.updateMapBounds} + screenSize={screenSize} + showError={props.showError} + rootUrl={rootUrlWithLang} + apexChartsConfig={apexChartsConfig} + leafletConfig={leafletConfig} + networkConfig={networkConfig} + /> + </Grid> + <Grid item sm={12} md={8} lg={9} className={classes.resultsContainerClientFS}> + {noClientFSResults && <MainClientFS />} + {!noClientFSResults && + <FederatedResults portalConfig={portalConfig} layoutConfig={layoutConfig} - facetedSearchMode='clientFS' - facetClass='perspective4' - resultClass='perspective4' - facetData={props.clientFSState} - clientFSFacetValues={props.clientFSFacetValues} - fetchingResultCount={props.clientFSState.textResultsFetching} - resultCount={noClientFSResults ? 0 : props.clientFSState.results.length} + perspective={perspectiveConfig.find(p => p.id === 'perspective4')} + routeProps={routeProps} + screenSize={screenSize} clientFSState={props.clientFSState} - clientFSToggleDataset={props.clientFSToggleDataset} - clientFSFetchResults={props.clientFSFetchResults} - clientFSClearResults={props.clientFSClearResults} - clientFSUpdateQuery={props.clientFSUpdateQuery} - clientFSUpdateFacet={props.clientFSUpdateFacet} - defaultActiveFacets={perspectiveConfig.find(p => p.id === 'perspective4').defaultActiveFacets} + clientFSResults={props.clientFSResults} + clientFSSortResults={props.clientFSSortResults} leafletMap={props.leafletMap} updateMapBounds={props.updateMapBounds} - screenSize={screenSize} + fetchGeoJSONLayersBackend={props.fetchGeoJSONLayersBackend} + fetchGeoJSONLayers={props.fetchGeoJSONLayers} + clearGeoJSONLayers={props.clearGeoJSONLayers} showError={props.showError} rootUrl={rootUrlWithLang} apexChartsConfig={apexChartsConfig} leafletConfig={leafletConfig} networkConfig={networkConfig} - /> - </Grid> - <Grid item sm={12} md={8} lg={9} className={classes.resultsContainerClientFS}> - {noClientFSResults && <MainClientFS />} - {!noClientFSResults && - <FederatedResults - portalConfig={portalConfig} - layoutConfig={layoutConfig} - perspective={perspectiveConfig.find(p => p.id === 'perspective4')} - routeProps={routeProps} - screenSize={screenSize} - clientFSState={props.clientFSState} - clientFSResults={props.clientFSResults} - clientFSSortResults={props.clientFSSortResults} - leafletMap={props.leafletMap} - updateMapBounds={props.updateMapBounds} - fetchGeoJSONLayersBackend={props.fetchGeoJSONLayersBackend} - fetchGeoJSONLayers={props.fetchGeoJSONLayers} - clearGeoJSONLayers={props.clearGeoJSONLayers} - showError={props.showError} - rootUrl={rootUrlWithLang} - apexChartsConfig={apexChartsConfig} - leafletConfig={leafletConfig} - networkConfig={networkConfig} - />} - </Grid> + />} </Grid> - <Footer - portalConfig={portalConfig} - layoutConfig={layoutConfig} - /> - </>} - - /> - {/* create routes for info buttons */} - {!layoutConfig.topBar.externalAboutPage && - <Route - path={`${rootUrlWithLang}/about`} - render={() => - <div className={classNames(classes.mainContainer, classes.textPageContainer)}> - <TextPage> - {intl.getHTML('aboutThePortalPartOne')} - {knowledgeGraphMetadataConfig.showTable && - <KnowledgeGraphMetadataTable - portalConfig={portalConfig} - layoutConfig={layoutConfig} - perspectiveID={knowledgeGraphMetadataConfig.perspective} - resultClass='knowledgeGraphMetadata' - fetchKnowledgeGraphMetadata={props.fetchKnowledgeGraphMetadata} - knowledgeGraphMetadata={props[knowledgeGraphMetadataConfig.perspective] - ? props[knowledgeGraphMetadataConfig.perspective].knowledgeGraphMetadata - : null} - />} - {intl.getHTML('aboutThePortalPartTwo')} - </TextPage> - </div>} - />} - {!layoutConfig.topBar.externalInstructions && - <Route - path={`${rootUrlWithLang}/instructions`} - render={() => - <div className={classNames(classes.mainContainer, classes.textPageContainer)}> - <TextPage>{intl.getHTML('instructions')}</TextPage> - </div>} - />} - </> - </div> - </MuiPickersUtilsProvider> + </Grid> + <Footer + portalConfig={portalConfig} + layoutConfig={layoutConfig} + /> + </>} + /> + {/* create routes for info buttons */} + {!layoutConfig.topBar.externalAboutPage && + <Route + path={`${rootUrlWithLang}/about`} + render={() => + <div className={classNames(classes.mainContainer, classes.textPageContainer)}> + <TextPage> + {intl.getHTML('aboutThePortalPartOne')} + {knowledgeGraphMetadataConfig.showTable && + <KnowledgeGraphMetadataTable + portalConfig={portalConfig} + layoutConfig={layoutConfig} + perspectiveID={knowledgeGraphMetadataConfig.perspective} + resultClass='knowledgeGraphMetadata' + fetchKnowledgeGraphMetadata={props.fetchKnowledgeGraphMetadata} + knowledgeGraphMetadata={props[knowledgeGraphMetadataConfig.perspective] + ? props[knowledgeGraphMetadataConfig.perspective].knowledgeGraphMetadata + : null} + />} + {intl.getHTML('aboutThePortalPartTwo')} + </TextPage> + </div>} + />} + {!layoutConfig.topBar.externalInstructions && + <Route + path={`${rootUrlWithLang}/instructions`} + render={() => + <div className={classNames(classes.mainContainer, classes.textPageContainer)}> + <TextPage>{intl.getHTML('instructions')}</TextPage> + </div>} + />} + </> + </div> ) } diff --git a/src/client/helpers/helpers.js b/src/client/helpers/helpers.js index e3f127d9ee5e6719b029b5b02eb552d8ccf54e49..745eeae658cacd1ccf229221f146b6d4403fe4da 100644 --- a/src/client/helpers/helpers.js +++ b/src/client/helpers/helpers.js @@ -287,3 +287,5 @@ export const createPerspectiveConfigOnlyInfoPages = async ({ portalID, onlyInsta } return perspectiveConfigOnlyInfoPages } + +export const getSpacing = (theme, value) => Number(theme.spacing(value).slice(0, -2))