diff --git a/package-lock.json b/package-lock.json index 5cf36e8d8..a7fba938d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,7 +9,7 @@ "version": "0.44.0", "license": "MIT", "dependencies": { - "@blueprintjs/core": "^5.3.3", + "@blueprintjs/core": "^5.5.1", "@emotion/react": "^11.11.1", "@emotion/styled": "^11.11.0", "@lukeed/uuid": "^2.0.1", @@ -23,7 +23,7 @@ "file-saver": "^2.0.5", "filelist-utils": "^1.10.2", "formik": "^2.4.5", - "immer": "^10.0.2", + "immer": "^10.0.3", "jszip": "^3.10.1", "lodash": "^4.17.21", "ml-airpls": "^1.0.2", @@ -34,17 +34,17 @@ "ml-baseline-correction-regression": "^1.0.2", "ml-conrec": "^5.0.2", "ml-gsd": "^12.1.3", - "ml-matrix": "^6.10.5", - "ml-spectra-processing": "^12.5.1", + "ml-matrix": "^6.10.6", + "ml-spectra-processing": "^12.6.0", "ml-stat": "^1.3.3", "multiplet-analysis": "^2.1.2", "nmr-correlation": "^2.3.3", - "nmr-load-save": "^0.21.0", - "nmr-processing": "^11.1.1", + "nmr-load-save": "^0.22.4", + "nmr-processing": "^11.4.1", "nmredata": "^0.9.7", "numeral": "^2.0.6", - "openchemlib": "^8.5.0", - "openchemlib-utils": "^5.3.0", + "openchemlib": "^8.7.1", + "openchemlib-utils": "^5.4.0", "papaparse": "^5.4.1", "re-resizable": "6.9.11", "react-d3-utils": "^1.0.0", @@ -63,42 +63,43 @@ "react-transition-group": "^4.4.5", "react-use": "^17.4.0", "smart-array-filter": "^4.0.2", - "yup": "^1.3.1" + "yup": "^1.3.2" }, "devDependencies": { "@babel/plugin-transform-modules-commonjs": "^7.23.0", "@babel/preset-react": "^7.22.15", - "@babel/preset-typescript": "^7.23.0", - "@playwright/test": "^1.38.1", + "@babel/preset-typescript": "^7.23.2", + "@playwright/test": "^1.39.0", "@simbathesailor/use-what-changed": "^2.0.0", - "@types/d3": "^7.4.1", - "@types/node": "^20.7.0", - "@types/papaparse": "^5.3.9", - "@types/react": "^18.2.23", - "@types/react-dom": "^18.2.8", - "@types/react-table": "^7.7.16", + "@types/d3": "^7.4.2", + "@types/lodash": "^4.14.200", + "@types/node": "^20.8.7", + "@types/papaparse": "^5.3.10", + "@types/react": "^18.2.29", + "@types/react-dom": "^18.2.14", + "@types/react-table": "^7.7.17", "@vitejs/plugin-react-swc": "^3.4.0", - "@vitest/coverage-v8": "^0.34.5", + "@vitest/coverage-v8": "^0.34.6", "cross-env": "^7.0.3", - "cspell": "^7.3.6", - "eslint": "^8.50.0", + "cspell": "^7.3.8", + "eslint": "^8.51.0", "eslint-config-cheminfo-react": "^10.0.0", "eslint-config-cheminfo-typescript": "^12.0.4", "modern-normalize": "^2.0.0", "postcss-styled-syntax": "^0.5.0", "prettier": "^3.0.3", - "rc-menu": "^9.12.0", + "rc-menu": "^9.12.2", "react": "^18.2.0", "react-dom": "^18.2.0", - "react-router-dom": "^6.16.0", + "react-router-dom": "^6.17.0", "rimraf": "^5.0.5", "rollup-plugin-analyzer": "^4.0.0", "serve": "^14.2.1", - "stylelint": "^15.10.3", + "stylelint": "^15.11.0", "stylelint-config-standard": "^34.0.0", "typescript": "^5.2.2", - "vite": "^4.4.9", - "vitest": "^0.34.5" + "vite": "^4.5.0", + "vitest": "^0.34.6" }, "peerDependencies": { "react": ">=18.0.0", @@ -140,9 +141,9 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.22.20.tgz", - "integrity": "sha512-BQYjKbpXjoXwFW5jGqiizJQQT/aC7pFm9Ok1OWssonuguICi264lbgMzRp2ZMmRSlfkX6DsWDDcsrctK8Rwfiw==", + "version": "7.23.2", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.2.tgz", + "integrity": "sha512-0S9TQMmDHlqAZ2ITT95irXKfxN9bncq8ZCoJhun3nHL/lLUxd2NKBJYoNGWH7S0hz6fRQwWlAWn/ILM0C70KZQ==", "dev": true, "peer": true, "engines": { @@ -150,9 +151,9 @@ } }, "node_modules/@babel/core": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.0.tgz", - "integrity": "sha512-97z/ju/Jy1rZmDxybphrBuI+jtJjFVoz7Mr9yUQVVVi+DNZE333uFQeMOqcCIy1x3WYBIbWftUSLmbNXNT7qFQ==", + "version": "7.23.2", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.2.tgz", + "integrity": "sha512-n7s51eWdaWZ3vGT2tD4T7J6eJs3QoBXydv7vkUM06Bf1cbVD2Kc2UrkzhiQwobfV7NwOnQXYL7UBJ5VPU+RGoQ==", "dev": true, "peer": true, "dependencies": { @@ -161,10 +162,10 @@ "@babel/generator": "^7.23.0", "@babel/helper-compilation-targets": "^7.22.15", "@babel/helper-module-transforms": "^7.23.0", - "@babel/helpers": "^7.23.0", + "@babel/helpers": "^7.23.2", "@babel/parser": "^7.23.0", "@babel/template": "^7.22.15", - "@babel/traverse": "^7.23.0", + "@babel/traverse": "^7.23.2", "@babel/types": "^7.23.0", "convert-source-map": "^2.0.0", "debug": "^4.1.0", @@ -425,14 +426,14 @@ } }, "node_modules/@babel/helpers": { - "version": "7.23.1", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.1.tgz", - "integrity": "sha512-chNpneuK18yW5Oxsr+t553UZzzAs3aZnFm4bxhebsNTeshrC95yA7l5yl7GBAG+JG1rF0F7zzD2EixK9mWSDoA==", + "version": "7.23.2", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.2.tgz", + "integrity": "sha512-lzchcp8SjTSVe/fPmLwtWVBFC7+Tbn8LGHDVfDp9JGxpAY5opSaEFgt8UQvrnECWOTdji2mOWMz1rOhkHscmGQ==", "dev": true, "peer": true, "dependencies": { "@babel/template": "^7.22.15", - "@babel/traverse": "^7.23.0", + "@babel/traverse": "^7.23.2", "@babel/types": "^7.23.0" }, "engines": { @@ -615,9 +616,9 @@ } }, "node_modules/@babel/preset-typescript": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.23.0.tgz", - "integrity": "sha512-6P6VVa/NM/VlAYj5s2Aq/gdVg8FSENCg3wlZ6Qau9AcPaoF5LbN1nyGlR9DTRIw9PpxI94e+ReydsJHcjwAweg==", + "version": "7.23.2", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.23.2.tgz", + "integrity": "sha512-u4UJc1XsS1GhIGteM8rnGiIvf9rJpiVgMEeCnwlLA7WJPC+jcXWJAGxYmeqs5hOZD8BbAfnV5ezBOxQbb4OUxA==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", @@ -634,9 +635,9 @@ } }, "node_modules/@babel/runtime": { - "version": "7.23.1", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.1.tgz", - "integrity": "sha512-hC2v6p8ZSI/W0HUzh3V8C5g+NwSKzKPtJwSpTjwl0o297GP9+ZLQSkdvHz46CM3LqyoXxq+5G9komY+eSqSO0g==", + "version": "7.23.2", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.2.tgz", + "integrity": "sha512-mM8eg4yl5D6i3lu2QKPuPH4FArvJ8KhTofbE7jwMUv9KX5mBvwPAqnV3MlyBNqdp9RyRKP6Yck8TrfYrPvX3bg==", "dependencies": { "regenerator-runtime": "^0.14.0" }, @@ -700,25 +701,20 @@ "dev": true }, "node_modules/@blueprintjs/colors": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/@blueprintjs/colors/-/colors-5.0.2.tgz", - "integrity": "sha512-icP/d5sheRT8ReRy6jf6WunvLmDQWXFjFU97/xKsqF5SMOWIYC92I0b/705dmc+z5lAXntkU67pCMRuNWSZ9lQ==", + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@blueprintjs/colors/-/colors-5.0.4.tgz", + "integrity": "sha512-dtAN7gOkuPPZRKIoafLXKVGj6MkpIrphMdoxT+bkaIPTVUWLtYPtpQSh08EH7IBI3zzTqfdqXee+U5lmyEfY5g==", "dependencies": { "tslib": "~2.5.0" } }, - "node_modules/@blueprintjs/colors/node_modules/tslib": { - "version": "2.5.3", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.3.tgz", - "integrity": "sha512-mSxlJJwl3BMEQCUNnxXBU9jP4JBktcEGhURcPR6VQVlnP0FdDEsIaz0C35dXNGLyRfrATNofF0F5p2KPxQgB+w==" - }, "node_modules/@blueprintjs/core": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/@blueprintjs/core/-/core-5.3.3.tgz", - "integrity": "sha512-BbK19zwofASYNLkTtMPffkHNAWshBROFXzwFZEs0QlIZauEsGuJHvRf3z+uZu5syrEA+LBHTrTMujdzOmD5VXQ==", + "version": "5.5.1", + "resolved": "https://registry.npmjs.org/@blueprintjs/core/-/core-5.5.1.tgz", + "integrity": "sha512-+8Af166xlLzzaoDDyzX1Adgd/hCVuIhp4/6RDDzcDnVHxQG4jnHK+D70LIV0FYNMZCzPW0Z6gH9ZTP52QDSqeg==", "dependencies": { - "@blueprintjs/colors": "^5.0.2", - "@blueprintjs/icons": "^5.1.8", + "@blueprintjs/colors": "^5.0.4", + "@blueprintjs/icons": "^5.2.1", "@popperjs/core": "^2.11.7", "classnames": "^2.3.1", "normalize.css": "^8.0.1", @@ -741,15 +737,10 @@ } } }, - "node_modules/@blueprintjs/core/node_modules/tslib": { - "version": "2.5.3", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.3.tgz", - "integrity": "sha512-mSxlJJwl3BMEQCUNnxXBU9jP4JBktcEGhURcPR6VQVlnP0FdDEsIaz0C35dXNGLyRfrATNofF0F5p2KPxQgB+w==" - }, "node_modules/@blueprintjs/icons": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/@blueprintjs/icons/-/icons-5.1.8.tgz", - "integrity": "sha512-rEYToww69A3s8MhQ13e0vMumg5BNyVowS/raGJauIrTtUVrcI2SiuBa++TmKnRzQ6fI6y0K53tC1u8G4OMi1WA==", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/@blueprintjs/icons/-/icons-5.2.1.tgz", + "integrity": "sha512-JAkcDQks4wZoZAcfKeId4/S4I0cEiuNhFZ88Kc+RQkHNUGD78wuANNQvPKeN5j0QXjAxYZ3qMsxKOdJ9YwmZ/A==", "dependencies": { "change-case": "^4.1.2", "classnames": "^2.3.1", @@ -766,31 +757,26 @@ } } }, - "node_modules/@blueprintjs/icons/node_modules/tslib": { - "version": "2.5.3", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.3.tgz", - "integrity": "sha512-mSxlJJwl3BMEQCUNnxXBU9jP4JBktcEGhURcPR6VQVlnP0FdDEsIaz0C35dXNGLyRfrATNofF0F5p2KPxQgB+w==" - }, "node_modules/@cspell/cspell-bundled-dicts": { - "version": "7.3.6", - "resolved": "https://registry.npmjs.org/@cspell/cspell-bundled-dicts/-/cspell-bundled-dicts-7.3.6.tgz", - "integrity": "sha512-9T0fFdHbKJXAQgQjLJ9SjtlHvKceKE2Vpa2sdnIXz3K1/coLLF04wHM/wzEPe2VXjYZjbjBatBRfTGjzRGJlbw==", + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/@cspell/cspell-bundled-dicts/-/cspell-bundled-dicts-7.3.8.tgz", + "integrity": "sha512-Dj8iSGQyfgIsCjmXk9D/SjV7EpbpQSogeaGcBM66H33pd0GyGmLhn3biRN+vqi/vqWmsp75rT3kd5MKa8X5W9Q==", "dev": true, "dependencies": { "@cspell/dict-ada": "^4.0.2", "@cspell/dict-aws": "^4.0.0", - "@cspell/dict-bash": "^4.1.1", - "@cspell/dict-companies": "^3.0.22", - "@cspell/dict-cpp": "^5.0.5", + "@cspell/dict-bash": "^4.1.2", + "@cspell/dict-companies": "^3.0.26", + "@cspell/dict-cpp": "^5.0.8", "@cspell/dict-cryptocurrencies": "^4.0.0", "@cspell/dict-csharp": "^4.0.2", - "@cspell/dict-css": "^4.0.7", + "@cspell/dict-css": "^4.0.12", "@cspell/dict-dart": "^2.0.3", "@cspell/dict-django": "^4.1.0", "@cspell/dict-docker": "^1.1.7", "@cspell/dict-dotnet": "^5.0.0", "@cspell/dict-elixir": "^4.0.3", - "@cspell/dict-en_us": "^4.3.7", + "@cspell/dict-en_us": "^4.3.9", "@cspell/dict-en-common-misspellings": "^1.0.2", "@cspell/dict-en-gb": "1.1.33", "@cspell/dict-filetypes": "^3.0.1", @@ -799,30 +785,30 @@ "@cspell/dict-fullstack": "^3.1.5", "@cspell/dict-gaming-terms": "^1.0.4", "@cspell/dict-git": "^2.0.0", - "@cspell/dict-golang": "^6.0.2", + "@cspell/dict-golang": "^6.0.3", "@cspell/dict-haskell": "^4.0.1", - "@cspell/dict-html": "^4.0.3", + "@cspell/dict-html": "^4.0.5", "@cspell/dict-html-symbol-entities": "^4.0.0", - "@cspell/dict-java": "^5.0.5", + "@cspell/dict-java": "^5.0.6", "@cspell/dict-k8s": "^1.0.1", "@cspell/dict-latex": "^4.0.0", "@cspell/dict-lorem-ipsum": "^4.0.0", - "@cspell/dict-lua": "^4.0.1", + "@cspell/dict-lua": "^4.0.2", "@cspell/dict-node": "^4.0.3", - "@cspell/dict-npm": "^5.0.8", - "@cspell/dict-php": "^4.0.2", + "@cspell/dict-npm": "^5.0.12", + "@cspell/dict-php": "^4.0.3", "@cspell/dict-powershell": "^5.0.2", - "@cspell/dict-public-licenses": "^2.0.3", - "@cspell/dict-python": "^4.1.8", + "@cspell/dict-public-licenses": "^2.0.5", + "@cspell/dict-python": "^4.1.9", "@cspell/dict-r": "^2.0.1", - "@cspell/dict-ruby": "^5.0.0", + "@cspell/dict-ruby": "^5.0.1", "@cspell/dict-rust": "^4.0.1", "@cspell/dict-scala": "^5.0.0", - "@cspell/dict-software-terms": "^3.2.3", - "@cspell/dict-sql": "^2.1.1", + "@cspell/dict-software-terms": "^3.3.6", + "@cspell/dict-sql": "^2.1.2", "@cspell/dict-svelte": "^1.0.2", "@cspell/dict-swift": "^2.0.1", - "@cspell/dict-typescript": "^3.1.1", + "@cspell/dict-typescript": "^3.1.2", "@cspell/dict-vue": "^3.0.0" }, "engines": { @@ -830,30 +816,30 @@ } }, "node_modules/@cspell/cspell-json-reporter": { - "version": "7.3.6", - "resolved": "https://registry.npmjs.org/@cspell/cspell-json-reporter/-/cspell-json-reporter-7.3.6.tgz", - "integrity": "sha512-Op0pSKiImhqXHtQGMVCfx+Fc5tFCGeZwww+fFVQnnPwbU/JkhqbW8ZcYgyPF2KK18lzB8bDOHaltKcePkz13OA==", + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/@cspell/cspell-json-reporter/-/cspell-json-reporter-7.3.8.tgz", + "integrity": "sha512-FxYJWtDgxIQYxdP0RWwRV8nzLfxVx8D8D5L2sbbP/0NFczDbq/zWYep4nSAHJT10aUJrogsVUYwNwdkr562wKA==", "dev": true, "dependencies": { - "@cspell/cspell-types": "7.3.6" + "@cspell/cspell-types": "7.3.8" }, "engines": { "node": ">=16" } }, "node_modules/@cspell/cspell-pipe": { - "version": "7.3.6", - "resolved": "https://registry.npmjs.org/@cspell/cspell-pipe/-/cspell-pipe-7.3.6.tgz", - "integrity": "sha512-tvNgi31f/p8M108YlDhkC8nqLJBpD1mvVqYNxL+kB/aQtkaw0AHKDsuRhg0rU6xL5MAEnoi3fXgT1HoADhJpbA==", + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/@cspell/cspell-pipe/-/cspell-pipe-7.3.8.tgz", + "integrity": "sha512-/vKPfiHM5bJUkNX12w9j533Lm2JvvSMKUCChM2AxYjy6vL8prc/7ei++4g2xAWwRxLZPg2OfpDJS5EirZNBJdA==", "dev": true, "engines": { "node": ">=16" } }, "node_modules/@cspell/cspell-resolver": { - "version": "7.3.6", - "resolved": "https://registry.npmjs.org/@cspell/cspell-resolver/-/cspell-resolver-7.3.6.tgz", - "integrity": "sha512-rFmeqhRFfmlq4oh9tYQIIVZ9aWlP88cU48oCBjvwxjj+GambrD/qobWiW9VYl/CQBPVq4S39cTirf5RXbBHMJA==", + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/@cspell/cspell-resolver/-/cspell-resolver-7.3.8.tgz", + "integrity": "sha512-CeyQmhqZI5a+T7a6oiVN90TFlzU3qVVYqCaZ9grFrVOsmzY9ipH5gmqfgMavaBOqb0di/+VZS8d02suMOXcKLQ==", "dev": true, "dependencies": { "global-dirs": "^3.0.1" @@ -863,18 +849,18 @@ } }, "node_modules/@cspell/cspell-service-bus": { - "version": "7.3.6", - "resolved": "https://registry.npmjs.org/@cspell/cspell-service-bus/-/cspell-service-bus-7.3.6.tgz", - "integrity": "sha512-jRXII9ceuostAqr/eft9RJR44TMzivuUkufhNZG4657alfhjHQBv/gME4QeFt/jOQqsDi/ifDhw5+r8ew/LsJA==", + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/@cspell/cspell-service-bus/-/cspell-service-bus-7.3.8.tgz", + "integrity": "sha512-3E7gwY6QILrZH83p69i9CERbRBEqeBiKCIKnAd7U2PbxfFqG/P47fqpnarzSWFwFpU92oyGsYry+wC8TEGISRQ==", "dev": true, "engines": { "node": ">=16" } }, "node_modules/@cspell/cspell-types": { - "version": "7.3.6", - "resolved": "https://registry.npmjs.org/@cspell/cspell-types/-/cspell-types-7.3.6.tgz", - "integrity": "sha512-JnuIMJasZtJpZm0+hzr3emkRJ0PP6QWc9zgd3fx4U8W0lHGZ3Zil5peg67SnjmdTVm4UE63UviAl1y6DyD4kLg==", + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/@cspell/cspell-types/-/cspell-types-7.3.8.tgz", + "integrity": "sha512-hsOtaULDnawEL4pU0fga941GhvE8mbTbywrJBx+eGX3fnJsaUr8XQzCtnLsW2ko7WCLWFItNEhSSTPQHBFRLsw==", "dev": true, "engines": { "node": ">=16" @@ -893,21 +879,21 @@ "dev": true }, "node_modules/@cspell/dict-bash": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/@cspell/dict-bash/-/dict-bash-4.1.1.tgz", - "integrity": "sha512-8czAa/Mh96wu2xr0RXQEGMTBUGkTvYn/Pb0o+gqOO1YW+poXGQc3gx0YPqILDryP/KCERrNvkWUJz3iGbvwC2A==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/@cspell/dict-bash/-/dict-bash-4.1.2.tgz", + "integrity": "sha512-AEBWjbaMaJEyAjOHW0F15P2izBjli2cNerG3NjuVH7xX/HUUeNoTj8FF1nwpMufKwGQCvuyO2hCmkVxhJ0y55Q==", "dev": true }, "node_modules/@cspell/dict-companies": { - "version": "3.0.24", - "resolved": "https://registry.npmjs.org/@cspell/dict-companies/-/dict-companies-3.0.24.tgz", - "integrity": "sha512-zn9QN99yIvhpGl6fZwt0mvHYcsV2w6XDdK2XWA86A0s9A94U1LCCUsvA4wijUclbZEj9ewsNMlidHcV/D329eQ==", + "version": "3.0.26", + "resolved": "https://registry.npmjs.org/@cspell/dict-companies/-/dict-companies-3.0.26.tgz", + "integrity": "sha512-BGRZ/Uykx+IgQoTGqvRqbBMQy7QSuY0pbTHgtmKtc1scgzZMJQKMDwyuE6LJzlhdlrV7TsVY0lyXREybnDpQPQ==", "dev": true }, "node_modules/@cspell/dict-cpp": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/@cspell/dict-cpp/-/dict-cpp-5.0.5.tgz", - "integrity": "sha512-ojCpQ4z+sHHLJYfvA3SApqQ1BjO/k3TUdDgqR3sVhFl5qjT9yz1/srBNzqCaBBSz/fiO5A8NKdSA9+IFrUHcig==", + "version": "5.0.9", + "resolved": "https://registry.npmjs.org/@cspell/dict-cpp/-/dict-cpp-5.0.9.tgz", + "integrity": "sha512-ql9WPNp8c+fhdpVpjpZEUWmxBHJXs9CJuiVVfW/iwv5AX7VuMHyEwid+9/6nA8qnCxkUQ5pW83Ums1lLjn8ScA==", "dev": true }, "node_modules/@cspell/dict-cryptocurrencies": { @@ -923,9 +909,9 @@ "dev": true }, "node_modules/@cspell/dict-css": { - "version": "4.0.9", - "resolved": "https://registry.npmjs.org/@cspell/dict-css/-/dict-css-4.0.9.tgz", - "integrity": "sha512-uiwdqbyrqynVDl9COs9gJSmIcm76je2yHs6rnI5USJ6y0PXfiBiFKQ7/q8oi2ff9AK8RedsGU4luSor6nLYpVA==", + "version": "4.0.12", + "resolved": "https://registry.npmjs.org/@cspell/dict-css/-/dict-css-4.0.12.tgz", + "integrity": "sha512-vGBgPM92MkHQF5/2jsWcnaahOZ+C6OE/fPvd5ScBP72oFY9tn5GLuomcyO0z8vWCr2e0nUSX1OGimPtcQAlvSw==", "dev": true }, "node_modules/@cspell/dict-dart": { @@ -965,9 +951,9 @@ "dev": true }, "node_modules/@cspell/dict-en_us": { - "version": "4.3.8", - "resolved": "https://registry.npmjs.org/@cspell/dict-en_us/-/dict-en_us-4.3.8.tgz", - "integrity": "sha512-rCPsbDHuRnFUbzWAY6O1H9+cLZt5FNQwjPVw2TdQZfipdb0lim984aLGY+nupi1iKC3lfjyd5SVUgmSZEG1QNA==", + "version": "4.3.10", + "resolved": "https://registry.npmjs.org/@cspell/dict-en_us/-/dict-en_us-4.3.10.tgz", + "integrity": "sha512-EqmB22dEu6qUkA6f6eNYqXbUnklLgChKDAdRbKWKnyoca7bmxRPcOIUhPzELo+HSzZe8RlSgNG/vaL1fkPB3Yg==", "dev": true }, "node_modules/@cspell/dict-en-common-misspellings": { @@ -995,9 +981,9 @@ "dev": true }, "node_modules/@cspell/dict-fsharp": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@cspell/dict-fsharp/-/dict-fsharp-1.0.0.tgz", - "integrity": "sha512-dHPkMHwW4dWv3Lv9VWxHuVm4IylqvcfRBSnZ7usJTRThraetSVrOPIJwr6UJh7F5un/lGJx2lxWVApf2WQaB/A==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@cspell/dict-fsharp/-/dict-fsharp-1.0.1.tgz", + "integrity": "sha512-23xyPcD+j+NnqOjRHgW3IU7Li912SX9wmeefcY0QxukbAxJ/vAN4rBpjSwwYZeQPAn3fxdfdNZs03fg+UM+4yQ==", "dev": true }, "node_modules/@cspell/dict-fullstack": { @@ -1019,9 +1005,9 @@ "dev": true }, "node_modules/@cspell/dict-golang": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/@cspell/dict-golang/-/dict-golang-6.0.2.tgz", - "integrity": "sha512-5pyZn4AAiYukAW+gVMIMVmUSkIERFrDX2vtPDjg8PLQUhAHWiVeQSDjuOhq9/C5GCCEZU/zWSONkGiwLBBvV9A==", + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/@cspell/dict-golang/-/dict-golang-6.0.4.tgz", + "integrity": "sha512-jOfewPEyN6U9Q80okE3b1PTYBfqZgHh7w4o271GSuAX+VKJ1lUDhdR4bPKRxSDdO5jHArw2u5C8nH2CWGuygbQ==", "dev": true }, "node_modules/@cspell/dict-haskell": { @@ -1031,9 +1017,9 @@ "dev": true }, "node_modules/@cspell/dict-html": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@cspell/dict-html/-/dict-html-4.0.4.tgz", - "integrity": "sha512-CWFe9jt1g7asuRMGUguqz8+53BJjDnkafayavXk2+f/KGQ7mwyQtVAjf/gD9h1w7qO+NwXIbYweFkbQ8ki6+gQ==", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@cspell/dict-html/-/dict-html-4.0.5.tgz", + "integrity": "sha512-p0brEnRybzSSWi8sGbuVEf7jSTDmXPx7XhQUb5bgG6b54uj+Z0Qf0V2n8b/LWwIPJNd1GygaO9l8k3HTCy1h4w==", "dev": true }, "node_modules/@cspell/dict-html-symbol-entities": { @@ -1049,9 +1035,9 @@ "dev": true }, "node_modules/@cspell/dict-k8s": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@cspell/dict-k8s/-/dict-k8s-1.0.1.tgz", - "integrity": "sha512-gc5y4Nm3hVdMZNBZfU2M1AsAmObZsRWjCUk01NFPfGhFBXyVne41T7E62rpnzu5330FV/6b/TnFcPgRmak9lLw==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@cspell/dict-k8s/-/dict-k8s-1.0.2.tgz", + "integrity": "sha512-tLT7gZpNPnGa+IIFvK9SP1LrSpPpJ94a/DulzAPOb1Q2UBFwdpFd82UWhio0RNShduvKG/WiMZf/wGl98pn+VQ==", "dev": true }, "node_modules/@cspell/dict-latex": { @@ -1067,9 +1053,9 @@ "dev": true }, "node_modules/@cspell/dict-lua": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@cspell/dict-lua/-/dict-lua-4.0.1.tgz", - "integrity": "sha512-j0MFmeCouSoC6EdZTbvGe1sJ9V+ruwKSeF+zRkNNNload7R72Co5kX1haW2xLHGdlq0kqSy1ODRZKdVl0e+7hg==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@cspell/dict-lua/-/dict-lua-4.0.2.tgz", + "integrity": "sha512-eeC20Q+UnHcTVBK6pgwhSjGIVugO2XqU7hv4ZfXp2F9DxGx1RME0+1sKX4qAGhdFGwOBsEzb2fwUsAEP6Mibpg==", "dev": true }, "node_modules/@cspell/dict-node": { @@ -1079,15 +1065,15 @@ "dev": true }, "node_modules/@cspell/dict-npm": { - "version": "5.0.9", - "resolved": "https://registry.npmjs.org/@cspell/dict-npm/-/dict-npm-5.0.9.tgz", - "integrity": "sha512-+MqhnE+QI3M1OKV8QsM8vKRHsrvN84G/I0NClloEXTovUexCit8UwcHdlWK7dTbtmYUvEJglCTUG5DWqxwOlhw==", + "version": "5.0.12", + "resolved": "https://registry.npmjs.org/@cspell/dict-npm/-/dict-npm-5.0.12.tgz", + "integrity": "sha512-T/+WeQmtbxo7ad6hrdI8URptYstKJP+kXyWJZfuVJJGWJQ7yubxrI5Z5AfM+Dh/ff4xHmdzapxD9adaEQ727uw==", "dev": true }, "node_modules/@cspell/dict-php": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@cspell/dict-php/-/dict-php-4.0.3.tgz", - "integrity": "sha512-PxtSmWJCDEB4M8R9ER9ijxBum/tvUqYT26QeuV58q2IFs5IrPZ6hocQKvnFGXItjCWH4oYXyAEAAzINlBC4Opg==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@cspell/dict-php/-/dict-php-4.0.4.tgz", + "integrity": "sha512-fRlLV730fJbulDsLIouZxXoxHt3KIH6hcLFwxaupHL+iTXDg0lo7neRpbqD5MScr/J3idEr7i9G8XWzIikKFug==", "dev": true }, "node_modules/@cspell/dict-powershell": { @@ -1097,15 +1083,15 @@ "dev": true }, "node_modules/@cspell/dict-public-licenses": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@cspell/dict-public-licenses/-/dict-public-licenses-2.0.4.tgz", - "integrity": "sha512-KjsfuGwMWvPkp6s0nR+s4mZc9SQhh1tHDOyQZfEVRwi+2ev7f8l7R6ts9sP2Mplb8UcxwO6YmKwxHjN+XHoMoA==", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@cspell/dict-public-licenses/-/dict-public-licenses-2.0.5.tgz", + "integrity": "sha512-91HK4dSRri/HqzAypHgduRMarJAleOX5NugoI8SjDLPzWYkwZ1ftuCXSk+fy8DLc3wK7iOaFcZAvbjmnLhVs4A==", "dev": true }, "node_modules/@cspell/dict-python": { - "version": "4.1.8", - "resolved": "https://registry.npmjs.org/@cspell/dict-python/-/dict-python-4.1.8.tgz", - "integrity": "sha512-yFrO9gGI3KIbw0Y1odAEtagrzmthjJVank9B7qlsSQvN78RgD1JQQycTadNWpzdjCj+JuiiH8pJBFWflweZoxw==", + "version": "4.1.9", + "resolved": "https://registry.npmjs.org/@cspell/dict-python/-/dict-python-4.1.9.tgz", + "integrity": "sha512-JMA4v/ZPJWuDt3PPFz+23VIY3iDIB+xOTQ6nw+WkcJU5yr6FUl5zMU9ModKrgujg3jGRuuJqofErZVPqHNHYAA==", "dev": true, "dependencies": { "@cspell/dict-data-science": "^1.0.11" @@ -1118,9 +1104,9 @@ "dev": true }, "node_modules/@cspell/dict-ruby": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@cspell/dict-ruby/-/dict-ruby-5.0.0.tgz", - "integrity": "sha512-ssb96QxLZ76yPqFrikWxItnCbUKhYXJ2owkoIYzUGNFl2CHSoHCb5a6Zetum9mQ/oUA3gNeUhd28ZUlXs0la2A==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@cspell/dict-ruby/-/dict-ruby-5.0.1.tgz", + "integrity": "sha512-rruTm7Emhty/BSYavSm8ZxRuVw0OBqzJkwIFXcV0cX7To8D1qbmS9HFHRuRg8IL11+/nJvtdDz+lMFBSmPUagQ==", "dev": true }, "node_modules/@cspell/dict-rust": { @@ -1136,15 +1122,15 @@ "dev": true }, "node_modules/@cspell/dict-software-terms": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/@cspell/dict-software-terms/-/dict-software-terms-3.3.1.tgz", - "integrity": "sha512-nZtlPNe3se9Maj6HQhABUAG9HzgKvAmwli0WoITlxxhlfU4on74evZJ7FtJpUTCXSkAXgKWz8pMQtsRXvRY40w==", + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/@cspell/dict-software-terms/-/dict-software-terms-3.3.7.tgz", + "integrity": "sha512-9hkp25tQQYVdan4eYRxhj8HvVyinA5/tFv4+l6CcXO887obTrFuvSCVEGeexFObcDaMDnfE1XD8NuCoGc/KXfw==", "dev": true }, "node_modules/@cspell/dict-sql": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@cspell/dict-sql/-/dict-sql-2.1.1.tgz", - "integrity": "sha512-v1mswi9NF40+UDUMuI148YQPEQvWjac72P6ZsjlRdLjEiQEEMEsTQ+zlkIdnzC9QCNyJaqD5Liq9Mn78/8Zxtw==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@cspell/dict-sql/-/dict-sql-2.1.2.tgz", + "integrity": "sha512-Pi0hAcvsSGtZZeyyAN1VfGtQJbrXos5x2QjJU0niAQKhmITSOrXU/1II1Gogk+FYDjWyV9wP2De0U2f7EWs6oQ==", "dev": true }, "node_modules/@cspell/dict-svelte": { @@ -1172,9 +1158,9 @@ "dev": true }, "node_modules/@cspell/dynamic-import": { - "version": "7.3.6", - "resolved": "https://registry.npmjs.org/@cspell/dynamic-import/-/dynamic-import-7.3.6.tgz", - "integrity": "sha512-NLWawhLkfTSkf36UwYJrRyMh3snXOHhuRFO7eVanPqE7oeU+1+OF/C467sYdiJGZnrCL3ojIr399JTVMz148Iw==", + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/@cspell/dynamic-import/-/dynamic-import-7.3.8.tgz", + "integrity": "sha512-s8x7dH/ScfW0pFEIvNFo4JOR7YmvM2wZSHOykmWTJCQ8k2EQ/+uECPp6ZxkoJoukTz8sj+3KzF0fRl5mKxPd6g==", "dev": true, "dependencies": { "import-meta-resolve": "^3.0.0" @@ -1184,9 +1170,9 @@ } }, "node_modules/@cspell/strong-weak-map": { - "version": "7.3.6", - "resolved": "https://registry.npmjs.org/@cspell/strong-weak-map/-/strong-weak-map-7.3.6.tgz", - "integrity": "sha512-PoVFTvY8CGhc+7W3uvyPUWIBakc+ga9X5QpSkFI/HQghmaGDDaaQBfbuv/LsS7T9bkEoWz4jLtJoNBas870gZA==", + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/@cspell/strong-weak-map/-/strong-weak-map-7.3.8.tgz", + "integrity": "sha512-qNnt2wG45wb8JP54mENarnQgxfSYKPp3zlYID/2przbMNmVJRqUlcIBOdLI6plCgGeNkzJTl3T9T1ATbnN+LLw==", "dev": true, "engines": { "node": ">=16" @@ -1799,9 +1785,9 @@ } }, "node_modules/@eslint-community/regexpp": { - "version": "4.9.0", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.9.0.tgz", - "integrity": "sha512-zJmuCWj2VLBt4c25CfBIbMZLGLyhkvs7LznyVX5HfpzeocThgIj5XQK4L+g3U36mMcx8bPMhGyPpwCATamC4jQ==", + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.9.1.tgz", + "integrity": "sha512-Y27x+MBLjXa+0JWDhykM3+JE+il3kHKAEqabfEWq3SDhZjLYb6/BHL/JKFnH3fe207JaXkyDo685Oc2Glt6ifA==", "dev": true, "engines": { "node": "^12.0.0 || ^14.0.0 || >=16.0.0" @@ -1831,9 +1817,9 @@ } }, "node_modules/@eslint/eslintrc/node_modules/globals": { - "version": "13.22.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.22.0.tgz", - "integrity": "sha512-H1Ddc/PbZHTDVJSnj8kWptIRSD6AM3pK+mKytuIVF4uoBV7rshFlhhvA58ceJ5wp3Er58w6zj7bykMpYXt3ETw==", + "version": "13.23.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.23.0.tgz", + "integrity": "sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==", "dev": true, "dependencies": { "type-fest": "^0.20.2" @@ -1858,9 +1844,9 @@ } }, "node_modules/@eslint/js": { - "version": "8.50.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.50.0.tgz", - "integrity": "sha512-NCC3zz2+nvYd+Ckfh87rA47zfu2QsQpvc6k1yzTk+b9KzRj0wkGa8LSoGOXN6Zv4lRf/EIoZ80biDh9HOI+RNQ==", + "version": "8.51.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.51.0.tgz", + "integrity": "sha512-HxjQ8Qn+4SI3/AFv6sOrDB+g6PpUTDwSJiQqOrnneEk8L71161srI9gjzzZvYVbzHiVg/BvcH95+cK/zfIt4pg==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -1896,9 +1882,9 @@ } }, "node_modules/@floating-ui/utils": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.1.4.tgz", - "integrity": "sha512-qprfWkn82Iw821mcKofJ5Pk9wgioHicxcQMxx+5zt5GSKoqdWvgG5AxVmpmUUjzTLPVSH5auBrhI93Deayn/DA==" + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.1.6.tgz", + "integrity": "sha512-OfX7E2oUDYxtBvsuS4e/jSn4Q9Qb6DzgeYtsAdkPZ47znpoNsMgZw0+tVijiv3uGNR6dgNlty6r9rzIzHjtd/A==" }, "node_modules/@headlessui/react": { "version": "1.7.17", @@ -1916,12 +1902,12 @@ } }, "node_modules/@humanwhocodes/config-array": { - "version": "0.11.11", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.11.tgz", - "integrity": "sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA==", + "version": "0.11.12", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.12.tgz", + "integrity": "sha512-NlGesA1usRNn6ctHCZ21M4/dKPgW9Nn1FypRdIKKgZOKzkVV4T1FlK5mBiLhHBCDmEbdQG0idrcXlbZfksJ+RA==", "dev": true, "dependencies": { - "@humanwhocodes/object-schema": "^1.2.1", + "@humanwhocodes/object-schema": "^2.0.0", "debug": "^4.1.1", "minimatch": "^3.0.5" }, @@ -1943,9 +1929,9 @@ } }, "node_modules/@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.0.tgz", + "integrity": "sha512-9S9QrXY2K0L4AGDcSgTi9vgiCcG8VcBv4Mp7/1hDPYoswIy6Z6KO5blYto82BT8M0MZNRWmCFLpCs3HlpYGGdw==", "dev": true }, "node_modules/@isaacs/cliui": { @@ -2025,9 +2011,9 @@ "dev": true }, "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.19", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.19.tgz", - "integrity": "sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw==", + "version": "0.3.20", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz", + "integrity": "sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==", "dev": true, "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", @@ -2104,12 +2090,12 @@ } }, "node_modules/@playwright/test": { - "version": "1.38.1", - "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.38.1.tgz", - "integrity": "sha512-NqRp8XMwj3AK+zKLbZShl0r/9wKgzqI/527bkptKXomtuo+dOjU9NdMASQ8DNC9z9zLOMbG53T4eihYr3XR+BQ==", + "version": "1.39.0", + "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.39.0.tgz", + "integrity": "sha512-3u1iFqgzl7zr004bGPYiN/5EZpRUSFddQBra8Rqll5N0/vfpqlP9I9EXqAoGacuAbX6c9Ulg/Cjqglp5VkK6UQ==", "dev": true, "dependencies": { - "playwright": "1.38.1" + "playwright": "1.39.0" }, "bin": { "playwright": "cli.js" @@ -2759,18 +2745,17 @@ } }, "node_modules/@rc-component/trigger": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/@rc-component/trigger/-/trigger-1.17.0.tgz", - "integrity": "sha512-KN+lKHCi7L4kjuA9DU2PnwZxtIyes6R1wsexp0/Rnjr/ITELsPuC9kpzDK1+7AZMarDXUAHUdDGS2zUNEx2P0g==", + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/@rc-component/trigger/-/trigger-1.17.1.tgz", + "integrity": "sha512-ocD6GlyrPMtWfSdGmfURpudj6ZQqykG/+GH9QVhziG/0EtpPqK5FUbptwXDJGBJwvKhk4Z6jhxJE7utH464SgQ==", "dev": true, "dependencies": { - "@babel/runtime": "^7.18.3", + "@babel/runtime": "^7.23.2", "@rc-component/portal": "^1.1.0", "classnames": "^2.3.2", - "rc-align": "^4.0.0", "rc-motion": "^2.0.0", "rc-resize-observer": "^1.3.1", - "rc-util": "^5.33.0" + "rc-util": "^5.38.0" }, "engines": { "node": ">=8.x" @@ -2781,9 +2766,9 @@ } }, "node_modules/@remix-run/router": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.9.0.tgz", - "integrity": "sha512-bV63itrKBC0zdT27qYm6SDZHlkXwFL1xMBuhkn+X7l0+IIhNaH5wuuvZKp6eKhCD4KFhujhfhCT1YxXW6esUIA==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.10.0.tgz", + "integrity": "sha512-Lm+fYpMfZoEucJ7cMxgt4dYt8jLfbpwRCzAjm9UgSLOkmlqo9gupxt6YX3DY0Fk155NT9l17d/ydi+964uS9Lw==", "dev": true, "engines": { "node": ">=14.0.0" @@ -2805,9 +2790,9 @@ "dev": true }, "node_modules/@swc/core": { - "version": "1.3.90", - "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.3.90.tgz", - "integrity": "sha512-wptBxP4PldOnhmyDVj8qUcn++GRqyw1qc9wOTGtPNHz8cpuTfdfIgYGlhI4La0UYqecuaaIfLfokyuNePOMHPg==", + "version": "1.3.93", + "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.3.93.tgz", + "integrity": "sha512-690GRr1wUGmGYZHk7fUduX/JUwViMF2o74mnZYIWEcJaCcd9MQfkhsxPBtjeg6tF+h266/Cf3RPYhsFBzzxXcA==", "dev": true, "hasInstallScript": true, "dependencies": { @@ -2822,16 +2807,16 @@ "url": "https://opencollective.com/swc" }, "optionalDependencies": { - "@swc/core-darwin-arm64": "1.3.90", - "@swc/core-darwin-x64": "1.3.90", - "@swc/core-linux-arm-gnueabihf": "1.3.90", - "@swc/core-linux-arm64-gnu": "1.3.90", - "@swc/core-linux-arm64-musl": "1.3.90", - "@swc/core-linux-x64-gnu": "1.3.90", - "@swc/core-linux-x64-musl": "1.3.90", - "@swc/core-win32-arm64-msvc": "1.3.90", - "@swc/core-win32-ia32-msvc": "1.3.90", - "@swc/core-win32-x64-msvc": "1.3.90" + "@swc/core-darwin-arm64": "1.3.93", + "@swc/core-darwin-x64": "1.3.93", + "@swc/core-linux-arm-gnueabihf": "1.3.93", + "@swc/core-linux-arm64-gnu": "1.3.93", + "@swc/core-linux-arm64-musl": "1.3.93", + "@swc/core-linux-x64-gnu": "1.3.93", + "@swc/core-linux-x64-musl": "1.3.93", + "@swc/core-win32-arm64-msvc": "1.3.93", + "@swc/core-win32-ia32-msvc": "1.3.93", + "@swc/core-win32-x64-msvc": "1.3.93" }, "peerDependencies": { "@swc/helpers": "^0.5.0" @@ -2843,9 +2828,9 @@ } }, "node_modules/@swc/core-darwin-arm64": { - "version": "1.3.90", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.3.90.tgz", - "integrity": "sha512-he0w74HvcoufE6CZrB/U/VGVbc7021IQvYrn1geMACnq/OqMBqjdczNtdNfJAy87LZ4AOUjHDKEIjsZZu7o8nQ==", + "version": "1.3.93", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.3.93.tgz", + "integrity": "sha512-gEKgk7FVIgltnIfDO6GntyuQBBlAYg5imHpRgLxB1zSI27ijVVkksc6QwISzFZAhKYaBWIsFSVeL9AYSziAF7A==", "cpu": [ "arm64" ], @@ -2859,9 +2844,9 @@ } }, "node_modules/@swc/core-darwin-x64": { - "version": "1.3.90", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.3.90.tgz", - "integrity": "sha512-hKNM0Ix0qMlAamPe0HUfaAhQVbZEL5uK6Iw8v9ew0FtVB4v7EifQ9n41wh+yCj0CjcHBPEBbQU0P6mNTxJu/RQ==", + "version": "1.3.93", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.3.93.tgz", + "integrity": "sha512-ZQPxm/fXdDQtn3yrYSL/gFfA8OfZ5jTi33yFQq6vcg/Y8talpZ+MgdSlYM0FkLrZdMTYYTNFiuBQuuvkA+av+Q==", "cpu": [ "x64" ], @@ -2875,9 +2860,9 @@ } }, "node_modules/@swc/core-linux-arm-gnueabihf": { - "version": "1.3.90", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.3.90.tgz", - "integrity": "sha512-HumvtrqTWE8rlFuKt7If0ZL7145H/jVc4AeziVjcd+/ajpqub7IyfrLCYd5PmKMtfeSVDMsxjG0BJ0HLRxrTJA==", + "version": "1.3.93", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.3.93.tgz", + "integrity": "sha512-OYFMMI2yV+aNe3wMgYhODxHdqUB/jrK0SEMHHS44GZpk8MuBXEF+Mcz4qjkY5Q1EH7KVQqXb/gVWwdgTHpjM2A==", "cpu": [ "arm" ], @@ -2891,9 +2876,9 @@ } }, "node_modules/@swc/core-linux-arm64-gnu": { - "version": "1.3.90", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.3.90.tgz", - "integrity": "sha512-tA7DqCS7YCwngwXZQeqQhhMm8BbydpaABw8Z/EDQ7KPK1iZ1rNjZw+aWvSpmNmEGmH1RmQ9QDS9mGRDp0faAeg==", + "version": "1.3.93", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.3.93.tgz", + "integrity": "sha512-BT4dT78odKnJMNiq5HdjBsv29CiIdcCcImAPxeFqAeFw1LL6gh9nzI8E96oWc+0lVT5lfhoesCk4Qm7J6bty8w==", "cpu": [ "arm64" ], @@ -2907,9 +2892,9 @@ } }, "node_modules/@swc/core-linux-arm64-musl": { - "version": "1.3.90", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.3.90.tgz", - "integrity": "sha512-p2Vtid5BZA36fJkNUwk5HP+HJlKgTru+Ghna7pRe45ghKkkRIUk3fhkgudEvfKfhT+3AvP+GTVQ+T9k0gc9S8w==", + "version": "1.3.93", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.3.93.tgz", + "integrity": "sha512-yH5fWEl1bktouC0mhh0Chuxp7HEO4uCtS/ly1Vmf18gs6wZ8DOOkgAEVv2dNKIryy+Na++ljx4Ym7C8tSJTrLw==", "cpu": [ "arm64" ], @@ -2923,9 +2908,9 @@ } }, "node_modules/@swc/core-linux-x64-gnu": { - "version": "1.3.90", - "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.3.90.tgz", - "integrity": "sha512-J6pDtWaulYGXuANERuvv4CqmUbZOQrRZBCRQGZQJ6a86RWpesZqckBelnYx48wYmkgvMkF95Y3xbI3WTfoSHzw==", + "version": "1.3.93", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.3.93.tgz", + "integrity": "sha512-OFUdx64qvrGJhXKEyxosHxgoUVgba2ztYh7BnMiU5hP8lbI8G13W40J0SN3CmFQwPP30+3oEbW7LWzhKEaYjlg==", "cpu": [ "x64" ], @@ -2939,9 +2924,9 @@ } }, "node_modules/@swc/core-linux-x64-musl": { - "version": "1.3.90", - "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.3.90.tgz", - "integrity": "sha512-3Gh6EA3+0K+l3MqnRON7h5bZ32xLmfcVM6QiHHJ9dBttq7YOEeEoMOCdIPMaQxJmK1VfLgZCsPYRd66MhvUSkw==", + "version": "1.3.93", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.3.93.tgz", + "integrity": "sha512-4B8lSRwEq1XYm6xhxHhvHmKAS7pUp1Q7E33NQ2TlmFhfKvCOh86qvThcjAOo57x8DRwmpvEVrqvpXtYagMN6Ig==", "cpu": [ "x64" ], @@ -2955,9 +2940,9 @@ } }, "node_modules/@swc/core-win32-arm64-msvc": { - "version": "1.3.90", - "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.3.90.tgz", - "integrity": "sha512-BNaw/iJloDyaNOFV23Sr53ULlnbmzSoerTJ10v0TjSZOEIpsS0Rw6xOK1iI0voDJnRXeZeWRSxEC9DhefNtN/g==", + "version": "1.3.93", + "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.3.93.tgz", + "integrity": "sha512-BHShlxtkven8ZjjvZ5QR6sC5fZCJ9bMujEkiha6W4cBUTY7ce7qGFyHmQd+iPC85d9kD/0cCiX/Xez8u0BhO7w==", "cpu": [ "arm64" ], @@ -2971,9 +2956,9 @@ } }, "node_modules/@swc/core-win32-ia32-msvc": { - "version": "1.3.90", - "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.3.90.tgz", - "integrity": "sha512-SiyTethWAheE/JbxXCukAAciU//PLcmVZ2ME92MRuLMLmOhrwksjbaa7ukj9WEF3LWrherhSqTXnpj3VC1l/qw==", + "version": "1.3.93", + "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.3.93.tgz", + "integrity": "sha512-nEwNWnz4JzYAK6asVvb92yeylfxMYih7eMQOnT7ZVlZN5ba9WF29xJ6kcQKs9HRH6MvWhz9+wRgv3FcjlU6HYA==", "cpu": [ "ia32" ], @@ -2987,9 +2972,9 @@ } }, "node_modules/@swc/core-win32-x64-msvc": { - "version": "1.3.90", - "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.3.90.tgz", - "integrity": "sha512-OpWAW5ljKcPJ3SQ0pUuKqYfwXv7ssIhVgrH9XP9ONtdgXKWZRL9hqJQkcL55FARw/gDjKanoCM47wsTNQL+ZZA==", + "version": "1.3.93", + "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.3.93.tgz", + "integrity": "sha512-jibQ0zUr4kwJaQVwgmH+svS04bYTPnPw/ZkNInzxS+wFAtzINBYcU8s2PMWbDb2NGYiRSEeoSGyAvS9H+24JFA==", "cpu": [ "x64" ], @@ -3003,9 +2988,9 @@ } }, "node_modules/@swc/counter": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@swc/counter/-/counter-0.1.1.tgz", - "integrity": "sha512-xVRaR4u9hcYjFvcSg71Lz5Bo4//CyjAAfMxa7UsaDSYxAshflUkVJWiyVWrfxC59z2kP1IzI4/1BEpnhI9o3Mw==", + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@swc/counter/-/counter-0.1.2.tgz", + "integrity": "sha512-9F4ys4C74eSTEUNndnER3VJ15oru2NumfQxS8geE+f3eB5xvfxpWyqE5XlVnxb/R14uoXi6SLbBwwiDSkv+XEw==", "dev": true }, "node_modules/@swc/types": { @@ -3015,20 +3000,20 @@ "dev": true }, "node_modules/@tanstack/query-core": { - "version": "4.35.3", - "resolved": "https://registry.npmjs.org/@tanstack/query-core/-/query-core-4.35.3.tgz", - "integrity": "sha512-PS+WEjd9wzKTyNjjQymvcOe1yg8f3wYc6mD+vb6CKyZAKvu4sIJwryfqfBULITKCla7P9C4l5e9RXePHvZOZeQ==", + "version": "4.36.1", + "resolved": "https://registry.npmjs.org/@tanstack/query-core/-/query-core-4.36.1.tgz", + "integrity": "sha512-DJSilV5+ytBP1FbFcEJovv4rnnm/CokuVvrBEtW/Va9DvuJ3HksbXUJEpI0aV1KtuL4ZoO9AVE6PyNLzF7tLeA==", "funding": { "type": "github", "url": "https://github.com/sponsors/tannerlinsley" } }, "node_modules/@tanstack/react-query": { - "version": "4.35.3", - "resolved": "https://registry.npmjs.org/@tanstack/react-query/-/react-query-4.35.3.tgz", - "integrity": "sha512-UgTPioip/rGG3EQilXfA2j4BJkhEQsR+KAbF+KIuvQ7j4MkgnTCJF01SfRpIRNtQTlEfz/+IL7+jP8WA8bFbsw==", + "version": "4.36.1", + "resolved": "https://registry.npmjs.org/@tanstack/react-query/-/react-query-4.36.1.tgz", + "integrity": "sha512-y7ySVHFyyQblPl3J3eQBWpXZkliroki3ARnBKsdJchlgt7yJLRDUcf4B8soufgiYt3pEQIkBWBx1N9/ZPIeUWw==", "dependencies": { - "@tanstack/query-core": "4.35.3", + "@tanstack/query-core": "4.36.1", "use-sync-external-store": "^1.2.0" }, "funding": { @@ -3050,11 +3035,11 @@ } }, "node_modules/@tanstack/react-table": { - "version": "8.10.3", - "resolved": "https://registry.npmjs.org/@tanstack/react-table/-/react-table-8.10.3.tgz", - "integrity": "sha512-Qya1cJ+91arAlW7IRDWksRDnYw28O446jJ/ljkRSc663EaftJoBCAU10M+VV1K6MpCBLrXq1BD5IQc1zj/ZEjA==", + "version": "8.10.7", + "resolved": "https://registry.npmjs.org/@tanstack/react-table/-/react-table-8.10.7.tgz", + "integrity": "sha512-bXhjA7xsTcsW8JPTTYlUg/FuBpn8MNjiEPhkNhIGCUR6iRQM2+WEco4OBpvDeVcR9SE+bmWLzdfiY7bCbCSVuA==", "dependencies": { - "@tanstack/table-core": "8.10.3" + "@tanstack/table-core": "8.10.7" }, "engines": { "node": ">=12" @@ -3069,9 +3054,9 @@ } }, "node_modules/@tanstack/table-core": { - "version": "8.10.3", - "resolved": "https://registry.npmjs.org/@tanstack/table-core/-/table-core-8.10.3.tgz", - "integrity": "sha512-hJ55YfJlWbfzRROfcyA/kC1aZr/shsLA8XNAwN8jXylhYWGLnPmiJJISrUfj4dMMWRiFi0xBlnlC7MLH+zSrcw==", + "version": "8.10.7", + "resolved": "https://registry.npmjs.org/@tanstack/table-core/-/table-core-8.10.7.tgz", + "integrity": "sha512-KQk5OMg5OH6rmbHZxuNROvdI+hKDIUxANaHlV+dPlNN7ED3qYQ/WkpY2qlXww1SIdeMlkIhpN/2L00rof0fXFw==", "engines": { "node": ">=12" }, @@ -3081,24 +3066,24 @@ } }, "node_modules/@types/chai": { - "version": "4.3.6", - "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.6.tgz", - "integrity": "sha512-VOVRLM1mBxIRxydiViqPcKn6MIxZytrbMpd6RJLIWKxUNr3zux8no0Oc7kJx0WAPIitgZ0gkrDS+btlqQpubpw==", + "version": "4.3.9", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.9.tgz", + "integrity": "sha512-69TtiDzu0bcmKQv3yg1Zx409/Kd7r0b5F1PfpYJfSHzLGtB53547V4u+9iqKYsTu/O2ai6KTb0TInNpvuQ3qmg==", "dev": true }, "node_modules/@types/chai-subset": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@types/chai-subset/-/chai-subset-1.3.3.tgz", - "integrity": "sha512-frBecisrNGz+F4T6bcc+NLeolfiojh5FxW2klu669+8BARtyQv2C/GkNW6FUodVe4BroGMP/wER/YDGc7rEllw==", + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/@types/chai-subset/-/chai-subset-1.3.4.tgz", + "integrity": "sha512-CCWNXrJYSUIojZ1149ksLl3AN9cmZ5djf+yUoVVV+NuYrtydItQVlL2ZDqyC6M6O9LWRnVf8yYDxbXHO2TfQZg==", "dev": true, "dependencies": { "@types/chai": "*" } }, "node_modules/@types/d3": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/@types/d3/-/d3-7.4.1.tgz", - "integrity": "sha512-lBpYmbHTCtFKO1DB1R7E9dXp9/g1F3JXSGOF7iKPZ+wRmYg/Q6tCRHODGOc5Qk25fJRe2PI60EDRf2HLPUncMA==", + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/@types/d3/-/d3-7.4.2.tgz", + "integrity": "sha512-Y4g2Yb30ZJmmtqAJTqMRaqXwRawfvpdpVmyEYEcyGNhrQI/Zvkq3k7yE1tdN07aFSmNBfvmegMQ9Fe2qy9ZMhw==", "dev": true, "dependencies": { "@types/d3-array": "*", @@ -3134,45 +3119,45 @@ } }, "node_modules/@types/d3-array": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/@types/d3-array/-/d3-array-3.0.8.tgz", - "integrity": "sha512-2xAVyAUgaXHX9fubjcCbGAUOqYfRJN1em1EKR2HfzWBpObZhwfnZKvofTN4TplMqJdFQao61I+NVSai/vnBvDQ==", + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/@types/d3-array/-/d3-array-3.0.9.tgz", + "integrity": "sha512-mZowFN3p64ajCJJ4riVYlOjNlBJv3hctgAY01pjw3qTnJePD8s9DZmYDzhHKvzfCYvdjwylkU38+Vdt7Cu2FDA==", "dev": true }, "node_modules/@types/d3-axis": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@types/d3-axis/-/d3-axis-3.0.4.tgz", - "integrity": "sha512-ySnjI/7qm+J602VjcejXcqs1hEuu5UBbGaJGp+Cn/yKVc1iS3JueLVpToGdQsS2sqta7tqA/kG4ore/+LH90UA==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@types/d3-axis/-/d3-axis-3.0.5.tgz", + "integrity": "sha512-ufDAV3SQzju+uB3Jlty7SUb/jMigjpIlvDDcSGvGmmO6OT/sNO93UE0dRzwWOZeBLzrLSA0CQM4bf3iq1std3A==", "dev": true, "dependencies": { "@types/d3-selection": "*" } }, "node_modules/@types/d3-brush": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@types/d3-brush/-/d3-brush-3.0.4.tgz", - "integrity": "sha512-Kg5uIsdJNMCs5lTqeZFsTKqj9lBvpiFRDkYN3j2CDlPhonNDg9/gXVpv1E/MKh3tEqArryIj9o6RBGE/MQe+6Q==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@types/d3-brush/-/d3-brush-3.0.5.tgz", + "integrity": "sha512-JROQXZNq1X6QdWstESDUv1VilwZ2hBCQnWB91yal+5yZvYwGQvYsGCjrkHGfKK/8/AcX1JnERmpQzdDDuLRUsA==", "dev": true, "dependencies": { "@types/d3-selection": "*" } }, "node_modules/@types/d3-chord": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@types/d3-chord/-/d3-chord-3.0.4.tgz", - "integrity": "sha512-p4PvN1N+7GL3Y/NI9Ug1TKwowUV6h664kmxL79ctp1HRYCk1mhP0+SXhjRsoWXCdnJfbLLLmpV99rt8dMrHrzg==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@types/d3-chord/-/d3-chord-3.0.5.tgz", + "integrity": "sha512-rs26AIhJjtc+XLR4YQU8IjPTLOlDVO4PR1y+pVFYEHzKh2tE5tYz3MF4QV6iz7HboXQEaYpJQt8dH9uUkne8yA==", "dev": true }, "node_modules/@types/d3-color": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@types/d3-color/-/d3-color-3.1.1.tgz", - "integrity": "sha512-CSAVrHAtM9wfuLJ2tpvvwCU/F22sm7rMHNN+yh9D6O6hyAms3+O0cgMpC1pm6UEUMOntuZC8bMt74PteiDUdCg==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@types/d3-color/-/d3-color-3.1.2.tgz", + "integrity": "sha512-At+Ski7dL8Bs58E8g8vPcFJc8tGcaC12Z4m07+p41+DRqnZQcAlp3NfYjLrhNYv+zEyQitU1CUxXNjqUyf+c0g==", "dev": true }, "node_modules/@types/d3-contour": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@types/d3-contour/-/d3-contour-3.0.4.tgz", - "integrity": "sha512-B0aeX8Xg3MNUglULxqDvlgY1SVXuN2xtEleYSAY0iMhl/SMVT7snzgAveejjwM3KaWuNXIoXEJ7dmXE8oPq/jA==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@types/d3-contour/-/d3-contour-3.0.5.tgz", + "integrity": "sha512-wLvjwdOQVd1NL1IcW90CCt1VtpeZ3V20p/OTXlkT8uAiprrJnq2PNNnRNe1QCez4U9aMU29Z14zpJQVLW1+Lcg==", "dev": true, "dependencies": { "@types/d3-array": "*", @@ -3180,166 +3165,166 @@ } }, "node_modules/@types/d3-delaunay": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/@types/d3-delaunay/-/d3-delaunay-6.0.2.tgz", - "integrity": "sha512-WplUJ/OHU7eITneDqNnzK+2pgR+WDzUHG6XAUVo+oWHPQq74VcgUdw8a4ODweaZzF56OVYK+x9GxCyuq6hSu1A==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/@types/d3-delaunay/-/d3-delaunay-6.0.3.tgz", + "integrity": "sha512-+Lf5NPKZ4JBC9tbudVkKceQXRxU3jJs0el9aKQvinMtdnFSOG84eVXyhCNgIFuXNQO3iIcYs7sgzN359FEOZnQ==", "dev": true }, "node_modules/@types/d3-dispatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@types/d3-dispatch/-/d3-dispatch-3.0.4.tgz", - "integrity": "sha512-NApHpGHRNxUy7e2Lfzl/cwOucmn4Xdx6FdmXzAoomo8T81LyGmlBjjko/vP0TVzawlvEFLDq8OCRLulW6DDzKw==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@types/d3-dispatch/-/d3-dispatch-3.0.5.tgz", + "integrity": "sha512-hxvq2kc+9hydVppo21JCGfcM0tLTh1DXnG3MLN0KlxsNZJH4bsdl1iXDuWtXFpWWlBrCMwSqlnoLPDxNAZU3Bg==", "dev": true }, "node_modules/@types/d3-drag": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@types/d3-drag/-/d3-drag-3.0.4.tgz", - "integrity": "sha512-/t53K1erTuUbP7WIX9SE0hlmytpTYRbIthlhbGkBHzCV5vPO++7yrk8OlisWPyIJO5TGowTmqCtGH2tokY5T/g==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@types/d3-drag/-/d3-drag-3.0.5.tgz", + "integrity": "sha512-arHyAGvO0NEGGPCU2jTb31TlXeSxwty1bIxr5wOFOCVqVjgriXloLWXoRp39Oa0Y/qXxcAVMIonAWLrtLxUZAQ==", "dev": true, "dependencies": { "@types/d3-selection": "*" } }, "node_modules/@types/d3-dsv": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@types/d3-dsv/-/d3-dsv-3.0.4.tgz", - "integrity": "sha512-YxfUVJ55HxR8oq88136w09mBMPNhgH7PZjteq72onWXWOohGif/cLQnQv8V4A5lEGjXF04LhwSTpmzpY9wyVyA==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@types/d3-dsv/-/d3-dsv-3.0.5.tgz", + "integrity": "sha512-73WZR3QFOaSRVz9iOrebTbTnbo7xjcgS/i0Cq5zy0jMXPO3v/JbkTD3Zqii1eYE6v4EJ78g5VP407rm+p8fdlA==", "dev": true }, "node_modules/@types/d3-ease": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/d3-ease/-/d3-ease-3.0.0.tgz", - "integrity": "sha512-aMo4eaAOijJjA6uU+GIeW018dvy9+oH5Y2VPPzjjfxevvGQ/oRDs+tfYC9b50Q4BygRR8yE2QCLsrT0WtAVseA==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/d3-ease/-/d3-ease-3.0.1.tgz", + "integrity": "sha512-VZofjpEt8HWv3nxUAosj5o/+4JflnJ7Bbv07k17VO3T2WRuzGdZeookfaF60iVh5RdhVG49LE5w6LIshVUC6rg==", "dev": true }, "node_modules/@types/d3-fetch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@types/d3-fetch/-/d3-fetch-3.0.4.tgz", - "integrity": "sha512-RleYajubALkGjrvatxWhlygfvB1KNF0Uzz9guRUeeA+M/2B7l8rxObYdktaX9zU1st04lMCHjZWe4vbl+msH2Q==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@types/d3-fetch/-/d3-fetch-3.0.5.tgz", + "integrity": "sha512-Rc8pb6H0RRLpAV2hEXduykUgcDUOhjSLTLmCIeo6ejzgs4SaITh/EteMb3p5Env3Hqjsqw0fCksyqopHHzMkMg==", "dev": true, "dependencies": { "@types/d3-dsv": "*" } }, "node_modules/@types/d3-force": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@types/d3-force/-/d3-force-3.0.6.tgz", - "integrity": "sha512-G9wbOvCxkNlLrppoHLZ6oFpbm3z7ibfkXwLD8g5/4Aa7iTEV0Z7TQ0OL8UxAtvdOhCa2VZcSuqn1NQqyCEqmiw==", + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@types/d3-force/-/d3-force-3.0.7.tgz", + "integrity": "sha512-rsok4CEvPLyVWRPsFiBhanJc3up03H/EARVz4d8soPh8drv82YMuAckYy4yv8g4/81JwCng5U5/o9aj9d0T6bQ==", "dev": true }, "node_modules/@types/d3-format": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@types/d3-format/-/d3-format-3.0.2.tgz", - "integrity": "sha512-9oQWvKk2qVBo49FQq8yD/et8Lx0W5Ac2FdGSOUecqOFKqh0wkpyHqf9Qc7A06ftTR+Lz13Pi3jHIQis0aCueOA==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/d3-format/-/d3-format-3.0.3.tgz", + "integrity": "sha512-kxuLXSAEJykTeL/EI3tUiEfGqru7PRdqEy099YBnqFl+fF167UVSB4+wntlZv86ZdoYf0DHjsRHnTIm8kcH7qw==", "dev": true }, "node_modules/@types/d3-geo": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@types/d3-geo/-/d3-geo-3.0.5.tgz", - "integrity": "sha512-ysEEU93Wv9p2UZBxTK3kUP7veHgyhTA0qYtI7bxK5EMXb3JxGv0D4IH54PxprAF26n+uHci24McVmzwIdLgvgQ==", + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@types/d3-geo/-/d3-geo-3.0.6.tgz", + "integrity": "sha512-wblAES3b+C3hvp4VakwECEKtHquT/xc6K4HOna95LM1j1fd7s7WmU4V+JMQZfKhNCMkV2vWD+ZUgY2Uj6gqfuA==", "dev": true, "dependencies": { "@types/geojson": "*" } }, "node_modules/@types/d3-hierarchy": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/@types/d3-hierarchy/-/d3-hierarchy-3.1.4.tgz", - "integrity": "sha512-wrvjpRFdmEu6yAqgjGy8MSud9ggxJj+I9XLuztLeSf/E0j0j6RQYtxH2J8U0Cfbgiw9ZDHyhpmaVuWhxscYaAQ==", + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/@types/d3-hierarchy/-/d3-hierarchy-3.1.5.tgz", + "integrity": "sha512-DEcBUj1IL3WyPLDlh4m2nsNXnMLITXM5Vwcu4G85yJHtf2cVGPBjgky3L11WBnT+ayHKf06Tchk5mY1eGmd4WQ==", "dev": true }, "node_modules/@types/d3-interpolate": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@types/d3-interpolate/-/d3-interpolate-3.0.2.tgz", - "integrity": "sha512-zAbCj9lTqW9J9PlF4FwnvEjXZUy75NQqPm7DMHZXuxCFTpuTrdK2NMYGQekf4hlasL78fCYOLu4EE3/tXElwow==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/d3-interpolate/-/d3-interpolate-3.0.3.tgz", + "integrity": "sha512-6OZ2EIB4lLj+8cUY7I/Cgn9Q+hLdA4DjJHYOQDiHL0SzqS1K9DL5xIOVBSIHgF+tiuO9MU1D36qvdIvRDRPh+Q==", "dev": true, "dependencies": { "@types/d3-color": "*" } }, "node_modules/@types/d3-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/d3-path/-/d3-path-3.0.0.tgz", - "integrity": "sha512-0g/A+mZXgFkQxN3HniRDbXMN79K3CdTpLsevj+PXiTcb2hVyvkZUBg37StmgCQkaD84cUJ4uaDAWq7UJOQy2Tg==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/d3-path/-/d3-path-3.0.1.tgz", + "integrity": "sha512-blRhp7ki7pVznM8k6lk5iUU9paDbVRVq+/xpf0RRgSJn5gr6SE7RcFtxooYGMBOc1RZiGyqRpVdu5AD0z0ooMA==", "dev": true }, "node_modules/@types/d3-polygon": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/d3-polygon/-/d3-polygon-3.0.0.tgz", - "integrity": "sha512-D49z4DyzTKXM0sGKVqiTDTYr+DHg/uxsiWDAkNrwXYuiZVd9o9wXZIo+YsHkifOiyBkmSWlEngHCQme54/hnHw==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/d3-polygon/-/d3-polygon-3.0.1.tgz", + "integrity": "sha512-nrcWPk7B9qs6xnpq60Cls44zm9eDmFAv65qi/N/emh/oftnG6uYz49aIS0mdFaGeJxVN8H3pHneMuZMV8EwFdw==", "dev": true }, "node_modules/@types/d3-quadtree": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/d3-quadtree/-/d3-quadtree-3.0.3.tgz", - "integrity": "sha512-GDWaR+rGEk4ToLQSGugYnoh9AYYblsg/8kmdpa1KAJMwcdZ0v8rwgnldURxI5UrzxPlCPzF7by/Tjmv+Jn21Dg==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-quadtree/-/d3-quadtree-3.0.4.tgz", + "integrity": "sha512-B725MopFDIOQ6njFbeOxIEf42HVO2Xv+FmcxQISdOKErvLbFqWz3Riu+OWujUYoogreqqyHBHcGGL/JzzXQYsw==", "dev": true }, "node_modules/@types/d3-random": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/d3-random/-/d3-random-3.0.1.tgz", - "integrity": "sha512-IIE6YTekGczpLYo/HehAy3JGF1ty7+usI97LqraNa8IiDur+L44d0VOjAvFQWJVdZOJHukUJw+ZdZBlgeUsHOQ==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-random/-/d3-random-3.0.2.tgz", + "integrity": "sha512-8QhsqkKs6mymAZMrg3ZFXPxKA34rdgp3ZrtB8o6mhFsKAd1gOvR1gocWnca+kmXypQdwgnzKm9gZE2Uw8NjjKw==", "dev": true }, "node_modules/@types/d3-scale": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-4.0.5.tgz", - "integrity": "sha512-w/C++3W394MHzcLKO2kdsIn5KKNTOqeQVzyPSGPLzQbkPw/jpeaGtSRlakcKevGgGsjJxGsbqS0fPrVFDbHrDA==", + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-4.0.6.tgz", + "integrity": "sha512-lo3oMLSiqsQUovv8j15X4BNEDOsnHuGjeVg7GRbAuB2PUa1prK5BNSOu6xixgNf3nqxPl4I1BqJWrPvFGlQoGQ==", "dependencies": { "@types/d3-time": "*" } }, "node_modules/@types/d3-scale-chromatic": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/d3-scale-chromatic/-/d3-scale-chromatic-3.0.0.tgz", - "integrity": "sha512-dsoJGEIShosKVRBZB0Vo3C8nqSDqVGujJU6tPznsBJxNJNwMF8utmS83nvCBKQYPpjCzaaHcrf66iTRpZosLPw==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/d3-scale-chromatic/-/d3-scale-chromatic-3.0.1.tgz", + "integrity": "sha512-Ob7OrwiTeQXY/WBBbRHGZBOn6rH1h7y3jjpTSKYqDEeqFjktql6k2XSgNwLrLDmAsXhEn8P9NHDY4VTuo0ZY1w==", "dev": true }, "node_modules/@types/d3-selection": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/@types/d3-selection/-/d3-selection-3.0.7.tgz", - "integrity": "sha512-qoj2O7KjfqCobmtFOth8FMvjwMVPUAAmn6xiUbLl1ld7vQCPgffvyV5BBcEFfqWdilAUm+3zciU/3P3vZrUMlg==", + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/@types/d3-selection/-/d3-selection-3.0.8.tgz", + "integrity": "sha512-pxCZUfQyedq/DIlPXIR5wE1mIH37omOdx1yxRudL3KZ4AC+156jMjOv1z5RVlGq62f8WX2kyO0hTVgEx627QFg==", "dev": true }, "node_modules/@types/d3-shape": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/@types/d3-shape/-/d3-shape-3.1.3.tgz", - "integrity": "sha512-cHMdIq+rhF5IVwAV7t61pcEXfEHsEsrbBUPkFGBwTXuxtTAkBBrnrNA8++6OWm3jwVsXoZYQM8NEekg6CPJ3zw==", + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/@types/d3-shape/-/d3-shape-3.1.4.tgz", + "integrity": "sha512-M2/xsWPsjaZc5ifMKp1EBp0gqJG0eO/zlldJNOC85Y/5DGsBQ49gDkRJ2h5GY7ZVD6KUumvZWsylSbvTaJTqKg==", "dev": true, "dependencies": { "@types/d3-path": "*" } }, "node_modules/@types/d3-time": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/d3-time/-/d3-time-3.0.1.tgz", - "integrity": "sha512-5j/AnefKAhCw4HpITmLDTPlf4vhi8o/dES+zbegfPb7LaGfNyqkLxBR6E+4yvTAgnJLmhe80EXFMzUs38fw4oA==" + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-time/-/d3-time-3.0.2.tgz", + "integrity": "sha512-kbdRXTmUgNfw5OTE3KZnFQn6XdIc4QGroN5UixgdrXATmYsdlPQS6pEut9tVlIojtzuFD4txs/L+Rq41AHtLpg==" }, "node_modules/@types/d3-time-format": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@types/d3-time-format/-/d3-time-format-4.0.1.tgz", - "integrity": "sha512-Br6EFeu9B1Zrem7KaYbr800xCmEDyq8uE60kEU8rWhC/XpFYX6ocGMZuRJDQfFCq6SyakQxNHFqIfJbFLf4x6Q==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-time-format/-/d3-time-format-4.0.2.tgz", + "integrity": "sha512-wr08C1Gh77qaN8JIkrn5Rz/bdt5M9bdEqFmEOcYhUSq2t2sHvLTBfb4XAtGB3D4hm0ubj50NXWWXoXyp5tPXDg==", "dev": true }, "node_modules/@types/d3-timer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/d3-timer/-/d3-timer-3.0.0.tgz", - "integrity": "sha512-HNB/9GHqu7Fo8AQiugyJbv6ZxYz58wef0esl4Mv828w1ZKpAshw/uFWVDUcIB9KKFeFKoxS3cHY07FFgtTRZ1g==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/d3-timer/-/d3-timer-3.0.1.tgz", + "integrity": "sha512-GGTvzKccVEhxmRfJEB6zhY9ieT4UhGVUIQaBzFpUO9OXy2ycAlnPCSJLzmGGgqt3KVjqN3QCQB4g1rsZnHsWhg==", "dev": true }, "node_modules/@types/d3-transition": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@types/d3-transition/-/d3-transition-3.0.5.tgz", - "integrity": "sha512-dcfjP6prFxj3ziFOJrnt4W2P0oXNj/sGxsJXH8286sHtVZ4qWGbjuZj+RRCYx4YZ4C0izpeE8OqXVCtoWEtzYg==", + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@types/d3-transition/-/d3-transition-3.0.6.tgz", + "integrity": "sha512-K0To23B5UxNwFtKORnS5JoNYvw/DnknU5MzhHIS9czJ/lTqFFDeU6w9lArOdoTl0cZFNdNrMJSFCbRCEHccH2w==", "dev": true, "dependencies": { "@types/d3-selection": "*" } }, "node_modules/@types/d3-zoom": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@types/d3-zoom/-/d3-zoom-3.0.5.tgz", - "integrity": "sha512-mIefdTLtxuWUWTbBupCUXPAXVPmi8/Uwrq41gQpRh0rD25GMU1ku+oTELqNY2NuuiI0F3wXC5e1liBQi7YS7XQ==", + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@types/d3-zoom/-/d3-zoom-3.0.6.tgz", + "integrity": "sha512-dGZQaXEu7aNcCL71LPpjB58IjoQNM9oDPfQuMUJ7N/fbkcIWGX2PnmUWO1jPJ+RLbZBpRUggJUX8twKRvo2hKQ==", "dev": true, "dependencies": { "@types/d3-interpolate": "*", @@ -3347,24 +3332,24 @@ } }, "node_modules/@types/geojson": { - "version": "7946.0.11", - "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.11.tgz", - "integrity": "sha512-L7A0AINMXQpVwxHJ4jxD6/XjZ4NDufaRlUJHjNIFKYUFBH1SvOW+neaqb0VTRSLW5suSrSu19ObFEFnfNcr+qg==", + "version": "7946.0.12", + "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.12.tgz", + "integrity": "sha512-uK2z1ZHJyC0nQRbuovXFt4mzXDwf27vQeUWNhfKGwRcWW429GOhP8HxUHlM6TLH4bzmlv/HlEjpvJh3JfmGsAA==", "dev": true }, "node_modules/@types/hoist-non-react-statics": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", - "integrity": "sha512-YIQtIg4PKr7ZyqNPZObpxfHsHEmuB8dXCxd6qVcGuQVDK2bpsF7bYNnBJ4Nn7giuACZg+WewExgrtAJ3XnA4Xw==", + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.4.tgz", + "integrity": "sha512-ZchYkbieA+7tnxwX/SCBySx9WwvWR8TaP5tb2jRAzwvLb/rWchGw3v0w3pqUbUvj0GCwW2Xz/AVPSk6kUGctXQ==", "dependencies": { "@types/react": "*", "hoist-non-react-statics": "^3.3.0" } }, "node_modules/@types/istanbul-lib-coverage": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", - "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz", + "integrity": "sha512-zONci81DZYCZjiLe0r6equvZut0b+dBRPBN5kBDjsONnutYNtJMoWQ9uR2RkL1gLG9NMTzvf+29e5RFfPbeKhQ==", "dev": true }, "node_modules/@types/js-cookie": { @@ -3373,9 +3358,9 @@ "integrity": "sha512-aLkWa0C0vO5b4Sr798E26QgOkss68Un0bLjs7u9qxzPT5CG+8DuNTffWES58YzJs3hrVAOs1wonycqEBqNJubA==" }, "node_modules/@types/json-schema": { - "version": "7.0.13", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.13.tgz", - "integrity": "sha512-RbSSoHliUbnXj3ny0CNFOoxrIDV6SUGyStHsvDqosw6CkdPV8TtWGlfecuK4ToyMEAql6pzNxgCFKanovUzlgQ==", + "version": "7.0.14", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.14.tgz", + "integrity": "sha512-U3PUjAudAdJBeC2pgN8uTIKgxrb4nlDF3SF0++EldXQvQBGkpFZMSnwQiIoDU77tv45VgNkl/L4ouD+rEomujw==", "dev": true, "peer": true }, @@ -3387,59 +3372,62 @@ "peer": true }, "node_modules/@types/lodash": { - "version": "4.14.199", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.199.tgz", - "integrity": "sha512-Vrjz5N5Ia4SEzWWgIVwnHNEnb1UE1XMkvY5DGXrAeOGE9imk0hgTHh5GyDjLDJi9OTCn9oo9dXH1uToK1VRfrg==" + "version": "4.14.200", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.200.tgz", + "integrity": "sha512-YI/M/4HRImtNf3pJgbF+W6FrXovqj+T+/HpENLTooK9PnkacBsDpeP3IpHab40CClUfhNmdM2WTNP2sa2dni5Q==" }, "node_modules/@types/lodash.merge": { - "version": "4.6.7", - "resolved": "https://registry.npmjs.org/@types/lodash.merge/-/lodash.merge-4.6.7.tgz", - "integrity": "sha512-OwxUJ9E50gw3LnAefSHJPHaBLGEKmQBQ7CZe/xflHkyy/wH2zVyEIAKReHvVrrn7zKdF58p16We9kMfh7v0RRQ==", + "version": "4.6.8", + "resolved": "https://registry.npmjs.org/@types/lodash.merge/-/lodash.merge-4.6.8.tgz", + "integrity": "sha512-He1g+VBmRclP+6hT6P6zKlzpFoeOLMgPpMGChgINuxbdPumZCIJsITbqSq2cWXzJu2ltmwVN5TfQ6kj0X06rFQ==", "dependencies": { "@types/lodash": "*" } }, "node_modules/@types/minimist": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.3.tgz", - "integrity": "sha512-ZYFzrvyWUNhaPomn80dsMNgMeXxNWZBdkuG/hWlUvXvbdUH8ZERNBGXnU87McuGcWDsyzX2aChCv/SVN348k3A==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.4.tgz", + "integrity": "sha512-Kfe/D3hxHTusnPNRbycJE1N77WHDsdS4AjUYIzlDzhDrS47NrwuL3YW4VITxwR7KCVpzwgy4Rbj829KSSQmwXQ==", "dev": true }, "node_modules/@types/node": { - "version": "20.7.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.7.0.tgz", - "integrity": "sha512-zI22/pJW2wUZOVyguFaUL1HABdmSVxpXrzIqkjsHmyUjNhPoWM1CKfvVuXfetHhIok4RY573cqS0mZ1SJEnoTg==", - "dev": true + "version": "20.8.7", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.8.7.tgz", + "integrity": "sha512-21TKHHh3eUHIi2MloeptJWALuCu5H7HQTdTrWIFReA8ad+aggoX+lRes3ex7/FtpC+sVUpFMQ+QTfYr74mruiQ==", + "dev": true, + "dependencies": { + "undici-types": "~5.25.1" + } }, "node_modules/@types/normalize-package-data": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.2.tgz", - "integrity": "sha512-lqa4UEhhv/2sjjIQgjX8B+RBjj47eo0mzGasklVJ78UKGQY1r0VpB9XHDaZZO9qzEFDdy4MrXLuEaSmPrPSe/A==", + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.3.tgz", + "integrity": "sha512-ehPtgRgaULsFG8x0NeYJvmyH1hmlfsNLujHe9dQEia/7MAJYdzMSi19JtchUHjmBA6XC/75dK55mzZH+RyieSg==", "dev": true }, "node_modules/@types/papaparse": { - "version": "5.3.9", - "resolved": "https://registry.npmjs.org/@types/papaparse/-/papaparse-5.3.9.tgz", - "integrity": "sha512-sZcrKD63qA4/6GyBcVvX6AIp0AkpfyYk00CUQHMBvb4+OVXTZWyXUvidUZaai1wyKUVyJoxO7mgREam/pMRrDw==", + "version": "5.3.10", + "resolved": "https://registry.npmjs.org/@types/papaparse/-/papaparse-5.3.10.tgz", + "integrity": "sha512-mS1Fta/xJ9EDYmAvpeWzcV9Gr0cOl1ClpW7di9+wSUNDIDO55tBtyXg97O7K+Syrd9rDEmuejM2iqmJIJ1SO5g==", "dev": true, "dependencies": { "@types/node": "*" } }, "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==" + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.1.tgz", + "integrity": "sha512-3YmXzzPAdOTVljVMkTMBdBEvlOLg2cDQaDhnnhT3nT9uDbnJzjWhKlzb+desT12Y7tGqaN6d+AbozcKzyL36Ng==" }, "node_modules/@types/prop-types": { - "version": "15.7.7", - "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.7.tgz", - "integrity": "sha512-FbtmBWCcSa2J4zL781Zf1p5YUBXQomPEcep9QZCfRfQgTxz3pJWiDFLebohZ9fFntX5ibzOkSsrJ0TEew8cAog==" + "version": "15.7.9", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.9.tgz", + "integrity": "sha512-n1yyPsugYNSmHgxDFjicaI2+gCNjsBck8UX9kuofAKlc0h1bL+20oSF72KeNaW2DUlesbEVCFgyV2dPGTiY42g==" }, "node_modules/@types/react": { - "version": "18.2.23", - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.23.tgz", - "integrity": "sha512-qHLW6n1q2+7KyBEYnrZpcsAmU/iiCh9WGCKgXvMxx89+TYdJWRjZohVIo9XTcoLhfX3+/hP0Pbulu3bCZQ9PSA==", + "version": "18.2.30", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.30.tgz", + "integrity": "sha512-OfqdJnDsSo4UNw0bqAjFCuBpLYQM7wvZidz0hVxHRjrEkzRlvZL1pJVyOSY55HMiKvRNEo9DUBRuEl7FNlJ/Vg==", "dependencies": { "@types/prop-types": "*", "@types/scheduler": "*", @@ -3447,47 +3435,47 @@ } }, "node_modules/@types/react-dom": { - "version": "18.2.8", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.8.tgz", - "integrity": "sha512-bAIvO5lN/U8sPGvs1Xm61rlRHHaq5rp5N3kp9C+NJ/Q41P8iqjkXSu0+/qu8POsjH9pNWb0OYabFez7taP7omw==", + "version": "18.2.14", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.14.tgz", + "integrity": "sha512-V835xgdSVmyQmI1KLV2BEIUgqEuinxp9O4G6g3FqO/SqLac049E53aysv0oEFD2kHfejeKU+ZqL2bcFWj9gLAQ==", "devOptional": true, "dependencies": { "@types/react": "*" } }, "node_modules/@types/react-table": { - "version": "7.7.16", - "resolved": "https://registry.npmjs.org/@types/react-table/-/react-table-7.7.16.tgz", - "integrity": "sha512-khfVwkNkvFnQV+Dx5Z/4jeMWIi+qytR8/Hl89fMPQ3aGiIgVlnghwdnyrq45UVSU+9wTqQFL0kUmIk4MGaM20Q==", + "version": "7.7.17", + "resolved": "https://registry.npmjs.org/@types/react-table/-/react-table-7.7.17.tgz", + "integrity": "sha512-25/SDkn0qnvxBvxSPnMO1vf1ymvcSmwPr7qcFuYyWElTGcsOWQsV+sCFq1dVhGYdd2fSsOnP4MkZUl/q9MlG+g==", "dev": true, "dependencies": { "@types/react": "*" } }, "node_modules/@types/scheduler": { - "version": "0.16.4", - "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.4.tgz", - "integrity": "sha512-2L9ifAGl7wmXwP4v3pN4p2FLhD0O1qsJpvKmNin5VA8+UvNVb447UDaAEV6UdrkA+m/Xs58U1RFps44x6TFsVQ==" + "version": "0.16.5", + "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.5.tgz", + "integrity": "sha512-s/FPdYRmZR8SjLWGMCuax7r3qCWQw9QKHzXVukAuuIJkXkDRwp+Pu5LMIVFi0Fxbav35WURicYr8u1QsoybnQw==" }, "node_modules/@types/semver": { - "version": "7.5.3", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.3.tgz", - "integrity": "sha512-OxepLK9EuNEIPxWNME+C6WwbRAOOI2o2BaQEGzz5Lu2e4Z5eDnEo+/aVEDMIXywoJitJ7xWd641wrGLZdtwRyw==", + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-MMzuxN3GdFwskAnb6fz0orFvhfqi752yjaXylr0Rp4oDg5H0Zn1IuyRhDVvYOwAXoJirx2xuS16I3WjxnAIHiQ==", "dev": true, "peer": true }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "6.7.3", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.7.3.tgz", - "integrity": "sha512-vntq452UHNltxsaaN+L9WyuMch8bMd9CqJ3zhzTPXXidwbf5mqqKCVXEuvRZUqLJSTLeWE65lQwyXsRGnXkCTA==", + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.8.0.tgz", + "integrity": "sha512-GosF4238Tkes2SHPQ1i8f6rMtG6zlKwMEB0abqSJ3Npvos+doIlc/ATG+vX1G9coDF3Ex78zM3heXHLyWEwLUw==", "dev": true, "peer": true, "dependencies": { "@eslint-community/regexpp": "^4.5.1", - "@typescript-eslint/scope-manager": "6.7.3", - "@typescript-eslint/type-utils": "6.7.3", - "@typescript-eslint/utils": "6.7.3", - "@typescript-eslint/visitor-keys": "6.7.3", + "@typescript-eslint/scope-manager": "6.8.0", + "@typescript-eslint/type-utils": "6.8.0", + "@typescript-eslint/utils": "6.8.0", + "@typescript-eslint/visitor-keys": "6.8.0", "debug": "^4.3.4", "graphemer": "^1.4.0", "ignore": "^5.2.4", @@ -3549,16 +3537,16 @@ "peer": true }, "node_modules/@typescript-eslint/parser": { - "version": "6.7.3", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.7.3.tgz", - "integrity": "sha512-TlutE+iep2o7R8Lf+yoer3zU6/0EAUc8QIBB3GYBc1KGz4c4TRm83xwXUZVPlZ6YCLss4r77jbu6j3sendJoiQ==", + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.8.0.tgz", + "integrity": "sha512-5tNs6Bw0j6BdWuP8Fx+VH4G9fEPDxnVI7yH1IAPkQH5RUtvKwRoqdecAPdQXv4rSOADAaz1LFBZvZG7VbXivSg==", "dev": true, "peer": true, "dependencies": { - "@typescript-eslint/scope-manager": "6.7.3", - "@typescript-eslint/types": "6.7.3", - "@typescript-eslint/typescript-estree": "6.7.3", - "@typescript-eslint/visitor-keys": "6.7.3", + "@typescript-eslint/scope-manager": "6.8.0", + "@typescript-eslint/types": "6.8.0", + "@typescript-eslint/typescript-estree": "6.8.0", + "@typescript-eslint/visitor-keys": "6.8.0", "debug": "^4.3.4" }, "engines": { @@ -3578,14 +3566,14 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "6.7.3", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.7.3.tgz", - "integrity": "sha512-wOlo0QnEou9cHO2TdkJmzF7DFGvAKEnB82PuPNHpT8ZKKaZu6Bm63ugOTn9fXNJtvuDPanBc78lGUGGytJoVzQ==", + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.8.0.tgz", + "integrity": "sha512-xe0HNBVwCph7rak+ZHcFD6A+q50SMsFwcmfdjs9Kz4qDh5hWhaPhFjRs/SODEhroBI5Ruyvyz9LfwUJ624O40g==", "dev": true, "peer": true, "dependencies": { - "@typescript-eslint/types": "6.7.3", - "@typescript-eslint/visitor-keys": "6.7.3" + "@typescript-eslint/types": "6.8.0", + "@typescript-eslint/visitor-keys": "6.8.0" }, "engines": { "node": "^16.0.0 || >=18.0.0" @@ -3596,14 +3584,14 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "6.7.3", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.7.3.tgz", - "integrity": "sha512-Fc68K0aTDrKIBvLnKTZ5Pf3MXK495YErrbHb1R6aTpfK5OdSFj0rVN7ib6Tx6ePrZ2gsjLqr0s98NG7l96KSQw==", + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.8.0.tgz", + "integrity": "sha512-RYOJdlkTJIXW7GSldUIHqc/Hkto8E+fZN96dMIFhuTJcQwdRoGN2rEWA8U6oXbLo0qufH7NPElUb+MceHtz54g==", "dev": true, "peer": true, "dependencies": { - "@typescript-eslint/typescript-estree": "6.7.3", - "@typescript-eslint/utils": "6.7.3", + "@typescript-eslint/typescript-estree": "6.8.0", + "@typescript-eslint/utils": "6.8.0", "debug": "^4.3.4", "ts-api-utils": "^1.0.1" }, @@ -3624,9 +3612,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "6.7.3", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.7.3.tgz", - "integrity": "sha512-4g+de6roB2NFcfkZb439tigpAMnvEIg3rIjWQ+EM7IBaYt/CdJt6em9BJ4h4UpdgaBWdmx2iWsafHTrqmgIPNw==", + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.8.0.tgz", + "integrity": "sha512-p5qOxSum7W3k+llc7owEStXlGmSl8FcGvhYt8Vjy7FqEnmkCVlM3P57XQEGj58oqaBWDQXbJDZxwUWMS/EAPNQ==", "dev": true, "peer": true, "engines": { @@ -3638,14 +3626,14 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "6.7.3", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.7.3.tgz", - "integrity": "sha512-YLQ3tJoS4VxLFYHTw21oe1/vIZPRqAO91z6Uv0Ss2BKm/Ag7/RVQBcXTGcXhgJMdA4U+HrKuY5gWlJlvoaKZ5g==", + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.8.0.tgz", + "integrity": "sha512-ISgV0lQ8XgW+mvv5My/+iTUdRmGspducmQcDw5JxznasXNnZn3SKNrTRuMsEXv+V/O+Lw9AGcQCfVaOPCAk/Zg==", "dev": true, "peer": true, "dependencies": { - "@typescript-eslint/types": "6.7.3", - "@typescript-eslint/visitor-keys": "6.7.3", + "@typescript-eslint/types": "6.8.0", + "@typescript-eslint/visitor-keys": "6.8.0", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -3702,18 +3690,18 @@ "peer": true }, "node_modules/@typescript-eslint/utils": { - "version": "6.7.3", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.7.3.tgz", - "integrity": "sha512-vzLkVder21GpWRrmSR9JxGZ5+ibIUSudXlW52qeKpzUEQhRSmyZiVDDj3crAth7+5tmN1ulvgKaCU2f/bPRCzg==", + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.8.0.tgz", + "integrity": "sha512-dKs1itdE2qFG4jr0dlYLQVppqTE+Itt7GmIf/vX6CSvsW+3ov8PbWauVKyyfNngokhIO9sKZeRGCUo1+N7U98Q==", "dev": true, "peer": true, "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", "@types/json-schema": "^7.0.12", "@types/semver": "^7.5.0", - "@typescript-eslint/scope-manager": "6.7.3", - "@typescript-eslint/types": "6.7.3", - "@typescript-eslint/typescript-estree": "6.7.3", + "@typescript-eslint/scope-manager": "6.8.0", + "@typescript-eslint/types": "6.8.0", + "@typescript-eslint/typescript-estree": "6.8.0", "semver": "^7.5.4" }, "engines": { @@ -3764,13 +3752,13 @@ "peer": true }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "6.7.3", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.7.3.tgz", - "integrity": "sha512-HEVXkU9IB+nk9o63CeICMHxFWbHWr3E1mpilIQBe9+7L/lH97rleFLVtYsfnWB+JVMaiFnEaxvknvmIzX+CqVg==", + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.8.0.tgz", + "integrity": "sha512-oqAnbA7c+pgOhW2OhGvxm0t1BULX5peQI/rLsNDpGM78EebV3C9IGbX5HNZabuZ6UQrYveCLjKo8Iy/lLlBkkg==", "dev": true, "peer": true, "dependencies": { - "@typescript-eslint/types": "6.7.3", + "@typescript-eslint/types": "6.8.0", "eslint-visitor-keys": "^3.4.1" }, "engines": { @@ -3781,6 +3769,12 @@ "url": "https://opencollective.com/typescript-eslint" } }, + "node_modules/@ungap/structured-clone": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", + "dev": true + }, "node_modules/@vitejs/plugin-react-swc": { "version": "3.4.0", "resolved": "https://registry.npmjs.org/@vitejs/plugin-react-swc/-/plugin-react-swc-3.4.0.tgz", @@ -3794,9 +3788,9 @@ } }, "node_modules/@vitest/coverage-v8": { - "version": "0.34.5", - "resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-0.34.5.tgz", - "integrity": "sha512-97xjhRTSdmeeHCm2nNHhT3hLsMYkAhHXm/rwj6SZ3voka8xiCJrwgtfIjoZIFEL4OO0KezGmVuHWQXcMunULIA==", + "version": "0.34.6", + "resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-0.34.6.tgz", + "integrity": "sha512-fivy/OK2d/EsJFoEoxHFEnNGTg+MmdZBAVK9Ka4qhXR2K3J0DS08vcGVwzDtXSuUMabLv4KtPcpSKkcMXFDViw==", "dev": true, "dependencies": { "@ampproject/remapping": "^2.2.1", @@ -3819,26 +3813,26 @@ } }, "node_modules/@vitest/expect": { - "version": "0.34.5", - "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-0.34.5.tgz", - "integrity": "sha512-/3RBIV9XEH+nRpRMqDJBufKIOQaYUH2X6bt0rKSCW0MfKhXFLYsR5ivHifeajRSTsln0FwJbitxLKHSQz/Xwkw==", + "version": "0.34.6", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-0.34.6.tgz", + "integrity": "sha512-QUzKpUQRc1qC7qdGo7rMK3AkETI7w18gTCUrsNnyjjJKYiuUB9+TQK3QnR1unhCnWRC0AbKv2omLGQDF/mIjOw==", "dev": true, "dependencies": { - "@vitest/spy": "0.34.5", - "@vitest/utils": "0.34.5", - "chai": "^4.3.7" + "@vitest/spy": "0.34.6", + "@vitest/utils": "0.34.6", + "chai": "^4.3.10" }, "funding": { "url": "https://opencollective.com/vitest" } }, "node_modules/@vitest/runner": { - "version": "0.34.5", - "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-0.34.5.tgz", - "integrity": "sha512-RDEE3ViVvl7jFSCbnBRyYuu23XxmvRTSZWW6W4M7eC5dOsK75d5LIf6uhE5Fqf809DQ1+9ICZZNxhIolWHU4og==", + "version": "0.34.6", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-0.34.6.tgz", + "integrity": "sha512-1CUQgtJSLF47NnhN+F9X2ycxUP0kLHQ/JWvNHbeBfwW8CzEGgeskzNnHDyv1ieKTltuR6sdIHV+nmR6kPxQqzQ==", "dev": true, "dependencies": { - "@vitest/utils": "0.34.5", + "@vitest/utils": "0.34.6", "p-limit": "^4.0.0", "pathe": "^1.1.1" }, @@ -3874,9 +3868,9 @@ } }, "node_modules/@vitest/snapshot": { - "version": "0.34.5", - "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-0.34.5.tgz", - "integrity": "sha512-+ikwSbhu6z2yOdtKmk/aeoDZ9QPm2g/ZO5rXT58RR9Vmu/kB2MamyDSx77dctqdZfP3Diqv4mbc/yw2kPT8rmA==", + "version": "0.34.6", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-0.34.6.tgz", + "integrity": "sha512-B3OZqYn6k4VaN011D+ve+AA4whM4QkcwcrwaKwAbyyvS/NB1hCWjFIBQxAQQSQir9/RtyAAGuq+4RJmbn2dH4w==", "dev": true, "dependencies": { "magic-string": "^0.30.1", @@ -3888,9 +3882,9 @@ } }, "node_modules/@vitest/spy": { - "version": "0.34.5", - "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-0.34.5.tgz", - "integrity": "sha512-epsicsfhvBjRjCMOC/3k00mP/TBGQy8/P0DxOFiWyLt55gnZ99dqCfCiAsKO17BWVjn4eZRIjKvcqNmSz8gvmg==", + "version": "0.34.6", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-0.34.6.tgz", + "integrity": "sha512-xaCvneSaeBw/cz8ySmF7ZwGvL0lBjfvqc1LpQ/vcdHEvpLn3Ff1vAvjw+CoGn0802l++5L/pxb7whwcWAw+DUQ==", "dev": true, "dependencies": { "tinyspy": "^2.1.1" @@ -3900,9 +3894,9 @@ } }, "node_modules/@vitest/utils": { - "version": "0.34.5", - "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-0.34.5.tgz", - "integrity": "sha512-ur6CmmYQoeHMwmGb0v+qwkwN3yopZuZyf4xt1DBBSGBed8Hf9Gmbm/5dEWqgpLPdRx6Av6jcWXrjcKfkTzg/pw==", + "version": "0.34.6", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-0.34.6.tgz", + "integrity": "sha512-IG5aDD8S6zlvloDsnzHw0Ut5xczlF+kv2BOTo+iXfPr54Yhi5qbVOgGB1hZaVq4iJ4C/MZ2J0y15IlsV/ZcI0A==", "dev": true, "dependencies": { "diff-sequences": "^29.4.3", @@ -4436,9 +4430,9 @@ } }, "node_modules/browserslist": { - "version": "4.22.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.0.tgz", - "integrity": "sha512-v+Jcv64L2LbfTC6OnRcaxtqJNJuQAVhZKSJfR/6hn7lhnChUXl4amwVviqN1k411BB+3rRoKMitELRn1CojeRA==", + "version": "4.22.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.1.tgz", + "integrity": "sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ==", "dev": true, "funding": [ { @@ -4456,8 +4450,8 @@ ], "peer": true, "dependencies": { - "caniuse-lite": "^1.0.30001539", - "electron-to-chromium": "^1.4.530", + "caniuse-lite": "^1.0.30001541", + "electron-to-chromium": "^1.4.535", "node-releases": "^2.0.13", "update-browserslist-db": "^1.0.13" }, @@ -4469,9 +4463,9 @@ } }, "node_modules/brukerconverter": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/brukerconverter/-/brukerconverter-6.3.0.tgz", - "integrity": "sha512-XJPlOHJOHzguq/+m2W1VGT0XpT65ddhw98V984VAuaM3Ld8MiFgtVHaRlfb9d1wEcySLQxvaj2yRuc8xO7gxPA==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/brukerconverter/-/brukerconverter-6.3.1.tgz", + "integrity": "sha512-ri6uQYfsoRBoTnBj7bv0Fm6vao80nm/f/ODj0acYMMqjK/YP79JmDjHSS3if5zukgWPlGVWYyShrJEIJjYeX4A==", "dependencies": { "cheminfo-types": "^1.5.0", "filelist-utils": "^1.8.0", @@ -4513,14 +4507,15 @@ } }, "node_modules/call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz", + "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==", "dev": true, "peer": true, "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.1", + "set-function-length": "^1.1.1" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -4598,9 +4593,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001540", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001540.tgz", - "integrity": "sha512-9JL38jscuTJBTcuETxm8QLsFr/F6v0CYYTEU6r5+qSM98P2Q0Hmu0eG1dTG5GBUmywU3UlcVOUSIJYY47rdFSw==", + "version": "1.0.30001551", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001551.tgz", + "integrity": "sha512-vtBAez47BoGMMzlbYhfXrMV1kvRF2WP/lqiMuDu1Sb4EE4LKEgjopFDSRtZfdVnslNRpOqV/woE+Xgrwj6VQlg==", "dev": true, "funding": [ { @@ -4629,18 +4624,18 @@ } }, "node_modules/chai": { - "version": "4.3.9", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.9.tgz", - "integrity": "sha512-tH8vhfA1CfuYMkALXj+wmZcqiwqOfshU9Gry+NYiiLqIddrobkBhALv6XD4yDz68qapphYI4vSaqhqAdThCAAA==", + "version": "4.3.10", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.10.tgz", + "integrity": "sha512-0UXG04VuVbruMUYbJ6JctvH0YnC/4q3/AkT18q4NaITo91CUm0liMS9VqzT9vZhVQ/1eqPanMWjBM+Juhfb/9g==", "dev": true, "dependencies": { "assertion-error": "^1.1.0", "check-error": "^1.0.3", - "deep-eql": "^4.1.2", - "get-func-name": "^2.0.0", - "loupe": "^2.3.1", + "deep-eql": "^4.1.3", + "get-func-name": "^2.0.2", + "loupe": "^2.3.6", "pathval": "^1.1.1", - "type-detect": "^4.0.5" + "type-detect": "^4.0.8" }, "engines": { "node": ">=4" @@ -4746,9 +4741,9 @@ "integrity": "sha512-Zz7HPnh6wB2beEK7nfsXlNSK1Tpl4O0DpYUod8L6gI/5+INpn/d5UgJLI+3ck6CYY5Qsq34ylyKhERmZ5Wks2A==" }, "node_modules/ci-info": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz", - "integrity": "sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==", + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", "dev": true, "funding": [ { @@ -4883,9 +4878,9 @@ } }, "node_modules/commander": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-11.0.0.tgz", - "integrity": "sha512-9HMlXtt/BNoYr8ooyjjNRdIilOTkVJXB+GhxMTtOKwk0R4j4lS4NpjuqmRxroBfnfTSHQIHQB7wryHhXarNjmQ==", + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-11.1.0.tgz", + "integrity": "sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==", "dev": true, "engines": { "node": ">=16" @@ -5010,8 +5005,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "dev": true, - "peer": true + "dev": true }, "node_modules/convert-to-jcamp": { "version": "5.4.9", @@ -5122,29 +5116,29 @@ } }, "node_modules/cspell": { - "version": "7.3.6", - "resolved": "https://registry.npmjs.org/cspell/-/cspell-7.3.6.tgz", - "integrity": "sha512-iN3D05nwCbS6MdignKwK97vQPX3yrT/Nsu3LhhFptU0O5PO4hvRzFuSzEq+AumMby4Tuf9HcGP5Ugvyi7Gb3gw==", + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/cspell/-/cspell-7.3.8.tgz", + "integrity": "sha512-8AkqsBQAMsKYV5XyJLB6rBs5hgspL4+MPOg6mBKG2j5EvQgRVc6dIfAPWDNLpIeW2a3+7K5BIWqKHapKPeiknQ==", "dev": true, "dependencies": { - "@cspell/cspell-json-reporter": "7.3.6", - "@cspell/cspell-pipe": "7.3.6", - "@cspell/cspell-types": "7.3.6", - "@cspell/dynamic-import": "7.3.6", + "@cspell/cspell-json-reporter": "7.3.8", + "@cspell/cspell-pipe": "7.3.8", + "@cspell/cspell-types": "7.3.8", + "@cspell/dynamic-import": "7.3.8", "chalk": "^5.3.0", "chalk-template": "^1.1.0", - "commander": "^11.0.0", - "cspell-gitignore": "7.3.6", - "cspell-glob": "7.3.6", - "cspell-io": "7.3.6", - "cspell-lib": "7.3.6", + "commander": "^11.1.0", + "cspell-gitignore": "7.3.8", + "cspell-glob": "7.3.8", + "cspell-io": "7.3.8", + "cspell-lib": "7.3.8", "fast-glob": "^3.3.1", "fast-json-stable-stringify": "^2.1.0", - "file-entry-cache": "^7.0.0", + "file-entry-cache": "^7.0.1", "get-stdin": "^9.0.0", "semver": "^7.5.4", "strip-ansi": "^7.1.0", - "vscode-uri": "^3.0.7" + "vscode-uri": "^3.0.8" }, "bin": { "cspell": "bin.mjs", @@ -5158,14 +5152,14 @@ } }, "node_modules/cspell-dictionary": { - "version": "7.3.6", - "resolved": "https://registry.npmjs.org/cspell-dictionary/-/cspell-dictionary-7.3.6.tgz", - "integrity": "sha512-8E0qsGTP7uHZeQ0qD6au+bjaj4M9F4AgurssG3VQuvsYpzEI6S/81U3GQVzcn/4mn7Z5KE286CElZQWAiQPLQA==", + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/cspell-dictionary/-/cspell-dictionary-7.3.8.tgz", + "integrity": "sha512-gkq4t78eLR0xC3P0vDDHPeNY4iZRd5YE6Z8uDJ7RM4UaX/TSdVUN9KNFr34RnJ119NYVHujpL9+uW7wPSAe8Eg==", "dev": true, "dependencies": { - "@cspell/cspell-pipe": "7.3.6", - "@cspell/cspell-types": "7.3.6", - "cspell-trie-lib": "7.3.6", + "@cspell/cspell-pipe": "7.3.8", + "@cspell/cspell-types": "7.3.8", + "cspell-trie-lib": "7.3.8", "fast-equals": "^4.0.3", "gensequence": "^6.0.0" }, @@ -5180,12 +5174,12 @@ "dev": true }, "node_modules/cspell-gitignore": { - "version": "7.3.6", - "resolved": "https://registry.npmjs.org/cspell-gitignore/-/cspell-gitignore-7.3.6.tgz", - "integrity": "sha512-D/oWUoeW3kgKIIpLpJCJk4KmtxPdb6yqkMX8Ze4rzMXAUjHkw6PPjMd8hcJl7uTJa4T8vHM+UR6L4t3huDuVoA==", + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/cspell-gitignore/-/cspell-gitignore-7.3.8.tgz", + "integrity": "sha512-vJzCOUEiw6/MwV/U4Ux3bgSdj9mXB+X5eHL+qzVoyFI7ArlvrkuGTL+iFJThQcS8McM3SGqtvaBNCiKBmAeCkA==", "dev": true, "dependencies": { - "cspell-glob": "7.3.6", + "cspell-glob": "7.3.8", "find-up": "^5.0.0" }, "bin": { @@ -5196,9 +5190,9 @@ } }, "node_modules/cspell-glob": { - "version": "7.3.6", - "resolved": "https://registry.npmjs.org/cspell-glob/-/cspell-glob-7.3.6.tgz", - "integrity": "sha512-xfVmqkkg/Pznij3VJCLbUvEKWqs/+AyyHIXo9s1j/d4M0Nw/O4HJFoHwNiMoAk6aceMTgjjVIneGmSZsHVGYZg==", + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/cspell-glob/-/cspell-glob-7.3.8.tgz", + "integrity": "sha512-wUZC6znyxEs0wlhzGfZ4XHkATPJyazJIFi/VvAdj+KHe7U8SoSgitJVDQqdgectI2y3MxR7lQdVLX9dONFh+7A==", "dev": true, "dependencies": { "micromatch": "^4.0.5" @@ -5208,13 +5202,13 @@ } }, "node_modules/cspell-grammar": { - "version": "7.3.6", - "resolved": "https://registry.npmjs.org/cspell-grammar/-/cspell-grammar-7.3.6.tgz", - "integrity": "sha512-04kvcptwvJBSMfcOTbanEFa194Xkpkjo4wkTImO26Zzu06tGawbL4FPPQdGygMz7yTdc6Wlrlks5TNChWlcn+Q==", + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/cspell-grammar/-/cspell-grammar-7.3.8.tgz", + "integrity": "sha512-nTjAlMAZAVSFhBd9U3MB9l5FfC5JCCr9DTOA2wWxusVOm+36MbSEH90ucLPkhPa9/+0HtbpDhqVMwXCZllRpsg==", "dev": true, "dependencies": { - "@cspell/cspell-pipe": "7.3.6", - "@cspell/cspell-types": "7.3.6" + "@cspell/cspell-pipe": "7.3.8", + "@cspell/cspell-types": "7.3.8" }, "bin": { "cspell-grammar": "bin.mjs" @@ -5224,12 +5218,12 @@ } }, "node_modules/cspell-io": { - "version": "7.3.6", - "resolved": "https://registry.npmjs.org/cspell-io/-/cspell-io-7.3.6.tgz", - "integrity": "sha512-FzynVc3OE9rS4t0cxTCVD9VFwOAnhvhV/WBWMrMUtvi8DVnRu7of/1ZJsC+XDtij+G1Kd6EOrzSnTj5gn9aQaQ==", + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/cspell-io/-/cspell-io-7.3.8.tgz", + "integrity": "sha512-XrxPbaiek7EZh+26k9RYVz2wKclaMqM6mXBiu/kpFAHRHHfz91ado6xWvyxZ7UAxQ8ixEwZ+oz9TU+k21gHzyw==", "dev": true, "dependencies": { - "@cspell/cspell-service-bus": "7.3.6", + "@cspell/cspell-service-bus": "7.3.8", "node-fetch": "^2.7.0" }, "engines": { @@ -5237,33 +5231,33 @@ } }, "node_modules/cspell-lib": { - "version": "7.3.6", - "resolved": "https://registry.npmjs.org/cspell-lib/-/cspell-lib-7.3.6.tgz", - "integrity": "sha512-ixPnudlaNh4UwFkHeKUXbBYB/wLHNv1Gf+zBGy4oz2Uu9ZZTVgczhE/t2pPTD6ZRcq4+YulGuqxYCS+3qqOQQQ==", + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/cspell-lib/-/cspell-lib-7.3.8.tgz", + "integrity": "sha512-2L770sI5DdsAKVzO3jxmfP2fz4LryW6dzL93BpN7WU+ebFC6rg4ioa5liOJV4WoDo2fNQMSeqfW4Aawu9zWR7A==", "dev": true, "dependencies": { - "@cspell/cspell-bundled-dicts": "7.3.6", - "@cspell/cspell-pipe": "7.3.6", - "@cspell/cspell-resolver": "7.3.6", - "@cspell/cspell-types": "7.3.6", - "@cspell/dynamic-import": "7.3.6", - "@cspell/strong-weak-map": "7.3.6", + "@cspell/cspell-bundled-dicts": "7.3.8", + "@cspell/cspell-pipe": "7.3.8", + "@cspell/cspell-resolver": "7.3.8", + "@cspell/cspell-types": "7.3.8", + "@cspell/dynamic-import": "7.3.8", + "@cspell/strong-weak-map": "7.3.8", "clear-module": "^4.1.2", "comment-json": "^4.2.3", "configstore": "^6.0.0", "cosmiconfig": "8.0.0", - "cspell-dictionary": "7.3.6", - "cspell-glob": "7.3.6", - "cspell-grammar": "7.3.6", - "cspell-io": "7.3.6", - "cspell-trie-lib": "7.3.6", + "cspell-dictionary": "7.3.8", + "cspell-glob": "7.3.8", + "cspell-grammar": "7.3.8", + "cspell-io": "7.3.8", + "cspell-trie-lib": "7.3.8", "fast-equals": "^5.0.1", "find-up": "^6.3.0", "gensequence": "^6.0.0", "import-fresh": "^3.3.0", "resolve-from": "^5.0.0", - "vscode-languageserver-textdocument": "^1.0.8", - "vscode-uri": "^3.0.7" + "vscode-languageserver-textdocument": "^1.0.11", + "vscode-uri": "^3.0.8" }, "engines": { "node": ">=16" @@ -5367,13 +5361,13 @@ } }, "node_modules/cspell-trie-lib": { - "version": "7.3.6", - "resolved": "https://registry.npmjs.org/cspell-trie-lib/-/cspell-trie-lib-7.3.6.tgz", - "integrity": "sha512-75lSsKTdmFpewEl8Q+/WnSbpZ+JjoNnSDobNDcjZHTTnj/TlgCVxXASTaFLlXnqWU51QX+5798smnqpWBcJigg==", + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/cspell-trie-lib/-/cspell-trie-lib-7.3.8.tgz", + "integrity": "sha512-UQx1Bazbyz2eQJ/EnMohINnUdZvAQL+OcQU3EPPbNWM1DWF4bJGgmFXKNCRYfJk6wtOZVXG5g5AZXx9KnHeN9A==", "dev": true, "dependencies": { - "@cspell/cspell-pipe": "7.3.6", - "@cspell/cspell-types": "7.3.6", + "@cspell/cspell-pipe": "7.3.8", + "@cspell/cspell-types": "7.3.8", "gensequence": "^6.0.0" }, "engines": { @@ -5426,12 +5420,12 @@ "dev": true }, "node_modules/css-functions-list": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/css-functions-list/-/css-functions-list-3.2.0.tgz", - "integrity": "sha512-d/jBMPyYybkkLVypgtGv12R+pIFw4/f/IHtCTxWpZc8ofTYOPigIgmA6vu5rMHartZC+WuXhBUHfnyNUIQSYrg==", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/css-functions-list/-/css-functions-list-3.2.1.tgz", + "integrity": "sha512-Nj5YcaGgBtuUmn1D7oHqPW0c9iui7xsTsj5lIX8ZgevdfhmjFfKB3r8moHJtNJnctnYXJyYX5I1pp90HM4TPgQ==", "dev": true, "engines": { - "node": ">=12.22" + "node": ">=12 || >=16" } }, "node_modules/css-in-js-utils": { @@ -5961,9 +5955,9 @@ } }, "node_modules/define-data-property": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.0.tgz", - "integrity": "sha512-UzGwzcjyv3OtAvolTj1GoyNYzfFR+iqbGjcnBEENZVCpM4/Ng1yhGNvS3lR/xDS74Tb2wGG9WzNSNIOS9UVb2g==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", + "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", "dev": true, "peer": true, "dependencies": { @@ -6047,12 +6041,6 @@ "node": ">=6.0.0" } }, - "node_modules/dom-align": { - "version": "1.12.4", - "resolved": "https://registry.npmjs.org/dom-align/-/dom-align-1.12.4.tgz", - "integrity": "sha512-R8LUSEay/68zE5c8/3BDxiTEvgb4xZTF0RKmAHfiEVN3klfIpXfi2/QCoiWPccVQ0J/ZGdz9OjzL4uJEP/MRAw==", - "dev": true - }, "node_modules/dom-helpers": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz", @@ -6098,9 +6086,9 @@ "dev": true }, "node_modules/electron-to-chromium": { - "version": "1.4.531", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.531.tgz", - "integrity": "sha512-H6gi5E41Rn3/mhKlPaT1aIMg/71hTAqn0gYEllSuw9igNWtvQwu185jiCZoZD29n7Zukgh7GVZ3zGf0XvkhqjQ==", + "version": "1.4.561", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.561.tgz", + "integrity": "sha512-eS5t4ulWOBfVHdq9SW2dxEaFarj1lPjvJ8PaYMOjY0DecBaj/t4ARziL2IPpDr4atyWwjLFGQ2vo/VCgQFezVQ==", "dev": true, "peer": true }, @@ -6187,27 +6175,27 @@ } }, "node_modules/es-abstract": { - "version": "1.22.2", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.2.tgz", - "integrity": "sha512-YoxfFcDmhjOgWPWsV13+2RNjq1F6UQnfs+8TftwNqtzlmFzEXvlUwdrNrYeaizfjQzRMxkZ6ElWMOJIFKdVqwA==", + "version": "1.22.3", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.3.tgz", + "integrity": "sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA==", "dev": true, "peer": true, "dependencies": { "array-buffer-byte-length": "^1.0.0", "arraybuffer.prototype.slice": "^1.0.2", "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", + "call-bind": "^1.0.5", "es-set-tostringtag": "^2.0.1", "es-to-primitive": "^1.2.1", "function.prototype.name": "^1.1.6", - "get-intrinsic": "^1.2.1", + "get-intrinsic": "^1.2.2", "get-symbol-description": "^1.0.0", "globalthis": "^1.0.3", "gopd": "^1.0.1", - "has": "^1.0.3", "has-property-descriptors": "^1.0.0", "has-proto": "^1.0.1", "has-symbols": "^1.0.3", + "hasown": "^2.0.0", "internal-slot": "^1.0.5", "is-array-buffer": "^3.0.2", "is-callable": "^1.2.7", @@ -6217,7 +6205,7 @@ "is-string": "^1.0.7", "is-typed-array": "^1.1.12", "is-weakref": "^1.0.2", - "object-inspect": "^1.12.3", + "object-inspect": "^1.13.1", "object-keys": "^1.1.1", "object.assign": "^4.1.4", "regexp.prototype.flags": "^1.5.1", @@ -6231,7 +6219,7 @@ "typed-array-byte-offset": "^1.0.0", "typed-array-length": "^1.0.4", "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.11" + "which-typed-array": "^1.1.13" }, "engines": { "node": ">= 0.4" @@ -6264,28 +6252,28 @@ } }, "node_modules/es-set-tostringtag": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz", - "integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.2.tgz", + "integrity": "sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==", "dev": true, "peer": true, "dependencies": { - "get-intrinsic": "^1.1.3", - "has": "^1.0.3", - "has-tostringtag": "^1.0.0" + "get-intrinsic": "^1.2.2", + "has-tostringtag": "^1.0.0", + "hasown": "^2.0.0" }, "engines": { "node": ">= 0.4" } }, "node_modules/es-shim-unscopables": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", - "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", + "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", "dev": true, "peer": true, "dependencies": { - "has": "^1.0.3" + "hasown": "^2.0.0" } }, "node_modules/es-to-primitive": { @@ -6365,18 +6353,19 @@ } }, "node_modules/eslint": { - "version": "8.50.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.50.0.tgz", - "integrity": "sha512-FOnOGSuFuFLv/Sa+FDVRZl4GGVAAFFi8LecRsI5a1tMO5HIE8nCm4ivAlzt4dT3ol/PaaGC0rJEEXQmHJBGoOg==", + "version": "8.51.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.51.0.tgz", + "integrity": "sha512-2WuxRZBrlwnXi+/vFSJyjMqrNjtJqiasMzehF0shoLaW7DzS3/9Yvrmq5JiT66+pNjiX4UBnLDiKHcWAr/OInA==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.6.1", "@eslint/eslintrc": "^2.1.2", - "@eslint/js": "8.50.0", + "@eslint/js": "8.51.0", "@humanwhocodes/config-array": "^0.11.11", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", "ajv": "^6.12.4", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", @@ -6693,13 +6682,13 @@ } }, "node_modules/eslint-plugin-react/node_modules/resolve": { - "version": "2.0.0-next.4", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.4.tgz", - "integrity": "sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==", + "version": "2.0.0-next.5", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", + "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", "dev": true, "peer": true, "dependencies": { - "is-core-module": "^2.9.0", + "is-core-module": "^2.13.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, @@ -6891,9 +6880,9 @@ } }, "node_modules/eslint/node_modules/globals": { - "version": "13.22.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.22.0.tgz", - "integrity": "sha512-H1Ddc/PbZHTDVJSnj8kWptIRSD6AM3pK+mKytuIVF4uoBV7rshFlhhvA58ceJ5wp3Er58w6zj7bykMpYXt3ETw==", + "version": "13.23.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.23.0.tgz", + "integrity": "sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==", "dev": true, "dependencies": { "type-fest": "^0.20.2" @@ -7177,12 +7166,12 @@ } }, "node_modules/file-entry-cache": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-7.0.0.tgz", - "integrity": "sha512-OWhoO9dvvwspdI7YjGrs5wD7bPggVHc5b1NFAdyd1fEPIeno3Fj70fjBhklAqzUefgX7KCNDBnvrT8rZhS8Shw==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-7.0.1.tgz", + "integrity": "sha512-uLfFktPmRetVCbHe5UPuekWrQ6hENufnA46qEGbfACkK5drjTTdQYUragRgMjHldcbYG+nslUerqMPjbBSHXjQ==", "dev": true, "dependencies": { - "flat-cache": "^3.1.0" + "flat-cache": "^3.1.1" }, "engines": { "node": ">=12.0.0" @@ -7249,12 +7238,12 @@ } }, "node_modules/flat-cache": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.1.0.tgz", - "integrity": "sha512-OHx4Qwrrt0E4jEIcI5/Xb+f+QmJYNj2rrK8wiIdQOIrB9WrrJL8cjZvXdXuBTkkEwEqLycb5BeZDV1o2i9bTew==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.1.1.tgz", + "integrity": "sha512-/qM2b3LUIaIgviBQovTLvijfyOQXPtSRnRK26ksj2J7rzPIecePUIpJsZ4T02Qg+xiAEKIs5K8dsHEd+VaKa/Q==", "dev": true, "dependencies": { - "flatted": "^3.2.7", + "flatted": "^3.2.9", "keyv": "^4.5.3", "rimraf": "^3.0.2" }, @@ -7387,9 +7376,12 @@ } }, "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/function.prototype.name": { "version": "1.1.6", @@ -7449,16 +7441,16 @@ } }, "node_modules/get-intrinsic": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", - "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz", + "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", "dev": true, "peer": true, "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", + "function-bind": "^1.1.2", "has-proto": "^1.0.1", - "has-symbols": "^1.0.3" + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -7733,12 +7725,11 @@ } }, "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dependencies": { - "function-bind": "^1.1.1" - }, + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.4.tgz", + "integrity": "sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ==", + "dev": true, + "peer": true, "engines": { "node": ">= 0.4.0" } @@ -7771,13 +7762,13 @@ } }, "node_modules/has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz", + "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==", "dev": true, "peer": true, "dependencies": { - "get-intrinsic": "^1.1.1" + "get-intrinsic": "^1.2.2" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -7825,6 +7816,17 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/header-case": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/header-case/-/header-case-2.0.4.tgz", @@ -7912,9 +7914,9 @@ "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==" }, "node_modules/immer": { - "version": "10.0.2", - "resolved": "https://registry.npmjs.org/immer/-/immer-10.0.2.tgz", - "integrity": "sha512-Rx3CqeqQ19sxUtYV9CU911Vhy8/721wRFnJv3REVGWUmoAcIwzifTsdmJte/MV+0/XpM35LZdQMBGkRIoLPwQA==", + "version": "10.0.3", + "resolved": "https://registry.npmjs.org/immer/-/immer-10.0.3.tgz", + "integrity": "sha512-pwupu3eWfouuaowscykeckFmVTpqbzW+rXFCX8rQLkZzM9ftBmU/++Ra+o+L27mz03zJTlyV4UUr+fdKNffo4A==", "funding": { "type": "opencollective", "url": "https://opencollective.com/immer" @@ -8034,14 +8036,14 @@ } }, "node_modules/internal-slot": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz", - "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.6.tgz", + "integrity": "sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg==", "dev": true, "peer": true, "dependencies": { - "get-intrinsic": "^1.2.0", - "has": "^1.0.3", + "get-intrinsic": "^1.2.2", + "hasown": "^2.0.0", "side-channel": "^1.0.4" }, "engines": { @@ -8170,11 +8172,11 @@ } }, "node_modules/is-core-module": { - "version": "2.13.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz", - "integrity": "sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==", + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", "dependencies": { - "has": "^1.0.3" + "hasown": "^2.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -8654,9 +8656,9 @@ } }, "node_modules/jackspeak": { - "version": "2.3.5", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.5.tgz", - "integrity": "sha512-Ratx+B8WeXLAtRJn26hrhY8S1+Jz6pxPMrkrdkgb/NstTNiqMhX0/oFVu5wX+g5n6JlEu2LPsDJmY8nRP4+alw==", + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", + "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", "dev": true, "dependencies": { "@isaacs/cliui": "^8.0.2" @@ -8672,9 +8674,9 @@ } }, "node_modules/jcampconverter": { - "version": "9.2.0", - "resolved": "https://registry.npmjs.org/jcampconverter/-/jcampconverter-9.2.0.tgz", - "integrity": "sha512-wimNQSuuaE4arlQUUq/RPpjCebfF5I7P3XpzGWIDPVhk8vjfRFU987hbSNhAICRjLUMPmC01Q24lbnNQ50jNZA==", + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/jcampconverter/-/jcampconverter-9.2.2.tgz", + "integrity": "sha512-+mZK6QzbwnDBorK6lzccFuBNiTSGgwQGKczdhxNzpYjKS1osEQwtmgPJVEp9JGqbI7ClxXJU6IAyxivIBN/jLA==", "dependencies": { "cheminfo-types": "^1.7.2", "dynamic-typing": "^1.0.0", @@ -8684,11 +8686,11 @@ } }, "node_modules/jeolconverter": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/jeolconverter/-/jeolconverter-1.0.1.tgz", - "integrity": "sha512-AQFwFOE4aqP2KkjCJmYngs4Os0N8iroyJDTXU8R3R3UGpQeZDeNexq8lAdwVDI2PTpzWzMt/9ydz633CYeVkOA==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/jeolconverter/-/jeolconverter-1.0.2.tgz", + "integrity": "sha512-Oqp4VioharhRkQRSc6WkXc+s42DYLOdLWV7eNi16CJbiBvoaSrFf0KQwJJ5JfbpncYRMzrsjilBFYzYTbREC6g==", "dependencies": { - "iobuffer": "^5.0.3" + "iobuffer": "^5.3.2" } }, "node_modules/js-cookie": { @@ -8811,9 +8813,9 @@ "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" }, "node_modules/keyv": { - "version": "4.5.3", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.3.tgz", - "integrity": "sha512-QCiSav9WaX1PgETJ+SpNnx2PRRapJ/oRSXM4VO5OGYGSjrxbKPVFVhB3l2OCbLCk329N8qyAtsJjSjvVBWzEug==", + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", "dev": true, "dependencies": { "json-buffer": "3.0.1" @@ -8829,9 +8831,9 @@ } }, "node_modules/known-css-properties": { - "version": "0.28.0", - "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.28.0.tgz", - "integrity": "sha512-9pSL5XB4J+ifHP0e0jmmC98OGC1nL8/JjS+fi6mnTlIf//yt/MfVLtKg7S6nCtj/8KTcWX7nRlY0XywoYY1ISQ==", + "version": "0.29.0", + "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.29.0.tgz", + "integrity": "sha512-Ne7wqW7/9Cz54PDt4I3tcV+hAyat8ypyOGzYRJQfdxnnjeWsTxt1cy8pjvvKeI5kfXuyvULyeeAvwvvtAX3ayQ==", "dev": true }, "node_modules/levn": { @@ -8918,6 +8920,11 @@ "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==" }, + "node_modules/lodash.omit": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.omit/-/lodash.omit-4.5.0.tgz", + "integrity": "sha512-XeqSp49hNGmlkj2EJlfrQFIzQ6lXdNro9sddtQzcJY8QaoC2GO0DT7xaIokHeyM+mIT0mPMlPvkYzg2xCuHdZg==" + }, "node_modules/lodash.truncate": { "version": "4.4.2", "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", @@ -8936,12 +8943,12 @@ } }, "node_modules/loupe": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.6.tgz", - "integrity": "sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==", + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.7.tgz", + "integrity": "sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==", "dev": true, "dependencies": { - "get-func-name": "^2.0.0" + "get-func-name": "^2.0.1" } }, "node_modules/lower-case": { @@ -8963,9 +8970,9 @@ } }, "node_modules/magic-string": { - "version": "0.30.3", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.3.tgz", - "integrity": "sha512-B7xGbll2fG/VjP+SWg4sX3JynwIU0mjoTc6MPpKNuIvftk6u6vqhDnk1R80b8C2GBR6ywqy+1DcKBrevBg+bmw==", + "version": "0.30.5", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.5.tgz", + "integrity": "sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==", "dev": true, "dependencies": { "@jridgewell/sourcemap-codec": "^1.4.15" @@ -9364,9 +9371,9 @@ } }, "node_modules/minipass": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.3.tgz", - "integrity": "sha512-LhbbwCfz3vsb12j/WkWQPZfKTsgqIe1Nf/ti1pKjYESGLHIVjWU96G9/ljLH4F9mWNVhlQOm0VySdAWzf05dpg==", + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", "dev": true, "engines": { "node": ">=16 || 14 >=14.17" @@ -9556,18 +9563,18 @@ } }, "node_modules/ml-levenberg-marquardt": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/ml-levenberg-marquardt/-/ml-levenberg-marquardt-4.1.2.tgz", - "integrity": "sha512-bSs5HdflwpciC9H77LeobJf8Lss7zxKJTCbbSqUjjwFCjNo2ekiarLURlCiGf+KUKcgpz8HaETa9XCFQNdBPmA==", + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ml-levenberg-marquardt/-/ml-levenberg-marquardt-4.1.3.tgz", + "integrity": "sha512-CuR8mg1IIgb5IuDkdJBpnHmx+r6FpRDDPvYhAGq+4WVMLw/lu44P6PniyCrdvk1PNBmxVXN/LwBDMpQ/VaWhgA==", "dependencies": { "is-any-array": "^2.0.0", "ml-matrix": "^6.10.4" } }, "node_modules/ml-matrix": { - "version": "6.10.5", - "resolved": "https://registry.npmjs.org/ml-matrix/-/ml-matrix-6.10.5.tgz", - "integrity": "sha512-3RNGo8Ls3JR/f+8t0pNrvoDW6SmLNDBpQN6FzkFvNx7FJ3GL7Ic1kdxlDYavU3pRwxJFgBrRwZ0FwE+JjX+tvQ==", + "version": "6.10.7", + "resolved": "https://registry.npmjs.org/ml-matrix/-/ml-matrix-6.10.7.tgz", + "integrity": "sha512-v0AciHOXnCEYz8Dq4r5TeA+BFyIabBwng9y/rFVF43mhh3Ho2jDhJ6UZ0IUPRiedmfNcJDmI1j7YFdY30mHAcQ==", "dependencies": { "is-any-array": "^2.0.1", "ml-array-rescale": "^1.3.7" @@ -9698,15 +9705,15 @@ } }, "node_modules/ml-spectra-processing": { - "version": "12.5.1", - "resolved": "https://registry.npmjs.org/ml-spectra-processing/-/ml-spectra-processing-12.5.1.tgz", - "integrity": "sha512-Fnebk9NrGreqJpGOGB81EGQX0FZcZ9kqOkBw9EWWGrbHh9yD4QRBOwiHxwudF+ZY68gxc7eQSwpzM63UZ0+9GA==", + "version": "12.6.0", + "resolved": "https://registry.npmjs.org/ml-spectra-processing/-/ml-spectra-processing-12.6.0.tgz", + "integrity": "sha512-AwvWndgKa5rUsNGfp/WxIunQ4Il3MXKYGyBgNZQ679C8dytKNEfU9e5QGly7pKDxQYiI0ptxWCHPzIjc2JJtqA==", "dependencies": { "binary-search": "^1.3.6", "cheminfo-types": "^1.7.2", "fft.js": "^4.0.4", "is-any-array": "^2.0.1", - "ml-matrix": "^6.10.4", + "ml-matrix": "^6.10.5", "ml-xsadd": "^2.0.0", "spline-interpolator": "^1.0.0" } @@ -9869,63 +9876,62 @@ } }, "node_modules/nmr-load-save": { - "version": "0.21.0", - "resolved": "https://registry.npmjs.org/nmr-load-save/-/nmr-load-save-0.21.0.tgz", - "integrity": "sha512-NePybxt/7G63cpnCuaMHsQSjfh61Ny8kPB1bpiONF9/ayOUfRgtvM0n5+M18arbQZ3x147nZR66JzLVduX+H8g==", + "version": "0.22.4", + "resolved": "https://registry.npmjs.org/nmr-load-save/-/nmr-load-save-0.22.4.tgz", + "integrity": "sha512-U3HAOz67ilLKLKoCKVQciGma8e/FPE9bM/J9k+1BJEU+JgmWuLPt4bqIoGz8E2A5huvKD1/JW38SrMXZvOWCVg==", "dependencies": { "@lukeed/uuid": "^2.0.1", "@types/lodash.merge": "^4.6.7", - "brukerconverter": "^6.3.0", + "brukerconverter": "^6.3.1", "cheminfo-types": "^1.7.2", "convert-to-jcamp": "^5.4.9", - "filelist-utils": "^1.10.1", + "filelist-utils": "^1.10.2", "gyromagnetic-ratio": "^1.0.0", "is-any-array": "^2.0.1", - "jcampconverter": "^9.1.1", - "jeolconverter": "^1.0.1", + "jcampconverter": "^9.2.2", + "jeolconverter": "^1.0.2", "lodash.merge": "^4.6.2", - "ml-spectra-processing": "^12.5.0", + "ml-spectra-processing": "^12.5.1", "nmr-correlation": "^2.3.3", - "nmr-processing": "^11.0.1", - "nmredata": "^0.9.5", - "openchemlib": "^8.5.0", - "openchemlib-utils": "^5.2.0", + "nmr-processing": "^11.4.1", + "nmredata": "^0.9.7", + "openchemlib": "^8.7.0", + "openchemlib-utils": "^5.4.0", "sdf-parser": "^6.0.1", - "varian-converter": "^0.3.2" + "varian-converter": "^0.3.3" } }, "node_modules/nmr-processing": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/nmr-processing/-/nmr-processing-11.1.1.tgz", - "integrity": "sha512-GTgEEItdFBL520HFw3vj9fq5cNuSzeXL/nZVBuFC/s2LM1KiENzto0ztNJXjKMq5rkI6MtzEvQaERnDyTo7Ogg==", + "version": "11.4.1", + "resolved": "https://registry.npmjs.org/nmr-processing/-/nmr-processing-11.4.1.tgz", + "integrity": "sha512-pA/Z5vWcQcetaB3UHip0+XahjNQh7c9JPAE9uC+HHpRoagb13U4cnO4RLApdxOTKzjKwsXC4sSwtZKqJbpES4A==", "dependencies": { "@lukeed/uuid": "^2.0.1", - "@types/lodash": "^4.14.198", "binary-search": "^1.3.6", "cross-fetch": "^4.0.0", "form-data": "^4.0.0", "gyromagnetic-ratio": "^1.0.0", "is-any-array": "^2.0.1", "linear-sum-assignment": "^1.0.5", - "lodash": "^4.17.21", + "lodash.omit": "^4.5.0", "ml-airpls": "^1.0.2", "ml-baseline-correction-regression": "^1.0.2", "ml-direct": "^0.1.3", "ml-gsd": "^12.1.3", "ml-hclust": "^3.1.0", - "ml-levenberg-marquardt": "^4.1.2", - "ml-matrix": "^6.10.4", + "ml-levenberg-marquardt": "^4.1.3", + "ml-matrix": "^6.10.7", "ml-matrix-convolution": "^1.0.0", "ml-matrix-peaks-finder": "^1.0.0", "ml-peak-shape-generator": "^4.1.2", "ml-signal-processing": "^1.0.3", "ml-simple-clustering": "^0.1.0", "ml-sparse-matrix": "^2.1.0", - "ml-spectra-processing": "^12.5.1", + "ml-spectra-processing": "^12.6.0", "ml-tree-set": "^0.1.1", "nmr-correlation": "^2.3.3", "numeral": "^2.0.6", - "openchemlib-utils": "^5.2.0", + "openchemlib-utils": "^5.4.0", "spectrum-generator": "^8.0.8" } }, @@ -10061,9 +10067,9 @@ } }, "node_modules/object-inspect": { - "version": "1.12.3", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", - "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", "dev": true, "peer": true, "funding": { @@ -10211,14 +10217,14 @@ } }, "node_modules/openchemlib": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/openchemlib/-/openchemlib-8.5.0.tgz", - "integrity": "sha512-g9i7JfZRsEZSSxDYoBwd9tGwIp7ZAHTbCJMKphmLApY86hyObr0pOtocIPqsT14bmFJ2oM2A3F73wiuRKOwROg==" + "version": "8.7.1", + "resolved": "https://registry.npmjs.org/openchemlib/-/openchemlib-8.7.1.tgz", + "integrity": "sha512-skzgPw0F5ZxLe3y0Td4uyegNi8N2P3jj9EumIdki8eGzs4QhBtpOibkejcy9lLcItsnxwrO1se5cuaJWRB5MiQ==" }, "node_modules/openchemlib-utils": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/openchemlib-utils/-/openchemlib-utils-5.3.0.tgz", - "integrity": "sha512-t77nPVUs0wdo/ImSMous24HDorIDClOL5vLbf8dkpSLMavaG6Mvm06ru2+/IZjbqsS0l5mc25vFMoRbPtCiojA==", + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/openchemlib-utils/-/openchemlib-utils-5.4.0.tgz", + "integrity": "sha512-9DSgbhYWWBA+EgGQDXFJkuMoIF5oheQoU5teiF4E4FYKKsM42C7VCoMpYTZFQkIdgHYMlmEMOqofT8LHbHRVyg==", "dependencies": { "atom-sorter": "^2.0.0", "ensure-string": "^1.2.0", @@ -10456,9 +10462,9 @@ } }, "node_modules/peptide": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/peptide/-/peptide-2.0.0.tgz", - "integrity": "sha512-zhCkPS6qllu4FK3/Bh8RCC3vfyQvVwT+Eg0TDcypsi8SdQb+tKfB1AoHcEj1M664W17pnYqxzyGcr8kVhW0lvQ==" + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/peptide/-/peptide-2.1.0.tgz", + "integrity": "sha512-Mql9n9oQIRRIMtQjXS7RriHNKNdsKK7l5z3JL5dOS30zzUvMSfYJFSv8h+CGhxqK7a5wSRIZeqvzR9tfjpMUSQ==" }, "node_modules/picocolors": { "version": "1.0.0", @@ -10490,12 +10496,12 @@ } }, "node_modules/playwright": { - "version": "1.38.1", - "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.38.1.tgz", - "integrity": "sha512-oRMSJmZrOu1FP5iu3UrCx8JEFRIMxLDM0c/3o4bpzU5Tz97BypefWf7TuTNPWeCe279TPal5RtPPZ+9lW/Qkow==", + "version": "1.39.0", + "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.39.0.tgz", + "integrity": "sha512-naE5QT11uC/Oiq0BwZ50gDmy8c8WLPRTEWuSSFVG2egBka/1qMoSqYQcROMT9zLwJ86oPofcTH2jBY/5wWOgIw==", "dev": true, "dependencies": { - "playwright-core": "1.38.1" + "playwright-core": "1.39.0" }, "bin": { "playwright": "cli.js" @@ -10508,9 +10514,9 @@ } }, "node_modules/playwright-core": { - "version": "1.38.1", - "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.38.1.tgz", - "integrity": "sha512-tQqNFUKa3OfMf4b2jQ7aGLB8o9bS3bOY0yMEtldtC2+spf8QXG9zvXLTXUeRsoNuxEYMgLYR+NXfAa1rjKRcrg==", + "version": "1.39.0", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.39.0.tgz", + "integrity": "sha512-+k4pdZgs1qiM+OUkSjx96YiKsXsmb59evFoqv8SKO067qBA+Z2s/dCzJij/ZhdQcs2zlTAgRKfeiiLm8PQ2qvw==", "dev": true, "bin": { "playwright-core": "cli.js" @@ -10790,9 +10796,9 @@ } }, "node_modules/property-expr": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/property-expr/-/property-expr-2.0.5.tgz", - "integrity": "sha512-IJUkICM5dP5znhCckHSv30Q4b5/JA5enCtkRHYaOVOAocnH/1BQEYTC5NMfT3AVl/iXKdr3aqQbQn9DxyWknwA==" + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/property-expr/-/property-expr-2.0.6.tgz", + "integrity": "sha512-SVtmxhRE/CGkn3eZY1T6pC8Nln6Fr/lu1mKSgRud0eC73whjGfoAogbn78LkD8aFL0zz3bAFerKSnOl7NlErBA==" }, "node_modules/punycode": { "version": "1.4.1", @@ -10856,31 +10862,14 @@ "rc": "cli.js" } }, - "node_modules/rc-align": { - "version": "4.0.15", - "resolved": "https://registry.npmjs.org/rc-align/-/rc-align-4.0.15.tgz", - "integrity": "sha512-wqJtVH60pka/nOX7/IspElA8gjPNQKIx/ZqJ6heATCkXpe1Zg4cPVrMD2vC96wjsFFL8WsmhPbx9tdMo1qqlIA==", - "dev": true, - "dependencies": { - "@babel/runtime": "^7.10.1", - "classnames": "2.x", - "dom-align": "^1.7.0", - "rc-util": "^5.26.0", - "resize-observer-polyfill": "^1.5.1" - }, - "peerDependencies": { - "react": ">=16.9.0", - "react-dom": ">=16.9.0" - } - }, "node_modules/rc-menu": { - "version": "9.12.0", - "resolved": "https://registry.npmjs.org/rc-menu/-/rc-menu-9.12.0.tgz", - "integrity": "sha512-Apr/fRf5EcqWJ4nphHV6dTGZcLPaPzwY44q9hAtLJysY4rkC9Eg+ekj3uFx6opPWVruV2sJNWq/Po+HHtO48CA==", + "version": "9.12.2", + "resolved": "https://registry.npmjs.org/rc-menu/-/rc-menu-9.12.2.tgz", + "integrity": "sha512-NzloFH2pRUYmQ3S/YbJAvRkgCZaLvq0sRa5rgJtuIHLfPPprNHNyepeSlT64+dbVqI4qRWL44VN0lUCldCbbfg==", "dev": true, "dependencies": { "@babel/runtime": "^7.10.1", - "@rc-component/trigger": "^1.6.2", + "@rc-component/trigger": "^1.17.0", "classnames": "2.x", "rc-motion": "^2.4.3", "rc-overflow": "^1.3.1", @@ -10923,14 +10912,14 @@ } }, "node_modules/rc-resize-observer": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/rc-resize-observer/-/rc-resize-observer-1.3.1.tgz", - "integrity": "sha512-iFUdt3NNhflbY3mwySv5CA1TC06zdJ+pfo0oc27xpf4PIOvfZwZGtD9Kz41wGYqC4SLio93RVAirSSpYlV/uYg==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/rc-resize-observer/-/rc-resize-observer-1.4.0.tgz", + "integrity": "sha512-PnMVyRid9JLxFavTjeDXEXo65HCRqbmLBw9xX9gfC4BZiSzbLXKzW3jPz+J0P71pLbD5tBMTT+mkstV5gD0c9Q==", "dev": true, "dependencies": { "@babel/runtime": "^7.20.7", "classnames": "^2.2.1", - "rc-util": "^5.27.0", + "rc-util": "^5.38.0", "resize-observer-polyfill": "^1.5.1" }, "peerDependencies": { @@ -10939,19 +10928,25 @@ } }, "node_modules/rc-util": { - "version": "5.37.0", - "resolved": "https://registry.npmjs.org/rc-util/-/rc-util-5.37.0.tgz", - "integrity": "sha512-cPMV8DzaHI1KDaS7XPRXAf4J7mtBqjvjikLpQieaeOO7+cEbqY2j7Kso/T0R0OiEZTNcLS/8Zl9YrlXiO9UbjQ==", + "version": "5.38.0", + "resolved": "https://registry.npmjs.org/rc-util/-/rc-util-5.38.0.tgz", + "integrity": "sha512-yV/YBNdFn+edyBpBdCqkPE29Su0jWcHNgwx2dJbRqMrMfrUcMJUjCRV+ZPhcvWyKFJ63GzEerPrz9JIVo0zXmA==", "dev": true, "dependencies": { "@babel/runtime": "^7.18.3", - "react-is": "^16.12.0" + "react-is": "^18.2.0" }, "peerDependencies": { "react": ">=16.9.0", "react-dom": ">=16.9.0" } }, + "node_modules/rc-util/node_modules/react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "dev": true + }, "node_modules/rc/node_modules/ini": { "version": "1.3.8", "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", @@ -11239,12 +11234,12 @@ "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" }, "node_modules/react-router": { - "version": "6.16.0", - "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.16.0.tgz", - "integrity": "sha512-VT4Mmc4jj5YyjpOi5jOf0I+TYzGpvzERy4ckNSvSh2RArv8LLoCxlsZ2D+tc7zgjxcY34oTz2hZaeX5RVprKqA==", + "version": "6.17.0", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.17.0.tgz", + "integrity": "sha512-YJR3OTJzi3zhqeJYADHANCGPUu9J+6fT5GLv82UWRGSxu6oJYCKVmxUcaBQuGm9udpWmPsvpme/CdHumqgsoaA==", "dev": true, "dependencies": { - "@remix-run/router": "1.9.0" + "@remix-run/router": "1.10.0" }, "engines": { "node": ">=14.0.0" @@ -11254,13 +11249,13 @@ } }, "node_modules/react-router-dom": { - "version": "6.16.0", - "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.16.0.tgz", - "integrity": "sha512-aTfBLv3mk/gaKLxgRDUPbPw+s4Y/O+ma3rEN1u8EgEpLpPe6gNjIsWt9rxushMHHMb7mSwxRGdGlGdvmFsyPIg==", + "version": "6.17.0", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.17.0.tgz", + "integrity": "sha512-qWHkkbXQX+6li0COUUPKAUkxjNNqPJuiBd27dVwQGDNsuFBdMbrS6UZ0CLYc4CsbdLYTckn4oB4tGDuPZpPhaQ==", "dev": true, "dependencies": { - "@remix-run/router": "1.9.0", - "react-router": "6.16.0" + "@remix-run/router": "1.10.0", + "react-router": "6.17.0" }, "engines": { "node": ">=14.0.0" @@ -11690,9 +11685,9 @@ "integrity": "sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==" }, "node_modules/resolve": { - "version": "1.22.6", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.6.tgz", - "integrity": "sha512-njhxM7mV12JfufShqGy3Rz8j11RPdLy4xi15UurGJeoHLfJpVXKdh3ueuOqbYUcDZnffr6X739JBo5LzyahEsw==", + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", "dependencies": { "is-core-module": "^2.13.0", "path-parse": "^1.0.7", @@ -11748,9 +11743,9 @@ "integrity": "sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==" }, "node_modules/rollup": { - "version": "3.29.3", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.29.3.tgz", - "integrity": "sha512-T7du6Hum8jOkSWetjRgbwpM6Sy0nECYrYRSmZjayFcOddtKJWU4d17AC3HNUk7HRuqy4p+G7aEZclSHytqUmEg==", + "version": "3.29.4", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.29.4.tgz", + "integrity": "sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==", "dev": true, "bin": { "rollup": "dist/bin/rollup" @@ -12087,6 +12082,22 @@ "node": ">=8" } }, + "node_modules/set-function-length": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz", + "integrity": "sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==", + "dev": true, + "peer": true, + "dependencies": { + "define-data-property": "^1.1.1", + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/set-function-name": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.1.tgz", @@ -12305,9 +12316,9 @@ } }, "node_modules/spdx-license-ids": { - "version": "3.0.15", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.15.tgz", - "integrity": "sha512-lpT8hSQp9jAKp9mhtBU4Xjon8LPGBvLIuBiSVhMEtmLecTh2mO0tlqrAMp47tBXzMr13NJMQ2lf7RpQGLJ3HsQ==", + "version": "3.0.16", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.16.tgz", + "integrity": "sha512-eWN+LnM3GR6gPu35WxNgbGl8rmY1AEmoMDvL/QD6zYmPWgywxWqJWNdLGT+ke8dKNWrcYgYjPpG5gbTfghP8rw==", "dev": true }, "node_modules/spectrum-generator": { @@ -12620,9 +12631,9 @@ "dev": true }, "node_modules/stylelint": { - "version": "15.10.3", - "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-15.10.3.tgz", - "integrity": "sha512-aBQMMxYvFzJJwkmg+BUUg3YfPyeuCuKo2f+LOw7yYbU8AZMblibwzp9OV4srHVeQldxvSFdz0/Xu8blq2AesiA==", + "version": "15.11.0", + "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-15.11.0.tgz", + "integrity": "sha512-78O4c6IswZ9TzpcIiQJIN49K3qNoXTM8zEJzhaTE/xRTCZswaovSEVIa/uwbOltZrk16X4jAxjaOhzz/hTm1Kw==", "dev": true, "dependencies": { "@csstools/css-parser-algorithms": "^2.3.1", @@ -12632,12 +12643,12 @@ "balanced-match": "^2.0.0", "colord": "^2.9.3", "cosmiconfig": "^8.2.0", - "css-functions-list": "^3.2.0", + "css-functions-list": "^3.2.1", "css-tree": "^2.3.1", "debug": "^4.3.4", "fast-glob": "^3.3.1", "fastest-levenshtein": "^1.0.16", - "file-entry-cache": "^6.0.1", + "file-entry-cache": "^7.0.0", "global-modules": "^2.0.0", "globby": "^11.1.0", "globjoin": "^0.1.4", @@ -12646,13 +12657,13 @@ "import-lazy": "^4.0.0", "imurmurhash": "^0.1.4", "is-plain-object": "^5.0.0", - "known-css-properties": "^0.28.0", + "known-css-properties": "^0.29.0", "mathml-tag-names": "^2.1.3", "meow": "^10.1.5", "micromatch": "^4.0.5", "normalize-path": "^3.0.0", "picocolors": "^1.0.0", - "postcss": "^8.4.27", + "postcss": "^8.4.28", "postcss-resolve-nested-selector": "^0.1.1", "postcss-safe-parser": "^6.0.0", "postcss-selector-parser": "^6.0.13", @@ -12764,18 +12775,6 @@ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "dev": true }, - "node_modules/stylelint/node_modules/file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "dev": true, - "dependencies": { - "flat-cache": "^3.0.4" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, "node_modules/stylelint/node_modules/mdn-data": { "version": "2.0.30", "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz", @@ -13051,9 +13050,9 @@ } }, "node_modules/tinyspy": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-2.1.1.tgz", - "integrity": "sha512-XPJL2uSzcOyBMky6OFrusqWlzfFrXtE0hPuMgW8A2HmaqrPo4ZQHRN/V0QXN3FSjKxpsbRrFc5LI7KOwBsT1/w==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-2.2.0.tgz", + "integrity": "sha512-d2eda04AN/cPOR89F7Xv5bK/jrQEhmcLFe6HFldoeO9AJtps+fqEnh486vnT/8y4bw38pSyxDcTCAq+Ks2aJTg==", "dev": true, "engines": { "node": ">=14.0.0" @@ -13151,9 +13150,9 @@ } }, "node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.3.tgz", + "integrity": "sha512-mSxlJJwl3BMEQCUNnxXBU9jP4JBktcEGhURcPR6VQVlnP0FdDEsIaz0C35dXNGLyRfrATNofF0F5p2KPxQgB+w==" }, "node_modules/tsutils": { "version": "3.21.0", @@ -13299,9 +13298,9 @@ } }, "node_modules/ufo": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.3.0.tgz", - "integrity": "sha512-bRn3CsoojyNStCZe0BG0Mt4Nr/4KF+rhFlnNXybgqt5pXHNFRlqinSoQaTrGyzE4X8aHplSb+TorH+COin9Yxw==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.3.1.tgz", + "integrity": "sha512-uY/99gMLIOlJPwATcMVYfqDSxUR9//AUcgZMzwfSTJPDKzA1S8mX4VLqa+fiAtveraQUBCz4FFcwVZBGbwBXIw==", "dev": true }, "node_modules/unbox-primitive": { @@ -13320,6 +13319,12 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/undici-types": { + "version": "5.25.3", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.25.3.tgz", + "integrity": "sha512-Ga1jfYwRn7+cP9v8auvEXN1rX3sWqlayd4HP7OKk4mZWylEmu3KzXDUGrQUN6Ol7qo1gPvB2e5gX6udnyEPgdA==", + "dev": true + }, "node_modules/unique-string": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-3.0.0.tgz", @@ -13477,25 +13482,19 @@ "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" }, "node_modules/v8-to-istanbul": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.1.0.tgz", - "integrity": "sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA==", + "version": "9.1.3", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.1.3.tgz", + "integrity": "sha512-9lDD+EVI2fjFsMWXc6dy5JJzBsVTcQ2fVkfBvncZ6xJWG9wtBhOldG+mHkSL0+V1K/xgZz0JDO5UT5hFwHUghg==", "dev": true, "dependencies": { "@jridgewell/trace-mapping": "^0.3.12", "@types/istanbul-lib-coverage": "^2.0.1", - "convert-source-map": "^1.6.0" + "convert-source-map": "^2.0.0" }, "engines": { "node": ">=10.12.0" } }, - "node_modules/v8-to-istanbul/node_modules/convert-source-map": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", - "dev": true - }, "node_modules/validate-npm-package-license": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", @@ -13507,13 +13506,13 @@ } }, "node_modules/varian-converter": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/varian-converter/-/varian-converter-0.3.2.tgz", - "integrity": "sha512-+MWPYpwF98R0KzBX0gjGRspVnuP6U8yK+5n+vFhtIa4vCmSmxnB2obRnU6/XDrF6gZc2ojQrMR2k+RtqHzuDfg==", + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/varian-converter/-/varian-converter-0.3.3.tgz", + "integrity": "sha512-pu2WVuXeqtoy/RC1XIga6E1A4/4m+XhQSVzFdPjxlX2ih53qpHV3fl/g/UVvvJ9m9GQdOExEGKIK3JG4up8Upg==", "dependencies": { - "filelist-utils": "^1.8.0", + "filelist-utils": "^1.10.2", "iobuffer": "^5.3.2", - "ml-spectra-processing": "^12.0.0" + "ml-spectra-processing": "^12.5.1" } }, "node_modules/vary": { @@ -13526,9 +13525,9 @@ } }, "node_modules/vite": { - "version": "4.4.9", - "resolved": "https://registry.npmjs.org/vite/-/vite-4.4.9.tgz", - "integrity": "sha512-2mbUn2LlUmNASWwSCNSJ/EG2HuSRTnVNaydp6vMCm5VIqJsjMfbIWtbH2kDuwUVW5mMUKKZvGPX/rqeqVvv1XA==", + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/vite/-/vite-4.5.0.tgz", + "integrity": "sha512-ulr8rNLA6rkyFAlVWw2q5YJ91v098AFQ2R0PRFwPzREXOUJQPtFUG0t+/ZikhaOCDqFoDhN6/v8Sq0o4araFAw==", "dev": true, "dependencies": { "esbuild": "^0.18.10", @@ -13581,9 +13580,9 @@ } }, "node_modules/vite-node": { - "version": "0.34.5", - "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-0.34.5.tgz", - "integrity": "sha512-RNZ+DwbCvDoI5CbCSQSyRyzDTfFvFauvMs6Yq4ObJROKlIKuat1KgSX/Ako5rlDMfVCyMcpMRMTkJBxd6z8YRA==", + "version": "0.34.6", + "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-0.34.6.tgz", + "integrity": "sha512-nlBMJ9x6n7/Amaz6F3zJ97EBwR2FkzhBRxF5e+jE6LA3yi6Wtc2lyTij1OnDMIr34v5g/tVQtsVAzhT0jc5ygA==", "dev": true, "dependencies": { "cac": "^6.7.14", @@ -13604,23 +13603,23 @@ } }, "node_modules/vitest": { - "version": "0.34.5", - "resolved": "https://registry.npmjs.org/vitest/-/vitest-0.34.5.tgz", - "integrity": "sha512-CPI68mmnr2DThSB3frSuE5RLm9wo5wU4fbDrDwWQQB1CWgq9jQVoQwnQSzYAjdoBOPoH2UtXpOgHVge/uScfZg==", + "version": "0.34.6", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-0.34.6.tgz", + "integrity": "sha512-+5CALsOvbNKnS+ZHMXtuUC7nL8/7F1F2DnHGjSsszX8zCjWSSviphCb/NuS9Nzf4Q03KyyDRBAXhF/8lffME4Q==", "dev": true, "dependencies": { "@types/chai": "^4.3.5", "@types/chai-subset": "^1.3.3", "@types/node": "*", - "@vitest/expect": "0.34.5", - "@vitest/runner": "0.34.5", - "@vitest/snapshot": "0.34.5", - "@vitest/spy": "0.34.5", - "@vitest/utils": "0.34.5", + "@vitest/expect": "0.34.6", + "@vitest/runner": "0.34.6", + "@vitest/snapshot": "0.34.6", + "@vitest/spy": "0.34.6", + "@vitest/utils": "0.34.6", "acorn": "^8.9.0", "acorn-walk": "^8.2.0", "cac": "^6.7.14", - "chai": "^4.3.7", + "chai": "^4.3.10", "debug": "^4.3.4", "local-pkg": "^0.4.3", "magic-string": "^0.30.1", @@ -13631,7 +13630,7 @@ "tinybench": "^2.5.0", "tinypool": "^0.7.0", "vite": "^3.1.0 || ^4.0.0 || ^5.0.0-0", - "vite-node": "0.34.5", + "vite-node": "0.34.6", "why-is-node-running": "^2.2.2" }, "bin": { @@ -13687,9 +13686,9 @@ "dev": true }, "node_modules/vscode-uri": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/vscode-uri/-/vscode-uri-3.0.7.tgz", - "integrity": "sha512-eOpPHogvorZRobNqJGhapa0JdwaxpjVvyBp0QIUMRMSf8ZAlqOdEquKuRmw9Qwu0qXtJIWqFtMkmvJjUZmMjVA==", + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/vscode-uri/-/vscode-uri-3.0.8.tgz", + "integrity": "sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw==", "dev": true }, "node_modules/warning": { @@ -13805,14 +13804,14 @@ } }, "node_modules/which-typed-array": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.11.tgz", - "integrity": "sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==", + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.13.tgz", + "integrity": "sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==", "dev": true, "peer": true, "dependencies": { "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", + "call-bind": "^1.0.4", "for-each": "^0.3.3", "gopd": "^1.0.1", "has-tostringtag": "^1.0.0" @@ -14059,9 +14058,9 @@ } }, "node_modules/yup": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/yup/-/yup-1.3.1.tgz", - "integrity": "sha512-2stNyEF96SnPUxzRL99kt1bEHWytnvC2stwmTTqjoFXZRf63JtYK2pQt2AJvWcQvkrAzr/pcXvc6c5vrqsBzDg==", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/yup/-/yup-1.3.2.tgz", + "integrity": "sha512-6KCM971iQtJ+/KUaHdrhVr2LDkfhBtFPRnsG1P8F4q3uUVQ2RfEM9xekpha9aA4GXWJevjM10eDcPQ1FfWlmaQ==", "dependencies": { "property-expr": "^2.0.5", "tiny-case": "^1.0.3", diff --git a/package.json b/package.json index 475eb42ec..1b159e99a 100644 --- a/package.json +++ b/package.json @@ -56,7 +56,7 @@ "react-dom": ">=18.0.0" }, "dependencies": { - "@blueprintjs/core": "^5.3.3", + "@blueprintjs/core": "^5.5.1", "@emotion/react": "^11.11.1", "@emotion/styled": "^11.11.0", "@lukeed/uuid": "^2.0.1", @@ -70,7 +70,7 @@ "file-saver": "^2.0.5", "filelist-utils": "^1.10.2", "formik": "^2.4.5", - "immer": "^10.0.2", + "immer": "^10.0.3", "jszip": "^3.10.1", "lodash": "^4.17.21", "ml-airpls": "^1.0.2", @@ -81,17 +81,17 @@ "ml-baseline-correction-regression": "^1.0.2", "ml-conrec": "^5.0.2", "ml-gsd": "^12.1.3", - "ml-matrix": "^6.10.5", - "ml-spectra-processing": "^12.5.1", + "ml-matrix": "^6.10.6", + "ml-spectra-processing": "^12.6.0", "ml-stat": "^1.3.3", "multiplet-analysis": "^2.1.2", "nmr-correlation": "^2.3.3", - "nmr-load-save": "^0.21.0", - "nmr-processing": "^11.1.1", + "nmr-load-save": "^0.22.4", + "nmr-processing": "^11.4.1", "nmredata": "^0.9.7", "numeral": "^2.0.6", - "openchemlib": "^8.5.0", - "openchemlib-utils": "^5.3.0", + "openchemlib": "^8.7.1", + "openchemlib-utils": "^5.4.0", "papaparse": "^5.4.1", "re-resizable": "6.9.11", "react-d3-utils": "^1.0.0", @@ -110,41 +110,42 @@ "react-transition-group": "^4.4.5", "react-use": "^17.4.0", "smart-array-filter": "^4.0.2", - "yup": "^1.3.1" + "yup": "^1.3.2" }, "devDependencies": { "@babel/plugin-transform-modules-commonjs": "^7.23.0", "@babel/preset-react": "^7.22.15", - "@babel/preset-typescript": "^7.23.0", - "@playwright/test": "^1.38.1", + "@babel/preset-typescript": "^7.23.2", + "@playwright/test": "^1.39.0", "@simbathesailor/use-what-changed": "^2.0.0", - "@types/d3": "^7.4.1", - "@types/node": "^20.7.0", - "@types/papaparse": "^5.3.9", - "@types/react": "^18.2.23", - "@types/react-dom": "^18.2.8", - "@types/react-table": "^7.7.16", + "@types/d3": "^7.4.2", + "@types/lodash": "^4.14.200", + "@types/node": "^20.8.7", + "@types/papaparse": "^5.3.10", + "@types/react": "^18.2.29", + "@types/react-dom": "^18.2.14", + "@types/react-table": "^7.7.17", "@vitejs/plugin-react-swc": "^3.4.0", - "@vitest/coverage-v8": "^0.34.5", + "@vitest/coverage-v8": "^0.34.6", "cross-env": "^7.0.3", - "cspell": "^7.3.6", - "eslint": "^8.50.0", + "cspell": "^7.3.8", + "eslint": "^8.51.0", "eslint-config-cheminfo-react": "^10.0.0", "eslint-config-cheminfo-typescript": "^12.0.4", "modern-normalize": "^2.0.0", "postcss-styled-syntax": "^0.5.0", "prettier": "^3.0.3", - "rc-menu": "^9.12.0", + "rc-menu": "^9.12.2", "react": "^18.2.0", "react-dom": "^18.2.0", - "react-router-dom": "^6.16.0", + "react-router-dom": "^6.17.0", "rimraf": "^5.0.5", "rollup-plugin-analyzer": "^4.0.0", "serve": "^14.2.1", - "stylelint": "^15.10.3", + "stylelint": "^15.11.0", "stylelint-config-standard": "^34.0.0", "typescript": "^5.2.2", - "vite": "^4.4.9", - "vitest": "^0.34.5" + "vite": "^4.5.0", + "vitest": "^0.34.6" } } diff --git a/public/data/brukerFolders/alphaIonone.json b/public/data/brukerFolders/alphaIonone.json new file mode 100644 index 000000000..337da7da7 --- /dev/null +++ b/public/data/brukerFolders/alphaIonone.json @@ -0,0 +1,41 @@ +{ + "data": { + "spectra": [ + { + "sourceSelector": { + "files": [ + "data/brukerFolders/alphaIonone.zip/alphaIonone/3/acqu2s", + "data/brukerFolders/alphaIonone.zip/alphaIonone/3/acqus", + "data/brukerFolders/alphaIonone.zip/alphaIonone/3/pdata/1/procs", + "data/brukerFolders/alphaIonone.zip/alphaIonone/3/pdata/1/proc2s", + "data/brukerFolders/alphaIonone.zip/alphaIonone/3/pdata/1/2rr", + "data/brukerFolders/alphaIonone.zip/alphaIonone/3/pdata/1/2ri", + "data/brukerFolders/alphaIonone.zip/alphaIonone/3/pdata/1/2ir", + "data/brukerFolders/alphaIonone.zip/alphaIonone/3/pdata/1/2ii" + ] + }, + "filters": [], + "display": { + "isPositiveVisible": true, + "isNegativeVisible": true, + "isVisible": true, + "dimension": 2 + }, + "zones": { + "values": [], + "options": {} + } + } + ], + "molecules": [], + "source": { + "baseURL": "", + "entries": [ + { + "relativePath": "data/brukerFolders/alphaIonone.zip" + } + ] + } + }, + "version": 4 +} \ No newline at end of file diff --git a/public/data/brukerFolders/alphaIonone.zip b/public/data/brukerFolders/alphaIonone.zip new file mode 100644 index 000000000..a64c70132 Binary files /dev/null and b/public/data/brukerFolders/alphaIonone.zip differ diff --git a/public/data/oxfordInstruments/ethylCrotonate.zip b/public/data/oxfordInstruments/ethylCrotonate.zip new file mode 100644 index 000000000..fa0de2119 Binary files /dev/null and b/public/data/oxfordInstruments/ethylCrotonate.zip differ diff --git a/public/data/oxfordInstruments/oxfordCosy.json b/public/data/oxfordInstruments/oxfordCosy.json new file mode 100644 index 000000000..17a2a12bd --- /dev/null +++ b/public/data/oxfordInstruments/oxfordCosy.json @@ -0,0 +1,174 @@ +{ + "data": { + "source": { + "baseURL": "", + "entries": [ + { + "relativePath": "data/oxfordInstruments/ethylCrotonate.zip" + } + ] + }, + "spectra": [ + { + "sourceSelector": { + "files": [ + "data/oxfordInstruments/ethylCrotonate.zip/Ethyl Crotonate, 1H-1H COSY.jdx" + ] + }, + "filters": [ + { + "name": "blpDimension1", + "label": "Backward-LP Dimension 1", + "value": {}, + "flag": true, + "isDeleteAllow": true + }, + { + "name": "apodizationDimension1", + "label": "Apodization on Dimension 1", + "value": { + "compose": { + "shapes": [ + { + "shape": { + "kind": "sineBell", + "options": { + "offset": 0, + "exponent": 2 + } + } + } + ] + }, + "apply": true + }, + "flag": true, + "isDeleteAllow": true + }, + { + "name": "fftDimension1", + "label": "FFT Dimension 1", + "value": { + "phaseCorrection": { + "mode": "mc" + }, + "zeroFilling": { + "nbPoints": 2048 + } + }, + "flag": true, + "isDeleteAllow": true + }, + { + "name": "flpDimension2", + "label": "Forward-LP Dimension 2", + "value": {}, + "flag": true, + "isDeleteAllow": true + }, + { + "name": "apodizationDimension2", + "label": "Apodization on Dimension 2", + "value": { + "compose": { + "shapes": [ + { + "shape": { + "kind": "sineBell", + "options": { + "offset": 0, + "exponent": 2 + } + } + } + ] + }, + "apply": true + }, + "flag": true, + "isDeleteAllow": true + }, + { + "name": "fftDimension2", + "label": "FFT Dimension 2", + "value": { + "phaseCorrection": { + "mode": "mc" + }, + "zeroFilling": { + "nbPoints": 2048 + } + }, + "flag": true, + "isDeleteAllow": true + }, + { + "name": "symmetrizeCosyLike", + "label": "symmetrize COSY-like", + "value": {}, + "flag": true, + "isDeleteAllow": true + } + ] + }, + { + "sourceSelector": { + "files": [ + "data/oxfordInstruments/ethylCrotonate.zip/Ethyl Crotonate, 1H FID.jdx" + ] + }, + "filters": [ + { + "name": "backwardLinearPrediction", + "label": "Backward Linear Prediction Filter", + "value": { + "nbInputs": 16384 + }, + "flag": true, + "isDeleteAllow": true + }, + { + "name": "apodization", + "label": "Apodization", + "value": { + "lineBroadening": 1, + "gaussBroadening": 0, + "lineBroadeningCenter": 0 + }, + "flag": true, + "isDeleteAllow": true + }, + { + "name": "zeroFilling", + "label": "Zero Filling", + "value": { + "nbPoints": 32768 + }, + "flag": true, + "isDeleteAllow": true + }, + { + "name": "fft", + "label": "FFT", + "value": {}, + "flag": true, + "isDeleteAllow": true + }, + { + "name": "phaseCorrection", + "label": "Phase correction", + "value": { + "ph0": -126, + "ph1": 0, + "absolute": false + }, + "flag": true, + "isDeleteAllow": true + } + ] + } + ], + "molecules": [] + }, + "version": 5 +} \ No newline at end of file diff --git a/public/data/oxfordInstruments/oxfordHSQC.json b/public/data/oxfordInstruments/oxfordHSQC.json new file mode 100644 index 000000000..2c9f8e039 --- /dev/null +++ b/public/data/oxfordInstruments/oxfordHSQC.json @@ -0,0 +1,112 @@ +{ + "data": { + "source": { + "baseURL": "", + "entries": [ + { + "relativePath": "data/oxfordInstruments/ethylCrotonate.zip" + } + ] + }, + "spectra": [ + { + "sourceSelector": { + "files": [ + "data/oxfordInstruments/ethylCrotonate.zip/Ethyl Crotonate, 1H-13C HSQC-ME.jdx" + ] + }, + "filters": [ + { + "name": "blpDimension1", + "value": {}, + "flag": true, + "isDeleteAllow": true + }, + { + "name": "apodizationDimension1", + "value": { + "compose": { + "shapes": [ + { + "shape": { + "kind": "traf", + "options": { + "lb": 0.5 + } + } + } + ] + }, + "apply": false + }, + "flag": true, + "isDeleteAllow": true + }, + { + "name": "fftDimension1", + "label": "FFT on Dimension 1", + "value": { + "zeroFilling": { + "nbPoints": 2048 + }, + "phaseCorrection": { + "mode": "pk", + "ph0": -47, + "ph1": 236 + } + }, + "flag": true, + "isDeleteAllow": true + }, + { + "name": "flpDimension2", + "value": {}, + "flag": true, + "isDeleteAllow": true + }, + { + "name": "apodizationDimension2", + "value": { + "compose": { + "shapes": [ + { + "shape": { + "kind": "traf", + "options": { + "lb": 0.5 + } + } + }, + { + "shape": { + "kind": "sineBell", + "options": { + "offset": 0.5, + "exponent": 2 + } + } + } + ] + }, + "apply": false + }, + "flag": true, + "isDeleteAllow": true + }, + { + "name": "fftDimension2", + "value": { + "zeroFilling": { + "nbPoints": 2048 + } + }, + "flag": true, + "isDeleteAllow": true + } + ] + } + ], + "molecules": [] + }, + "version": 5 +} \ No newline at end of file diff --git a/public/data/oxfordInstruments/oxfordInstruments.json b/public/data/oxfordInstruments/oxfordInstruments.json new file mode 100644 index 000000000..901f9c8a9 --- /dev/null +++ b/public/data/oxfordInstruments/oxfordInstruments.json @@ -0,0 +1,82 @@ +{ + "data": { + "source": { + "baseURL": "", + "entries": [ + { + "relativePath": "data/oxfordInstruments/ethylCrotonate.zip" + } + ] + }, + "spectra": [ + { + "sourceSelector": { + "files": [ + "data/oxfordInstruments/ethylCrotonate.zip/Ethyl Crotonate, 1H FID.jdx" + ] + }, + "filters": [ + { + "name": "digitalFilter", + "label": "Digital Filter", + "value": { + "digitalFilterValue": 0 + }, + "id": "00167756-e605-4129-ae90-7f17274ac7ee", + "flag": true, + "isDeleteAllow": false + }, + { + "name": "apodization", + "label": "Apodization", + "value": { + "lineBroadening": 1, + "gaussBroadening": 0, + "lineBroadeningCenter": 0 + }, + "flag": true, + "isDeleteAllow": true + }, + { + "name": "zeroFilling", + "label": "Zero Filling", + "value": { + "nbPoints": 32768 + }, + "flag": true, + "isDeleteAllow": true + }, + { + "name": "backwardLinearPrediction", + "label": "Backward Linear Prediction Filter", + "value": { + "nbInputs": 16384 + }, + "flag": true, + "isDeleteAllow": true + }, + { + "name": "fft", + "label": "FFT", + "value": {}, + "flag": true, + "isDeleteAllow": true + }, + { + "name": "phaseCorrection", + "label": "Phase correction", + "value": { + "ph0": -126, + "ph1": 0, + "absolute": false + }, + "flag": true, + "isDeleteAllow": true + } + ] + } + ], + "molecules": [] + }, + "version": 5 +} \ No newline at end of file diff --git a/src/component/1d-2d/tools/BrushX.tsx b/src/component/1d-2d/tools/BrushX.tsx index fca3af36f..5cedb9b64 100644 --- a/src/component/1d-2d/tools/BrushX.tsx +++ b/src/component/1d-2d/tools/BrushX.tsx @@ -10,6 +10,7 @@ const styles: Record<'container', CSSProperties> = { position: 'absolute', top: '0px', left: '0px', + zIndex: 9, }, }; diff --git a/src/component/1d-2d/tools/BrushXY.tsx b/src/component/1d-2d/tools/BrushXY.tsx index ece9b5d5b..a58d144f5 100644 --- a/src/component/1d-2d/tools/BrushXY.tsx +++ b/src/component/1d-2d/tools/BrushXY.tsx @@ -11,6 +11,7 @@ const styles: Record<'container', CSSProperties> = { top: '0px', left: '0px', zoom: '100%', + zIndex: 9, }, }; @@ -21,6 +22,7 @@ const allowTools = new Set([ options.peakPicking.id, options.integral.id, options.phaseCorrection.id, + options.phaseCorrectionTwoDimensions.id, options.baselineCorrection.id, options.rangePicking.id, options.zonePicking.id, diff --git a/src/component/1d-2d/tools/CrossLinePointer.tsx b/src/component/1d-2d/tools/CrossLinePointer.tsx index c6407323d..08ca23218 100644 --- a/src/component/1d-2d/tools/CrossLinePointer.tsx +++ b/src/component/1d-2d/tools/CrossLinePointer.tsx @@ -20,6 +20,7 @@ const allowTools = new Set([ options.apodization.id, options.equalizer.id, options.baselineCorrection.id, + options.phaseCorrectionTwoDimensions.id, options.zonePicking.id, options.slicing.id, options.integral.id, @@ -68,6 +69,7 @@ function CrossLinePointer() { overflow: 'visible', width: 2 * width, height: 2 * height, + zIndex: 9, }} > diff --git a/src/component/1d/Chart1D.tsx b/src/component/1d/Chart1D.tsx index efbcbd782..c68dc0f47 100644 --- a/src/component/1d/Chart1D.tsx +++ b/src/component/1d/Chart1D.tsx @@ -14,6 +14,7 @@ import { PeakEditionProvider } from './peaks/PeakEditionManager'; import Peaks from './peaks/Peaks'; import PeaksShapes from './peaks/PeaksShapes'; import Ranges from './ranges/Ranges'; +import RangesIntegrals from './ranges/RangesIntegrals'; import BaseLineZones from './tool/BaseLineZones'; function Chart1D({ mode, width, height, margin, displayerKey }) { @@ -45,6 +46,7 @@ function Chart1D({ mode, width, height, margin, displayerKey }) { + diff --git a/src/component/1d/Viewer1D.tsx b/src/component/1d/Viewer1D.tsx index 3fa8eeb93..11416e4b6 100644 --- a/src/component/1d/Viewer1D.tsx +++ b/src/component/1d/Viewer1D.tsx @@ -289,30 +289,30 @@ function Viewer1D({ emptyText = undefined }: Viewer1DProps) { const handleZoom = useCallback( (event) => { - dispatch({ type: 'SET_ZOOM', payload: { event, selectedTool } }); + dispatch({ type: 'SET_ZOOM', payload: { event } }); }, - [dispatch, selectedTool], + [dispatch], ); const mouseClick = useCallback( - (position) => { + (event) => { if (!scaleState.scaleX) return; - const xPPM = scaleState.scaleX().invert(position.x); + const xPPM = scaleState.scaleX().invert(event.x); const propagateEvent = () => { Events.emit('mouseClick', { - ...position, + ...event, xPPM, }); }; - if (position.shiftKey) { + if (event.shiftKey) { switch (selectedTool) { case options.peakPicking.id: dispatch({ type: 'ADD_PEAK', - payload: position, + payload: event, }); break; case options.editRange.id: @@ -330,20 +330,21 @@ function Viewer1D({ emptyText = undefined }: Viewer1DProps) { payload: { cutValue: xPPM }, }); break; - default: - break; - } - } else { - switch (selectedTool) { + case options.phaseCorrection.id: dispatch({ - type: 'SET_VERTICAL_INDICATOR_X_POSITION', + type: 'SET_ONE_DIMENSION_PIVOT_POINT', payload: { - position: position.x, + value: event.x, }, }); - break; + break; + default: + break; + } + } else { + switch (selectedTool) { default: } } diff --git a/src/component/1d/integral/IntegralsSeries.tsx b/src/component/1d/integral/IntegralsSeries.tsx index 1cd31cf40..219637d7f 100644 --- a/src/component/1d/integral/IntegralsSeries.tsx +++ b/src/component/1d/integral/IntegralsSeries.tsx @@ -1,20 +1,45 @@ +import { xyIntegral, xyMaxY } from 'ml-spectra-processing'; import { Spectrum1D } from 'nmr-load-save'; +import { Integral as IntegralType } from 'nmr-processing'; import { useChartData } from '../../context/ChartContext'; - -import Integral from './Integral'; import useSpectrum from '../../hooks/useSpectrum'; +import { Integration } from './Integration'; + const emptyData = { integrals: {}, info: {}, display: {} }; -function IntegralsSeries() { +export interface IntegralData extends IntegralType { + x: Float64Array; + y: Float64Array; +} + +export default function IntegralsSeries() { const { displayerKey, view: { spectra: { activeTab: nucleus }, }, } = useChartData(); + const integrals = useIntegrals(); + + if (!integrals) return null; + + return ( + + {integrals.values.map((integral) => ( + + ))} + + ); +} +function useIntegrals() { const spectrum = useSpectrum(emptyData) as Spectrum1D; if ( @@ -25,15 +50,27 @@ function IntegralsSeries() { return null; } - return ( - - - {spectrum.integrals.values.map((integral) => ( - - ))} - - - ); -} + let max = Number.NEGATIVE_INFINITY; + const values: IntegralData[] = []; -export default IntegralsSeries; + const { + data: { x, re }, + integrals, + } = spectrum; + for (const integral of integrals?.values || []) { + const { from, to } = integral; + const integralData = xyIntegral( + { x, y: re }, + { + from, + to, + reverse: true, + }, + ); + values.push({ ...integral, ...integralData } as IntegralData); + const value = xyMaxY(integralData); + if (value > max) max = value; + } + + return { max, values }; +} diff --git a/src/component/1d/integral/Integral.tsx b/src/component/1d/integral/Integration.tsx similarity index 60% rename from src/component/1d/integral/Integral.tsx rename to src/component/1d/integral/Integration.tsx index 90981aa4d..e4ee53496 100644 --- a/src/component/1d/integral/Integral.tsx +++ b/src/component/1d/integral/Integration.tsx @@ -1,17 +1,20 @@ -import { Integral as IntegralType } from 'nmr-processing'; - +import { useActiveSpectrumIntegralsViewState } from '../../hooks/useActiveSpectrumIntegralsViewState'; import useIntegralPath from '../../hooks/useIntegralPath'; import { usePanelPreferences } from '../../hooks/usePanelPreferences'; import IntegralResizable from './IntegralResizable'; +import { IntegralData } from './IntegralsSeries'; interface IntegralProps { - integral: IntegralType; + integral: IntegralData; nucleus: string; + max: number; } -function Integral({ integral, nucleus }: IntegralProps) { - const path = useIntegralPath(integral); +export function Integration({ integral, nucleus, max }: IntegralProps) { + const { x, y } = integral; + const { scaleRatio } = useActiveSpectrumIntegralsViewState(); + const path = useIntegralPath({ x, y, max, scaleRatio }); const integralPreferences = usePanelPreferences('integrals', nucleus); return ( @@ -31,5 +34,3 @@ function Integral({ integral, nucleus }: IntegralProps) { ); } - -export default Integral; diff --git a/src/component/1d/peaks/PeakAnnotationsSpreadMode.tsx b/src/component/1d/peaks/PeakAnnotationsSpreadMode.tsx index a54b1f79f..f96dbb964 100644 --- a/src/component/1d/peaks/PeakAnnotationsSpreadMode.tsx +++ b/src/component/1d/peaks/PeakAnnotationsSpreadMode.tsx @@ -1,16 +1,17 @@ +import { memo } from 'react'; + import { useHighlight } from '../../highlight'; import { formatNumber } from '../../utility/formatNumber'; +import { getDecimalsCount } from '../utilities/getDecimalsCount'; import { resolve } from '../utilities/intersectionResolver'; import { PeakEditionListener } from './PeakEditionManager'; -import { getDecimalsCount } from '../utilities/getDecimalsCount'; import { PeaksAnnotationsProps, PeaksSource, getHighlightExtraId, getHighlightSource, } from './Peaks'; -import { memo } from 'react'; const notationWidth = 10; const notationMargin = 2; diff --git a/src/component/1d/peaks/PeakEditionManager.tsx b/src/component/1d/peaks/PeakEditionManager.tsx index 3ba0c0e86..99bc8711d 100644 --- a/src/component/1d/peaks/PeakEditionManager.tsx +++ b/src/component/1d/peaks/PeakEditionManager.tsx @@ -12,8 +12,8 @@ import * as Yup from 'yup'; import { useChartData } from '../../context/ChartContext'; import { useDispatch } from '../../context/DispatchContext'; import { useScaleChecked } from '../../context/ScaleContext'; -import { useActiveSpectrum } from '../../hooks/useActiveSpectrum'; import FormikInput from '../../elements/formik/FormikInput'; +import { useActiveSpectrum } from '../../hooks/useActiveSpectrum'; const validationSchema = Yup.object({ value: Yup.number().required(), diff --git a/src/component/1d/peaks/Peaks.tsx b/src/component/1d/peaks/Peaks.tsx index 7b9ff9673..8992857b2 100644 --- a/src/component/1d/peaks/Peaks.tsx +++ b/src/component/1d/peaks/Peaks.tsx @@ -1,16 +1,16 @@ import { Spectrum1D } from 'nmr-load-save'; +import { NMRPeak1D, Peak1D, Range } from 'nmr-processing'; +import { memo, useMemo } from 'react'; import { useChartData } from '../../context/ChartContext'; import { useActiveSpectrumPeaksViewState } from '../../hooks/useActiveSpectrumPeaksViewState'; +import { useActiveSpectrumRangesViewState } from '../../hooks/useActiveSpectrumRangesViewState'; +import { usePanelPreferences } from '../../hooks/usePanelPreferences'; import useSpectrum from '../../hooks/useSpectrum'; +import { useScaleX } from '../utilities/scale'; import PeakAnnotations from './PeakAnnotations'; import PeakAnnotationsSpreadMode from './PeakAnnotationsSpreadMode'; -import { NMRPeak1D, Peak1D, Range } from 'nmr-processing'; -import { memo, useMemo } from 'react'; -import { useScaleX } from '../utilities/scale'; -import { usePanelPreferences } from '../../hooks/usePanelPreferences'; -import { useActiveSpectrumRangesViewState } from '../../hooks/useActiveSpectrumRangesViewState'; interface Peak1DWithParentKeys extends Peak1D { parentKeys?: string[]; diff --git a/src/component/1d/ranges/RangeIntegral.tsx b/src/component/1d/ranges/RangeIntegral.tsx deleted file mode 100644 index e75faf778..000000000 --- a/src/component/1d/ranges/RangeIntegral.tsx +++ /dev/null @@ -1,21 +0,0 @@ -import useIntegralPath from '../../hooks/useIntegralPath'; - -interface IntegralProps { - range: { id: string; from: number; to: number; integral?: number }; -} - -function RangeIntegral({ range }: IntegralProps) { - const path = useIntegralPath(range); - - return ( - - ); -} - -export default RangeIntegral; diff --git a/src/component/1d/ranges/Ranges.tsx b/src/component/1d/ranges/Ranges.tsx index 16648b219..c509d6784 100644 --- a/src/component/1d/ranges/Ranges.tsx +++ b/src/component/1d/ranges/Ranges.tsx @@ -1,6 +1,6 @@ import { Spectrum1D } from 'nmr-load-save'; import { Ranges as RangesProps } from 'nmr-processing'; -import { Fragment, memo } from 'react'; +import { memo } from 'react'; import { useChartData } from '../../context/ChartContext'; import { useActiveSpectrumRangesViewState } from '../../hooks/useActiveSpectrumRangesViewState'; @@ -8,14 +8,12 @@ import { usePanelPreferences } from '../../hooks/usePanelPreferences'; import useSpectrum from '../../hooks/useSpectrum'; import Range from './Range'; -import RangeIntegral from './RangeIntegral'; interface RangesInnerProps { displayerKey: string; selectedTool: string; ranges: RangesProps; showMultiplicityTrees: boolean; - showRangesIntegrals: boolean; relativeFormat: string; } @@ -24,21 +22,18 @@ function RangesInner({ displayerKey, selectedTool, showMultiplicityTrees, - showRangesIntegrals, relativeFormat, }: RangesInnerProps) { return ( {ranges?.values?.map((range) => ( - - - {showRangesIntegrals && } - + ))} ); @@ -56,7 +51,7 @@ export default function Ranges() { }, toolOptions: { selectedTool }, } = useChartData(); - const { showMultiplicityTrees, showRangesIntegrals } = + const { showMultiplicityTrees, showIntegrals } = useActiveSpectrumRangesViewState(); const spectrum = useSpectrum(emptyData) as Spectrum1D; const rangesPreferences = usePanelPreferences('ranges', activeTab); @@ -74,7 +69,7 @@ export default function Ranges() { ranges={spectrum.ranges} {...{ showMultiplicityTrees, - showRangesIntegrals, + showIntegrals, selectedTool, displayerKey, relativeFormat: rangesPreferences.relative.format, diff --git a/src/component/1d/ranges/RangesIntegrals.tsx b/src/component/1d/ranges/RangesIntegrals.tsx new file mode 100644 index 000000000..d0bbc3792 --- /dev/null +++ b/src/component/1d/ranges/RangesIntegrals.tsx @@ -0,0 +1,91 @@ +import { xyIntegral, xyMaxY } from 'ml-spectra-processing'; +import { Spectrum1D } from 'nmr-load-save'; + +import { useChartData } from '../../context/ChartContext'; +import { useActiveSpectrumRangesViewState } from '../../hooks/useActiveSpectrumRangesViewState'; +import useIntegralPath from '../../hooks/useIntegralPath'; +import useSpectrum from '../../hooks/useSpectrum'; + +interface IntegralData { + x: Float64Array; + y: Float64Array; + // eslint-disable-next-line react/no-unused-prop-types + id: string; +} + +interface IntegralProps extends IntegralData { + max: number; +} + +function Integral(props: IntegralProps) { + const { x, y, max } = props; + const { integralsScaleRatio } = useActiveSpectrumRangesViewState(); + const path = useIntegralPath({ x, y, max, scaleRatio: integralsScaleRatio }); + + return ( + + ); +} + +const emptyData = { ranges: {}, info: {}, display: {} }; + +function RangesIntegrals() { + const { displayerKey } = useChartData(); + const spectrum = useSpectrum(emptyData) as Spectrum1D; + const integrals = useIntegrals(); + if ( + !spectrum.ranges?.values || + !spectrum.display.isVisible || + spectrum.info?.isFid || + !integrals + ) { + return null; + } + + return ( + + {integrals.values.map((integral) => { + return ; + })} + + ); +} + +function useIntegrals() { + const spectrum = useSpectrum() as Spectrum1D; + const { showIntegrals } = useActiveSpectrumRangesViewState(); + + if (!spectrum || !showIntegrals) return; + + let max = Number.NEGATIVE_INFINITY; + const values: IntegralData[] = []; + + const { + data: { x, re }, + ranges, + } = spectrum; + for (const range of ranges?.values || []) { + const { from, to, id } = range; + const integral = xyIntegral( + { x, y: re }, + { + from, + to, + reverse: true, + }, + ); + values.push({ ...integral, id } as IntegralData); + const value = xyMaxY(integral); + if (value > max) max = value; + } + + return { max, values }; +} + +export default RangesIntegrals; diff --git a/src/component/1d/tool/XLabelPointer.tsx b/src/component/1d/tool/XLabelPointer.tsx index 1725f7ce2..548a97083 100644 --- a/src/component/1d/tool/XLabelPointer.tsx +++ b/src/component/1d/tool/XLabelPointer.tsx @@ -1,12 +1,12 @@ import { Spectrum1D } from 'nmr-load-save'; -import { useCallback, useMemo, CSSProperties } from 'react'; +import { useCallback, CSSProperties } from 'react'; import { useBrushTracker } from '../../EventsTrackers/BrushTracker'; import { useMouseTracker } from '../../EventsTrackers/MouseTracker'; import { useChartData } from '../../context/ChartContext'; import { useScaleChecked } from '../../context/ScaleContext'; -import { useActiveSpectrum } from '../../hooks/useActiveSpectrum'; import { useFormatNumberByNucleus } from '../../hooks/useFormatNumberByNucleus'; +import useSpectrum from '../../hooks/useSpectrum'; const style: CSSProperties = { cursor: 'crosshair', @@ -20,31 +20,25 @@ const style: CSSProperties = { }; function XLabelPointer() { - const { height, width, margin, data } = useChartData(); - const activeSpectrum = useActiveSpectrum(); + const { height, width, margin } = useChartData(); + const activeSpectrum = useSpectrum(null); const { scaleX } = useScaleChecked(); const position = useMouseTracker(); const brushState = useBrushTracker(); - const activeSpectrumData = useMemo(() => { - const spectrumData = activeSpectrum - ? data.find((d) => d.id === activeSpectrum.id) - : null; - return spectrumData; - }, [activeSpectrum, data]); const format = useFormatNumberByNucleus( - (activeSpectrumData as Spectrum1D)?.info.nucleus, + (activeSpectrum as Spectrum1D)?.info.nucleus, ); const getXValue = useCallback( (xVal) => { - if (activeSpectrumData) { + if (activeSpectrum) { const xInvert = scaleX().invert(xVal); return format(xInvert); } }, - [activeSpectrumData, format, scaleX], + [activeSpectrum, format, scaleX], ); if ( diff --git a/src/component/1d/utilities/scale.ts b/src/component/1d/utilities/scale.ts index e4ca1570c..14584c2b3 100644 --- a/src/component/1d/utilities/scale.ts +++ b/src/component/1d/utilities/scale.ts @@ -1,14 +1,14 @@ import { scaleLinear, zoomIdentity } from 'd3'; +import { useCallback } from 'react'; + +import { useChartData } from '../../context/ChartContext'; +import { useVerticalAlign } from '../../hooks/useVerticalAlign'; import { - ActiveSpectrum, Domains, Margin, SpectraDirection, VerticalAlignment, } from '../../reducer/Reducer'; -import { useChartData } from '../../context/ChartContext'; -import { useCallback } from 'react'; -import { useVerticalAlign } from '../../hooks/useVerticalAlign'; interface ScaleXOptions { width: number; @@ -58,20 +58,16 @@ function getYScale( interface IntegralYScaleOptions { height: number; margin: Margin; - integralsYDomains: Domains; - activeSpectrum: ActiveSpectrum | null; - verticalAlign: VerticalAlignment; + yDomain: number[]; + scaleRatio: number; } function getIntegralYScale(options: IntegralYScaleOptions) { - const { height, margin, verticalAlign, integralsYDomains, activeSpectrum } = - options; - const _height = verticalAlign === 'center' ? height / 2 : height; + const { height, margin, yDomain, scaleRatio } = options; + const [min, max] = yDomain; return scaleLinear( - activeSpectrum?.id && integralsYDomains?.[activeSpectrum?.id] - ? integralsYDomains[activeSpectrum?.id] - : [0, 0], - [_height * 0.3, margin.top + _height * 0.1], + [min * scaleRatio, max * scaleRatio], + [height * 0.3, margin.top + height * 0.1], ); } diff --git a/src/component/2d/1d-tracer/HorizontalSliceChart.tsx b/src/component/2d/1d-tracer/HorizontalSliceChart.tsx index fd7508c21..62f07eb0a 100644 --- a/src/component/2d/1d-tracer/HorizontalSliceChart.tsx +++ b/src/component/2d/1d-tracer/HorizontalSliceChart.tsx @@ -25,7 +25,7 @@ function usePath(data: NmrData1D, options: UsePathOptions) { const { x, re: y } = data; - const scaleY = getSliceYScale(y, height, mode, vericalMargin); + const scaleY = getSliceYScale(y, height, mode, { margin: vericalMargin }); const pathBuilder = new PathBuilder(); pathBuilder.moveTo(scaleX(x[0]), scaleY(y[0])); diff --git a/src/component/2d/1d-tracer/VerticalSliceChart.tsx b/src/component/2d/1d-tracer/VerticalSliceChart.tsx index f8b223fc6..eef7d4bd4 100644 --- a/src/component/2d/1d-tracer/VerticalSliceChart.tsx +++ b/src/component/2d/1d-tracer/VerticalSliceChart.tsx @@ -24,7 +24,7 @@ function usePath(data, props: usePathOptions) { const { x, re: y } = data; - const scaleY = getSliceYScale(y, width, mode, horizontalMargin); + const scaleY = getSliceYScale(y, width, mode, { margin: horizontalMargin }); const pathBuilder = new PathBuilder(); @@ -50,7 +50,7 @@ function VerticalSliceChart(props: VerticalSliceChartProps) { - + diff --git a/src/component/2d/1d-tracer/phase-correction-traces/PhaseTraceWithMouse.tsx b/src/component/2d/1d-tracer/phase-correction-traces/PhaseTraceWithMouse.tsx new file mode 100644 index 000000000..95fc67e83 --- /dev/null +++ b/src/component/2d/1d-tracer/phase-correction-traces/PhaseTraceWithMouse.tsx @@ -0,0 +1,44 @@ +import { Spectrum2D } from 'nmr-load-save'; + +import { getSlice } from '../../../../data/data2d/Spectrum2D'; +import { useMouseTracker } from '../../../EventsTrackers/MouseTracker'; +import { useChartData } from '../../../context/ChartContext'; +import { useActiveSpectrum } from '../../../hooks/useActiveSpectrum'; +import { useScale2DX, useScale2DY } from '../../utilities/scale'; + +import { SpectrumPhaseTrace } from './SpectrumPhaseTrace'; +import { useActivePhaseTraces } from './useActivePhaseTraces'; + +export function PhaseTraceWithMouse() { + const { width, height, data: spectra } = useChartData(); + const activeSpectrum = useActiveSpectrum(); + const { activeTraceDirection, color } = useActivePhaseTraces(); + const position = useMouseTracker(); + + const scale2dX = useScale2DX(); + const scale2dY = useScale2DY(); + + if (!position || !width || !height || !activeSpectrum?.id) { + return null; + } + const spectrum = spectra[activeSpectrum.index] as Spectrum2D; + + const sliceData = getSlice(spectrum, { + x: scale2dX.invert(position.x), + y: scale2dY.invert(position.y), + }); + + const data = sliceData?.[activeTraceDirection]?.data; + if (!data) { + return null; + } + + return ( + + ); +} diff --git a/src/component/2d/1d-tracer/phase-correction-traces/PhaseTraces.tsx b/src/component/2d/1d-tracer/phase-correction-traces/PhaseTraces.tsx new file mode 100644 index 000000000..55b6b623a --- /dev/null +++ b/src/component/2d/1d-tracer/phase-correction-traces/PhaseTraces.tsx @@ -0,0 +1,42 @@ +import { useChartData } from '../../../context/ChartContext'; +import { useActiveSpectrum } from '../../../hooks/useActiveSpectrum'; + +import { PhaseTraceWithMouse } from './PhaseTraceWithMouse'; +import { SpectraPhaseTraces } from './SpectraPhaseTraces'; + +export function PhaseTraces() { + const { width, height, margin, displayerKey } = useChartData(); + const activeSpectrum = useActiveSpectrum(); + + if (!activeSpectrum?.id) return null; + + const clipWidth = width - margin.left - margin.right; + const clipHeight = height - margin.top - margin.bottom; + + return ( + + + + + + + + + + + + ); +} diff --git a/src/component/2d/1d-tracer/phase-correction-traces/SpectraPhaseTraces.tsx b/src/component/2d/1d-tracer/phase-correction-traces/SpectraPhaseTraces.tsx new file mode 100644 index 000000000..ccd248cf8 --- /dev/null +++ b/src/component/2d/1d-tracer/phase-correction-traces/SpectraPhaseTraces.tsx @@ -0,0 +1,102 @@ +/** @jsxImportSource @emotion/react */ +import { css } from '@emotion/react'; + +import { useChartData } from '../../../context/ChartContext'; +import { HighlightEventSource, useHighlight } from '../../../highlight'; +import { SpectrumTrace, TraceDirection } from '../../../reducer/Reducer'; +import { useScale2DX, useScale2DY } from '../../utilities/scale'; + +import { SpectrumPhaseTrace } from './SpectrumPhaseTrace'; +import { useActivePhaseTraces } from './useActivePhaseTraces'; + +const BOX_SIZE = 20; + +const style = css` + .target { + fill: transparent; + } + + &:hover { + .target { + fill: #ff6f0057; + } + } +`; + +export function SpectraPhaseTraces() { + const { width, height } = useChartData(); + const { spectra = [], color, activeTraceDirection } = useActivePhaseTraces(); + + if (!width || !height || spectra.length === 0) { + return null; + } + + return spectra.map((spectrumTrace) => { + return ( + + ); + }); +} + +interface SpectrumTraceProps { + spectrum: SpectrumTrace; + color: string; + direction: TraceDirection; +} + +function PhaseTrace(props: SpectrumTraceProps) { + const { width, height, margin } = useChartData(); + + const { + spectrum: { data, x, y, id }, + color, + direction, + } = props; + const highligh = useHighlight([id], { + type: HighlightEventSource.PHASE_CORRECTION_TRACE, + extra: { id }, + }); + + const scale2dX = useScale2DX(); + const scale2dY = useScale2DY(); + + const innerheight = height - margin.top - margin.bottom; + const innerWidth = width - margin.left - margin.right; + const transformY = innerheight - BOX_SIZE / 2; + const transformX = innerWidth - BOX_SIZE / 2; + + return ( + + {direction === 'horizontal' && ( + + )} + {direction === 'vertical' && ( + + )} + + ); +} diff --git a/src/component/2d/1d-tracer/phase-correction-traces/SpectrumPhaseTrace.tsx b/src/component/2d/1d-tracer/phase-correction-traces/SpectrumPhaseTrace.tsx new file mode 100644 index 000000000..9fe94b9de --- /dev/null +++ b/src/component/2d/1d-tracer/phase-correction-traces/SpectrumPhaseTrace.tsx @@ -0,0 +1,89 @@ +import { ReactNode } from 'react'; + +import { useChartData } from '../../../context/ChartContext'; +import { TraceDirection } from '../../../reducer/Reducer'; +import { PathBuilder } from '../../../utility/PathBuilder'; +import { + get2DXScale, + get2DYScale, + getSliceYScale, +} from '../../utilities/scale'; + +import { useActivePhaseTraces } from './useActivePhaseTraces'; + +interface SpectrumPhaseTraceProps extends React.SVGAttributes { + data: { x: Float64Array; re: Float64Array }; + position: { x: number; y: number }; + color: string; + direction: TraceDirection; + children?: ReactNode; +} + +function usePath(x: Float64Array, y: Float64Array, direction: TraceDirection) { + const { width, margin, height, xDomain, yDomain, mode } = useChartData(); + const { scaleRatio } = useActivePhaseTraces(); + + if (direction === 'horizontal') { + const scaleX = get2DXScale({ margin, width, xDomain, mode }); + const scaleY = getSliceYScale(y, height, 'RTL', { + margin: margin.top + margin.bottom, + scaleRatio, + }); + + const pathBuilder = new PathBuilder(); + pathBuilder.moveTo(scaleX(x[0]), scaleY(y[0])); + for (let i = 1; i < x.length; i++) { + pathBuilder.lineTo(scaleX(x[i]), scaleY(y[i])); + } + + return pathBuilder.toString(); + } + + const scaleX = get2DYScale({ margin, height, yDomain }); + const scaleY = getSliceYScale(y, width, 'RTL', { + margin: margin.left + margin.right, + scaleRatio, + }); + + const pathBuilder = new PathBuilder(); + + pathBuilder.moveTo(scaleY(y.at(-1) as number), scaleX(x.at(-1) as number)); + + for (let i = x.length - 2; i >= 0; i--) { + pathBuilder.lineTo(scaleY(y[i]), scaleX(x[i])); + } + + return pathBuilder.toString(); +} + +export function SpectrumPhaseTrace(props: SpectrumPhaseTraceProps) { + const { data, position, color, direction, children, ...othersProps } = props; + const { width, margin, height } = useChartData(); + + const { x, re } = data; + const path = usePath(x, re, direction); + const innerheight = height - margin.top - margin.bottom; + const innerWidth = width - margin.left - margin.right; + + const translateY = direction === 'horizontal' ? position.y - innerheight : 0; + const translateX = direction === 'vertical' ? position.x - innerWidth : 0; + + return ( + + + {children} + + ); +} diff --git a/src/component/2d/1d-tracer/phase-correction-traces/index.ts b/src/component/2d/1d-tracer/phase-correction-traces/index.ts new file mode 100644 index 000000000..b0e25c9df --- /dev/null +++ b/src/component/2d/1d-tracer/phase-correction-traces/index.ts @@ -0,0 +1 @@ +export { PhaseTraces } from './PhaseTraces'; diff --git a/src/component/2d/1d-tracer/phase-correction-traces/useActivePhaseTraces.ts b/src/component/2d/1d-tracer/phase-correction-traces/useActivePhaseTraces.ts new file mode 100644 index 000000000..381a28ac0 --- /dev/null +++ b/src/component/2d/1d-tracer/phase-correction-traces/useActivePhaseTraces.ts @@ -0,0 +1,18 @@ +import { COLORS } from '../../../../data/utilities/generateColor'; +import { useChartData } from '../../../context/ChartContext'; + +export function useActivePhaseTraces() { + const { + toolOptions: { + data: { + twoDimensionPhaseCorrection: { traces, activeTraceDirection }, + }, + }, + } = useChartData(); + const color = activeTraceDirection === 'horizontal' ? COLORS[0] : COLORS[1]; + return { + ...traces[activeTraceDirection], + activeTraceDirection, + color, + }; +} diff --git a/src/component/2d/Chart2D.tsx b/src/component/2d/Chart2D.tsx index 9a0f44a9c..7f0bc545b 100644 --- a/src/component/2d/Chart2D.tsx +++ b/src/component/2d/Chart2D.tsx @@ -40,6 +40,7 @@ function chart2DInner({ height={height} id="nmrSVG" shapeRendering={SpectraRendering} + style={{ position: 'absolute' }} > diff --git a/src/component/2d/SlicingView.tsx b/src/component/2d/SlicingView.tsx index 09fafafc6..4e9bd4985 100644 --- a/src/component/2d/SlicingView.tsx +++ b/src/component/2d/SlicingView.tsx @@ -38,6 +38,7 @@ function SlicingView() { height={height} style={{ position: 'absolute', + zIndex: 1, backgroundColor: 'rgba(255,255,255,0.8)', }} > diff --git a/src/component/2d/Viewer2D.tsx b/src/component/2d/Viewer2D.tsx index 1edeac65e..3f4f609a9 100644 --- a/src/component/2d/Viewer2D.tsx +++ b/src/component/2d/Viewer2D.tsx @@ -18,9 +18,11 @@ import { useDispatch } from '../context/DispatchContext'; import Spinner from '../loader/Spinner'; import { options } from '../toolbar/ToolTypes'; +import { PhaseTraces } from './1d-tracer/phase-correction-traces'; import Chart2D from './Chart2D'; import FooterBanner from './FooterBanner'; import SlicingView from './SlicingView'; +import PivotIndicator from './tools/PivotIndicator'; import XYLabelPointer from './tools/XYLabelPointer'; import { get2DDimensionLayout, getLayoutID } from './utilities/DimensionLayout'; import { get2DXScale, get2DYScale } from './utilities/scale'; @@ -142,28 +144,47 @@ function Viewer2D({ emptyText = undefined }: Viewer2DProps) { ); const handleZoom: OnZoom = (event) => { - const { x: startX, y: startY } = event; + const { x: startX, y: startY, shiftKey } = event; const trackID = getLayoutID(DIMENSION, { startX, startY }); if (trackID) { - if (trackID === 'CENTER_2D') { - dispatch({ type: 'SET_2D_LEVEL', payload: event }); - } else { + if ( + trackID !== 'CENTER_2D' || + (selectedTool === 'phaseCorrectionTwoDimensions' && !shiftKey) + ) { dispatch({ type: 'SET_ZOOM', payload: { event, trackID } }); + } else { + dispatch({ type: 'SET_2D_LEVEL', payload: event }); } } }; const mouseClick: OnClick = useCallback( - (position) => { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - const { x, y } = position; - switch (selectedTool) { - default: - break; + (event) => { + const { x, y, shiftKey } = event; + + if (shiftKey) { + switch (selectedTool) { + case 'phaseCorrectionTwoDimensions': + dispatch({ + type: 'SET_TWO_DIMENSION_PIVOT_POINT', + payload: { x, y }, + }); + break; + default: + break; + } + } else { + switch (selectedTool) { + case 'phaseCorrectionTwoDimensions': + dispatch({ type: 'ADD_PHASE_CORRECTION_TRACE', payload: { x, y } }); + break; + default: + break; + } } }, - [selectedTool], + [selectedTool, dispatch], ); return ( @@ -187,11 +208,15 @@ function Viewer2D({ emptyText = undefined }: Viewer2DProps) { }} > {selectedTool && selectedTool === options.slicing.id && ( )} + {selectedTool && + selectedTool === options.phaseCorrectionTwoDimensions.id && ( + + )} @@ -216,6 +241,7 @@ function Viewer2D({ emptyText = undefined }: Viewer2DProps) { /> )} + diff --git a/src/component/2d/tools/PivotIndicator.tsx b/src/component/2d/tools/PivotIndicator.tsx new file mode 100644 index 000000000..08c66cc3f --- /dev/null +++ b/src/component/2d/tools/PivotIndicator.tsx @@ -0,0 +1,65 @@ +import { CSSProperties } from 'react'; + +import { useChartData } from '../../context/ChartContext'; +import { TraceDirection } from '../../reducer/Reducer'; +import { options } from '../../toolbar/ToolTypes'; +import { useActivePhaseTraces } from '../1d-tracer/phase-correction-traces/useActivePhaseTraces'; +import { get2DXScale, get2DYScale } from '../utilities/scale'; + +function getStyle(direction: TraceDirection, translate: number) { + const base: CSSProperties = { + transformOrigin: 'top left', + position: 'absolute', + top: '0px', + left: '0px', + backgroundColor: 'black', + zIndex: 9, + }; + if (direction === 'horizontal') { + return { + ...base, + width: '1px', + height: '100%', + transform: `translateX(${translate}px)`, + }; + } + + return { + ...base, + width: '100%', + height: '1px', + transform: `translateY(${translate}px)`, + }; +} + +function PivotIndicator() { + const { pivot, activeTraceDirection } = useActivePhaseTraces(); + const { + toolOptions: { selectedTool }, + width, + height, + margin, + yDomain, + xDomain, + mode, + } = useChartData(); + + if (options.phaseCorrectionTwoDimensions.id !== selectedTool || !pivot) { + return null; + } + + let translate = 0; + + if (activeTraceDirection === 'horizontal') { + const scale = get2DXScale({ width, margin, xDomain, mode }); + translate = scale(pivot.value); + } + + if (activeTraceDirection === 'vertical') { + const scale = get2DYScale({ height, margin, yDomain }); + translate = scale(pivot.value); + } + return
; +} + +export default PivotIndicator; diff --git a/src/component/2d/tools/XYLabelPointer.tsx b/src/component/2d/tools/XYLabelPointer.tsx index 51797b0f1..7040be9c5 100644 --- a/src/component/2d/tools/XYLabelPointer.tsx +++ b/src/component/2d/tools/XYLabelPointer.tsx @@ -20,6 +20,7 @@ const style: CSSProperties = { userSelect: 'none', width: '85px', textAlign: 'right', + zIndex: 9, }; function XYLabelPointer({ layout, data1D }) { diff --git a/src/component/2d/utilities/scale.ts b/src/component/2d/utilities/scale.ts index b3ad6ccf9..0a984aa6f 100644 --- a/src/component/2d/utilities/scale.ts +++ b/src/component/2d/utilities/scale.ts @@ -94,15 +94,24 @@ function use1DTraceYScale( return get1DYScale(yDomains[SpectrumId], height, verticalMargin); } +interface SliceYScaleOptions { + margin?: number; + scaleRatio?: number; +} + function getSliceYScale( data: Float64Array, size: number, mode: SpectraDirection, - margin = 10, + options: SliceYScaleOptions = {}, ) { + const { margin = 10, scaleRatio = 1 } = options; const max = xMaxValue(data); size = mode === 'RTL' ? size : size / 2; - return scaleLinear([0, max] as number[], [size - margin, margin]); + return scaleLinear([0, max * scaleRatio] as number[], [ + size - margin, + margin, + ]); } export { diff --git a/src/component/EventsTrackers/KeysListenerTracker.tsx b/src/component/EventsTrackers/KeysListenerTracker.tsx index 4555e92c4..f9c9f05ba 100644 --- a/src/component/EventsTrackers/KeysListenerTracker.tsx +++ b/src/component/EventsTrackers/KeysListenerTracker.tsx @@ -253,6 +253,18 @@ function KeysListenerTracker(props: KeysListenerTrackerProps) { } break; } + case HighlightEventSource.PHASE_CORRECTION_TRACE: { + const { id } = extra || {}; + if (id) { + dispatch({ + type: 'DELETE_PHASE_CORRECTION_TRACE', + payload: { id }, + }); + // remove keys from the highlighted list after delete + remove(); + } + break; + } default: break; diff --git a/src/component/elements/PreferencesButton.tsx b/src/component/elements/PreferencesButton.tsx index a13801b10..5f51f51d6 100644 --- a/src/component/elements/PreferencesButton.tsx +++ b/src/component/elements/PreferencesButton.tsx @@ -1,4 +1,5 @@ import { FaCog } from 'react-icons/fa'; + import ToolTip from './ToolTip/ToolTip'; type PreferencesButtonProps = Pick< diff --git a/src/component/elements/ReactTable/utility/addCustomColumn.tsx b/src/component/elements/ReactTable/utility/addCustomColumn.tsx index 6ecf3c5b3..070b28b40 100644 --- a/src/component/elements/ReactTable/utility/addCustomColumn.tsx +++ b/src/component/elements/ReactTable/utility/addCustomColumn.tsx @@ -1,7 +1,8 @@ import { v4 } from '@lukeed/uuid'; -import { Column } from '../ReactTable'; import { CSSProperties, MouseEvent, ReactNode } from 'react'; +import { Column } from '../ReactTable'; + export type CustomColumn = Column & { index: number }; export type ControlCustomColumn = CustomColumn & { showWhen: string; diff --git a/src/component/header/AutoPeakPickingOptionPanel.tsx b/src/component/header/AutoPeakPickingOptionPanel.tsx index 3b33e4575..d17b900ee 100644 --- a/src/component/header/AutoPeakPickingOptionPanel.tsx +++ b/src/component/header/AutoPeakPickingOptionPanel.tsx @@ -4,7 +4,9 @@ import * as Yup from 'yup'; import { useDispatch } from '../context/DispatchContext'; import Button from '../elements/Button'; +import { InputStyle } from '../elements/Input'; import Label from '../elements/Label'; +import FormikInput from '../elements/formik/FormikInput'; import FormikSelect from '../elements/formik/FormikSelect'; import { useAlert } from '../elements/popup/Alert'; import { @@ -14,8 +16,6 @@ import { import { headerLabelStyle } from './Header'; import { HeaderContainer } from './HeaderContainer'; -import FormikInput from '../elements/formik/FormikInput'; -import { InputStyle } from '../elements/Input'; const inputStyle: InputStyle = { input: { diff --git a/src/component/header/Header.tsx b/src/component/header/Header.tsx index e5434a341..b81768de7 100644 --- a/src/component/header/Header.tsx +++ b/src/component/header/Header.tsx @@ -32,6 +32,7 @@ import AutoPeakPickingOptionPanel from './AutoPeakPickingOptionPanel'; import BaseLineCorrectionPanel from './BaseLineCorrectionPanel'; import { HeaderContainer } from './HeaderContainer'; import PhaseCorrectionPanel from './PhaseCorrectionPanel'; +import PhaseCorrectionTwoDimensionsPanel from './PhaseCorrectionTwoDimensionsPanel'; import RangesPickingOptionPanel from './RangesPickingOptionPanel'; import ZeroFillingOptionsPanel from './ZeroFillingOptionsPanel'; import Zones2DOptionPanel from './Zones2DOptionPanel'; @@ -112,6 +113,8 @@ function HeaderInner(props: HeaderInnerProps) { return ; case options.phaseCorrection.id: return ; + case options.phaseCorrectionTwoDimensions.id: + return ; case options.peakPicking.id: return ; case options.rangePicking.id: @@ -121,6 +124,7 @@ function HeaderInner(props: HeaderInnerProps) { case options.zonePicking.id: return ; default: + return null; break; } }, [selectedOptionPanel]); diff --git a/src/component/header/PhaseCorrectionTwoDimensionsPanel.tsx b/src/component/header/PhaseCorrectionTwoDimensionsPanel.tsx new file mode 100644 index 000000000..b1d8a219e --- /dev/null +++ b/src/component/header/PhaseCorrectionTwoDimensionsPanel.tsx @@ -0,0 +1,190 @@ +import { Spectrum1D } from 'nmr-load-save'; +import { + CSSProperties, + useCallback, + useDeferredValue, + useEffect, + useRef, + useState, +} from 'react'; + +import { stringCapitalize } from '../../utils/stringCapitalize'; +import { useActivePhaseTraces } from '../2d/1d-tracer/phase-correction-traces/useActivePhaseTraces'; +import { useDispatch } from '../context/DispatchContext'; +import ActionButtons from '../elements/ActionButtons'; +import Input, { InputStyle } from '../elements/Input'; +import InputRange from '../elements/InputRange'; +import Label from '../elements/Label'; +import Select from '../elements/Select'; +import useSpectrum from '../hooks/useSpectrum'; +import { TraceDirection } from '../reducer/Reducer'; + +import { headerLabelStyle } from './Header'; +import { HeaderContainer } from './HeaderContainer'; + +const selectStyle: CSSProperties = { + marginLeft: '5px', + marginRight: '10px', + border: 'none', + height: '20px', +}; + +const inputStyle: InputStyle = { + input: { + width: '70px', + textAlign: 'center', + }, + inputWrapper: { + height: '100%', + }, +}; + +const TRACE_DIRECTIONS: Array<{ label: string; value: TraceDirection }> = ( + ['horizontal', 'vertical'] as TraceDirection[] +).map((key) => ({ + label: stringCapitalize(key), + value: key, +})); + +const emptyData = { datum: {}, filter: null }; + +export default function PhaseCorrectionTwoDimensionsPanel() { + const { ph0, ph1, pivot, activeTraceDirection } = useActivePhaseTraces(); + + const { data } = useSpectrum(emptyData) as Spectrum1D; + const activeDirection = useDeferredValue(activeTraceDirection); + + const dispatch = useDispatch(); + const [value, setValue] = useState({ ph0: 0, ph1: 0 }); + const valueRef = useRef({ ph0: 0, ph1: 0 }); + + const ph0Ref = useRef(); + const ph1Ref = useRef(); + + useEffect(() => { + if (activeDirection !== activeTraceDirection) { + setValue({ ph0, ph1 }); + valueRef.current = { ph0, ph1 }; + } + }, [activeDirection, activeTraceDirection, ph0, ph1]); + + const calcPhaseCorrectionHandler = useCallback( + (newValues, filedName) => { + if (filedName === 'ph1' && data.re && pivot) { + const diff0 = newValues.ph0 - valueRef.current.ph0; + const diff1 = newValues.ph1 - valueRef.current.ph1; + newValues.ph0 += + diff0 - (diff1 * (data.re.length - pivot?.index)) / data.re.length; + } + dispatch({ + type: 'CALCULATE_TOW_DIMENSIONS_MANUAL_PHASE_CORRECTION_FILTER', + payload: newValues, + }); + }, + [data.re, dispatch, pivot], + ); + + const updateInputRangeInitialValue = useCallback((value) => { + // update InputRange initial value + ph0Ref.current.setValue(value.ph0); + ph1Ref.current.setValue(value.ph1); + }, []); + + const handleInput = useCallback( + (e) => { + const { name, value } = e.target; + if (e.target) { + const newValue = { ...valueRef.current, [name]: Number(value) }; + + if (String(value).trim() !== '-') { + calcPhaseCorrectionHandler(newValue, name); + } + updateInputRangeInitialValue(newValue); + valueRef.current = newValue; + setValue(valueRef.current); + } + }, + [calcPhaseCorrectionHandler, updateInputRangeInitialValue], + ); + + const handleRangeChange = useCallback( + (e) => { + const newValue = { ...valueRef.current, [e.name]: e.value }; + calcPhaseCorrectionHandler(newValue, e.name); + updateInputRangeInitialValue(newValue); + valueRef.current = newValue; + setValue(valueRef.current); + }, + [calcPhaseCorrectionHandler, updateInputRangeInitialValue], + ); + + const handleCancelFilter = useCallback(() => { + dispatch({ + type: 'RESET_SELECTED_TOOL', + }); + }, [dispatch]); + + function onChangeHandler(direction) { + dispatch({ + type: 'CHANGE_PHASE_CORRECTION_DIRECTION', + payload: { direction }, + }); + } + + /*eslint-disable unicorn/consistent-function-scoping */ + function handleApplyFilter() { + //TODO implement apply filter + } + + return ( + + + + + + + + + + + ); +} diff --git a/src/component/header/RangesPickingOptionPanel.tsx b/src/component/header/RangesPickingOptionPanel.tsx index d94dc98fe..cd154f304 100644 --- a/src/component/header/RangesPickingOptionPanel.tsx +++ b/src/component/header/RangesPickingOptionPanel.tsx @@ -5,6 +5,7 @@ import { useDispatch } from '../context/DispatchContext'; import Button from '../elements/Button'; import Label from '../elements/Label'; import FormikCheckBox from '../elements/formik/FormikCheckBox'; +import FormikInput from '../elements/formik/FormikInput'; import { useAlert } from '../elements/popup/Alert'; import { MIN_AREA_POINTS, @@ -13,7 +14,6 @@ import { import { headerLabelStyle } from './Header'; import { HeaderContainer } from './HeaderContainer'; -import FormikInput from '../elements/formik/FormikInput'; const validationSchema = Yup.object().shape({ minMaxRatio: Yup.number().min(0).required(), diff --git a/src/component/header/Zones2DOptionPanel.tsx b/src/component/header/Zones2DOptionPanel.tsx index ffd4a650d..703f63c5c 100644 --- a/src/component/header/Zones2DOptionPanel.tsx +++ b/src/component/header/Zones2DOptionPanel.tsx @@ -5,11 +5,11 @@ import * as Yup from 'yup'; import { useDispatch } from '../context/DispatchContext'; import Button from '../elements/Button'; import Label from '../elements/Label'; +import FormikInput from '../elements/formik/FormikInput'; import FormikOnChange from '../elements/formik/FormikOnChange'; import { headerLabelStyle } from './Header'; import { HeaderContainer } from './HeaderContainer'; -import FormikInput from '../elements/formik/FormikInput'; const validationSchema = Yup.object().shape({ zonesNoiseFactor: Yup.number().min(0).required(), diff --git a/src/component/highlight/index.tsx b/src/component/highlight/index.tsx index 58da5a32a..d8385e65c 100644 --- a/src/component/highlight/index.tsx +++ b/src/component/highlight/index.tsx @@ -25,6 +25,7 @@ export enum HighlightEventSource { MULTIPLE_ANALYSIS_ZONE = 'MULTIPLE_ANALYSIS_ZONE', DATABASE = 'DATABASE', ATOM = 'ATOM', + PHASE_CORRECTION_TRACE = 'PHASE_CORRECTION_TRACE', UNKNOWN = 'UNKNOWN', } diff --git a/src/component/hooks/useActiveSpectrumIntegralsViewState.ts b/src/component/hooks/useActiveSpectrumIntegralsViewState.ts new file mode 100644 index 000000000..b1e427df7 --- /dev/null +++ b/src/component/hooks/useActiveSpectrumIntegralsViewState.ts @@ -0,0 +1,22 @@ +import { IntegralsViewState } from 'nmr-load-save'; + +import { useChartData } from '../context/ChartContext'; + +import { useActiveSpectrum } from './useActiveSpectrum'; + +export const defaultIntegralsViewState: IntegralsViewState = { + scaleRatio: 1, +}; + +export function useActiveSpectrumIntegralsViewState() { + const activeSpectrum = useActiveSpectrum(); + const { + view: { integrals }, + } = useChartData(); + + if (activeSpectrum?.id && integrals[activeSpectrum?.id]) { + return integrals[activeSpectrum?.id]; + } else { + return defaultIntegralsViewState; + } +} diff --git a/src/component/hooks/useActiveSpectrumRangesViewState.ts b/src/component/hooks/useActiveSpectrumRangesViewState.ts index 6ac23eefe..551f860eb 100644 --- a/src/component/hooks/useActiveSpectrumRangesViewState.ts +++ b/src/component/hooks/useActiveSpectrumRangesViewState.ts @@ -7,9 +7,10 @@ import { useActiveSpectrum } from './useActiveSpectrum'; export const defaultRangesViewState: RangesViewState = { showPeaks: false, showMultiplicityTrees: false, - showRangesIntegrals: false, + showIntegrals: false, showJGraph: false, displayingMode: 'spread', + integralsScaleRatio: 1, }; export function useActiveSpectrumRangesViewState() { diff --git a/src/component/hooks/useCheckToolsVisibility.ts b/src/component/hooks/useCheckToolsVisibility.ts index ceccb7809..b3a45ba5f 100644 --- a/src/component/hooks/useCheckToolsVisibility.ts +++ b/src/component/hooks/useCheckToolsVisibility.ts @@ -58,7 +58,7 @@ export function useCheckToolsVisibility(): ( modeFlag && spectrumCheckFlag && (!extraInfoCheckParameters || - checkInfo(extraInfoCheckParameters, spectrum?.info)) + checkInfo(extraInfoCheckParameters, spectrum?.info as SpectrumInfo)) ); }, diff --git a/src/component/hooks/useIntegralPath.ts b/src/component/hooks/useIntegralPath.ts index 58a772146..90fba1e09 100644 --- a/src/component/hooks/useIntegralPath.ts +++ b/src/component/hooks/useIntegralPath.ts @@ -1,78 +1,51 @@ -import { NmrData1D } from 'cheminfo-types'; import { ScaleLinear } from 'd3'; -import { xyIntegral, xyReduce } from 'ml-spectra-processing'; -import { useMemo } from 'react'; +import { xyReduce } from 'ml-spectra-processing'; import { getIntegralYScale } from '../1d/utilities/scale'; import { useChartData } from '../context/ChartContext'; import { PathBuilder } from '../utility/PathBuilder'; -import { useActiveSpectrum } from './useActiveSpectrum'; -import { useVerticalAlign } from './useVerticalAlign'; import { useXScale } from './useXScale'; -function useIntegralYDomain(): ScaleLinear { - const { height, margin, integralsYDomains } = useChartData(); - const verticalAlign = useVerticalAlign(); - const activeSpectrum = useActiveSpectrum(); - return useMemo( - () => - getIntegralYScale({ - height, - margin, - verticalAlign, - activeSpectrum, - integralsYDomains, - }), - [activeSpectrum, height, integralsYDomains, margin, verticalAlign], - ); +function useIntegralYDomain( + max: number, + scaleRatio = 1, +): ScaleLinear { + const { height, margin } = useChartData(); + return getIntegralYScale({ + height, + margin, + yDomain: [0, max], + scaleRatio, + }); } -export default function useIntegralPath(integralOptions: { - from: number; - to: number; -}) { - const { data } = useChartData(); - - const activeSpectrum = useActiveSpectrum(); - const scaleX = useXScale(); - const scaleY = useIntegralYDomain(); - const integral = useMemo(() => { - if (activeSpectrum) { - const { x, re } = data[activeSpectrum?.index].data as NmrData1D; - const { from, to } = integralOptions; - return xyIntegral( - { x, y: re }, - { - from, - to, - reverse: true, - }, - ); - } - return { x: [], y: [] }; - }, [activeSpectrum, data, integralOptions]); +interface UseIntegralPathOptions { + x: Float64Array; + y: Float64Array; + max: number; + scaleRatio: number; +} - const paths = useMemo(() => { - if (integral) { - const xySeries = xyReduce(integral, { - // from: xDomain[0], - // to: xDomain[1], - nbPoints: 200, - optimize: true, - }); +export default function useIntegralPath(options: UseIntegralPathOptions) { + const { x, y, max, scaleRatio } = options; - const pathBuilder = new PathBuilder(); - pathBuilder.moveTo(scaleX(xySeries.x[0]), scaleY(xySeries.y[0])); - for (let i = 1; i < xySeries.x.length; i++) { - pathBuilder.lineTo(scaleX(xySeries.x[i]), scaleY(xySeries.y[i])); - } + const scaleX = useXScale(); + const scaleY = useIntegralYDomain(max, scaleRatio); + + const xySeries = xyReduce( + { x, y }, + { + nbPoints: 200, + optimize: true, + }, + ); - return pathBuilder.toString(); - } else { - return ''; - } - }, [integral, scaleX, scaleY]); + const pathBuilder = new PathBuilder(); + pathBuilder.moveTo(scaleX(xySeries.x[0]), scaleY(xySeries.y[0])); + for (let i = 1; i < xySeries.x.length; i++) { + pathBuilder.lineTo(scaleX(xySeries.x[i]), scaleY(xySeries.y[i])); + } - return paths; + return pathBuilder.toString(); } diff --git a/src/component/panels/IntegralsPanel/IntegralTable.tsx b/src/component/panels/IntegralsPanel/IntegralTable.tsx index adc2d2782..28dbf18a3 100644 --- a/src/component/panels/IntegralsPanel/IntegralTable.tsx +++ b/src/component/panels/IntegralsPanel/IntegralTable.tsx @@ -15,10 +15,10 @@ import addCustomColumn, { import Select from '../../elements/Select'; import { usePanelPreferences } from '../../hooks/usePanelPreferences'; import { formatNumber } from '../../utility/formatNumber'; +import NoDataForFid from '../extra/placeholder/NoDataForFid'; import NoTableData from '../extra/placeholder/NoTableData'; import { IntegralPanelInnerProps } from './IntegralPanel'; -import NoDataForFid from '../extra/placeholder/NoDataForFid'; const selectStyle = { width: '100%', border: 'none' }; diff --git a/src/component/panels/IntegralsPanel/IntegralsPreferences.tsx b/src/component/panels/IntegralsPanel/IntegralsPreferences.tsx index 71dd28484..ed2beae5b 100644 --- a/src/component/panels/IntegralsPanel/IntegralsPreferences.tsx +++ b/src/component/panels/IntegralsPanel/IntegralsPreferences.tsx @@ -12,6 +12,7 @@ import { usePreferences } from '../../context/PreferencesContext'; import Label from '../../elements/Label'; import FormikColorInput from '../../elements/formik/FormikColorInput'; import { formatFieldLabelStyle } from '../../elements/formik/FormikColumnFormatField'; +import FormikInput from '../../elements/formik/FormikInput'; import useNucleus from '../../hooks/useNucleus'; import { usePanelPreferencesByNuclei } from '../../hooks/usePanelPreferences'; import { getUniqueNuclei } from '../../utility/getUniqueNuclei'; @@ -20,7 +21,6 @@ import { NucleusPreferences, } from '../extra/preferences/NucleusPreferences'; import { PreferencesContainer } from '../extra/preferences/PreferencesContainer'; -import FormikInput from '../../elements/formik/FormikInput'; const formatFields: NucleusPreferenceField[] = [ { diff --git a/src/component/modal/AlignSpectraModal.tsx b/src/component/panels/MultipleSpectraAnalysisPanel/AlignSpectra.tsx similarity index 73% rename from src/component/modal/AlignSpectraModal.tsx rename to src/component/panels/MultipleSpectraAnalysisPanel/AlignSpectra.tsx index 263f565d9..b626c2a91 100644 --- a/src/component/modal/AlignSpectraModal.tsx +++ b/src/component/panels/MultipleSpectraAnalysisPanel/AlignSpectra.tsx @@ -1,24 +1,22 @@ /** @jsxImportSource @emotion/react */ +import { css } from '@emotion/react'; import { Formik } from 'formik'; import { xFindClosestIndex } from 'ml-spectra-processing'; import { Spectrum1D } from 'nmr-load-save'; import { useEffect, useState } from 'react'; import * as Yup from 'yup'; -import { REFERENCES } from '../../data/constants/References'; -import { CalibrateOptions } from '../../data/data1d/Spectrum1D/getReferenceShift'; -import { useDispatch } from '../context/DispatchContext'; -import Button from '../elements/Button'; -import CloseButton from '../elements/CloseButton'; -import { InputStyle } from '../elements/Input'; -import Label, { LabelStyle } from '../elements/Label'; -import Message from '../elements/Message'; -import Select from '../elements/Select'; -import FormikInput from '../elements/formik/FormikInput'; -import useSpectraByActiveNucleus from '../hooks/useSpectraPerNucleus'; -import Events from '../utility/Events'; - -import { ModalStyles } from './ModalStyle'; +import { REFERENCES } from '../../../data/constants/References'; +import { CalibrateOptions } from '../../../data/data1d/Spectrum1D/getReferenceShift'; +import { useDispatch } from '../../context/DispatchContext'; +import Button from '../../elements/Button'; +import { InputStyle } from '../../elements/Input'; +import Label, { LabelStyle } from '../../elements/Label'; +import Message from '../../elements/Message'; +import Select from '../../elements/Select'; +import FormikInput from '../../elements/formik/FormikInput'; +import useSpectraByActiveNucleus from '../../hooks/useSpectraPerNucleus'; +import Events from '../../utility/Events'; const labelStyle: LabelStyle = { label: { flex: 4, fontWeight: '500' }, @@ -34,9 +32,9 @@ const inputStyle: InputStyle = { const baseList = [{ key: 1, value: 'manual', label: 'Manual' }]; -interface AlignSpectraModalProps { - onClose?: (element?: string) => void; +interface AlignSpectraProps { nucleus: any; + onClose: () => void; } const DEFAULT_OPTIONS: CalibrateOptions = { @@ -93,10 +91,7 @@ function getList(nucleus) { return baseList.concat(list as any); } -function AlignSpectraModal({ - onClose = () => null, - nucleus, -}: AlignSpectraModalProps) { +function AlignSpectra({ onClose = () => null, nucleus }: AlignSpectraProps) { const spectra = useSpectraByActiveNucleus(); const dispatch = useDispatch(); const [options, setOptions] = useState(DEFAULT_OPTIONS); @@ -104,7 +99,6 @@ function AlignSpectraModal({ function submitHandler(inputOptions) { const options = checkOptions(inputOptions); setOptions(options); - try { checkSpectra(options, spectra as Spectrum1D[]); @@ -143,8 +137,32 @@ function AlignSpectraModal({ } const List = getList(nucleus); + const styles = css` + max-height: 100%; + padding: 10px 0 5px 20px; + display: flex; + flex-direction: column; + flex: 1; + + .body { + overflow: auto; + padding: 10px 10px 25px 0; + } + + .header { + padding: 5px 0; + font-size: 15px; + font-weight: bold; + } + + .footer { + display: flex; + padding-top: 5px; + } + `; + return ( -
+
{({ submitForm }) => ( <> -
- Spectra calibration - -
-
+
+
+ Spectra calibration +
{error && {error}}