diff --git a/Dockerfile b/Dockerfile
index ee6339097..b0c093d39 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,5 +1,5 @@
# builder image
-FROM node:20.9.0 AS builder
+FROM node:20.10.0 AS builder
LABEL maintainer="grushton@broadinstitute.org"
# set working directory
diff --git a/package-lock.json b/package-lock.json
index feac0c94b..f91516e21 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -11,12 +11,12 @@
"@databiosphere/bard-client": "0.1.0",
"@emotion/react": "11.11.1",
"@emotion/styled": "11.11.0",
- "@mui/icons-material": "5.14.15",
- "@mui/material": "5.14.15",
- "@mui/utils": "5.14.15",
+ "@mui/icons-material": "5.14.18",
+ "@mui/material": "5.14.18",
+ "@mui/utils": "5.14.18",
"ajv": "8.12.0",
"ajv-formats": "2.1.1",
- "axios": "1.6.0",
+ "axios": "1.6.2",
"bootstrap": "3.4.1",
"dompurify": "3.0.6",
"http-proxy-middleware": "2.0.6",
@@ -33,13 +33,13 @@
"react-ga": "3.3.1",
"react-google-charts": "4.0.1",
"react-hyperscript-helpers": "2.0.0",
- "react-markdown": "9.0.0",
+ "react-markdown": "9.0.1",
"react-material-icon-svg": "3.20.0",
"react-modal": "3.16.1",
"react-paginating": "1.4.0",
"react-protected-mailto": "1.0.3",
"react-router-dom": "5.3.0",
- "react-select": "5.7.7",
+ "react-select": "5.8.0",
"react-tooltip": "4.5.1",
"stackdriver-errors-js": "0.12.0",
"tss-react": "4.9.3",
@@ -48,13 +48,13 @@
"voca": "1.4.1"
},
"devDependencies": {
- "@babel/core": "7.23.2",
- "@babel/eslint-parser": "7.22.15",
+ "@babel/core": "7.23.3",
+ "@babel/eslint-parser": "7.23.3",
"@babel/eslint-plugin": "7.22.10",
"@babel/plugin-proposal-class-properties": "7.18.6",
- "@babel/preset-react": "7.22.15",
- "@types/react": "18.2.33",
- "cypress": "13.3.3",
+ "@babel/preset-react": "7.23.3",
+ "@types/react": "18.2.38",
+ "cypress": "13.6.0",
"eslint": "7.32.0",
"eslint-plugin-flowtype": "7.0.0",
"eslint-plugin-react": "7.33.2",
@@ -82,11 +82,11 @@
}
},
"node_modules/@babel/code-frame": {
- "version": "7.22.13",
- "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz",
- "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==",
+ "version": "7.23.4",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.4.tgz",
+ "integrity": "sha512-r1IONyb6Ia+jYR2vvIDhdWdlTGhqbBoFqLTQidzZ4kepUFH15ejXvFHxCVbtl7BOXIudsIubf4E81xeA3h3IXA==",
"dependencies": {
- "@babel/highlight": "^7.22.13",
+ "@babel/highlight": "^7.23.4",
"chalk": "^2.4.2"
},
"engines": {
@@ -103,21 +103,21 @@
}
},
"node_modules/@babel/core": {
- "version": "7.23.2",
- "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.2.tgz",
- "integrity": "sha512-n7s51eWdaWZ3vGT2tD4T7J6eJs3QoBXydv7vkUM06Bf1cbVD2Kc2UrkzhiQwobfV7NwOnQXYL7UBJ5VPU+RGoQ==",
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.3.tgz",
+ "integrity": "sha512-Jg+msLuNuCJDyBvFv5+OKOUjWMZgd85bKjbICd3zWrKAo+bJ49HJufi7CQE0q0uR8NGyO6xkCACScNqyjHSZew==",
"dev": true,
"dependencies": {
"@ampproject/remapping": "^2.2.0",
"@babel/code-frame": "^7.22.13",
- "@babel/generator": "^7.23.0",
+ "@babel/generator": "^7.23.3",
"@babel/helper-compilation-targets": "^7.22.15",
- "@babel/helper-module-transforms": "^7.23.0",
+ "@babel/helper-module-transforms": "^7.23.3",
"@babel/helpers": "^7.23.2",
- "@babel/parser": "^7.23.0",
+ "@babel/parser": "^7.23.3",
"@babel/template": "^7.22.15",
- "@babel/traverse": "^7.23.2",
- "@babel/types": "^7.23.0",
+ "@babel/traverse": "^7.23.3",
+ "@babel/types": "^7.23.3",
"convert-source-map": "^2.0.0",
"debug": "^4.1.0",
"gensync": "^1.0.0-beta.2",
@@ -139,9 +139,9 @@
"dev": true
},
"node_modules/@babel/eslint-parser": {
- "version": "7.22.15",
- "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.22.15.tgz",
- "integrity": "sha512-yc8OOBIQk1EcRrpizuARSQS0TWAcOMpEJ1aafhNznaeYkeL+OhqnDObGFylB8ka8VFF/sZc+S4RzHyO+3LjQxg==",
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.23.3.tgz",
+ "integrity": "sha512-9bTuNlyx7oSstodm1cR1bECj4fkiknsDa1YniISkJemMY3DGhJNYBECbe6QD/q54mp2J8VO66jW3/7uP//iFCw==",
"dev": true,
"dependencies": {
"@nicolo-ribaudo/eslint-scope-5-internals": "5.1.1-v1",
@@ -173,12 +173,12 @@
}
},
"node_modules/@babel/generator": {
- "version": "7.23.0",
- "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.0.tgz",
- "integrity": "sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g==",
+ "version": "7.23.4",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.4.tgz",
+ "integrity": "sha512-esuS49Cga3HcThFNebGhlgsrVLkvhqvYDTzgjfFFlHJcIfLe5jFmRRfCQ1KuBfc4Jrtn3ndLgKWAKjBE+IraYQ==",
"dev": true,
"dependencies": {
- "@babel/types": "^7.23.0",
+ "@babel/types": "^7.23.4",
"@jridgewell/gen-mapping": "^0.3.2",
"@jridgewell/trace-mapping": "^0.3.17",
"jsesc": "^2.5.1"
@@ -383,9 +383,9 @@
}
},
"node_modules/@babel/helper-module-transforms": {
- "version": "7.23.0",
- "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.0.tgz",
- "integrity": "sha512-WhDWw1tdrlT0gMgUJSlX0IQvoO1eN279zrAUbVB+KpV2c3Tylz8+GnKOLllCS6Z/iZQEyVYxhZVUdPTqs2YYPw==",
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz",
+ "integrity": "sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==",
"dev": true,
"dependencies": {
"@babel/helper-environment-visitor": "^7.22.20",
@@ -493,9 +493,9 @@
}
},
"node_modules/@babel/helper-string-parser": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz",
- "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==",
+ "version": "7.23.4",
+ "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz",
+ "integrity": "sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==",
"engines": {
"node": ">=6.9.0"
}
@@ -547,11 +547,11 @@
}
},
"node_modules/@babel/highlight": {
- "version": "7.22.13",
- "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.13.tgz",
- "integrity": "sha512-C/BaXcnnvBCmHTpz/VGZ8jgtE2aYlW4hxDhseJAWZb7gqGM/qtCK6iZUb0TyKFf7BOUsBH7Q7fkRsDRhg1XklQ==",
+ "version": "7.23.4",
+ "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz",
+ "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==",
"dependencies": {
- "@babel/helper-validator-identifier": "^7.22.5",
+ "@babel/helper-validator-identifier": "^7.22.20",
"chalk": "^2.4.2",
"js-tokens": "^4.0.0"
},
@@ -560,9 +560,9 @@
}
},
"node_modules/@babel/parser": {
- "version": "7.23.0",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.0.tgz",
- "integrity": "sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==",
+ "version": "7.23.4",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.4.tgz",
+ "integrity": "sha512-vf3Xna6UEprW+7t6EtOmFpHNAuxw3xqPZghy+brsnusscJRW5BMUzzHZc5ICjULee81WeUV2jjakG09MDglJXQ==",
"dev": true,
"bin": {
"parser": "bin/babel-parser.js"
@@ -1549,9 +1549,9 @@
}
},
"node_modules/@babel/plugin-transform-react-display-name": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.22.5.tgz",
- "integrity": "sha512-PVk3WPYudRF5z4GKMEYUrLjPl38fJSKNaEOkFuoprioowGuWN6w2RKznuFNSlJx7pzzXXStPUnNSOEO0jL5EVw==",
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.23.3.tgz",
+ "integrity": "sha512-GnvhtVfA2OAtzdX58FJxU19rhoGeQzyVndw3GgtdECQvQFXPEZIOVULHVZGAYmOgmqjXpVpfocAbSjh99V/Fqw==",
"dev": true,
"dependencies": {
"@babel/helper-plugin-utils": "^7.22.5"
@@ -1598,9 +1598,9 @@
}
},
"node_modules/@babel/plugin-transform-react-pure-annotations": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.22.5.tgz",
- "integrity": "sha512-gP4k85wx09q+brArVinTXhWiyzLl9UpmGva0+mWyKxk6JZequ05x3eUcIUE+FyttPKJFRRVtAvQaJ6YF9h1ZpA==",
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.23.3.tgz",
+ "integrity": "sha512-qMFdSS+TUhB7Q/3HVPnEdYJDQIk57jkntAwSuz9xfSE4n+3I+vHYCli3HoHawN1Z3RfCz/y1zXA/JXjG6cVImQ==",
"dev": true,
"dependencies": {
"@babel/helper-annotate-as-pure": "^7.22.5",
@@ -1894,17 +1894,17 @@
}
},
"node_modules/@babel/preset-react": {
- "version": "7.22.15",
- "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.22.15.tgz",
- "integrity": "sha512-Csy1IJ2uEh/PecCBXXoZGAZBeCATTuePzCSB7dLYWS0vOEj6CNpjxIhW4duWwZodBNueH7QO14WbGn8YyeuN9w==",
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.23.3.tgz",
+ "integrity": "sha512-tbkHOS9axH6Ysf2OUEqoSZ6T3Fa2SrNH6WTWSPBboxKzdxNc9qOICeLXkNG0ZEwbQ1HY8liwOce4aN/Ceyuq6w==",
"dev": true,
"dependencies": {
"@babel/helper-plugin-utils": "^7.22.5",
"@babel/helper-validator-option": "^7.22.15",
- "@babel/plugin-transform-react-display-name": "^7.22.5",
+ "@babel/plugin-transform-react-display-name": "^7.23.3",
"@babel/plugin-transform-react-jsx": "^7.22.15",
"@babel/plugin-transform-react-jsx-development": "^7.22.5",
- "@babel/plugin-transform-react-pure-annotations": "^7.22.5"
+ "@babel/plugin-transform-react-pure-annotations": "^7.23.3"
},
"engines": {
"node": ">=6.9.0"
@@ -1974,19 +1974,19 @@
}
},
"node_modules/@babel/traverse": {
- "version": "7.23.2",
- "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.2.tgz",
- "integrity": "sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw==",
+ "version": "7.23.4",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.4.tgz",
+ "integrity": "sha512-IYM8wSUwunWTB6tFC2dkKZhxbIjHoWemdK+3f8/wq8aKhbUscxD5MX72ubd90fxvFknaLPeGw5ycU84V1obHJg==",
"dev": true,
"dependencies": {
- "@babel/code-frame": "^7.22.13",
- "@babel/generator": "^7.23.0",
+ "@babel/code-frame": "^7.23.4",
+ "@babel/generator": "^7.23.4",
"@babel/helper-environment-visitor": "^7.22.20",
"@babel/helper-function-name": "^7.23.0",
"@babel/helper-hoist-variables": "^7.22.5",
"@babel/helper-split-export-declaration": "^7.22.6",
- "@babel/parser": "^7.23.0",
- "@babel/types": "^7.23.0",
+ "@babel/parser": "^7.23.4",
+ "@babel/types": "^7.23.4",
"debug": "^4.1.0",
"globals": "^11.1.0"
},
@@ -1995,11 +1995,11 @@
}
},
"node_modules/@babel/types": {
- "version": "7.23.0",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.0.tgz",
- "integrity": "sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==",
+ "version": "7.23.4",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.4.tgz",
+ "integrity": "sha512-7uIFwVYpoplT5jp/kVv6EF93VaJ8H+Yn5IczYiaAi98ajzjfoZfslet/e0sLh+wVBjb2qqIut1b0S26VSafsSQ==",
"dependencies": {
- "@babel/helper-string-parser": "^7.22.5",
+ "@babel/helper-string-parser": "^7.23.4",
"@babel/helper-validator-identifier": "^7.22.20",
"to-fast-properties": "^2.0.0"
},
@@ -2606,9 +2606,9 @@
}
},
"node_modules/@floating-ui/react-dom": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.0.2.tgz",
- "integrity": "sha512-5qhlDvjaLmAst/rKb3VdlCinwTF4EYMiVxuuc/HVUjs46W0zgtbMmAZ1UTsDrRTxRmUEzl92mOtWbeeXL26lSQ==",
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.0.4.tgz",
+ "integrity": "sha512-CF8k2rgKeh/49UrnIBs4BdxPUV6vize/Db1d/YbCLyp9GiVZ0BEwf5AiDSxJRCr6yOkGqTFHtmrULxkEfYZ7dQ==",
"dependencies": {
"@floating-ui/dom": "^1.5.1"
},
@@ -3467,14 +3467,14 @@
"dev": true
},
"node_modules/@mui/base": {
- "version": "5.0.0-beta.21",
- "resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-beta.21.tgz",
- "integrity": "sha512-eTKWx3WV/nwmRUK4z4K1MzlMyWCsi3WJ3RtV4DiXZeRh4qd4JCyp1Zzzi8Wv9xM4dEBmqQntFoei716PzwmFfA==",
+ "version": "5.0.0-beta.24",
+ "resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-beta.24.tgz",
+ "integrity": "sha512-bKt2pUADHGQtqWDZ8nvL2Lvg2GNJyd/ZUgZAJoYzRgmnxBL9j36MSlS3+exEdYkikcnvVafcBtD904RypFKb0w==",
"dependencies": {
"@babel/runtime": "^7.23.2",
- "@floating-ui/react-dom": "^2.0.2",
- "@mui/types": "^7.2.7",
- "@mui/utils": "5.14.15",
+ "@floating-ui/react-dom": "^2.0.4",
+ "@mui/types": "^7.2.9",
+ "@mui/utils": "5.14.18",
"@popperjs/core": "^2.11.8",
"clsx": "^2.0.0",
"prop-types": "^15.8.1"
@@ -3498,18 +3498,18 @@
}
},
"node_modules/@mui/core-downloads-tracker": {
- "version": "5.14.15",
- "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-5.14.15.tgz",
- "integrity": "sha512-ZCDzBWtCKjAYAlKKM3PA/jG/3uVIDT9ZitOtVixIVmTCQyc5jSV1qhJX8+qIGz4RQZ9KLzPWO2tXd0O5hvzouQ==",
+ "version": "5.14.18",
+ "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-5.14.18.tgz",
+ "integrity": "sha512-yFpF35fEVDV81nVktu0BE9qn2dD/chs7PsQhlyaV3EnTeZi9RZBuvoEfRym1/jmhJ2tcfeWXiRuHG942mQXJJQ==",
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/mui"
}
},
"node_modules/@mui/icons-material": {
- "version": "5.14.15",
- "resolved": "https://registry.npmjs.org/@mui/icons-material/-/icons-material-5.14.15.tgz",
- "integrity": "sha512-Dqu21vN/mVNzebJ+ofnKG+CeJYIhHuDs5+0fMEpdpzRt6UojelzdrEkNv+XkO0e1JMclzeXIRx404FirK/CFRw==",
+ "version": "5.14.18",
+ "resolved": "https://registry.npmjs.org/@mui/icons-material/-/icons-material-5.14.18.tgz",
+ "integrity": "sha512-o2z49R1G4SdBaxZjbMmkn+2OdT1bKymLvAYaB6pH59obM1CYv/0vAVm6zO31IqhwtYwXv6A7sLIwCGYTaVkcdg==",
"dependencies": {
"@babel/runtime": "^7.23.2"
},
@@ -3532,17 +3532,17 @@
}
},
"node_modules/@mui/material": {
- "version": "5.14.15",
- "resolved": "https://registry.npmjs.org/@mui/material/-/material-5.14.15.tgz",
- "integrity": "sha512-Gq65rHjvLzkxmhG8bvag851Oqsmru7qkUb/cCI2xu7dQzmY345f9xJRJi72sRGjhaqHXWeRKw/yIwp/7oQoeXg==",
+ "version": "5.14.18",
+ "resolved": "https://registry.npmjs.org/@mui/material/-/material-5.14.18.tgz",
+ "integrity": "sha512-y3UiR/JqrkF5xZR0sIKj6y7xwuEiweh9peiN3Zfjy1gXWXhz5wjlaLdoxFfKIEBUFfeQALxr/Y8avlHH+B9lpQ==",
"dependencies": {
"@babel/runtime": "^7.23.2",
- "@mui/base": "5.0.0-beta.21",
- "@mui/core-downloads-tracker": "^5.14.15",
- "@mui/system": "^5.14.15",
- "@mui/types": "^7.2.7",
- "@mui/utils": "5.14.15",
- "@types/react-transition-group": "^4.4.7",
+ "@mui/base": "5.0.0-beta.24",
+ "@mui/core-downloads-tracker": "^5.14.18",
+ "@mui/system": "^5.14.18",
+ "@mui/types": "^7.2.9",
+ "@mui/utils": "5.14.18",
+ "@types/react-transition-group": "^4.4.8",
"clsx": "^2.0.0",
"csstype": "^3.1.2",
"prop-types": "^15.8.1",
@@ -3581,12 +3581,12 @@
"integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w=="
},
"node_modules/@mui/private-theming": {
- "version": "5.14.15",
- "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.14.15.tgz",
- "integrity": "sha512-V2Xh+Tu6A07NoSpup0P9m29GwvNMYl5DegsGWqlOTJyAV7cuuVjmVPqxgvL8xBng4R85xqIQJRMjtYYktoPNuQ==",
+ "version": "5.14.18",
+ "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.14.18.tgz",
+ "integrity": "sha512-WSgjqRlzfHU+2Rou3HlR2Gqfr4rZRsvFgataYO3qQ0/m6gShJN+lhVEvwEiJ9QYyVzMDvNpXZAcqp8Y2Vl+PAw==",
"dependencies": {
"@babel/runtime": "^7.23.2",
- "@mui/utils": "5.14.15",
+ "@mui/utils": "5.14.18",
"prop-types": "^15.8.1"
},
"engines": {
@@ -3607,9 +3607,9 @@
}
},
"node_modules/@mui/styled-engine": {
- "version": "5.14.15",
- "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.14.15.tgz",
- "integrity": "sha512-mbOjRf867BysNpexe5Z/P8s3bWzDPNowmKhi7gtNDP/LPEeqAfiDSuC4WPTXmtvse1dCl30Nl755OLUYuoi7Mw==",
+ "version": "5.14.18",
+ "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.14.18.tgz",
+ "integrity": "sha512-pW8bpmF9uCB5FV2IPk6mfbQCjPI5vGI09NOLhtGXPeph/4xIfC3JdIX0TILU0WcTs3aFQqo6s2+1SFgIB9rCXA==",
"dependencies": {
"@babel/runtime": "^7.23.2",
"@emotion/cache": "^11.11.0",
@@ -3638,15 +3638,15 @@
}
},
"node_modules/@mui/system": {
- "version": "5.14.15",
- "resolved": "https://registry.npmjs.org/@mui/system/-/system-5.14.15.tgz",
- "integrity": "sha512-zr0Gdk1RgKiEk+tCMB900LaOpEC8NaGvxtkmMdL/CXgkqQZSVZOt2PQsxJWaw7kE4YVkIe4VukFVc43qcq9u3w==",
+ "version": "5.14.18",
+ "resolved": "https://registry.npmjs.org/@mui/system/-/system-5.14.18.tgz",
+ "integrity": "sha512-hSQQdb3KF72X4EN2hMEiv8EYJZSflfdd1TRaGPoR7CIAG347OxCslpBUwWngYobaxgKvq6xTrlIl+diaactVww==",
"dependencies": {
"@babel/runtime": "^7.23.2",
- "@mui/private-theming": "^5.14.15",
- "@mui/styled-engine": "^5.14.15",
- "@mui/types": "^7.2.7",
- "@mui/utils": "5.14.15",
+ "@mui/private-theming": "^5.14.18",
+ "@mui/styled-engine": "^5.14.18",
+ "@mui/types": "^7.2.9",
+ "@mui/utils": "5.14.18",
"clsx": "^2.0.0",
"csstype": "^3.1.2",
"prop-types": "^15.8.1"
@@ -3677,9 +3677,9 @@
}
},
"node_modules/@mui/types": {
- "version": "7.2.7",
- "resolved": "https://registry.npmjs.org/@mui/types/-/types-7.2.7.tgz",
- "integrity": "sha512-sofpWmcBqOlTzRbr1cLQuUDKaUYVZTw8ENQrtL39TECRNENEzwgnNPh6WMfqMZlMvf1Aj9DLg74XPjnLr0izUQ==",
+ "version": "7.2.9",
+ "resolved": "https://registry.npmjs.org/@mui/types/-/types-7.2.9.tgz",
+ "integrity": "sha512-k1lN/PolaRZfNsRdAqXtcR71sTnv3z/VCCGPxU8HfdftDkzi335MdJ6scZxvofMAd/K/9EbzCZTFBmlNpQVdCg==",
"peerDependencies": {
"@types/react": "^17.0.0 || ^18.0.0"
},
@@ -3690,12 +3690,12 @@
}
},
"node_modules/@mui/utils": {
- "version": "5.14.15",
- "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-5.14.15.tgz",
- "integrity": "sha512-QBfHovAvTa0J1jXuYDaXGk+Yyp7+Fm8GSqx6nK2JbezGqzCFfirNdop/+bL9Flh/OQ/64PeXcW4HGDdOge+n3A==",
+ "version": "5.14.18",
+ "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-5.14.18.tgz",
+ "integrity": "sha512-HZDRsJtEZ7WMSnrHV9uwScGze4wM/Y+u6pDVo+grUjt5yXzn+wI8QX/JwTHh9YSw/WpnUL80mJJjgCnWj2VrzQ==",
"dependencies": {
"@babel/runtime": "^7.23.2",
- "@types/prop-types": "^15.7.8",
+ "@types/prop-types": "^15.7.10",
"prop-types": "^15.8.1",
"react-is": "^18.2.0"
},
@@ -4460,9 +4460,9 @@
"dev": true
},
"node_modules/@types/prop-types": {
- "version": "15.7.8",
- "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.8.tgz",
- "integrity": "sha512-kMpQpfZKSCBqltAJwskgePRaYRFukDkm1oItcAbC3gNELR20XIBcN9VRgg4+m8DKsTfkWeA4m4Imp4DDuWy7FQ=="
+ "version": "15.7.11",
+ "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.11.tgz",
+ "integrity": "sha512-ga8y9v9uyeiLdpKddhxYQkxNDrfvuPrlFb0N1qnZZByvcElJaXthF1UhvCh9TLWJBEHeNtdnbysW7Y6Uq8CVng=="
},
"node_modules/@types/q": {
"version": "1.5.5",
@@ -4483,9 +4483,9 @@
"devOptional": true
},
"node_modules/@types/react": {
- "version": "18.2.33",
- "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.33.tgz",
- "integrity": "sha512-v+I7S+hu3PIBoVkKGpSYYpiBT1ijqEzWpzQD62/jm4K74hPpSP7FF9BnKG6+fg2+62weJYkkBWDJlZt5JO/9hg==",
+ "version": "18.2.38",
+ "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.38.tgz",
+ "integrity": "sha512-cBBXHzuPtQK6wNthuVMV6IjHAFkdl/FOPFIlkd81/Cd1+IqkHu/A+w4g43kaQQoYHik/ruaQBDL72HyCy1vuMw==",
"dependencies": {
"@types/prop-types": "*",
"@types/scheduler": "*",
@@ -4493,9 +4493,9 @@
}
},
"node_modules/@types/react-transition-group": {
- "version": "4.4.7",
- "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.7.tgz",
- "integrity": "sha512-ICCyBl5mvyqYp8Qeq9B5G/fyBSRC0zx3XM3sCC6KkcMsNeAHqXBKkmat4GqdJET5jtYUpZXrxI5flve5qhi2Eg==",
+ "version": "4.4.9",
+ "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.9.tgz",
+ "integrity": "sha512-ZVNmWumUIh5NhH8aMD9CR2hdW0fNuYInlocZHaZ+dgk/1K49j1w/HoAuK1ki+pgscQrOFRTlXeoURtuzEkV3dg==",
"dependencies": {
"@types/react": "*"
}
@@ -5693,9 +5693,9 @@
}
},
"node_modules/axios": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.0.tgz",
- "integrity": "sha512-EZ1DYihju9pwVB+jg67ogm+Tmqc6JmhamRN6I4Zt8DfZu5lbcQGw3ozH9lFejSJgs/ibaef3A9PMXPLeefFGJg==",
+ "version": "1.6.2",
+ "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.2.tgz",
+ "integrity": "sha512-7i24Ri4pmDRfJTR7LDBhsOTtcm+9kjX5WiY1X3wIisx6G9So3pfMkEiU7emUBe46oceVImccTEM3k6C5dbVW8A==",
"dependencies": {
"follow-redirects": "^1.15.0",
"form-data": "^4.0.0",
@@ -7441,9 +7441,9 @@
"integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ=="
},
"node_modules/cypress": {
- "version": "13.3.3",
- "resolved": "https://registry.npmjs.org/cypress/-/cypress-13.3.3.tgz",
- "integrity": "sha512-mbdkojHhKB1xbrj7CrKWHi22uFx9P9vQFiR0sYDZZoK99OMp9/ZYN55TO5pjbXmV7xvCJ4JwBoADXjOJK8aCJw==",
+ "version": "13.6.0",
+ "resolved": "https://registry.npmjs.org/cypress/-/cypress-13.6.0.tgz",
+ "integrity": "sha512-quIsnFmtj4dBUEJYU4OH0H12bABJpSujvWexC24Ju1gTlKMJbeT6tTO0vh7WNfiBPPjoIXLN+OUqVtiKFs6SGw==",
"dev": true,
"hasInstallScript": true,
"dependencies": {
@@ -17854,16 +17854,15 @@
"integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA=="
},
"node_modules/react-markdown": {
- "version": "9.0.0",
- "resolved": "https://registry.npmjs.org/react-markdown/-/react-markdown-9.0.0.tgz",
- "integrity": "sha512-v6yNf3AB8GfJ8lCpUvzxAXKxgsHpdmWPlcVRQ6Nocsezp255E/IDrF31kLQsPJeB/cKto/geUwjU36wH784FCA==",
+ "version": "9.0.1",
+ "resolved": "https://registry.npmjs.org/react-markdown/-/react-markdown-9.0.1.tgz",
+ "integrity": "sha512-186Gw/vF1uRkydbsOIkcGXw7aHq0sZOCRFFjGrr7b9+nVZg4UfA4enXCaxm4fUzecU38sWfrNDitGhshuU7rdg==",
"dependencies": {
"@types/hast": "^3.0.0",
"devlop": "^1.0.0",
"hast-util-to-jsx-runtime": "^2.0.0",
"html-url-attributes": "^3.0.0",
"mdast-util-to-hast": "^13.0.0",
- "micromark-util-sanitize-uri": "^2.0.0",
"remark-parse": "^11.0.0",
"remark-rehype": "^11.0.0",
"unified": "^11.0.0",
@@ -18452,9 +18451,9 @@
}
},
"node_modules/react-select": {
- "version": "5.7.7",
- "resolved": "https://registry.npmjs.org/react-select/-/react-select-5.7.7.tgz",
- "integrity": "sha512-HhashZZJDRlfF/AKj0a0Lnfs3sRdw/46VJIRd8IbB9/Ovr74+ZIwkAdSBjSPXsFMG+u72c5xShqwLSKIJllzqw==",
+ "version": "5.8.0",
+ "resolved": "https://registry.npmjs.org/react-select/-/react-select-5.8.0.tgz",
+ "integrity": "sha512-TfjLDo58XrhP6VG5M/Mi56Us0Yt8X7xD6cDybC7yoRMUNm7BGO7qk8J0TLQOua/prb8vUOtsfnXZwfm30HGsAA==",
"dependencies": {
"@babel/runtime": "^7.12.0",
"@emotion/cache": "^11.4.0",
@@ -22371,11 +22370,11 @@
}
},
"@babel/code-frame": {
- "version": "7.22.13",
- "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz",
- "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==",
+ "version": "7.23.4",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.4.tgz",
+ "integrity": "sha512-r1IONyb6Ia+jYR2vvIDhdWdlTGhqbBoFqLTQidzZ4kepUFH15ejXvFHxCVbtl7BOXIudsIubf4E81xeA3h3IXA==",
"requires": {
- "@babel/highlight": "^7.22.13",
+ "@babel/highlight": "^7.23.4",
"chalk": "^2.4.2"
}
},
@@ -22386,21 +22385,21 @@
"dev": true
},
"@babel/core": {
- "version": "7.23.2",
- "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.2.tgz",
- "integrity": "sha512-n7s51eWdaWZ3vGT2tD4T7J6eJs3QoBXydv7vkUM06Bf1cbVD2Kc2UrkzhiQwobfV7NwOnQXYL7UBJ5VPU+RGoQ==",
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.3.tgz",
+ "integrity": "sha512-Jg+msLuNuCJDyBvFv5+OKOUjWMZgd85bKjbICd3zWrKAo+bJ49HJufi7CQE0q0uR8NGyO6xkCACScNqyjHSZew==",
"dev": true,
"requires": {
"@ampproject/remapping": "^2.2.0",
"@babel/code-frame": "^7.22.13",
- "@babel/generator": "^7.23.0",
+ "@babel/generator": "^7.23.3",
"@babel/helper-compilation-targets": "^7.22.15",
- "@babel/helper-module-transforms": "^7.23.0",
+ "@babel/helper-module-transforms": "^7.23.3",
"@babel/helpers": "^7.23.2",
- "@babel/parser": "^7.23.0",
+ "@babel/parser": "^7.23.3",
"@babel/template": "^7.22.15",
- "@babel/traverse": "^7.23.2",
- "@babel/types": "^7.23.0",
+ "@babel/traverse": "^7.23.3",
+ "@babel/types": "^7.23.3",
"convert-source-map": "^2.0.0",
"debug": "^4.1.0",
"gensync": "^1.0.0-beta.2",
@@ -22417,9 +22416,9 @@
}
},
"@babel/eslint-parser": {
- "version": "7.22.15",
- "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.22.15.tgz",
- "integrity": "sha512-yc8OOBIQk1EcRrpizuARSQS0TWAcOMpEJ1aafhNznaeYkeL+OhqnDObGFylB8ka8VFF/sZc+S4RzHyO+3LjQxg==",
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.23.3.tgz",
+ "integrity": "sha512-9bTuNlyx7oSstodm1cR1bECj4fkiknsDa1YniISkJemMY3DGhJNYBECbe6QD/q54mp2J8VO66jW3/7uP//iFCw==",
"dev": true,
"requires": {
"@nicolo-ribaudo/eslint-scope-5-internals": "5.1.1-v1",
@@ -22437,12 +22436,12 @@
}
},
"@babel/generator": {
- "version": "7.23.0",
- "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.0.tgz",
- "integrity": "sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g==",
+ "version": "7.23.4",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.4.tgz",
+ "integrity": "sha512-esuS49Cga3HcThFNebGhlgsrVLkvhqvYDTzgjfFFlHJcIfLe5jFmRRfCQ1KuBfc4Jrtn3ndLgKWAKjBE+IraYQ==",
"dev": true,
"requires": {
- "@babel/types": "^7.23.0",
+ "@babel/types": "^7.23.4",
"@jridgewell/gen-mapping": "^0.3.2",
"@jridgewell/trace-mapping": "^0.3.17",
"jsesc": "^2.5.1"
@@ -22603,9 +22602,9 @@
}
},
"@babel/helper-module-transforms": {
- "version": "7.23.0",
- "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.0.tgz",
- "integrity": "sha512-WhDWw1tdrlT0gMgUJSlX0IQvoO1eN279zrAUbVB+KpV2c3Tylz8+GnKOLllCS6Z/iZQEyVYxhZVUdPTqs2YYPw==",
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz",
+ "integrity": "sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==",
"dev": true,
"requires": {
"@babel/helper-environment-visitor": "^7.22.20",
@@ -22683,9 +22682,9 @@
}
},
"@babel/helper-string-parser": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz",
- "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw=="
+ "version": "7.23.4",
+ "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz",
+ "integrity": "sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ=="
},
"@babel/helper-validator-identifier": {
"version": "7.22.20",
@@ -22722,19 +22721,19 @@
}
},
"@babel/highlight": {
- "version": "7.22.13",
- "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.13.tgz",
- "integrity": "sha512-C/BaXcnnvBCmHTpz/VGZ8jgtE2aYlW4hxDhseJAWZb7gqGM/qtCK6iZUb0TyKFf7BOUsBH7Q7fkRsDRhg1XklQ==",
+ "version": "7.23.4",
+ "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz",
+ "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==",
"requires": {
- "@babel/helper-validator-identifier": "^7.22.5",
+ "@babel/helper-validator-identifier": "^7.22.20",
"chalk": "^2.4.2",
"js-tokens": "^4.0.0"
}
},
"@babel/parser": {
- "version": "7.23.0",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.0.tgz",
- "integrity": "sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==",
+ "version": "7.23.4",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.4.tgz",
+ "integrity": "sha512-vf3Xna6UEprW+7t6EtOmFpHNAuxw3xqPZghy+brsnusscJRW5BMUzzHZc5ICjULee81WeUV2jjakG09MDglJXQ==",
"dev": true
},
"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": {
@@ -23370,9 +23369,9 @@
}
},
"@babel/plugin-transform-react-display-name": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.22.5.tgz",
- "integrity": "sha512-PVk3WPYudRF5z4GKMEYUrLjPl38fJSKNaEOkFuoprioowGuWN6w2RKznuFNSlJx7pzzXXStPUnNSOEO0jL5EVw==",
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.23.3.tgz",
+ "integrity": "sha512-GnvhtVfA2OAtzdX58FJxU19rhoGeQzyVndw3GgtdECQvQFXPEZIOVULHVZGAYmOgmqjXpVpfocAbSjh99V/Fqw==",
"dev": true,
"requires": {
"@babel/helper-plugin-utils": "^7.22.5"
@@ -23401,9 +23400,9 @@
}
},
"@babel/plugin-transform-react-pure-annotations": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.22.5.tgz",
- "integrity": "sha512-gP4k85wx09q+brArVinTXhWiyzLl9UpmGva0+mWyKxk6JZequ05x3eUcIUE+FyttPKJFRRVtAvQaJ6YF9h1ZpA==",
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.23.3.tgz",
+ "integrity": "sha512-qMFdSS+TUhB7Q/3HVPnEdYJDQIk57jkntAwSuz9xfSE4n+3I+vHYCli3HoHawN1Z3RfCz/y1zXA/JXjG6cVImQ==",
"dev": true,
"requires": {
"@babel/helper-annotate-as-pure": "^7.22.5",
@@ -23616,17 +23615,17 @@
}
},
"@babel/preset-react": {
- "version": "7.22.15",
- "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.22.15.tgz",
- "integrity": "sha512-Csy1IJ2uEh/PecCBXXoZGAZBeCATTuePzCSB7dLYWS0vOEj6CNpjxIhW4duWwZodBNueH7QO14WbGn8YyeuN9w==",
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.23.3.tgz",
+ "integrity": "sha512-tbkHOS9axH6Ysf2OUEqoSZ6T3Fa2SrNH6WTWSPBboxKzdxNc9qOICeLXkNG0ZEwbQ1HY8liwOce4aN/Ceyuq6w==",
"dev": true,
"requires": {
"@babel/helper-plugin-utils": "^7.22.5",
"@babel/helper-validator-option": "^7.22.15",
- "@babel/plugin-transform-react-display-name": "^7.22.5",
+ "@babel/plugin-transform-react-display-name": "^7.23.3",
"@babel/plugin-transform-react-jsx": "^7.22.15",
"@babel/plugin-transform-react-jsx-development": "^7.22.5",
- "@babel/plugin-transform-react-pure-annotations": "^7.22.5"
+ "@babel/plugin-transform-react-pure-annotations": "^7.23.3"
}
},
"@babel/preset-typescript": {
@@ -23677,29 +23676,29 @@
}
},
"@babel/traverse": {
- "version": "7.23.2",
- "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.2.tgz",
- "integrity": "sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw==",
+ "version": "7.23.4",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.4.tgz",
+ "integrity": "sha512-IYM8wSUwunWTB6tFC2dkKZhxbIjHoWemdK+3f8/wq8aKhbUscxD5MX72ubd90fxvFknaLPeGw5ycU84V1obHJg==",
"dev": true,
"requires": {
- "@babel/code-frame": "^7.22.13",
- "@babel/generator": "^7.23.0",
+ "@babel/code-frame": "^7.23.4",
+ "@babel/generator": "^7.23.4",
"@babel/helper-environment-visitor": "^7.22.20",
"@babel/helper-function-name": "^7.23.0",
"@babel/helper-hoist-variables": "^7.22.5",
"@babel/helper-split-export-declaration": "^7.22.6",
- "@babel/parser": "^7.23.0",
- "@babel/types": "^7.23.0",
+ "@babel/parser": "^7.23.4",
+ "@babel/types": "^7.23.4",
"debug": "^4.1.0",
"globals": "^11.1.0"
}
},
"@babel/types": {
- "version": "7.23.0",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.0.tgz",
- "integrity": "sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==",
+ "version": "7.23.4",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.4.tgz",
+ "integrity": "sha512-7uIFwVYpoplT5jp/kVv6EF93VaJ8H+Yn5IczYiaAi98ajzjfoZfslet/e0sLh+wVBjb2qqIut1b0S26VSafsSQ==",
"requires": {
- "@babel/helper-string-parser": "^7.22.5",
+ "@babel/helper-string-parser": "^7.23.4",
"@babel/helper-validator-identifier": "^7.22.20",
"to-fast-properties": "^2.0.0"
}
@@ -24114,9 +24113,9 @@
}
},
"@floating-ui/react-dom": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.0.2.tgz",
- "integrity": "sha512-5qhlDvjaLmAst/rKb3VdlCinwTF4EYMiVxuuc/HVUjs46W0zgtbMmAZ1UTsDrRTxRmUEzl92mOtWbeeXL26lSQ==",
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.0.4.tgz",
+ "integrity": "sha512-CF8k2rgKeh/49UrnIBs4BdxPUV6vize/Db1d/YbCLyp9GiVZ0BEwf5AiDSxJRCr6yOkGqTFHtmrULxkEfYZ7dQ==",
"requires": {
"@floating-ui/dom": "^1.5.1"
}
@@ -24768,44 +24767,44 @@
"dev": true
},
"@mui/base": {
- "version": "5.0.0-beta.21",
- "resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-beta.21.tgz",
- "integrity": "sha512-eTKWx3WV/nwmRUK4z4K1MzlMyWCsi3WJ3RtV4DiXZeRh4qd4JCyp1Zzzi8Wv9xM4dEBmqQntFoei716PzwmFfA==",
+ "version": "5.0.0-beta.24",
+ "resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-beta.24.tgz",
+ "integrity": "sha512-bKt2pUADHGQtqWDZ8nvL2Lvg2GNJyd/ZUgZAJoYzRgmnxBL9j36MSlS3+exEdYkikcnvVafcBtD904RypFKb0w==",
"requires": {
"@babel/runtime": "^7.23.2",
- "@floating-ui/react-dom": "^2.0.2",
- "@mui/types": "^7.2.7",
- "@mui/utils": "5.14.15",
+ "@floating-ui/react-dom": "^2.0.4",
+ "@mui/types": "^7.2.9",
+ "@mui/utils": "5.14.18",
"@popperjs/core": "^2.11.8",
"clsx": "^2.0.0",
"prop-types": "^15.8.1"
}
},
"@mui/core-downloads-tracker": {
- "version": "5.14.15",
- "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-5.14.15.tgz",
- "integrity": "sha512-ZCDzBWtCKjAYAlKKM3PA/jG/3uVIDT9ZitOtVixIVmTCQyc5jSV1qhJX8+qIGz4RQZ9KLzPWO2tXd0O5hvzouQ=="
+ "version": "5.14.18",
+ "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-5.14.18.tgz",
+ "integrity": "sha512-yFpF35fEVDV81nVktu0BE9qn2dD/chs7PsQhlyaV3EnTeZi9RZBuvoEfRym1/jmhJ2tcfeWXiRuHG942mQXJJQ=="
},
"@mui/icons-material": {
- "version": "5.14.15",
- "resolved": "https://registry.npmjs.org/@mui/icons-material/-/icons-material-5.14.15.tgz",
- "integrity": "sha512-Dqu21vN/mVNzebJ+ofnKG+CeJYIhHuDs5+0fMEpdpzRt6UojelzdrEkNv+XkO0e1JMclzeXIRx404FirK/CFRw==",
+ "version": "5.14.18",
+ "resolved": "https://registry.npmjs.org/@mui/icons-material/-/icons-material-5.14.18.tgz",
+ "integrity": "sha512-o2z49R1G4SdBaxZjbMmkn+2OdT1bKymLvAYaB6pH59obM1CYv/0vAVm6zO31IqhwtYwXv6A7sLIwCGYTaVkcdg==",
"requires": {
"@babel/runtime": "^7.23.2"
}
},
"@mui/material": {
- "version": "5.14.15",
- "resolved": "https://registry.npmjs.org/@mui/material/-/material-5.14.15.tgz",
- "integrity": "sha512-Gq65rHjvLzkxmhG8bvag851Oqsmru7qkUb/cCI2xu7dQzmY345f9xJRJi72sRGjhaqHXWeRKw/yIwp/7oQoeXg==",
+ "version": "5.14.18",
+ "resolved": "https://registry.npmjs.org/@mui/material/-/material-5.14.18.tgz",
+ "integrity": "sha512-y3UiR/JqrkF5xZR0sIKj6y7xwuEiweh9peiN3Zfjy1gXWXhz5wjlaLdoxFfKIEBUFfeQALxr/Y8avlHH+B9lpQ==",
"requires": {
"@babel/runtime": "^7.23.2",
- "@mui/base": "5.0.0-beta.21",
- "@mui/core-downloads-tracker": "^5.14.15",
- "@mui/system": "^5.14.15",
- "@mui/types": "^7.2.7",
- "@mui/utils": "5.14.15",
- "@types/react-transition-group": "^4.4.7",
+ "@mui/base": "5.0.0-beta.24",
+ "@mui/core-downloads-tracker": "^5.14.18",
+ "@mui/system": "^5.14.18",
+ "@mui/types": "^7.2.9",
+ "@mui/utils": "5.14.18",
+ "@types/react-transition-group": "^4.4.8",
"clsx": "^2.0.0",
"csstype": "^3.1.2",
"prop-types": "^15.8.1",
@@ -24821,19 +24820,19 @@
}
},
"@mui/private-theming": {
- "version": "5.14.15",
- "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.14.15.tgz",
- "integrity": "sha512-V2Xh+Tu6A07NoSpup0P9m29GwvNMYl5DegsGWqlOTJyAV7cuuVjmVPqxgvL8xBng4R85xqIQJRMjtYYktoPNuQ==",
+ "version": "5.14.18",
+ "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.14.18.tgz",
+ "integrity": "sha512-WSgjqRlzfHU+2Rou3HlR2Gqfr4rZRsvFgataYO3qQ0/m6gShJN+lhVEvwEiJ9QYyVzMDvNpXZAcqp8Y2Vl+PAw==",
"requires": {
"@babel/runtime": "^7.23.2",
- "@mui/utils": "5.14.15",
+ "@mui/utils": "5.14.18",
"prop-types": "^15.8.1"
}
},
"@mui/styled-engine": {
- "version": "5.14.15",
- "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.14.15.tgz",
- "integrity": "sha512-mbOjRf867BysNpexe5Z/P8s3bWzDPNowmKhi7gtNDP/LPEeqAfiDSuC4WPTXmtvse1dCl30Nl755OLUYuoi7Mw==",
+ "version": "5.14.18",
+ "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.14.18.tgz",
+ "integrity": "sha512-pW8bpmF9uCB5FV2IPk6mfbQCjPI5vGI09NOLhtGXPeph/4xIfC3JdIX0TILU0WcTs3aFQqo6s2+1SFgIB9rCXA==",
"requires": {
"@babel/runtime": "^7.23.2",
"@emotion/cache": "^11.11.0",
@@ -24842,33 +24841,33 @@
}
},
"@mui/system": {
- "version": "5.14.15",
- "resolved": "https://registry.npmjs.org/@mui/system/-/system-5.14.15.tgz",
- "integrity": "sha512-zr0Gdk1RgKiEk+tCMB900LaOpEC8NaGvxtkmMdL/CXgkqQZSVZOt2PQsxJWaw7kE4YVkIe4VukFVc43qcq9u3w==",
+ "version": "5.14.18",
+ "resolved": "https://registry.npmjs.org/@mui/system/-/system-5.14.18.tgz",
+ "integrity": "sha512-hSQQdb3KF72X4EN2hMEiv8EYJZSflfdd1TRaGPoR7CIAG347OxCslpBUwWngYobaxgKvq6xTrlIl+diaactVww==",
"requires": {
"@babel/runtime": "^7.23.2",
- "@mui/private-theming": "^5.14.15",
- "@mui/styled-engine": "^5.14.15",
- "@mui/types": "^7.2.7",
- "@mui/utils": "5.14.15",
+ "@mui/private-theming": "^5.14.18",
+ "@mui/styled-engine": "^5.14.18",
+ "@mui/types": "^7.2.9",
+ "@mui/utils": "5.14.18",
"clsx": "^2.0.0",
"csstype": "^3.1.2",
"prop-types": "^15.8.1"
}
},
"@mui/types": {
- "version": "7.2.7",
- "resolved": "https://registry.npmjs.org/@mui/types/-/types-7.2.7.tgz",
- "integrity": "sha512-sofpWmcBqOlTzRbr1cLQuUDKaUYVZTw8ENQrtL39TECRNENEzwgnNPh6WMfqMZlMvf1Aj9DLg74XPjnLr0izUQ==",
+ "version": "7.2.9",
+ "resolved": "https://registry.npmjs.org/@mui/types/-/types-7.2.9.tgz",
+ "integrity": "sha512-k1lN/PolaRZfNsRdAqXtcR71sTnv3z/VCCGPxU8HfdftDkzi335MdJ6scZxvofMAd/K/9EbzCZTFBmlNpQVdCg==",
"requires": {}
},
"@mui/utils": {
- "version": "5.14.15",
- "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-5.14.15.tgz",
- "integrity": "sha512-QBfHovAvTa0J1jXuYDaXGk+Yyp7+Fm8GSqx6nK2JbezGqzCFfirNdop/+bL9Flh/OQ/64PeXcW4HGDdOge+n3A==",
+ "version": "5.14.18",
+ "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-5.14.18.tgz",
+ "integrity": "sha512-HZDRsJtEZ7WMSnrHV9uwScGze4wM/Y+u6pDVo+grUjt5yXzn+wI8QX/JwTHh9YSw/WpnUL80mJJjgCnWj2VrzQ==",
"requires": {
"@babel/runtime": "^7.23.2",
- "@types/prop-types": "^15.7.8",
+ "@types/prop-types": "^15.7.10",
"prop-types": "^15.8.1",
"react-is": "^18.2.0"
},
@@ -25438,9 +25437,9 @@
"dev": true
},
"@types/prop-types": {
- "version": "15.7.8",
- "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.8.tgz",
- "integrity": "sha512-kMpQpfZKSCBqltAJwskgePRaYRFukDkm1oItcAbC3gNELR20XIBcN9VRgg4+m8DKsTfkWeA4m4Imp4DDuWy7FQ=="
+ "version": "15.7.11",
+ "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.11.tgz",
+ "integrity": "sha512-ga8y9v9uyeiLdpKddhxYQkxNDrfvuPrlFb0N1qnZZByvcElJaXthF1UhvCh9TLWJBEHeNtdnbysW7Y6Uq8CVng=="
},
"@types/q": {
"version": "1.5.5",
@@ -25461,9 +25460,9 @@
"devOptional": true
},
"@types/react": {
- "version": "18.2.33",
- "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.33.tgz",
- "integrity": "sha512-v+I7S+hu3PIBoVkKGpSYYpiBT1ijqEzWpzQD62/jm4K74hPpSP7FF9BnKG6+fg2+62weJYkkBWDJlZt5JO/9hg==",
+ "version": "18.2.38",
+ "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.38.tgz",
+ "integrity": "sha512-cBBXHzuPtQK6wNthuVMV6IjHAFkdl/FOPFIlkd81/Cd1+IqkHu/A+w4g43kaQQoYHik/ruaQBDL72HyCy1vuMw==",
"requires": {
"@types/prop-types": "*",
"@types/scheduler": "*",
@@ -25471,9 +25470,9 @@
}
},
"@types/react-transition-group": {
- "version": "4.4.7",
- "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.7.tgz",
- "integrity": "sha512-ICCyBl5mvyqYp8Qeq9B5G/fyBSRC0zx3XM3sCC6KkcMsNeAHqXBKkmat4GqdJET5jtYUpZXrxI5flve5qhi2Eg==",
+ "version": "4.4.9",
+ "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.9.tgz",
+ "integrity": "sha512-ZVNmWumUIh5NhH8aMD9CR2hdW0fNuYInlocZHaZ+dgk/1K49j1w/HoAuK1ki+pgscQrOFRTlXeoURtuzEkV3dg==",
"requires": {
"@types/react": "*"
}
@@ -26391,9 +26390,9 @@
"dev": true
},
"axios": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.0.tgz",
- "integrity": "sha512-EZ1DYihju9pwVB+jg67ogm+Tmqc6JmhamRN6I4Zt8DfZu5lbcQGw3ozH9lFejSJgs/ibaef3A9PMXPLeefFGJg==",
+ "version": "1.6.2",
+ "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.2.tgz",
+ "integrity": "sha512-7i24Ri4pmDRfJTR7LDBhsOTtcm+9kjX5WiY1X3wIisx6G9So3pfMkEiU7emUBe46oceVImccTEM3k6C5dbVW8A==",
"requires": {
"follow-redirects": "^1.15.0",
"form-data": "^4.0.0",
@@ -27672,9 +27671,9 @@
"integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ=="
},
"cypress": {
- "version": "13.3.3",
- "resolved": "https://registry.npmjs.org/cypress/-/cypress-13.3.3.tgz",
- "integrity": "sha512-mbdkojHhKB1xbrj7CrKWHi22uFx9P9vQFiR0sYDZZoK99OMp9/ZYN55TO5pjbXmV7xvCJ4JwBoADXjOJK8aCJw==",
+ "version": "13.6.0",
+ "resolved": "https://registry.npmjs.org/cypress/-/cypress-13.6.0.tgz",
+ "integrity": "sha512-quIsnFmtj4dBUEJYU4OH0H12bABJpSujvWexC24Ju1gTlKMJbeT6tTO0vh7WNfiBPPjoIXLN+OUqVtiKFs6SGw==",
"dev": true,
"requires": {
"@cypress/request": "^3.0.0",
@@ -35160,16 +35159,15 @@
"integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA=="
},
"react-markdown": {
- "version": "9.0.0",
- "resolved": "https://registry.npmjs.org/react-markdown/-/react-markdown-9.0.0.tgz",
- "integrity": "sha512-v6yNf3AB8GfJ8lCpUvzxAXKxgsHpdmWPlcVRQ6Nocsezp255E/IDrF31kLQsPJeB/cKto/geUwjU36wH784FCA==",
+ "version": "9.0.1",
+ "resolved": "https://registry.npmjs.org/react-markdown/-/react-markdown-9.0.1.tgz",
+ "integrity": "sha512-186Gw/vF1uRkydbsOIkcGXw7aHq0sZOCRFFjGrr7b9+nVZg4UfA4enXCaxm4fUzecU38sWfrNDitGhshuU7rdg==",
"requires": {
"@types/hast": "^3.0.0",
"devlop": "^1.0.0",
"hast-util-to-jsx-runtime": "^2.0.0",
"html-url-attributes": "^3.0.0",
"mdast-util-to-hast": "^13.0.0",
- "micromark-util-sanitize-uri": "^2.0.0",
"remark-parse": "^11.0.0",
"remark-rehype": "^11.0.0",
"unified": "^11.0.0",
@@ -35600,9 +35598,9 @@
}
},
"react-select": {
- "version": "5.7.7",
- "resolved": "https://registry.npmjs.org/react-select/-/react-select-5.7.7.tgz",
- "integrity": "sha512-HhashZZJDRlfF/AKj0a0Lnfs3sRdw/46VJIRd8IbB9/Ovr74+ZIwkAdSBjSPXsFMG+u72c5xShqwLSKIJllzqw==",
+ "version": "5.8.0",
+ "resolved": "https://registry.npmjs.org/react-select/-/react-select-5.8.0.tgz",
+ "integrity": "sha512-TfjLDo58XrhP6VG5M/Mi56Us0Yt8X7xD6cDybC7yoRMUNm7BGO7qk8J0TLQOua/prb8vUOtsfnXZwfm30HGsAA==",
"requires": {
"@babel/runtime": "^7.12.0",
"@emotion/cache": "^11.4.0",
diff --git a/package.json b/package.json
index 78421039d..fa689ec27 100644
--- a/package.json
+++ b/package.json
@@ -6,12 +6,12 @@
"@databiosphere/bard-client": "0.1.0",
"@emotion/react": "11.11.1",
"@emotion/styled": "11.11.0",
- "@mui/icons-material": "5.14.15",
- "@mui/material": "5.14.15",
- "@mui/utils": "5.14.15",
+ "@mui/icons-material": "5.14.18",
+ "@mui/material": "5.14.18",
+ "@mui/utils": "5.14.18",
"ajv": "8.12.0",
"ajv-formats": "2.1.1",
- "axios": "1.6.0",
+ "axios": "1.6.2",
"bootstrap": "3.4.1",
"dompurify": "3.0.6",
"http-proxy-middleware": "2.0.6",
@@ -28,13 +28,13 @@
"react-ga": "3.3.1",
"react-google-charts": "4.0.1",
"react-hyperscript-helpers": "2.0.0",
- "react-markdown": "9.0.0",
+ "react-markdown": "9.0.1",
"react-material-icon-svg": "3.20.0",
"react-modal": "3.16.1",
"react-paginating": "1.4.0",
"react-protected-mailto": "1.0.3",
"react-router-dom": "5.3.0",
- "react-select": "5.7.7",
+ "react-select": "5.8.0",
"react-tooltip": "4.5.1",
"stackdriver-errors-js": "0.12.0",
"tss-react": "4.9.3",
@@ -55,13 +55,13 @@
"cypress:verify": "cypress verify"
},
"devDependencies": {
- "@babel/core": "7.23.2",
- "@babel/eslint-parser": "7.22.15",
+ "@babel/core": "7.23.3",
+ "@babel/eslint-parser": "7.23.3",
"@babel/eslint-plugin": "7.22.10",
"@babel/plugin-proposal-class-properties": "7.18.6",
- "@babel/preset-react": "7.22.15",
- "@types/react": "18.2.33",
- "cypress": "13.3.3",
+ "@babel/preset-react": "7.23.3",
+ "@types/react": "18.2.38",
+ "cypress": "13.6.0",
"eslint": "7.32.0",
"eslint-plugin-flowtype": "7.0.0",
"eslint-plugin-react": "7.33.2",
diff --git a/src/App.js b/src/App.js
index 72eab4b61..2504a4b29 100644
--- a/src/App.js
+++ b/src/App.js
@@ -1,6 +1,5 @@
-import {useEffect, useState} from 'react';
+import React, { useEffect, useState } from 'react';
import ReactGA from 'react-ga';
-import {div, h} from 'react-hyperscript-helpers';
import Modal from 'react-modal';
import './App.css';
import {Config} from './libs/config';
@@ -81,18 +80,16 @@ function App() {
};
return (
- div({className: 'body'}, [
- div({className: 'wrap'}, [
- div({className: 'main'}, [
- h(DuosHeader, {onSignOut: signOut}),
- h(Spinner, {
- name: 'mainSpinner', group: 'duos', loadingImage
- }),
- h(Routes, {onSignOut: signOut, onSignIn: signIn, isLogged: isLoggedIn, env: env})
- ])
- ]),
- DuosFooter()
- ])
+
);
}
diff --git a/src/Routes.js b/src/Routes.js
index b3a7bfddf..652e7c3e5 100644
--- a/src/Routes.js
+++ b/src/Routes.js
@@ -50,7 +50,7 @@ const Routes = (props) => (
} />
} />
Status(mergeAll([routeProps, props]))} />
- HealthCheck()} />
+
checkEnv(envGroups.NON_STAGING)
diff --git a/src/components/CollapsibleTable.js b/src/components/CollapsibleTable.js
index 9a3a03b44..12d320ea3 100644
--- a/src/components/CollapsibleTable.js
+++ b/src/components/CollapsibleTable.js
@@ -351,4 +351,5 @@ const SubtableCellRenderer = ({ cell }) => {
return
{cell.value}
;
-};
\ No newline at end of file
+
+};
diff --git a/src/components/DownloadLink.js b/src/components/DownloadLink.js
index 7dd5b57db..30efe1d65 100644
--- a/src/components/DownloadLink.js
+++ b/src/components/DownloadLink.js
@@ -1,5 +1,5 @@
import _ from 'lodash';
-import { div, a, i, span } from 'react-hyperscript-helpers';
+import React from 'react';
import { Theme } from '../libs/theme';
const ICON = {
@@ -9,14 +9,12 @@ const ICON = {
export const DownloadLink = props => {
const { label, onDownload } = props;
- return div({}, [
- a({
- id: _.kebabCase(label),
- onClick: () => onDownload()
- },
- [
- i({ className: 'glyphicon glyphicon-download-alt', style: ICON }),
- span({style: { fontSize: Theme.font.size.small }}, label)
- ])
- ]);
+ return (
+
+ );
};
diff --git a/src/components/DuosFooter.js b/src/components/DuosFooter.js
index e8a8b9eba..53a851ae6 100644
--- a/src/components/DuosFooter.js
+++ b/src/components/DuosFooter.js
@@ -1,4 +1,4 @@
-import { a, div, footer, img, li, ul } from 'react-hyperscript-helpers';
+import React from 'react';
import footerLogo from '../images/broad_logo_allwhite.png';
function DuosFooter() {
@@ -24,17 +24,17 @@ function DuosFooter() {
};
return (
- div({ style: footerStyle }, [
- footer({ style: mainFooterStyle }, [
- img({ src: footerLogo, style: footerLogoStyle, alt: 'Broad Institute logo' }),
- ul({ className: 'footer-links' }, [
- li({ className: 'footer-links__item' }, ['\u00A9 Broad Institute']),
- li({ className: 'footer-links__item' }, [a({ href: '/privacy' }, ['Privacy Policy']),]),
- li({ className: 'footer-links__item' }, [a({ href: '/tos' }, ['Terms of Service']),]),
- li({ className: 'footer-links__item' }, [a({ href: '/status' }, ['Status'])])
- ])
- ])
- ])
+
+
+
);
}
diff --git a/src/components/PageHeading.js b/src/components/PageHeading.js
index 84a68217c..06a27f6eb 100644
--- a/src/components/PageHeading.js
+++ b/src/components/PageHeading.js
@@ -1,82 +1,80 @@
-import {Component} from 'react';
-import {div, hh, img, h2, span} from 'react-hyperscript-helpers';
-import {isNil} from 'lodash';
+import React from 'react';
+import { isNil } from 'lodash';
-export const PageHeading = hh(class PageHeading extends Component {
+const margins = (iconSize) => {
- margins(iconSize) {
+ const MEDIUM = {
+ marginLeft: '55px'
+ };
- const MEDIUM = {
- marginLeft: '55px'
- };
+ const LARGE = {
+ marginLeft: '70px'
+ };
- const LARGE = {
- marginLeft: '70px'
- };
-
- const NONE = {
- marginLeft: '0'
- };
-
- if (iconSize === 'none') {
- return NONE;
- }
- if (iconSize === 'large') {
- return LARGE;
- } else {
- return MEDIUM;
- }
- }
-
- render() {
-
- const HEADING = {
- width: '100%',
- margin: '20px 0 10px 0',
- position: 'relative'
- };
-
- const ICON = {
- position: 'absolute',
- top: '0',
- left: '0',
- height: '50px'
- };
-
- const DESCRIPTION = {
- color: '#000000',
- height: '25px',
- fontWeight: '400',
- fontSize: '19px'
- };
-
- const TITLE = {
- margin: '7px 0 5px 0',
- lineBreak: 'auto'
- };
-
- const MARGINS = this.margins(this.props.iconSize);
- const DESCRIPT_STYLE = isNil(this.props.descriptionStyle) ? DESCRIPTION : this.props.descriptionStyle;
-
- return div({id: this.props.id + '_heading', style: HEADING}, [
- img({
- id: this.props.id + '_icon',
- isRendered: this.props.imgSrc !== undefined,
- src: this.props.imgSrc,
- alt: this.props.title,
- style: ICON
- }),
- div({style: MARGINS}, [
- h2({
- id: this.props.id + '_title',
- className: this.props.color + '-color',
- style: TITLE
- }, [this.props.title]),
- span({id: this.props.id + '_description', style: DESCRIPT_STYLE}, [this.props.description]),
- ]),
-
- ]);
+ const NONE = {
+ marginLeft: '0'
+ };
+ if (iconSize === 'none') {
+ return NONE;
+ } else if (iconSize === 'large') {
+ return LARGE;
+ } else {
+ return MEDIUM;
}
-
-});
+};
+
+export const PageHeading = (props) => {
+ const { id, title, description, imgSrc, color, iconSize, descriptionStyle } = props;
+
+ const HEADING = {
+ width: '100%',
+ margin: '20px 0 10px 0',
+ position: 'relative'
+ };
+
+ const ICON = {
+ position: 'absolute',
+ top: '0',
+ left: '0',
+ height: '50px'
+ };
+
+ const DESCRIPTION = {
+ color: '#000000',
+ height: '25px',
+ fontWeight: '400',
+ fontSize: '19px'
+ };
+
+ const TITLE = {
+ margin: '7px 0 5px 0',
+ lineBreak: 'auto'
+ };
+
+ const MARGINS = margins(iconSize);
+ const DESCRIPT_STYLE = isNil(descriptionStyle) ? DESCRIPTION : descriptionStyle;
+
+ return (
+
+ {imgSrc !== undefined &&
+
+ }
+
+
+ {title}
+
+
+ {description}
+
+
+
+ );
+};
+
+export default PageHeading;
diff --git a/src/components/PaginationBar.js b/src/components/PaginationBar.js
index 620792e6e..9f63fc4f5 100644
--- a/src/components/PaginationBar.js
+++ b/src/components/PaginationBar.js
@@ -1,13 +1,13 @@
-import { div, input, span } from 'react-hyperscript-helpers';
+import React from 'react';
import { useRef, useEffect } from 'react';
import { toNumber } from 'lodash';
-import {Styles, Theme} from '../libs/theme';
+import { Styles, Theme } from '../libs/theme';
//NOTE: This is a new pagination made to fit with the updated table look
//Component does not use third-party libraries for pagination, whereas the old version relies on 'react-pagination'
//Style works with Current Dar Table, but allows for modification with styles passed as a prop (though I expect to do some more fine-tuning with future implementations)
export default function PaginationBar(props) {
- const {pageCount, goToPage, changeTableSize} = props;
+ const { pageCount, goToPage, changeTableSize } = props;
const currentPage = useRef(props.currentPage);
const tableSize = useRef(props.tableSize);
const applyTextHover = (e) => {
@@ -25,49 +25,41 @@ export default function PaginationBar(props) {
}, [props.currentPage, props.tableSize]);
return (
- div({style: Styles.TABLE.FOOTER}, [
- div({style: Styles.TABLE.PAGINATION_SECTION_OFFSET}),
- div({style: Styles.TABLE.PAGINATION_BUTTON_SECTION}, [
- div({
- style: Styles.TABLE.PAGINATION_BUTTON
- }, [
- span({
- onClick: () => goToPage(toNumber(currentPage.current.value) - 1),
- onMouseEnter: applyTextHover,
- onMouseLeave: (e) => removeTextHover(e, Theme.palette.primary),
- },['Prev']),
- ]),
- div({style: Styles.TABLE.PAGINATION_CURRENT_PAGE}, [
- span({},['Page ']),
- input({
- onChange: () => goToPage(toNumber(currentPage.current.value)),
- type: 'text',
- ref: currentPage,
- defaultValue: props.currentPage,
- style: Styles.TABLE.PAGINATION_INPUT
- }),
- span({}, [` of ${pageCount}`])
- ]),
- div({
- style: Styles.TABLE.PAGINATION_BUTTON
- }, [
- span({
- onClick: () => goToPage(toNumber(currentPage.current.value) + 1),
- onMouseEnter: applyTextHover,
- onMouseLeave: (e) => removeTextHover(e, '#1f3b50')
- }, ['Next'])
- ]),
- ]),
- div({style: Styles.TABLE.PAGINATION_TABLE_SIZE_SECTION}, [
- span({style: {marginRight: '2%'}}, ['Rows per page: ']),
- input({
- onChange: () => changeTableSize(tableSize.current.value),
- type: 'text',
- ref: tableSize,
- defaultValue: props.tableSize,
- style: Styles.TABLE.PAGINATION_INPUT
- })
- ])
- ])
+
+
+
+
+ goToPage(toNumber(currentPage.current.value) - 1)}
+ onMouseEnter={applyTextHover}
+ onMouseLeave={(e) => removeTextHover(e, Theme.palette.primary)}>
+ Prev
+
+
+
+ Page
+ goToPage(toNumber(currentPage.current.value))}
+ type="text"
+ ref={currentPage}
+ defaultValue={props.currentPage}
+ style={Styles.TABLE.PAGINATION_INPUT} />
+ of {pageCount}
+
+
+ goToPage(toNumber(currentPage.current.value) + 1)}
+ onMouseEnter={applyTextHover}
+ onMouseLeave={(e) => removeTextHover(e, '#1f3b50')}>
+ Next
+
+
+
+
+ Rows per page:
+ changeTableSize(tableSize.current.value)}
+ type="text"
+ ref={tableSize}
+ defaultValue={props.tableSize}
+ style={Styles.TABLE.PAGINATION_INPUT} />
+
+
);
}
\ No newline at end of file
diff --git a/src/components/RadioButton.js b/src/components/RadioButton.js
index 3e593d1c7..0a510b430 100644
--- a/src/components/RadioButton.js
+++ b/src/components/RadioButton.js
@@ -1,4 +1,4 @@
-import {div, input, label, span} from 'react-hyperscript-helpers';
+import React from 'react';
import * as fp from 'lodash/fp';
export const RadioButton = (props) => {
@@ -52,28 +52,26 @@ export const RadioButton = (props) => {
};
return (
- div({style: props.style}, [
- label({style: wrapperStyle}, [
- div({style: {float: 'left'}}, [
- input({
- id: props.id,
- type: 'radio',
- name: props.name,
- value: props.value,
- checked: props.defaultChecked,
- onClick: props.onClick,
- disabled: props.disabled,
- onChange: props.onChange ? props.onChange : () => {}
- }),
- span({
- style: props.defaultChecked ? checkedStyle : uncheckedStyle,
- }),
- ]),
- div({style: {marginLeft: '3rem'}}, [
- span({style: labelStyle}, [props.label]),
- span({style: descriptionStyle}, [props.description]),
- ]),
- ])
- ])
+
+
+
);
};
diff --git a/src/components/ReadMore.js b/src/components/ReadMore.js
index b62f59ed2..885546989 100644
--- a/src/components/ReadMore.js
+++ b/src/components/ReadMore.js
@@ -1,93 +1,83 @@
-import get from 'lodash/get';
-import { Component } from 'react';
-import { a, div, hh, span } from 'react-hyperscript-helpers';
+import React from 'react';
+import { useEffect, useState } from 'react';
import ReactTooltip from 'react-tooltip';
+export const ReadMore = ({
+ inline = false,
+ content = [{''}],
+ moreContent = [{''}],
+ className = '',
+ style = {},
+ readStyle = {},
+ charLimit = 100,
+ hideUnderLimit = false,
+ readMoreText = 'Read More',
+ readLessText = 'Read Less',
+}) => {
+ const [expanded, setExpanded] = useState(false);
-export const ReadMore = hh(class ReadMore extends Component {
- constructor(props) {
- super(props);
- this.state = {
- expanded: false,
- inline: get(this.props, 'inline', false),
- content: get(this.props, 'content', [span({}, [''])]),
- moreContent: get(this.props, 'moreContent', [span({}, [''])]),
- className: get(this.props, 'className', ''),
- style: get(this.props, 'style', {}),
- readStyle: get(this.props, 'readStyle', {}),
- charLimit: get(this.props, 'charLimit', 100),
- hideUnderLimit: get(this.props, 'hideUnderLimit', false),
- readMoreText: get(this.props, 'readMoreText', 'Read More'),
- readLessText: get(this.props, 'readLessText', 'Read Less')
- };
- }
-
- componentDidMount() {
+ useEffect(() => {
ReactTooltip.rebuild();
- }
+ });
- getContent = () => {
- return this.state.inline ? this.getInlineContent() : this.getFormattedContent();
+ const getUnderLimit = () => {
+ return !content || content.length <= charLimit;
};
- getUnderLimit = () => {
- return !this.state.content || this.state.content.length <= this.state.charLimit;
+ const getInlineContent = () => {
+ const content = expanded
+ ? content
+ : content.slice(0, charLimit) + (hideUnderLimit
+ ? getUnderLimit() ? '' : ' ...'
+ : ' ...');
+ return (
+
+ {content}
+
+ );
};
- getInlineContent = () => {
- const content = this.state.expanded
- ? this.state.content
- : this.state.content.slice(0, this.state.charLimit) + (this.state.hideUnderLimit
- ? this.getUnderLimit() ? '' : ' ...'
- : ' ...');
- return span({
- className: this.state.className,
- style: this.state.style,
- }, content);
+ const getFormattedContent = () => {
+ return expanded ? [...content, ...moreContent] : content;
};
- getFormattedContent = () => {
- return this.state.expanded ? [...this.state.content, ...this.state.moreContent] : this.state.content;
+ const getContent = () => {
+ return inline ? getInlineContent() : getFormattedContent();
};
- readMore = () => {
- this.setState(prev => {
- prev.expanded = true;
- return prev;
- });
+ const readMore = () => {
+ setExpanded(true);
};
- readLess = () => {
- this.setState(prev => {
- prev.expanded = false;
- return prev;
- });
+ const readLess = () => {
+ setExpanded(false);
};
- getReadLink = (fun, text, classes) => {
- const {linkElements, linkElementsStyle} = this.state.inline ?
- {linkElements: [text], linkElementsStyle: {}} :
- {
+ const getReadLink = (fun, text, classes) => {
+ const { linkElements, linkElementsStyle } = inline
+ ? { linkElements: [text], linkElementsStyle: {} }
+ : {
linkElements: [
text,
- span({
- className: classes,
- style: {padding: '0 1rem'},
- 'aria-hidden': 'true',
- })], linkElementsStyle: this.state.readStyle,
+ ,
+ ],
+ linkElementsStyle: readStyle,
};
- return a({ onClick: () => fun(), style: linkElementsStyle}, linkElements);
+ return (
+ fun()} style={linkElementsStyle}>
+ {linkElements}
+
+ );
};
- render() {
- const readLink = this.state.expanded ?
- this.getReadLink(this.readLess, this.state.readLessText, 'glyphicon glyphicon-chevron-up') :
- this.getReadLink(this.readMore, this.state.readMoreText, 'glyphicon glyphicon-chevron-down');
- return div({}, this.state.hideUnderLimit && this.getUnderLimit() ? [
- this.getContent()
- ]: [
- this.getContent(),
- readLink
- ]);
- }
-});
+ const readLink = expanded ?
+ getReadLink(readLess, readLessText, 'glyphicon glyphicon-chevron-up') :
+ getReadLink(readMore, readMoreText, 'glyphicon glyphicon-chevron-down');
+
+ return (
+
+ {getContent()}
+ {hideUnderLimit && getUnderLimit() || readLink}
+
+ );
+};
diff --git a/src/components/SearchBar.js b/src/components/SearchBar.js
index d0a8d2343..6df8f682f 100644
--- a/src/components/SearchBar.js
+++ b/src/components/SearchBar.js
@@ -1,14 +1,13 @@
-
+import React from 'react';
import { useRef } from 'react';
-import { div, input } from 'react-hyperscript-helpers';
-import { Styles} from '../libs/theme';
+import { Styles } from '../libs/theme';
import { defaultTo } from 'lodash/fp';
export default function SearchBar(props) {
const { handleSearchChange } = props;
const searchTerms = useRef('');
- const button = props.button ? props.button : div();
+ const button = props.button ? props.button : ;
const style = {
width: '100%',
@@ -22,17 +21,17 @@ export default function SearchBar(props) {
...props.style
};
- return div({className: 'right-header-section', style: Styles.RIGHT_HEADER_SECTION}, [
- input({
- 'data-cy': 'search-bar',
- type: 'text',
- placeholder: 'Enter search terms',
- //Styling seems to only work when defined here, variable reference doesn't work
- //Odds are there's a competing style, need to figure out where it's coming from
- style,
- onChange:() => handleSearchChange(props.searchRef ? defaultTo('')(props.searchRef.current.value) : searchTerms),
- ref: props.searchRef || searchTerms
- }),
- button
- ]);
-}
\ No newline at end of file
+ return (
+
+ handleSearchChange(props.searchRef ? defaultTo('')(props.searchRef.current.value) : searchTerms)}
+ ref={props.searchRef || searchTerms}
+ />
+ {button}
+
+ );
+}
diff --git a/src/components/SelectableText.js b/src/components/SelectableText.js
index b852158ff..91e37b305 100644
--- a/src/components/SelectableText.js
+++ b/src/components/SelectableText.js
@@ -1,5 +1,5 @@
+import React from 'react';
import { useState, useEffect, useMemo } from 'react';
-import { div } from 'react-hyperscript-helpers';
const defaultUnselectedStyle = {
fontSize: '1.8rem',
@@ -24,7 +24,6 @@ export default function SelectableText({label, setSelected, selectedType, styleO
const {baseStyle, tabSelected, tabUnselected, tabHover} = styleOverride;
-
const utilizedUnselectedStyle = useMemo(() => {
return Object.assign({}, tabUnselected || defaultUnselectedStyle, baseStyle);
}, [tabUnselected, baseStyle]);
@@ -42,7 +41,6 @@ export default function SelectableText({label, setSelected, selectedType, styleO
);
}, [label, selectedType, utilizedSelectedStyle, utilizedUnselectedStyle]);
-
const addHoverEffect = () => {
setStyle(utilizedHoverStyle);
};
@@ -50,14 +48,15 @@ export default function SelectableText({label, setSelected, selectedType, styleO
setStyle(selectedType === label ? utilizedSelectedStyle : utilizedUnselectedStyle);
};
-
- return(
- div({
- style,
- onMouseEnter: addHoverEffect,
- onMouseLeave: removeHoverEffect,
- onClick: () => !isDisabled && setSelected(label),
- className: `tab-selection-${label}`
- }, [label])
+ return (
+ !isDisabled && setSelected(label)}
+ className={`tab-selection-${label}`}
+ >
+ {label}
+
);
-}
\ No newline at end of file
+}
diff --git a/src/components/SignIn.js b/src/components/SignIn.js
index 32ceeb393..dc633d032 100644
--- a/src/components/SignIn.js
+++ b/src/components/SignIn.js
@@ -1,22 +1,21 @@
-import React, {useEffect, useState} from 'react';
-import {isEmpty, isNil} from 'lodash/fp';
-import {a, div, h, img, span} from 'react-hyperscript-helpers';
-import {Alert} from './Alert';
-import {ToS, User} from '../libs/ajax';
+import React, { useEffect, useState } from 'react';
+import { isEmpty, isNil } from 'lodash/fp';
+import { Alert } from './Alert';
+import { ToS, User } from '../libs/ajax';
import { Metrics } from '../libs/metrics';
-import {Config} from '../libs/config';
-import {Storage} from '../libs/storage';
-import {Navigation, setUserRoleStatuses} from '../libs/utils';
+import { Config } from '../libs/config';
+import { Storage } from '../libs/storage';
+import { Navigation, setUserRoleStatuses } from '../libs/utils';
import loadingIndicator from '../images/loading-indicator.svg';
-import {Spinner} from './Spinner';
+import { Spinner } from './Spinner';
import ReactTooltip from 'react-tooltip';
-import {GoogleIS} from '../libs/googleIS';
+import { GoogleIS } from '../libs/googleIS';
import eventList from '../libs/events';
-export default function SignIn(props) {
+export const SignIn = (props) => {
const [clientId, setClientId] = useState('');
const [errorDisplay, setErrorDisplay] = useState({});
- const {onSignIn, history, customStyle} = props;
+ const { onSignIn, history, customStyle } = props;
useEffect(() => {
// Using `isSubscribed` resolves the
@@ -44,7 +43,7 @@ export default function SignIn(props) {
setUserRoleStatuses(user, Storage);
await onSignIn();
const userStatus = await ToS.getStatus();
- const {tosAccepted} = userStatus;
+ const { tosAccepted } = userStatus;
if (!isEmpty(userStatus) && !tosAccepted) {
await Storage.setUserIsLogged(false);
if (isNil(redirectPath)) {
@@ -112,13 +111,13 @@ export default function SignIn(props) {
switch (status) {
case 400:
- setErrorDisplay({show: true, title: 'Error', msg: JSON.stringify(error)});
+ setErrorDisplay({ show: true, title: 'Error', msg: JSON.stringify(error) });
break;
case 409:
handleConflictError(redirectTo, shouldRedirect);
break;
default:
- setErrorDisplay({show: true, title: 'Error', msg: 'Unexpected error, please try again'});
+ setErrorDisplay({ show: true, title: 'Error', msg: 'Unexpected error, please try again' });
break;
}
};
@@ -134,65 +133,61 @@ export default function SignIn(props) {
const onFailure = (response) => {
Storage.clearStorage();
if (response.error === 'popup_closed_by_user') {
- setErrorDisplay({
- description: span({}, ['Sign-in cancelled ... ', img({height: '20px', src: loadingIndicator})])
- });
+ setErrorDisplay(
+
+ Sign-in cancelled ...
+
+
+ );
setTimeout(() => {
setErrorDisplay({});
}, 2000);
} else {
- setErrorDisplay({'title': response.error, 'description': response.details});
+ setErrorDisplay({ title: response.error, description: response.details });
}
};
const spinnerOrSignInButton = () => {
- const disabled = clientId === '';
- return disabled ?
- Spinner :
- div({
- style: {
- display: 'flex'
- }
- }, [
- isNil(customStyle) ?
- GoogleIS.signInButton(clientId, onSuccess, onFailure) :
-