diff --git a/.ncurc.yml b/.ncurc.yml index 8d9b25403..9f0ebbd40 100644 --- a/.ncurc.yml +++ b/.ncurc.yml @@ -1 +1,4 @@ dep: 'prod,dev' +reject: + # https://github.com/react-dropzone/react-dropzone/issues/1259#issuecomment-2395085954 + - react-dropzone diff --git a/eslint.config.mjs b/eslint.config.js similarity index 83% rename from eslint.config.mjs rename to eslint.config.js index e5931cb64..fce2c737a 100644 --- a/eslint.config.mjs +++ b/eslint.config.js @@ -17,6 +17,13 @@ export default [ ...ts, ...unicorn, ...react, + { + files: ['**/*.{ts,tsx,cts,mts}'], + rules: { + '@typescript-eslint/consistent-type-imports': 'error', + 'import/consistent-type-specifier-style': ['error', 'prefer-top-level'], + }, + }, { rules: { 'import/default': 'off', @@ -32,7 +39,8 @@ export default [ 'error', { name: 'lodash', - message: "Use a deep import instead, like for example 'lodash/get'", + message: + "Use a deep import instead, like for example 'lodash/get.js'", }, { name: '@simbathesailor/use-what-changed', diff --git a/package-lock.json b/package-lock.json index 153195436..92f05b75d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -16,7 +16,7 @@ "@emotion/styled": "^11.13.0", "@hookform/resolvers": "^3.9.0", "@lukeed/uuid": "^2.0.1", - "cheminfo-font": "^1.13.0", + "cheminfo-font": "^1.13.1", "cheminfo-types": "^1.8.0", "clipboard-polyfill": "^4.1.0", "convert-to-jcamp": "^5.4.11", @@ -28,7 +28,7 @@ "immer": "^10.1.1", "jszip": "^3.10.1", "lodash": "^4.17.21", - "mf-parser": "^3.2.4", + "mf-parser": "^3.2.5", "ml-array-max": "^1.2.4", "ml-array-mean": "^1.1.6", "ml-array-median": "^1.1.6", @@ -36,9 +36,9 @@ "ml-baseline-correction-regression": "^2.0.1", "ml-conrec": "^5.0.3", "ml-gsd": "^12.1.8", - "ml-matrix": "^6.11.1", - "ml-signal-processing": "^1.0.4", - "ml-spectra-processing": "^14.5.3", + "ml-matrix": "^6.12.0", + "ml-signal-processing": "^1.1.1", + "ml-spectra-processing": "^14.6.0", "ml-stat": "^1.3.3", "ml-tree-similarity": "^2.2.0", "multiplet-analysis": "^2.1.2", @@ -47,45 +47,45 @@ "nmr-processing": "^12.12.3", "nmredata": "^0.9.11", "numeral": "^2.0.6", - "openchemlib": "^8.15.0", + "openchemlib": "^8.16.0", "openchemlib-utils": "^6.4.1", "papaparse": "^5.4.1", "re-resizable": "6.10.0", - "react-d3-utils": "^1.0.0", - "react-dropzone": "^14.2.9", - "react-error-boundary": "^4.0.13", + "react-d3-utils": "^2.0.0", + "react-dropzone": "14.2.3", + "react-error-boundary": "^4.1.1", "react-hook-form": "^7.53.0", "react-icons": "^5.3.0", "react-inspector": "^6.0.2", "react-mf": "^2.0.3", - "react-ocl": "^6.1.0", - "react-ocl-nmr": "^3.0.3", - "react-plot": "^2.0.0", + "react-ocl": "^7.0.2", + "react-ocl-nmr": "^3.1.0", + "react-plot": "^3.0.0", "react-rnd": "^10.4.13", - "react-science": "^6.0.2", + "react-science": "^9.0.1", "react-table": "^7.8.0", "react-transition-group": "^4.4.5", - "react-use": "^17.5.1", "smart-array-filter": "^4.0.2", + "use-resize-observer": "^9.1.0", "yup": "^1.4.0" }, "devDependencies": { "@babel/plugin-transform-modules-commonjs": "^7.25.7", "@babel/preset-react": "^7.25.7", "@babel/preset-typescript": "^7.25.7", - "@playwright/test": "^1.47.2", + "@playwright/test": "^1.48.1", "@simbathesailor/use-what-changed": "^2.0.0", "@types/d3": "^7.4.3", "@types/lodash": "^4.17.10", - "@types/node": "^22.7.4", + "@types/node": "^22.7.6", "@types/papaparse": "^5.3.14", "@types/react": "^18.3.11", - "@types/react-dom": "^18.3.0", + "@types/react-dom": "^18.3.1", "@types/react-table": "^7.7.20", "@vitejs/plugin-react-swc": "^3.7.1", - "@vitest/coverage-v8": "^2.1.2", + "@vitest/coverage-v8": "^2.1.3", "cross-env": "^7.0.3", - "cspell": "^8.14.4", + "cspell": "^8.15.3", "eslint": "^9.12.0", "eslint-config-cheminfo-react": "^14.0.0", "eslint-config-cheminfo-typescript": "^16.0.0", @@ -95,15 +95,15 @@ "rc-menu": "^9.15.1", "react": "^18.3.1", "react-dom": "^18.3.1", - "react-router-dom": "^6.26.2", + "react-router-dom": "^6.27.0", "rimraf": "^6.0.1", "rollup-plugin-analyzer": "^4.0.0", - "serve": "^14.2.3", - "stylelint": "^16.9.0", + "serve": "^14.2.4", + "stylelint": "^16.10.0", "stylelint-config-standard": "^36.0.1", - "typescript": "^5.6.2", - "vite": "^5.4.8", - "vitest": "^2.1.2" + "typescript": "^5.6.3", + "vite": "^5.4.9", + "vitest": "^2.1.3" }, "peerDependencies": { "react": ">=18.0.0", @@ -138,9 +138,9 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.25.7.tgz", - "integrity": "sha512-9ickoLz+hcXCeh7jrcin+/SLWm+GkxE2kTvoYyp38p4WkdFXfQJxDFGWp/YHjiKLPx06z2A7W8XKuqbReXDzsw==", + "version": "7.25.8", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.25.8.tgz", + "integrity": "sha512-ZsysZyXY4Tlx+Q53XdnOFmqwfB9QDTHYxaZYajWRoBLuLEAwI2UIbtxOjWh/cFaa9IKUlcB+DDuoskLuKu56JA==", "dev": true, "license": "MIT", "peer": true, @@ -149,9 +149,9 @@ } }, "node_modules/@babel/core": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.25.7.tgz", - "integrity": "sha512-yJ474Zv3cwiSOO9nXJuqzvwEeM+chDuQ8GJirw+pZ91sCGCyOZ3dJkVE09fTV0VEVzXyLWhh3G/AolYTPX7Mow==", + "version": "7.25.8", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.25.8.tgz", + "integrity": "sha512-Oixnb+DzmRT30qu9d3tJSQkxuygWm32DFykT4bRoORPa9hZ/L4KhVB/XiRm6KG+roIEM7DBQlmg27kw2HZkdZg==", "dev": true, "license": "MIT", "peer": true, @@ -162,10 +162,10 @@ "@babel/helper-compilation-targets": "^7.25.7", "@babel/helper-module-transforms": "^7.25.7", "@babel/helpers": "^7.25.7", - "@babel/parser": "^7.25.7", + "@babel/parser": "^7.25.8", "@babel/template": "^7.25.7", "@babel/traverse": "^7.25.7", - "@babel/types": "^7.25.7", + "@babel/types": "^7.25.8", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -422,12 +422,12 @@ } }, "node_modules/@babel/parser": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.25.7.tgz", - "integrity": "sha512-aZn7ETtQsjjGG5HruveUK06cU3Hljuhd9Iojm4M8WWv3wLE6OkE5PWbDUkItmMgegmccaITudyuW5RPYrYlgWw==", + "version": "7.25.8", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.25.8.tgz", + "integrity": "sha512-HcttkxzdPucv3nNFmfOOMfFf64KgdJVqm1KaCm25dPGMLElo9nsLvXeJECQg8UzPuBGLyTSA0ZzqCtDSzKTEoQ==", "license": "MIT", "dependencies": { - "@babel/types": "^7.25.7" + "@babel/types": "^7.25.8" }, "bin": { "parser": "bin/babel-parser.js" @@ -661,9 +661,9 @@ } }, "node_modules/@babel/types": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.7.tgz", - "integrity": "sha512-vwIVdXG+j+FOpkwqHRcBgHLYNL7XMkufrlaFvL9o6Ai9sJn9+PdyIL5qa0XzTZw084c+u9LOls53eoZWP/W5WQ==", + "version": "7.25.8", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.8.tgz", + "integrity": "sha512-JWtuCu8VQsMladxVz/P4HzHUGCAwpuqacmowgXFs5XjxIgKuNjnLokQzuVjlTvIzODaDmpjT3oxcC48vyk9EWg==", "license": "MIT", "dependencies": { "@babel/helper-string-parser": "^7.25.7", @@ -766,87 +766,87 @@ } }, "node_modules/@cspell/cspell-bundled-dicts": { - "version": "8.14.4", - "resolved": "https://registry.npmjs.org/@cspell/cspell-bundled-dicts/-/cspell-bundled-dicts-8.14.4.tgz", - "integrity": "sha512-JHZOpCJzN6fPBapBOvoeMxZbr0ZA11ZAkwcqM4w0lKoacbi6TwK8GIYf66hHvwLmMeav75TNXWE6aPTvBLMMqA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@cspell/dict-ada": "^4.0.2", - "@cspell/dict-aws": "^4.0.4", - "@cspell/dict-bash": "^4.1.4", - "@cspell/dict-companies": "^3.1.4", - "@cspell/dict-cpp": "^5.1.16", - "@cspell/dict-cryptocurrencies": "^5.0.0", - "@cspell/dict-csharp": "^4.0.2", - "@cspell/dict-css": "^4.0.13", - "@cspell/dict-dart": "^2.2.1", - "@cspell/dict-django": "^4.1.0", - "@cspell/dict-docker": "^1.1.7", - "@cspell/dict-dotnet": "^5.0.5", - "@cspell/dict-elixir": "^4.0.3", - "@cspell/dict-en_us": "^4.3.23", - "@cspell/dict-en-common-misspellings": "^2.0.4", + "version": "8.15.3", + "resolved": "https://registry.npmjs.org/@cspell/cspell-bundled-dicts/-/cspell-bundled-dicts-8.15.3.tgz", + "integrity": "sha512-wIuJomJEJn60w+ts4dFBYEo3kkwdPe1R4qVn52hDq5CUzrNniSywCpeBQO8Sgy5ljk73ojENbMBCE8+Jrukk0Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@cspell/dict-ada": "^4.0.5", + "@cspell/dict-aws": "^4.0.7", + "@cspell/dict-bash": "^4.1.8", + "@cspell/dict-companies": "^3.1.7", + "@cspell/dict-cpp": "^5.1.22", + "@cspell/dict-cryptocurrencies": "^5.0.3", + "@cspell/dict-csharp": "^4.0.5", + "@cspell/dict-css": "^4.0.16", + "@cspell/dict-dart": "^2.2.4", + "@cspell/dict-django": "^4.1.3", + "@cspell/dict-docker": "^1.1.10", + "@cspell/dict-dotnet": "^5.0.8", + "@cspell/dict-elixir": "^4.0.6", + "@cspell/dict-en_us": "^4.3.26", + "@cspell/dict-en-common-misspellings": "^2.0.7", "@cspell/dict-en-gb": "1.1.33", - "@cspell/dict-filetypes": "^3.0.4", - "@cspell/dict-flutter": "^1.0.0", - "@cspell/dict-fonts": "^4.0.0", - "@cspell/dict-fsharp": "^1.0.1", - "@cspell/dict-fullstack": "^3.2.0", - "@cspell/dict-gaming-terms": "^1.0.5", - "@cspell/dict-git": "^3.0.0", - "@cspell/dict-golang": "^6.0.12", - "@cspell/dict-google": "^1.0.1", - "@cspell/dict-haskell": "^4.0.1", - "@cspell/dict-html": "^4.0.5", - "@cspell/dict-html-symbol-entities": "^4.0.0", - "@cspell/dict-java": "^5.0.7", - "@cspell/dict-julia": "^1.0.1", - "@cspell/dict-k8s": "^1.0.6", - "@cspell/dict-latex": "^4.0.0", - "@cspell/dict-lorem-ipsum": "^4.0.0", - "@cspell/dict-lua": "^4.0.3", - "@cspell/dict-makefile": "^1.0.0", - "@cspell/dict-monkeyc": "^1.0.6", - "@cspell/dict-node": "^5.0.1", - "@cspell/dict-npm": "^5.1.4", - "@cspell/dict-php": "^4.0.10", - "@cspell/dict-powershell": "^5.0.8", - "@cspell/dict-public-licenses": "^2.0.8", - "@cspell/dict-python": "^4.2.6", - "@cspell/dict-r": "^2.0.1", - "@cspell/dict-ruby": "^5.0.3", - "@cspell/dict-rust": "^4.0.5", - "@cspell/dict-scala": "^5.0.3", - "@cspell/dict-software-terms": "^4.1.3", - "@cspell/dict-sql": "^2.1.5", - "@cspell/dict-svelte": "^1.0.2", - "@cspell/dict-swift": "^2.0.1", - "@cspell/dict-terraform": "^1.0.1", - "@cspell/dict-typescript": "^3.1.6", - "@cspell/dict-vue": "^3.0.0" + "@cspell/dict-filetypes": "^3.0.7", + "@cspell/dict-flutter": "^1.0.3", + "@cspell/dict-fonts": "^4.0.3", + "@cspell/dict-fsharp": "^1.0.4", + "@cspell/dict-fullstack": "^3.2.3", + "@cspell/dict-gaming-terms": "^1.0.8", + "@cspell/dict-git": "^3.0.3", + "@cspell/dict-golang": "^6.0.16", + "@cspell/dict-google": "^1.0.4", + "@cspell/dict-haskell": "^4.0.4", + "@cspell/dict-html": "^4.0.9", + "@cspell/dict-html-symbol-entities": "^4.0.3", + "@cspell/dict-java": "^5.0.10", + "@cspell/dict-julia": "^1.0.4", + "@cspell/dict-k8s": "^1.0.9", + "@cspell/dict-latex": "^4.0.3", + "@cspell/dict-lorem-ipsum": "^4.0.3", + "@cspell/dict-lua": "^4.0.6", + "@cspell/dict-makefile": "^1.0.3", + "@cspell/dict-monkeyc": "^1.0.9", + "@cspell/dict-node": "^5.0.4", + "@cspell/dict-npm": "^5.1.8", + "@cspell/dict-php": "^4.0.13", + "@cspell/dict-powershell": "^5.0.13", + "@cspell/dict-public-licenses": "^2.0.11", + "@cspell/dict-python": "^4.2.11", + "@cspell/dict-r": "^2.0.4", + "@cspell/dict-ruby": "^5.0.7", + "@cspell/dict-rust": "^4.0.9", + "@cspell/dict-scala": "^5.0.6", + "@cspell/dict-software-terms": "^4.1.10", + "@cspell/dict-sql": "^2.1.8", + "@cspell/dict-svelte": "^1.0.5", + "@cspell/dict-swift": "^2.0.4", + "@cspell/dict-terraform": "^1.0.5", + "@cspell/dict-typescript": "^3.1.9", + "@cspell/dict-vue": "^3.0.3" }, "engines": { "node": ">=18" } }, "node_modules/@cspell/cspell-json-reporter": { - "version": "8.14.4", - "resolved": "https://registry.npmjs.org/@cspell/cspell-json-reporter/-/cspell-json-reporter-8.14.4.tgz", - "integrity": "sha512-gJ6tQbGCNLyHS2iIimMg77as5MMAFv3sxU7W6tjLlZp8htiNZS7fS976g24WbT/hscsTT9Dd0sNHkpo8K3nvVw==", + "version": "8.15.3", + "resolved": "https://registry.npmjs.org/@cspell/cspell-json-reporter/-/cspell-json-reporter-8.15.3.tgz", + "integrity": "sha512-348UsYDdPTaGUvzdRY+Tj8rnN/1yLFkbEc6FkTejkBPwL0rpaJLp27N3Y8uZfrFGyMem/fYS+aHAvB3kTIzieQ==", "dev": true, "license": "MIT", "dependencies": { - "@cspell/cspell-types": "8.14.4" + "@cspell/cspell-types": "8.15.3" }, "engines": { "node": ">=18" } }, "node_modules/@cspell/cspell-pipe": { - "version": "8.14.4", - "resolved": "https://registry.npmjs.org/@cspell/cspell-pipe/-/cspell-pipe-8.14.4.tgz", - "integrity": "sha512-CLLdouqfrQ4rqdQdPu0Oo+HHCU/oLYoEsK1nNPb28cZTFxnn0cuSPKB6AMPBJmMwdfJ6fMD0BCKNbEe1UNLHcw==", + "version": "8.15.3", + "resolved": "https://registry.npmjs.org/@cspell/cspell-pipe/-/cspell-pipe-8.15.3.tgz", + "integrity": "sha512-Xodpkm1HJjGtmlL+V4B06PbeEsfhZtNwvPLTtaMExP4ED78VimBYlSz3lR+8jZgkHvZOhbQuHw7zwBqQd4u4Mg==", "dev": true, "license": "MIT", "engines": { @@ -854,9 +854,9 @@ } }, "node_modules/@cspell/cspell-resolver": { - "version": "8.14.4", - "resolved": "https://registry.npmjs.org/@cspell/cspell-resolver/-/cspell-resolver-8.14.4.tgz", - "integrity": "sha512-s3uZyymJ04yn8+zlTp7Pt1WRSlAel6XVo+iZRxls3LSvIP819KK64DoyjCD2Uon0Vg9P/K7aAPt8GcxDcnJtgA==", + "version": "8.15.3", + "resolved": "https://registry.npmjs.org/@cspell/cspell-resolver/-/cspell-resolver-8.15.3.tgz", + "integrity": "sha512-KoSv9iGbItS1uGlXspTg9XQmbBnjR7wkW5Du9Q3pLYAjSwcmArOVqQnumNAPfTsIldn9WsBalwGSm/uwawxAPg==", "dev": true, "license": "MIT", "dependencies": { @@ -867,9 +867,9 @@ } }, "node_modules/@cspell/cspell-service-bus": { - "version": "8.14.4", - "resolved": "https://registry.npmjs.org/@cspell/cspell-service-bus/-/cspell-service-bus-8.14.4.tgz", - "integrity": "sha512-i3UG+ep63akNsDXZrtGgICNF3MLBHtvKe/VOIH6+L+NYaAaVHqqQvOY9MdUwt1HXh8ElzfwfoRp36wc5aAvt6g==", + "version": "8.15.3", + "resolved": "https://registry.npmjs.org/@cspell/cspell-service-bus/-/cspell-service-bus-8.15.3.tgz", + "integrity": "sha512-BLAaAc9fWn/sdNo/Z7bPwHtQ+z7snUnjXoLHYY9Vg8N0K2nMYkuJqAm7xbeKDy64sLykpu+pubdMR3DqEQJo/g==", "dev": true, "license": "MIT", "engines": { @@ -877,9 +877,9 @@ } }, "node_modules/@cspell/cspell-types": { - "version": "8.14.4", - "resolved": "https://registry.npmjs.org/@cspell/cspell-types/-/cspell-types-8.14.4.tgz", - "integrity": "sha512-VXwikqdHgjOVperVVCn2DOe8W3rPIswwZtMHfRYnagpzZo/TOntIjkXPJSfTtl/cFyx5DnCBsDH8ytKGlMeHkw==", + "version": "8.15.3", + "resolved": "https://registry.npmjs.org/@cspell/cspell-types/-/cspell-types-8.15.3.tgz", + "integrity": "sha512-05xy2eeIQIHk2X6hUfBPBNbCnWcuSjE6D/F0XFTxLBl4ecUurSthJqvR3PrMjluETeZ71/cRIZMBnW+v7+yBgw==", "dev": true, "license": "MIT", "engines": { @@ -887,114 +887,114 @@ } }, "node_modules/@cspell/dict-ada": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@cspell/dict-ada/-/dict-ada-4.0.2.tgz", - "integrity": "sha512-0kENOWQeHjUlfyId/aCM/mKXtkEgV0Zu2RhUXCBr4hHo9F9vph+Uu8Ww2b0i5a4ZixoIkudGA+eJvyxrG1jUpA==", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@cspell/dict-ada/-/dict-ada-4.0.5.tgz", + "integrity": "sha512-6/RtZ/a+lhFVmrx/B7bfP7rzC4yjEYe8o74EybXcvu4Oue6J4Ey2WSYj96iuodloj1LWrkNCQyX5h4Pmcj0Iag==", "dev": true, "license": "MIT" }, "node_modules/@cspell/dict-aws": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@cspell/dict-aws/-/dict-aws-4.0.4.tgz", - "integrity": "sha512-6AWI/Kkf+RcX/J81VX8+GKLeTgHWEr/OMhGk3dHQzWK66RaqDJCGDqi7494ghZKcBB7dGa3U5jcKw2FZHL/u3w==", + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/@cspell/dict-aws/-/dict-aws-4.0.7.tgz", + "integrity": "sha512-PoaPpa2NXtSkhGIMIKhsJUXB6UbtTt6Ao3x9JdU9kn7fRZkwD4RjHDGqulucIOz7KeEX/dNRafap6oK9xHe4RA==", "dev": true, "license": "MIT" }, "node_modules/@cspell/dict-bash": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/@cspell/dict-bash/-/dict-bash-4.1.5.tgz", - "integrity": "sha512-YGim/h7E2U5HCCb2ckNufT6/yyWygt9nSZ5C7qw6oOD3bygbObqD1+rlPor1JW+YyO+3GwTIHE70uKEEU6VZYw==", + "version": "4.1.8", + "resolved": "https://registry.npmjs.org/@cspell/dict-bash/-/dict-bash-4.1.8.tgz", + "integrity": "sha512-I2CM2pTNthQwW069lKcrVxchJGMVQBzru2ygsHCwgidXRnJL/NTjAPOFTxN58Jc1bf7THWghfEDyKX/oyfc0yg==", "dev": true, "license": "MIT" }, "node_modules/@cspell/dict-companies": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/@cspell/dict-companies/-/dict-companies-3.1.4.tgz", - "integrity": "sha512-y9e0amzEK36EiiKx3VAA+SHQJPpf2Qv5cCt5eTUSggpTkiFkCh6gRKQ97rVlrKh5GJrqinDwYIJtTsxuh2vy2Q==", + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/@cspell/dict-companies/-/dict-companies-3.1.7.tgz", + "integrity": "sha512-ncVs/efuAkP1/tLDhWbXukBjgZ5xOUfe03neHMWsE8zvXXc5+Lw6TX5jaJXZLOoES/f4j4AhRE20jsPCF5pm+A==", "dev": true, "license": "MIT" }, "node_modules/@cspell/dict-cpp": { - "version": "5.1.18", - "resolved": "https://registry.npmjs.org/@cspell/dict-cpp/-/dict-cpp-5.1.18.tgz", - "integrity": "sha512-cq07tYsWuQhV3G1860JFQRV7A4kWkeMZAJAfwd4JRGHDx8A7Hm1Fwy58hpzbujfox4934o2lwOH7LszX/7Reiw==", + "version": "5.1.22", + "resolved": "https://registry.npmjs.org/@cspell/dict-cpp/-/dict-cpp-5.1.22.tgz", + "integrity": "sha512-g1/8P5/Q+xnIc8Js4UtBg3XOhcFrFlFbG3UWVtyEx49YTf0r9eyDtDt1qMMDBZT91pyCwLcAEbwS+4i5PIfNZw==", "dev": true, "license": "MIT" }, "node_modules/@cspell/dict-cryptocurrencies": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@cspell/dict-cryptocurrencies/-/dict-cryptocurrencies-5.0.0.tgz", - "integrity": "sha512-Z4ARIw5+bvmShL+4ZrhDzGhnc9znaAGHOEMaB/GURdS/jdoreEDY34wdN0NtdLHDO5KO7GduZnZyqGdRoiSmYA==", + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/@cspell/dict-cryptocurrencies/-/dict-cryptocurrencies-5.0.3.tgz", + "integrity": "sha512-bl5q+Mk+T3xOZ12+FG37dB30GDxStza49Rmoax95n37MTLksk9wBo1ICOlPJ6PnDUSyeuv4SIVKgRKMKkJJglA==", "dev": true, "license": "MIT" }, "node_modules/@cspell/dict-csharp": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@cspell/dict-csharp/-/dict-csharp-4.0.2.tgz", - "integrity": "sha512-1JMofhLK+4p4KairF75D3A924m5ERMgd1GvzhwK2geuYgd2ZKuGW72gvXpIV7aGf52E3Uu1kDXxxGAiZ5uVG7g==", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@cspell/dict-csharp/-/dict-csharp-4.0.5.tgz", + "integrity": "sha512-c/sFnNgtRwRJxtC3JHKkyOm+U3/sUrltFeNwml9VsxKBHVmvlg4tk4ar58PdpW9/zTlGUkWi2i85//DN1EsUCA==", "dev": true, "license": "MIT" }, "node_modules/@cspell/dict-css": { - "version": "4.0.13", - "resolved": "https://registry.npmjs.org/@cspell/dict-css/-/dict-css-4.0.13.tgz", - "integrity": "sha512-WfOQkqlAJTo8eIQeztaH0N0P+iF5hsJVKFuhy4jmARPISy8Efcv8QXk2/IVbmjJH0/ZV7dKRdnY5JFVXuVz37g==", + "version": "4.0.16", + "resolved": "https://registry.npmjs.org/@cspell/dict-css/-/dict-css-4.0.16.tgz", + "integrity": "sha512-70qu7L9z/JR6QLyJPk38fNTKitlIHnfunx0wjpWQUQ8/jGADIhMCrz6hInBjqPNdtGpYm8d1dNFyF8taEkOgrQ==", "dev": true, "license": "MIT" }, "node_modules/@cspell/dict-dart": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@cspell/dict-dart/-/dict-dart-2.2.1.tgz", - "integrity": "sha512-yriKm7QkoPx3JPSSOcw6iX9gOb2N50bOo/wqWviqPYbhpMRh9Xiv6dkUy3+ot+21GuShZazO8X6U5+Vw67XEwg==", + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/@cspell/dict-dart/-/dict-dart-2.2.4.tgz", + "integrity": "sha512-of/cVuUIZZK/+iqefGln8G3bVpfyN6ZtH+LyLkHMoR5tEj+2vtilGNk9ngwyR8L4lEqbKuzSkOxgfVjsXf5PsQ==", "dev": true, "license": "MIT" }, "node_modules/@cspell/dict-data-science": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@cspell/dict-data-science/-/dict-data-science-2.0.1.tgz", - "integrity": "sha512-xeutkzK0eBe+LFXOFU2kJeAYO6IuFUc1g7iRLr7HeCmlC4rsdGclwGHh61KmttL3+YHQytYStxaRBdGAXWC8Lw==", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@cspell/dict-data-science/-/dict-data-science-2.0.5.tgz", + "integrity": "sha512-nNSILXmhSJox9/QoXICPQgm8q5PbiSQP4afpbkBqPi/u/b3K9MbNH5HvOOa6230gxcGdbZ9Argl2hY/U8siBlg==", "dev": true, "license": "MIT" }, "node_modules/@cspell/dict-django": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@cspell/dict-django/-/dict-django-4.1.0.tgz", - "integrity": "sha512-bKJ4gPyrf+1c78Z0Oc4trEB9MuhcB+Yg+uTTWsvhY6O2ncFYbB/LbEZfqhfmmuK/XJJixXfI1laF2zicyf+l0w==", + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/@cspell/dict-django/-/dict-django-4.1.3.tgz", + "integrity": "sha512-yBspeL3roJlO0a1vKKNaWABURuHdHZ9b1L8d3AukX0AsBy9snSggc8xCavPmSzNfeMDXbH+1lgQiYBd3IW03fg==", "dev": true, "license": "MIT" }, "node_modules/@cspell/dict-docker": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/@cspell/dict-docker/-/dict-docker-1.1.7.tgz", - "integrity": "sha512-XlXHAr822euV36GGsl2J1CkBIVg3fZ6879ZOg5dxTIssuhUOCiV2BuzKZmt6aIFmcdPmR14+9i9Xq+3zuxeX0A==", + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/@cspell/dict-docker/-/dict-docker-1.1.11.tgz", + "integrity": "sha512-s0Yhb16/R+UT1y727ekbR/itWQF3Qz275DR1ahOa66wYtPjHUXmhM3B/LT3aPaX+hD6AWmK23v57SuyfYHUjsw==", "dev": true, "license": "MIT" }, "node_modules/@cspell/dict-dotnet": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/@cspell/dict-dotnet/-/dict-dotnet-5.0.5.tgz", - "integrity": "sha512-gjg0L97ee146wX47dnA698cHm85e7EOpf9mVrJD8DmEaqoo/k1oPy2g7c7LgKxK9XnqwoXxhLNnngPrwXOoEtQ==", + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/@cspell/dict-dotnet/-/dict-dotnet-5.0.8.tgz", + "integrity": "sha512-MD8CmMgMEdJAIPl2Py3iqrx3B708MbCIXAuOeZ0Mzzb8YmLmiisY7QEYSZPg08D7xuwARycP0Ki+bb0GAkFSqg==", "dev": true, "license": "MIT" }, "node_modules/@cspell/dict-elixir": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@cspell/dict-elixir/-/dict-elixir-4.0.3.tgz", - "integrity": "sha512-g+uKLWvOp9IEZvrIvBPTr/oaO6619uH/wyqypqvwpmnmpjcfi8+/hqZH8YNKt15oviK8k4CkINIqNhyndG9d9Q==", + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/@cspell/dict-elixir/-/dict-elixir-4.0.6.tgz", + "integrity": "sha512-TfqSTxMHZ2jhiqnXlVKM0bUADtCvwKQv2XZL/DI0rx3doG8mEMS8SGPOmiyyGkHpR/pGOq18AFH3BEm4lViHIw==", "dev": true, "license": "MIT" }, "node_modules/@cspell/dict-en_us": { - "version": "4.3.23", - "resolved": "https://registry.npmjs.org/@cspell/dict-en_us/-/dict-en_us-4.3.23.tgz", - "integrity": "sha512-l0SoEQBsi3zDSl3OuL4/apBkxjuj4hLIg/oy6+gZ7LWh03rKdF6VNtSZNXWAmMY+pmb1cGA3ouleTiJIglbsIg==", + "version": "4.3.26", + "resolved": "https://registry.npmjs.org/@cspell/dict-en_us/-/dict-en_us-4.3.26.tgz", + "integrity": "sha512-hDbHYJsi3UgU1J++B0WLiYhWQdsmve3CH53FIaMRAdhrWOHcuw7h1dYkQXHFEP5lOjaq53KUHp/oh5su6VkIZg==", "dev": true, "license": "MIT" }, "node_modules/@cspell/dict-en-common-misspellings": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@cspell/dict-en-common-misspellings/-/dict-en-common-misspellings-2.0.4.tgz", - "integrity": "sha512-lvOiRjV/FG4pAGZL3PN2GCVHSTCE92cwhfLGGkOsQtxSmef6WCHfHwp9auafkBlX0yFQSKDfq6/TlpQbjbJBtQ==", + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@cspell/dict-en-common-misspellings/-/dict-en-common-misspellings-2.0.7.tgz", + "integrity": "sha512-qNFo3G4wyabcwnM+hDrMYKN9vNVg/k9QkhqSlSst6pULjdvPyPs1mqz1689xO/v9t8e6sR4IKc3CgUXDMTYOpA==", "dev": true, "license": "CC BY-SA 4.0" }, @@ -1006,271 +1006,271 @@ "license": "MIT" }, "node_modules/@cspell/dict-filetypes": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@cspell/dict-filetypes/-/dict-filetypes-3.0.4.tgz", - "integrity": "sha512-IBi8eIVdykoGgIv5wQhOURi5lmCNJq0we6DvqKoPQJHthXbgsuO1qrHSiUVydMiQl/XvcnUWTMeAlVUlUClnVg==", + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@cspell/dict-filetypes/-/dict-filetypes-3.0.7.tgz", + "integrity": "sha512-/DN0Ujp9/EXvpTcgih9JmBaE8n+G0wtsspyNdvHT5luRfpfol1xm/CIQb6xloCXCiLkWX+EMPeLSiVIZq+24dA==", "dev": true, "license": "MIT" }, "node_modules/@cspell/dict-flutter": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@cspell/dict-flutter/-/dict-flutter-1.0.0.tgz", - "integrity": "sha512-W7k1VIc4KeV8BjEBxpA3cqpzbDWjfb7oXkEb0LecBCBp5Z7kcfnjT1YVotTx/U9PGyAOBhDaEdgZACVGNQhayw==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@cspell/dict-flutter/-/dict-flutter-1.0.3.tgz", + "integrity": "sha512-52C9aUEU22ptpgYh6gQyIdA4MP6NPwzbEqndfgPh3Sra191/kgs7CVqXiO1qbtZa9gnYHUoVApkoxRE7mrXHfg==", "dev": true, "license": "MIT" }, "node_modules/@cspell/dict-fonts": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@cspell/dict-fonts/-/dict-fonts-4.0.0.tgz", - "integrity": "sha512-t9V4GeN/m517UZn63kZPUYP3OQg5f0OBLSd3Md5CU3eH1IFogSvTzHHnz4Wqqbv8NNRiBZ3HfdY/pqREZ6br3Q==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@cspell/dict-fonts/-/dict-fonts-4.0.3.tgz", + "integrity": "sha512-sPd17kV5qgYXLteuHFPn5mbp/oCHKgitNfsZLFC3W2fWEgZlhg4hK+UGig3KzrYhhvQ8wBnmZrAQm0TFKCKzsA==", "dev": true, "license": "MIT" }, "node_modules/@cspell/dict-fsharp": { - "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==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@cspell/dict-fsharp/-/dict-fsharp-1.0.4.tgz", + "integrity": "sha512-G5wk0o1qyHUNi9nVgdE1h5wl5ylq7pcBjX8vhjHcO4XBq20D5eMoXjwqMo/+szKAqzJ+WV3BgAL50akLKrT9Rw==", "dev": true, "license": "MIT" }, "node_modules/@cspell/dict-fullstack": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@cspell/dict-fullstack/-/dict-fullstack-3.2.0.tgz", - "integrity": "sha512-sIGQwU6G3rLTo+nx0GKyirR5dQSFeTIzFTOrURw51ISf+jKG9a3OmvsVtc2OANfvEAOLOC9Wfd8WYhmsO8KRDQ==", + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/@cspell/dict-fullstack/-/dict-fullstack-3.2.3.tgz", + "integrity": "sha512-62PbndIyQPH11mAv0PyiyT0vbwD0AXEocPpHlCHzfb5v9SspzCCbzQ/LIBiFmyRa+q5LMW35CnSVu6OXdT+LKg==", "dev": true, "license": "MIT" }, "node_modules/@cspell/dict-gaming-terms": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@cspell/dict-gaming-terms/-/dict-gaming-terms-1.0.5.tgz", - "integrity": "sha512-C3riccZDD3d9caJQQs1+MPfrUrQ+0KHdlj9iUR1QD92FgTOF6UxoBpvHUUZ9YSezslcmpFQK4xQQ5FUGS7uWfw==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@cspell/dict-gaming-terms/-/dict-gaming-terms-1.0.8.tgz", + "integrity": "sha512-7OL0zTl93WFWhhtpXFrtm9uZXItC3ncAs8d0iQDMMFVNU1rBr6raBNxJskxE5wx2Ant12fgI66ZGVagXfN+yfA==", "dev": true, "license": "MIT" }, "node_modules/@cspell/dict-git": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@cspell/dict-git/-/dict-git-3.0.0.tgz", - "integrity": "sha512-simGS/lIiXbEaqJu9E2VPoYW1OTC2xrwPPXNXFMa2uo/50av56qOuaxDrZ5eH1LidFXwoc8HROCHYeKoNrDLSw==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@cspell/dict-git/-/dict-git-3.0.3.tgz", + "integrity": "sha512-LSxB+psZ0qoj83GkyjeEH/ZViyVsGEF/A6BAo8Nqc0w0HjD2qX/QR4sfA6JHUgQ3Yi/ccxdK7xNIo67L2ScW5A==", "dev": true, "license": "MIT" }, "node_modules/@cspell/dict-golang": { - "version": "6.0.12", - "resolved": "https://registry.npmjs.org/@cspell/dict-golang/-/dict-golang-6.0.12.tgz", - "integrity": "sha512-LEPeoqd+4O+vceHF73S7D7+LYfrAjOvp4Dqzh4MT30ruzlQ77yHRSuYOJtrFN1GK5ntAt/ILSVOKg9sgsz1Llg==", + "version": "6.0.16", + "resolved": "https://registry.npmjs.org/@cspell/dict-golang/-/dict-golang-6.0.16.tgz", + "integrity": "sha512-hZOBlgcguv2Hdc93n2zjdAQm1j3grsN9T9WhPnQ1wh2vUDoCLEujg+6gWhjcLb8ECOcwZTWgNyQLWeOxEsAj/w==", "dev": true, "license": "MIT" }, "node_modules/@cspell/dict-google": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@cspell/dict-google/-/dict-google-1.0.1.tgz", - "integrity": "sha512-dQr4M3n95uOhtloNSgB9tYYGXGGEGEykkFyRtfcp5pFuEecYUa0BSgtlGKx9RXVtJtKgR+yFT/a5uQSlt8WjqQ==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@cspell/dict-google/-/dict-google-1.0.4.tgz", + "integrity": "sha512-JThUT9eiguCja1mHHLwYESgxkhk17Gv7P3b1S7ZJzXw86QyVHPrbpVoMpozHk0C9o+Ym764B7gZGKmw9uMGduQ==", "dev": true, "license": "MIT" }, "node_modules/@cspell/dict-haskell": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@cspell/dict-haskell/-/dict-haskell-4.0.1.tgz", - "integrity": "sha512-uRrl65mGrOmwT7NxspB4xKXFUenNC7IikmpRZW8Uzqbqcu7ZRCUfstuVH7T1rmjRgRkjcIjE4PC11luDou4wEQ==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@cspell/dict-haskell/-/dict-haskell-4.0.4.tgz", + "integrity": "sha512-EwQsedEEnND/vY6tqRfg9y7tsnZdxNqOxLXSXTsFA6JRhUlr8Qs88iUUAfsUzWc4nNmmzQH2UbtT25ooG9x4nA==", "dev": true, "license": "MIT" }, "node_modules/@cspell/dict-html": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/@cspell/dict-html/-/dict-html-4.0.6.tgz", - "integrity": "sha512-cLWHfuOhE4wqwC12up6Doxo2u1xxVhX1A8zriR4CUD+osFQzUIcBK1ykNXppga+rt1WyypaJdTU2eV6OpzYrgQ==", + "version": "4.0.9", + "resolved": "https://registry.npmjs.org/@cspell/dict-html/-/dict-html-4.0.9.tgz", + "integrity": "sha512-BNp7w3m910K4qIVyOBOZxHuFNbVojUY6ES8Y8r7YjYgJkm2lCuQoVwwhPjurnomJ7BPmZTb+3LLJ58XIkgF7JQ==", "dev": true, "license": "MIT" }, "node_modules/@cspell/dict-html-symbol-entities": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@cspell/dict-html-symbol-entities/-/dict-html-symbol-entities-4.0.0.tgz", - "integrity": "sha512-HGRu+48ErJjoweR5IbcixxETRewrBb0uxQBd6xFGcxbEYCX8CnQFTAmKI5xNaIt2PKaZiJH3ijodGSqbKdsxhw==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@cspell/dict-html-symbol-entities/-/dict-html-symbol-entities-4.0.3.tgz", + "integrity": "sha512-aABXX7dMLNFdSE8aY844X4+hvfK7977sOWgZXo4MTGAmOzR8524fjbJPswIBK7GaD3+SgFZ2yP2o0CFvXDGF+A==", "dev": true, "license": "MIT" }, "node_modules/@cspell/dict-java": { - "version": "5.0.7", - "resolved": "https://registry.npmjs.org/@cspell/dict-java/-/dict-java-5.0.7.tgz", - "integrity": "sha512-ejQ9iJXYIq7R09BScU2y5OUGrSqwcD+J5mHFOKbduuQ5s/Eh/duz45KOzykeMLI6KHPVxhBKpUPBWIsfewECpQ==", + "version": "5.0.10", + "resolved": "https://registry.npmjs.org/@cspell/dict-java/-/dict-java-5.0.10.tgz", + "integrity": "sha512-pVNcOnmoGiNL8GSVq4WbX/Vs2FGS0Nej+1aEeGuUY9CU14X8yAVCG+oih5ZoLt1jaR8YfR8byUF8wdp4qG4XIw==", "dev": true, "license": "MIT" }, "node_modules/@cspell/dict-julia": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@cspell/dict-julia/-/dict-julia-1.0.1.tgz", - "integrity": "sha512-4JsCLCRhhLMLiaHpmR7zHFjj1qOauzDI5ZzCNQS31TUMfsOo26jAKDfo0jljFAKgw5M2fEG7sKr8IlPpQAYrmQ==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@cspell/dict-julia/-/dict-julia-1.0.4.tgz", + "integrity": "sha512-bFVgNX35MD3kZRbXbJVzdnN7OuEqmQXGpdOi9jzB40TSgBTlJWA4nxeAKV4CPCZxNRUGnLH0p05T/AD7Aom9/w==", "dev": true, "license": "MIT" }, "node_modules/@cspell/dict-k8s": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/@cspell/dict-k8s/-/dict-k8s-1.0.6.tgz", - "integrity": "sha512-srhVDtwrd799uxMpsPOQqeDJY+gEocgZpoK06EFrb4GRYGhv7lXo9Fb+xQMyQytzOW9dw4DNOEck++nacDuymg==", + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@cspell/dict-k8s/-/dict-k8s-1.0.9.tgz", + "integrity": "sha512-Q7GELSQIzo+BERl2ya/nBEnZeQC+zJP19SN1pI6gqDYraM51uYJacbbcWLYYO2Y+5joDjNt/sd/lJtLaQwoSlA==", "dev": true, "license": "MIT" }, "node_modules/@cspell/dict-latex": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@cspell/dict-latex/-/dict-latex-4.0.0.tgz", - "integrity": "sha512-LPY4y6D5oI7D3d+5JMJHK/wxYTQa2lJMSNxps2JtuF8hbAnBQb3igoWEjEbIbRRH1XBM0X8dQqemnjQNCiAtxQ==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@cspell/dict-latex/-/dict-latex-4.0.3.tgz", + "integrity": "sha512-2KXBt9fSpymYHxHfvhUpjUFyzrmN4c4P8mwIzweLyvqntBT3k0YGZJSriOdjfUjwSygrfEwiuPI1EMrvgrOMJw==", "dev": true, "license": "MIT" }, "node_modules/@cspell/dict-lorem-ipsum": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@cspell/dict-lorem-ipsum/-/dict-lorem-ipsum-4.0.0.tgz", - "integrity": "sha512-1l3yjfNvMzZPibW8A7mQU4kTozwVZVw0AvFEdy+NcqtbxH+TvbSkNMqROOFWrkD2PjnKG0+Ea0tHI2Pi6Gchnw==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@cspell/dict-lorem-ipsum/-/dict-lorem-ipsum-4.0.3.tgz", + "integrity": "sha512-WFpDi/PDYHXft6p0eCXuYnn7mzMEQLVeqpO+wHSUd+kz5ADusZ4cpslAA4wUZJstF1/1kMCQCZM6HLZic9bT8A==", "dev": true, "license": "MIT" }, "node_modules/@cspell/dict-lua": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@cspell/dict-lua/-/dict-lua-4.0.3.tgz", - "integrity": "sha512-lDHKjsrrbqPaea13+G9s0rtXjMO06gPXPYRjRYawbNmo4E/e3XFfVzeci3OQDQNDmf2cPOwt9Ef5lu2lDmwfJg==", + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/@cspell/dict-lua/-/dict-lua-4.0.6.tgz", + "integrity": "sha512-Jwvh1jmAd9b+SP9e1GkS2ACbqKKRo9E1f9GdjF/ijmooZuHU0hPyqvnhZzUAxO1egbnNjxS/J2T6iUtjAUK2KQ==", "dev": true, "license": "MIT" }, "node_modules/@cspell/dict-makefile": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@cspell/dict-makefile/-/dict-makefile-1.0.0.tgz", - "integrity": "sha512-3W9tHPcSbJa6s0bcqWo6VisEDTSN5zOtDbnPabF7rbyjRpNo0uHXHRJQF8gAbFzoTzBBhgkTmrfSiuyQm7vBUQ==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@cspell/dict-makefile/-/dict-makefile-1.0.3.tgz", + "integrity": "sha512-R3U0DSpvTs6qdqfyBATnePj9Q/pypkje0Nj26mQJ8TOBQutCRAJbr2ZFAeDjgRx5EAJU/+8txiyVF97fbVRViw==", "dev": true, "license": "MIT" }, "node_modules/@cspell/dict-monkeyc": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/@cspell/dict-monkeyc/-/dict-monkeyc-1.0.6.tgz", - "integrity": "sha512-oO8ZDu/FtZ55aq9Mb67HtaCnsLn59xvhO/t2mLLTHAp667hJFxpp7bCtr2zOrR1NELzFXmKln/2lw/PvxMSvrA==", + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@cspell/dict-monkeyc/-/dict-monkeyc-1.0.9.tgz", + "integrity": "sha512-Jvf6g5xlB4+za3ThvenYKREXTEgzx5gMUSzrAxIiPleVG4hmRb/GBSoSjtkGaibN3XxGx5x809gSTYCA/IHCpA==", "dev": true, "license": "MIT" }, "node_modules/@cspell/dict-node": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@cspell/dict-node/-/dict-node-5.0.1.tgz", - "integrity": "sha512-lax/jGz9h3Dv83v8LHa5G0bf6wm8YVRMzbjJPG/9rp7cAGPtdrga+XANFq+B7bY5+jiSA3zvj10LUFCFjnnCCg==", + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@cspell/dict-node/-/dict-node-5.0.4.tgz", + "integrity": "sha512-Hz5hiuOvZTd7Cp1IBqUZ7/ChwJeQpD5BJuwCaDn4mPNq4iMcQ1iWBYMThvNVqCEDgKv63X52nT8RAWacss98qg==", "dev": true, "license": "MIT" }, "node_modules/@cspell/dict-npm": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/@cspell/dict-npm/-/dict-npm-5.1.5.tgz", - "integrity": "sha512-oAOGWuJYU3DlO+cAsStKMWN8YEkBue25cRC9EwdiL5Z84nchU20UIoYrLfIQejMlZca+1GyrNeyxRAgn4KiivA==", + "version": "5.1.8", + "resolved": "https://registry.npmjs.org/@cspell/dict-npm/-/dict-npm-5.1.8.tgz", + "integrity": "sha512-AJELYXeB4fQdIoNfmuaQxB1Hli3cX6XPsQCjfBxlu0QYXhrjB/IrCLLQAjWIywDqJiWyGUFTz4DqaANm8C/r9Q==", "dev": true, "license": "MIT" }, "node_modules/@cspell/dict-php": { - "version": "4.0.10", - "resolved": "https://registry.npmjs.org/@cspell/dict-php/-/dict-php-4.0.10.tgz", - "integrity": "sha512-NfTZdp6kcZDF1PvgQ6cY0zE4FUO5rSwNmBH/iwCBuaLfJAFQ97rgjxo+D2bic4CFwNjyHutnHPtjJBRANO5XQw==", + "version": "4.0.13", + "resolved": "https://registry.npmjs.org/@cspell/dict-php/-/dict-php-4.0.13.tgz", + "integrity": "sha512-P6sREMZkhElzz/HhXAjahnICYIqB/HSGp1EhZh+Y6IhvC15AzgtDP8B8VYCIsQof6rPF1SQrFwunxOv8H1e2eg==", "dev": true, "license": "MIT" }, "node_modules/@cspell/dict-powershell": { - "version": "5.0.10", - "resolved": "https://registry.npmjs.org/@cspell/dict-powershell/-/dict-powershell-5.0.10.tgz", - "integrity": "sha512-U4H0zm94sNK+YP7jSFb7xb160XLf2dKIPVt5sOYctKlEyR9M16sP8FHbyWV2Yp1YtxXugoNdeCm2vwGEDAd8sg==", + "version": "5.0.13", + "resolved": "https://registry.npmjs.org/@cspell/dict-powershell/-/dict-powershell-5.0.13.tgz", + "integrity": "sha512-0qdj0XZIPmb77nRTynKidRJKTU0Fl+10jyLbAhFTuBWKMypVY06EaYFnwhsgsws/7nNX8MTEQuewbl9bWFAbsg==", "dev": true, "license": "MIT" }, "node_modules/@cspell/dict-public-licenses": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/@cspell/dict-public-licenses/-/dict-public-licenses-2.0.8.tgz", - "integrity": "sha512-Sup+tFS7cDV0fgpoKtUqEZ6+fA/H+XUgBiqQ/Fbs6vUE3WCjJHOIVsP+udHuyMH7iBfJ4UFYOYeORcY4EaKdMg==", + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@cspell/dict-public-licenses/-/dict-public-licenses-2.0.11.tgz", + "integrity": "sha512-rR5KjRUSnVKdfs5G+gJ4oIvQvm8+NJ6cHWY2N+GE69/FSGWDOPHxulCzeGnQU/c6WWZMSimG9o49i9r//lUQyA==", "dev": true, "license": "MIT" }, "node_modules/@cspell/dict-python": { - "version": "4.2.7", - "resolved": "https://registry.npmjs.org/@cspell/dict-python/-/dict-python-4.2.7.tgz", - "integrity": "sha512-igE4zbaRAjC0PEmck56+zT4Ui2SyV8CY2p7OQ6kdgLWrBIkrYQ1dboRucgVJCTHfMpENLnanWIX/cxY78fkY2Q==", + "version": "4.2.12", + "resolved": "https://registry.npmjs.org/@cspell/dict-python/-/dict-python-4.2.12.tgz", + "integrity": "sha512-U25eOFu+RE0aEcF2AsxZmq3Lic7y9zspJ9SzjrC0mfJz+yr3YmSCw4E0blMD3mZoNcf7H/vMshuKIY5AY36U+Q==", "dev": true, "license": "MIT", "dependencies": { - "@cspell/dict-data-science": "^2.0.1" + "@cspell/dict-data-science": "^2.0.5" } }, "node_modules/@cspell/dict-r": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@cspell/dict-r/-/dict-r-2.0.1.tgz", - "integrity": "sha512-KCmKaeYMLm2Ip79mlYPc8p+B2uzwBp4KMkzeLd5E6jUlCL93Y5Nvq68wV5fRLDRTf7N1LvofkVFWfDcednFOgA==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@cspell/dict-r/-/dict-r-2.0.4.tgz", + "integrity": "sha512-cBpRsE/U0d9BRhiNRMLMH1PpWgw+N+1A2jumgt1if9nBGmQw4MUpg2u9I0xlFVhstTIdzXiLXMxP45cABuiUeQ==", "dev": true, "license": "MIT" }, "node_modules/@cspell/dict-ruby": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/@cspell/dict-ruby/-/dict-ruby-5.0.4.tgz", - "integrity": "sha512-URw0jScj5pv8sKCVLNnde11qVCQR442rUpSd12u46Swl+5qBaSdnOUoCWQk419kd9/dpC6bB/3l4kOSY2fdYHw==", + "version": "5.0.7", + "resolved": "https://registry.npmjs.org/@cspell/dict-ruby/-/dict-ruby-5.0.7.tgz", + "integrity": "sha512-4/d0hcoPzi5Alk0FmcyqlzFW9lQnZh9j07MJzPcyVO62nYJJAGKaPZL2o4qHeCS/od/ctJC5AHRdoUm0ktsw6Q==", "dev": true, "license": "MIT" }, "node_modules/@cspell/dict-rust": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/@cspell/dict-rust/-/dict-rust-4.0.6.tgz", - "integrity": "sha512-Buzy9PfLbdRPibSth8CV1D8ZsYqybo26yNIlAN+8ehU0pSBss0Jv4aleL4vKQ3FjouXeAC27rtEsLd7yaMZTog==", + "version": "4.0.9", + "resolved": "https://registry.npmjs.org/@cspell/dict-rust/-/dict-rust-4.0.9.tgz", + "integrity": "sha512-Dhr6TIZsMV92xcikKIWei6p/qswS4M+gTkivpWwz4/1oaVk2nRrxJmCdRoVkJlZkkAc17rjxrS12mpnJZI0iWw==", "dev": true, "license": "MIT" }, "node_modules/@cspell/dict-scala": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/@cspell/dict-scala/-/dict-scala-5.0.3.tgz", - "integrity": "sha512-4yGb4AInT99rqprxVNT9TYb1YSpq58Owzq7zi3ZS5T0u899Y4VsxsBiOgHnQ/4W+ygi+sp+oqef8w8nABR2lkg==", + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/@cspell/dict-scala/-/dict-scala-5.0.6.tgz", + "integrity": "sha512-tl0YWAfjUVb4LyyE4JIMVE8DlLzb1ecHRmIWc4eT6nkyDqQgHKzdHsnusxFEFMVLIQomgSg0Zz6hJ5S1E4W4ww==", "dev": true, "license": "MIT" }, "node_modules/@cspell/dict-software-terms": { - "version": "4.1.6", - "resolved": "https://registry.npmjs.org/@cspell/dict-software-terms/-/dict-software-terms-4.1.6.tgz", - "integrity": "sha512-5dWn9JC18DKpm47BPKf1jGbXzEkKoXmqiYv9vaeor4+jmURZnE+VPIh5BNZFBQ840gTDvys7JXt4P7ysifUlfg==", + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/@cspell/dict-software-terms/-/dict-software-terms-4.1.11.tgz", + "integrity": "sha512-77CTHxWFTVw6tVoMN8WBMrlNW2F2FbgATwD/6vcOuiyrJUmh8klN5ZK3m+yyK3ZzsnaW2Bduoc0fw2Ckcm/riQ==", "dev": true, "license": "MIT" }, "node_modules/@cspell/dict-sql": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@cspell/dict-sql/-/dict-sql-2.1.5.tgz", - "integrity": "sha512-FmxanytHXss7GAWAXmgaxl3icTCW7YxlimyOSPNfm+njqeUDjw3kEv4mFNDDObBJv8Ec5AWCbUDkWIpkE3IpKg==", + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/@cspell/dict-sql/-/dict-sql-2.1.8.tgz", + "integrity": "sha512-dJRE4JV1qmXTbbGm6WIcg1knmR6K5RXnQxF4XHs5HA3LAjc/zf77F95i5LC+guOGppVF6Hdl66S2UyxT+SAF3A==", "dev": true, "license": "MIT" }, "node_modules/@cspell/dict-svelte": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@cspell/dict-svelte/-/dict-svelte-1.0.2.tgz", - "integrity": "sha512-rPJmnn/GsDs0btNvrRBciOhngKV98yZ9SHmg8qI6HLS8hZKvcXc0LMsf9LLuMK1TmS2+WQFAan6qeqg6bBxL2Q==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@cspell/dict-svelte/-/dict-svelte-1.0.5.tgz", + "integrity": "sha512-sseHlcXOqWE4Ner9sg8KsjxwSJ2yssoJNqFHR9liWVbDV+m7kBiUtn2EB690TihzVsEmDr/0Yxrbb5Bniz70mA==", "dev": true, "license": "MIT" }, "node_modules/@cspell/dict-swift": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@cspell/dict-swift/-/dict-swift-2.0.1.tgz", - "integrity": "sha512-gxrCMUOndOk7xZFmXNtkCEeroZRnS2VbeaIPiymGRHj5H+qfTAzAKxtv7jJbVA3YYvEzWcVE2oKDP4wcbhIERw==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@cspell/dict-swift/-/dict-swift-2.0.4.tgz", + "integrity": "sha512-CsFF0IFAbRtYNg0yZcdaYbADF5F3DsM8C4wHnZefQy8YcHP/qjAF/GdGfBFBLx+XSthYuBlo2b2XQVdz3cJZBw==", "dev": true, "license": "MIT" }, "node_modules/@cspell/dict-terraform": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@cspell/dict-terraform/-/dict-terraform-1.0.2.tgz", - "integrity": "sha512-UZdJwWIpib2Rx02w6vtXTU3z+M/VMZU0F1dhSL3Ab9otQsFntT8U1CX7wBSqQCLg8bJiCfnUyVvMK3UBm3SR8A==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@cspell/dict-terraform/-/dict-terraform-1.0.5.tgz", + "integrity": "sha512-qH3epPB2d6d5w1l4hR2OsnN8qDQ4P0z6oDB7+YiNH+BoECXv4Z38MIV1H8cxIzD2wkzkt2JTcFYaVW72MDZAlg==", "dev": true, "license": "MIT" }, "node_modules/@cspell/dict-typescript": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/@cspell/dict-typescript/-/dict-typescript-3.1.6.tgz", - "integrity": "sha512-1beC6O4P/j23VuxX+i0+F7XqPVc3hhiAzGJHEKqnWf5cWAXQtg0xz3xQJ5MvYx2a7iLaSa+lu7+05vG9UHyu9Q==", + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/@cspell/dict-typescript/-/dict-typescript-3.1.10.tgz", + "integrity": "sha512-7Zek3w4Rh3ZYyhihJ34FdnUBwP3OmRldnEq3hZ+FgQ0PyYZjXv5ztEViRBBxXjiFx1nHozr6pLi74TxToD8xsg==", "dev": true, "license": "MIT" }, "node_modules/@cspell/dict-vue": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@cspell/dict-vue/-/dict-vue-3.0.0.tgz", - "integrity": "sha512-niiEMPWPV9IeRBRzZ0TBZmNnkK3olkOPYxC1Ny2AX4TGlYRajcW0WUtoSHmvvjZNfWLSg2L6ruiBeuPSbjnG6A==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@cspell/dict-vue/-/dict-vue-3.0.3.tgz", + "integrity": "sha512-akmYbrgAGumqk1xXALtDJcEcOMYBYMnkjpmGzH13Ozhq1mkPF4VgllFQlm1xYde+BUKNnzMgPEzxrL2qZllgYA==", "dev": true, "license": "MIT" }, "node_modules/@cspell/dynamic-import": { - "version": "8.14.4", - "resolved": "https://registry.npmjs.org/@cspell/dynamic-import/-/dynamic-import-8.14.4.tgz", - "integrity": "sha512-GjKsBJvPXp4dYRqsMn7n1zpnKbnpfJnlKLOVeoFBh8fi4n06G50xYr+G25CWX1WT3WFaALAavvVICEUPrVsuqg==", + "version": "8.15.3", + "resolved": "https://registry.npmjs.org/@cspell/dynamic-import/-/dynamic-import-8.15.3.tgz", + "integrity": "sha512-RG35KnoLSFRj9BwmDW3AmkEbh6NxkZrhRxCQ8s4ZfMl5QEkoYKdVpWYSPUBMlPqkq0U+SVggMvNbdMSqyITxxQ==", "dev": true, "license": "MIT", "dependencies": { @@ -1281,9 +1281,9 @@ } }, "node_modules/@cspell/filetypes": { - "version": "8.14.4", - "resolved": "https://registry.npmjs.org/@cspell/filetypes/-/filetypes-8.14.4.tgz", - "integrity": "sha512-qd68dD7xTA4Mnf/wjIKYz2SkiTBshIM+yszOUtLa06YJm0aocoNQ25FHXyYEQYm9NQXCYnRWWA02sFMGs8Sv/w==", + "version": "8.15.3", + "resolved": "https://registry.npmjs.org/@cspell/filetypes/-/filetypes-8.15.3.tgz", + "integrity": "sha512-2B22/c2/pVqS2p3latOj3zCHk7vUWsxwkhCKhOKMA2tKt2cc7MHKUKMfsX4XpfY/571S/TTy1YYeGXlAxUtF3g==", "dev": true, "license": "MIT", "engines": { @@ -1291,9 +1291,9 @@ } }, "node_modules/@cspell/strong-weak-map": { - "version": "8.14.4", - "resolved": "https://registry.npmjs.org/@cspell/strong-weak-map/-/strong-weak-map-8.14.4.tgz", - "integrity": "sha512-Uyfck64TfVU24wAP3BLGQ5EsAfzIZiLfN90NhttpEM7GlOBmbGrEJd4hNOwfpYsE/TT80eGWQVPRTLr5SDbXFA==", + "version": "8.15.3", + "resolved": "https://registry.npmjs.org/@cspell/strong-weak-map/-/strong-weak-map-8.15.3.tgz", + "integrity": "sha512-IhH+Reh2P+QXj8i5qGYsFI3Z01IWYMqUuN6CLnFXx5W0R8tWtxvmwWyT7j8lchV5foHSs8+mWaijKzwS6FSFVQ==", "dev": true, "license": "MIT", "engines": { @@ -1301,9 +1301,9 @@ } }, "node_modules/@cspell/url": { - "version": "8.14.4", - "resolved": "https://registry.npmjs.org/@cspell/url/-/url-8.14.4.tgz", - "integrity": "sha512-htHhNF8WrM/NfaLSWuTYw0NqVgFRVHYSyHlRT3i/Yv5xvErld8Gw7C6ldm+0TLjoGlUe6X1VV72JSir7+yLp/Q==", + "version": "8.15.3", + "resolved": "https://registry.npmjs.org/@cspell/url/-/url-8.15.3.tgz", + "integrity": "sha512-JuQdGHj+W5anXpc+2pYggoUd+LsbNac4Rc7PdUUTnzMxV1EvlQZs28jEK4y27i4RI5pNQmsUWGZTHeMuwdlgSQ==", "dev": true, "license": "MIT", "engines": { @@ -1311,9 +1311,9 @@ } }, "node_modules/@csstools/css-parser-algorithms": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.1.tgz", - "integrity": "sha512-lSquqZCHxDfuTg/Sk2hiS0mcSFCEBuj49JfzPHJogDBT0mGCyY5A1AQzBWngitrp7i1/HAZpIgzF/VjhOEIJIg==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.2.tgz", + "integrity": "sha512-6tC/MnlEvs5suR4Ahef4YlBccJDHZuxGsAlxXmybWjZ5jPxlzLSMlRZ9mVHSRvlD+CmtE7+hJ+UQbfXrws/rUQ==", "dev": true, "funding": [ { @@ -1330,13 +1330,13 @@ "node": ">=18" }, "peerDependencies": { - "@csstools/css-tokenizer": "^3.0.1" + "@csstools/css-tokenizer": "^3.0.2" } }, "node_modules/@csstools/css-tokenizer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-3.0.1.tgz", - "integrity": "sha512-UBqaiu7kU0lfvaP982/o3khfXccVlHPWp0/vwwiIgDF0GmqqqxoiXC/6FCjlS9u92f7CoEz6nXKQnrn1kIAkOw==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-3.0.2.tgz", + "integrity": "sha512-IuTRcD53WHsXPCZ6W7ubfGqReTJ9Ra0yRRFmXYP/Re8hFYYfoIYIK4080X5luslVLWimhIeFq0hj09urVMQzTw==", "dev": true, "funding": [ { @@ -1564,9 +1564,9 @@ "license": "MIT" }, "node_modules/@es-joy/jsdoccomment": { - "version": "0.48.0", - "resolved": "https://registry.npmjs.org/@es-joy/jsdoccomment/-/jsdoccomment-0.48.0.tgz", - "integrity": "sha512-G6QUWIcC+KvSwXNsJyDTHvqUdNoAVJPPgkc3+Uk4WBKqZvoXhlvazOgm9aL0HwihJLQf0l+tOE2UFzXBqCqgDw==", + "version": "0.49.0", + "resolved": "https://registry.npmjs.org/@es-joy/jsdoccomment/-/jsdoccomment-0.49.0.tgz", + "integrity": "sha512-xjZTSFgECpb9Ohuk5yMX5RhUEbfeQcuOp8IF60e+wyzWEF0M5xeSgqsfLtvPEX8BIyOX9saZqzuGPmZ8oWc+5Q==", "dev": true, "license": "MIT", "dependencies": { @@ -2368,13 +2368,13 @@ } }, "node_modules/@playwright/test": { - "version": "1.47.2", - "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.47.2.tgz", - "integrity": "sha512-jTXRsoSPONAs8Za9QEQdyjFn+0ZQFjCiIztAIF6bi1HqhBzG9Ma7g1WotyiGqFSBRZjIEqMdT8RUlbk1QVhzCQ==", + "version": "1.48.1", + "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.48.1.tgz", + "integrity": "sha512-s9RtWoxkOLmRJdw3oFvhFbs9OJS0BzrLUc8Hf6l2UdCNd1rqeEyD4BhCJkvzeEoD1FsK4mirsWwGerhVmYKtZg==", "dev": true, "license": "Apache-2.0", "dependencies": { - "playwright": "1.47.2" + "playwright": "1.48.1" }, "bin": { "playwright": "cli.js" @@ -3074,9 +3074,9 @@ } }, "node_modules/@remix-run/router": { - "version": "1.19.2", - "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.19.2.tgz", - "integrity": "sha512-baiMx18+IMuD1yyvOGaHM9QrVUPGGG0jC+z+IPHnRJWUAUvaKuWKyE8gjDj2rzv3sz9zOGoRSPgeBVHRhZnBlA==", + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.20.0.tgz", + "integrity": "sha512-mUnk8rPJBI9loFDZ+YzPGdeniYK+FTmRD1TMCz7ev2SNIozyKKpnGgsxO34u6Z4z/t0ITuu7voi/AshfsGsgFg==", "dev": true, "license": "MIT", "engines": { @@ -3325,15 +3325,15 @@ } }, "node_modules/@swc/core": { - "version": "1.7.26", - "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.7.26.tgz", - "integrity": "sha512-f5uYFf+TmMQyYIoxkn/evWhNGuUzC730dFwAKGwBVHHVoPyak1/GvJUm6i1SKl+2Hrj9oN0i3WSoWWZ4pgI8lw==", + "version": "1.7.36", + "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.7.36.tgz", + "integrity": "sha512-bu7ymMX+LCJOSSrKank25Jaq66ymLVA9fOUuy4ck3/6rbXdLw+pIJPnIDKQ9uNcxww8KDxOuJk9Ui9pqR+aGFw==", "dev": true, "hasInstallScript": true, "license": "Apache-2.0", "dependencies": { "@swc/counter": "^0.1.3", - "@swc/types": "^0.1.12" + "@swc/types": "^0.1.13" }, "engines": { "node": ">=10" @@ -3343,16 +3343,16 @@ "url": "https://opencollective.com/swc" }, "optionalDependencies": { - "@swc/core-darwin-arm64": "1.7.26", - "@swc/core-darwin-x64": "1.7.26", - "@swc/core-linux-arm-gnueabihf": "1.7.26", - "@swc/core-linux-arm64-gnu": "1.7.26", - "@swc/core-linux-arm64-musl": "1.7.26", - "@swc/core-linux-x64-gnu": "1.7.26", - "@swc/core-linux-x64-musl": "1.7.26", - "@swc/core-win32-arm64-msvc": "1.7.26", - "@swc/core-win32-ia32-msvc": "1.7.26", - "@swc/core-win32-x64-msvc": "1.7.26" + "@swc/core-darwin-arm64": "1.7.36", + "@swc/core-darwin-x64": "1.7.36", + "@swc/core-linux-arm-gnueabihf": "1.7.36", + "@swc/core-linux-arm64-gnu": "1.7.36", + "@swc/core-linux-arm64-musl": "1.7.36", + "@swc/core-linux-x64-gnu": "1.7.36", + "@swc/core-linux-x64-musl": "1.7.36", + "@swc/core-win32-arm64-msvc": "1.7.36", + "@swc/core-win32-ia32-msvc": "1.7.36", + "@swc/core-win32-x64-msvc": "1.7.36" }, "peerDependencies": { "@swc/helpers": "*" @@ -3364,9 +3364,9 @@ } }, "node_modules/@swc/core-darwin-arm64": { - "version": "1.7.26", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.7.26.tgz", - "integrity": "sha512-FF3CRYTg6a7ZVW4yT9mesxoVVZTrcSWtmZhxKCYJX9brH4CS/7PRPjAKNk6kzWgWuRoglP7hkjQcd6EpMcZEAw==", + "version": "1.7.36", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.7.36.tgz", + "integrity": "sha512-8vDczXzCgv3ceTPhEivlpGprN44YlrCK1nbfU9g2TrhV/Aiqi09W/eM5zLesdoM1Z3mJl492gc/8nlTkpDdusw==", "cpu": [ "arm64" ], @@ -3381,9 +3381,9 @@ } }, "node_modules/@swc/core-darwin-x64": { - "version": "1.7.26", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.7.26.tgz", - "integrity": "sha512-az3cibZdsay2HNKmc4bjf62QVukuiMRh5sfM5kHR/JMTrLyS6vSw7Ihs3UTkZjUxkLTT8ro54LI6sV6sUQUbLQ==", + "version": "1.7.36", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.7.36.tgz", + "integrity": "sha512-Pa2Gao7+Wf5m3SsK4abKRtd48AtoUnJInvaC3d077swBfgZjbjUbQvcpdc2dOeQtWwo49rFqUZJonMsL0jnPgQ==", "cpu": [ "x64" ], @@ -3398,9 +3398,9 @@ } }, "node_modules/@swc/core-linux-arm-gnueabihf": { - "version": "1.7.26", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.7.26.tgz", - "integrity": "sha512-VYPFVJDO5zT5U3RpCdHE5v1gz4mmR8BfHecUZTmD2v1JeFY6fv9KArJUpjrHEEsjK/ucXkQFmJ0jaiWXmpOV9Q==", + "version": "1.7.36", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.7.36.tgz", + "integrity": "sha512-3YsMWd7V+WZEjbfBnLkkz/olcRBa8nyoK0iIOnNARJBMcYaJxjkJSMZpmSojCnIVwvjA1N83CPAbUL+W+fCnHg==", "cpu": [ "arm" ], @@ -3415,9 +3415,9 @@ } }, "node_modules/@swc/core-linux-arm64-gnu": { - "version": "1.7.26", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.7.26.tgz", - "integrity": "sha512-YKevOV7abpjcAzXrhsl+W48Z9mZvgoVs2eP5nY+uoMAdP2b3GxC0Df1Co0I90o2lkzO4jYBpTMcZlmUXLdXn+Q==", + "version": "1.7.36", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.7.36.tgz", + "integrity": "sha512-lqM3aBB7kJazJYOwHeA5OGNLqXoQPZ/76b3dV+XcjN1GhD0CcXz6mW5PRYVin6OSN1eKrKBKJjtDA1mqADDEvw==", "cpu": [ "arm64" ], @@ -3432,9 +3432,9 @@ } }, "node_modules/@swc/core-linux-arm64-musl": { - "version": "1.7.26", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.7.26.tgz", - "integrity": "sha512-3w8iZICMkQQON0uIcvz7+Q1MPOW6hJ4O5ETjA0LSP/tuKqx30hIniCGOgPDnv3UTMruLUnQbtBwVCZTBKR3Rkg==", + "version": "1.7.36", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.7.36.tgz", + "integrity": "sha512-bqei2YDzvUfG0pth5W2xJaj0eG4XWYk0d/NJ75vBX6bkIzK6dC8iuKQ41jOfUWonnrAs7rTDDJW0sTn/evvRdw==", "cpu": [ "arm64" ], @@ -3449,9 +3449,9 @@ } }, "node_modules/@swc/core-linux-x64-gnu": { - "version": "1.7.26", - "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.7.26.tgz", - "integrity": "sha512-c+pp9Zkk2lqb06bNGkR2Looxrs7FtGDMA4/aHjZcCqATgp348hOKH5WPvNLBl+yPrISuWjbKDVn3NgAvfvpH4w==", + "version": "1.7.36", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.7.36.tgz", + "integrity": "sha512-03maXTUyaBjeCxlDltmdzHje1ryQt1C4OWmmNgSSRXjLb+GNnAenwOJMSrcvHP/aNClD2pwsFCnYKDGy+sYE6w==", "cpu": [ "x64" ], @@ -3466,9 +3466,9 @@ } }, "node_modules/@swc/core-linux-x64-musl": { - "version": "1.7.26", - "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.7.26.tgz", - "integrity": "sha512-PgtyfHBF6xG87dUSSdTJHwZ3/8vWZfNIXQV2GlwEpslrOkGqy+WaiiyE7Of7z9AvDILfBBBcJvJ/r8u980wAfQ==", + "version": "1.7.36", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.7.36.tgz", + "integrity": "sha512-XXysqLkvjtQnXm1zHqLhy00UYPv/gk5OtwR732X+piNisnEbcJBqI8Qp9O7YvLWllRcoP8IMBGDWLGdGLSpViA==", "cpu": [ "x64" ], @@ -3483,9 +3483,9 @@ } }, "node_modules/@swc/core-win32-arm64-msvc": { - "version": "1.7.26", - "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.7.26.tgz", - "integrity": "sha512-9TNXPIJqFynlAOrRD6tUQjMq7KApSklK3R/tXgIxc7Qx+lWu8hlDQ/kVPLpU7PWvMMwC/3hKBW+p5f+Tms1hmA==", + "version": "1.7.36", + "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.7.36.tgz", + "integrity": "sha512-k7+dmb13a/zPw+E4XYfPmLZFWJgcOcBRKIjYl9nQErtYsgsg3Ji6TBbsvJVETy23lNHyewZ17V5Vq6NzaG0hzg==", "cpu": [ "arm64" ], @@ -3500,9 +3500,9 @@ } }, "node_modules/@swc/core-win32-ia32-msvc": { - "version": "1.7.26", - "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.7.26.tgz", - "integrity": "sha512-9YngxNcG3177GYdsTum4V98Re+TlCeJEP4kEwEg9EagT5s3YejYdKwVAkAsJszzkXuyRDdnHUpYbTrPG6FiXrQ==", + "version": "1.7.36", + "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.7.36.tgz", + "integrity": "sha512-ridD3ay6YM2PEYHZXXFN+edYEv0FOynaqOBP+NSnGNHA35azItIjoIe+KNi4WltGtAjpKCHSpjGCNfna12wdYQ==", "cpu": [ "ia32" ], @@ -3517,9 +3517,9 @@ } }, "node_modules/@swc/core-win32-x64-msvc": { - "version": "1.7.26", - "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.7.26.tgz", - "integrity": "sha512-VR+hzg9XqucgLjXxA13MtV5O3C0bK0ywtLIBw/+a+O+Oc6mxFWHtdUeXDbIi5AiPbn0fjgVJMqYnyjGyyX8u0w==", + "version": "1.7.36", + "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.7.36.tgz", + "integrity": "sha512-j1z2Z1Ln9d0E3dHsPkC1K9XDh0ojhRPwV+GfRTu4D61PE+aYhYLvbJC6xPvL4/204QrStRS7eDu3m+BcDp3rgQ==", "cpu": [ "x64" ], @@ -3541,9 +3541,9 @@ "license": "Apache-2.0" }, "node_modules/@swc/types": { - "version": "0.1.12", - "resolved": "https://registry.npmjs.org/@swc/types/-/types-0.1.12.tgz", - "integrity": "sha512-wBJA+SdtkbFhHjTMYH+dEH1y4VpfGdAc2Kw/LK09i9bXd/K6j6PkDcFCEzb6iVfZMkPRrl/q0e3toqTAJdkIVA==", + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/@swc/types/-/types-0.1.13.tgz", + "integrity": "sha512-JL7eeCk6zWCbiYQg2xQSdLXQJl8Qoc9rXmG2cEKvHe3CKwMHwHGpfOb8frzNLmbycOo6I51qxnLnn9ESf4I20Q==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -3551,9 +3551,9 @@ } }, "node_modules/@tanstack/query-core": { - "version": "5.59.0", - "resolved": "https://registry.npmjs.org/@tanstack/query-core/-/query-core-5.59.0.tgz", - "integrity": "sha512-WGD8uIhX6/deH/tkZqPNcRyAhDUqs729bWKoByYHSogcshXfFbppOdTER5+qY7mFvu8KEFJwT0nxr8RfPTVh0Q==", + "version": "5.59.13", + "resolved": "https://registry.npmjs.org/@tanstack/query-core/-/query-core-5.59.13.tgz", + "integrity": "sha512-Oou0bBu/P8+oYjXsJQ11j+gcpLAMpqW42UlokQYEz4dE7+hOtVO9rVuolJKgEccqzvyFzqX4/zZWY+R/v1wVsQ==", "license": "MIT", "funding": { "type": "github", @@ -3561,12 +3561,12 @@ } }, "node_modules/@tanstack/react-query": { - "version": "5.59.0", - "resolved": "https://registry.npmjs.org/@tanstack/react-query/-/react-query-5.59.0.tgz", - "integrity": "sha512-YDXp3OORbYR+8HNQx+lf4F73NoiCmCcSvZvgxE29OifmQFk0sBlO26NWLHpcNERo92tVk3w+JQ53/vkcRUY1hA==", + "version": "5.59.14", + "resolved": "https://registry.npmjs.org/@tanstack/react-query/-/react-query-5.59.14.tgz", + "integrity": "sha512-2cM4x3Ka4Thl7/wnjf++EMGA2Is/RgPynn83D4kfGiJOGSjb5T2D3EEOlC8Nt6U2htLS3imOXjOSMEjC3K7JNg==", "license": "MIT", "dependencies": { - "@tanstack/query-core": "5.59.0" + "@tanstack/query-core": "5.59.13" }, "funding": { "type": "github", @@ -3832,9 +3832,9 @@ "license": "MIT" }, "node_modules/@types/d3-selection": { - "version": "3.0.10", - "resolved": "https://registry.npmjs.org/@types/d3-selection/-/d3-selection-3.0.10.tgz", - "integrity": "sha512-cuHoUgS/V3hLdjJOLTT691+G2QoqAjCVLmr4kJXR4ha56w1Zdu8UUQ5TxLRqudgNjwXeQxKMq4j+lyf9sWuslg==", + "version": "3.0.11", + "resolved": "https://registry.npmjs.org/@types/d3-selection/-/d3-selection-3.0.11.tgz", + "integrity": "sha512-bhAXu23DJWsrI45xafYpkQ4NtcKMwWnAC/vKrd2l+nxMFuvOT3XMYTIj2opv8vq8AO5Yh7Qac/nSeP/3zjTK0w==", "dev": true, "license": "MIT" }, @@ -3869,9 +3869,9 @@ "license": "MIT" }, "node_modules/@types/d3-transition": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/@types/d3-transition/-/d3-transition-3.0.8.tgz", - "integrity": "sha512-ew63aJfQ/ms7QQ4X7pk5NxQ9fZH/z+i24ZfJ6tJSfqxJMrYLiK01EAs2/Rtw/JreGUsS3pLPNV644qXFGnoZNQ==", + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/@types/d3-transition/-/d3-transition-3.0.9.tgz", + "integrity": "sha512-uZS5shfxzO3rGlu0cC3bjmMFKsXv+SmZZcgp0KD22ts4uGXp5EVYGzu/0YdwZeKmddhcAccYtREJKkPfXkZuCg==", "dev": true, "license": "MIT", "dependencies": { @@ -3903,12 +3903,6 @@ "dev": true, "license": "MIT" }, - "node_modules/@types/js-cookie": { - "version": "2.2.7", - "resolved": "https://registry.npmjs.org/@types/js-cookie/-/js-cookie-2.2.7.tgz", - "integrity": "sha512-aLkWa0C0vO5b4Sr798E26QgOkss68Un0bLjs7u9qxzPT5CG+8DuNTffWES58YzJs3hrVAOs1wonycqEBqNJubA==", - "license": "MIT" - }, "node_modules/@types/json-schema": { "version": "7.0.15", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", @@ -3939,9 +3933,9 @@ } }, "node_modules/@types/node": { - "version": "22.7.4", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.7.4.tgz", - "integrity": "sha512-y+NPi1rFzDs1NdQHHToqeiX2TIS79SWEAw9GYhkkx8bD0ChpfqC+n2j5OXOCpzfojBEBt6DnEnnG9MY0zk1XLg==", + "version": "22.7.6", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.7.6.tgz", + "integrity": "sha512-/d7Rnj0/ExXDMcioS78/kf1lMzYk4BZV8MZGTBKzTGZ6/406ukkbYlIsZmMPhcR5KlkunDHQLrtAVmSq7r+mSw==", "dev": true, "license": "MIT", "dependencies": { @@ -3988,9 +3982,9 @@ } }, "node_modules/@types/react-dom": { - "version": "18.3.0", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.0.tgz", - "integrity": "sha512-EhwApuTmMBmXuFOikhQLIBUn6uFg81SwLMOAUgodJF14SOBOCMdU04gDoYi0WOJJHD144TL32z4yDqCW3dnkQg==", + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.1.tgz", + "integrity": "sha512-qW1Mfv8taImTthu4KoXgDfLuk4bydU6Q/TkADnDWWHwi4NX4BR+LWfTp2sVmTqRrsHvyDDTelgelxJ+SsejKKQ==", "devOptional": true, "license": "MIT", "dependencies": { @@ -4008,17 +4002,17 @@ } }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.8.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.8.0.tgz", - "integrity": "sha512-wORFWjU30B2WJ/aXBfOm1LX9v9nyt9D3jsSOxC3cCaTQGCW5k4jNpmjFv3U7p/7s4yvdjHzwtv2Sd2dOyhjS0A==", + "version": "8.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.9.0.tgz", + "integrity": "sha512-Y1n621OCy4m7/vTXNlCbMVp87zSd7NH0L9cXD8aIpOaNlzeWxIK4+Q19A68gSmTNRZn92UjocVUWDthGxtqHFg==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "8.8.0", - "@typescript-eslint/type-utils": "8.8.0", - "@typescript-eslint/utils": "8.8.0", - "@typescript-eslint/visitor-keys": "8.8.0", + "@typescript-eslint/scope-manager": "8.9.0", + "@typescript-eslint/type-utils": "8.9.0", + "@typescript-eslint/utils": "8.9.0", + "@typescript-eslint/visitor-keys": "8.9.0", "graphemer": "^1.4.0", "ignore": "^5.3.1", "natural-compare": "^1.4.0", @@ -4042,16 +4036,16 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "8.8.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.8.0.tgz", - "integrity": "sha512-uEFUsgR+tl8GmzmLjRqz+VrDv4eoaMqMXW7ruXfgThaAShO9JTciKpEsB+TvnfFfbg5IpujgMXVV36gOJRLtZg==", + "version": "8.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.9.0.tgz", + "integrity": "sha512-U+BLn2rqTTHnc4FL3FJjxaXptTxmf9sNftJK62XLz4+GxG3hLHm/SUNaaXP5Y4uTiuYoL5YLy4JBCJe3+t8awQ==", "dev": true, "license": "BSD-2-Clause", "dependencies": { - "@typescript-eslint/scope-manager": "8.8.0", - "@typescript-eslint/types": "8.8.0", - "@typescript-eslint/typescript-estree": "8.8.0", - "@typescript-eslint/visitor-keys": "8.8.0", + "@typescript-eslint/scope-manager": "8.9.0", + "@typescript-eslint/types": "8.9.0", + "@typescript-eslint/typescript-estree": "8.9.0", + "@typescript-eslint/visitor-keys": "8.9.0", "debug": "^4.3.4" }, "engines": { @@ -4071,14 +4065,14 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "8.8.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.8.0.tgz", - "integrity": "sha512-EL8eaGC6gx3jDd8GwEFEV091210U97J0jeEHrAYvIYosmEGet4wJ+g0SYmLu+oRiAwbSA5AVrt6DxLHfdd+bUg==", + "version": "8.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.9.0.tgz", + "integrity": "sha512-bZu9bUud9ym1cabmOYH9S6TnbWRzpklVmwqICeOulTCZ9ue2/pczWzQvt/cGj2r2o1RdKoZbuEMalJJSYw3pHQ==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.8.0", - "@typescript-eslint/visitor-keys": "8.8.0" + "@typescript-eslint/types": "8.9.0", + "@typescript-eslint/visitor-keys": "8.9.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -4089,14 +4083,14 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "8.8.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.8.0.tgz", - "integrity": "sha512-IKwJSS7bCqyCeG4NVGxnOP6lLT9Okc3Zj8hLO96bpMkJab+10HIfJbMouLrlpyOr3yrQ1cA413YPFiGd1mW9/Q==", + "version": "8.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.9.0.tgz", + "integrity": "sha512-JD+/pCqlKqAk5961vxCluK+clkppHY07IbV3vett97KOV+8C6l+CPEPwpUuiMwgbOz/qrN3Ke4zzjqbT+ls+1Q==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/typescript-estree": "8.8.0", - "@typescript-eslint/utils": "8.8.0", + "@typescript-eslint/typescript-estree": "8.9.0", + "@typescript-eslint/utils": "8.9.0", "debug": "^4.3.4", "ts-api-utils": "^1.3.0" }, @@ -4114,9 +4108,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "8.8.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.8.0.tgz", - "integrity": "sha512-QJwc50hRCgBd/k12sTykOJbESe1RrzmX6COk8Y525C9l7oweZ+1lw9JiU56im7Amm8swlz00DRIlxMYLizr2Vw==", + "version": "8.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.9.0.tgz", + "integrity": "sha512-SjgkvdYyt1FAPhU9c6FiYCXrldwYYlIQLkuc+LfAhCna6ggp96ACncdtlbn8FmnG72tUkXclrDExOpEYf1nfJQ==", "dev": true, "license": "MIT", "engines": { @@ -4128,14 +4122,14 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.8.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.8.0.tgz", - "integrity": "sha512-ZaMJwc/0ckLz5DaAZ+pNLmHv8AMVGtfWxZe/x2JVEkD5LnmhWiQMMcYT7IY7gkdJuzJ9P14fRy28lUrlDSWYdw==", + "version": "8.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.9.0.tgz", + "integrity": "sha512-9iJYTgKLDG6+iqegehc5+EqE6sqaee7kb8vWpmHZ86EqwDjmlqNNHeqDVqb9duh+BY6WCNHfIGvuVU3Tf9Db0g==", "dev": true, "license": "BSD-2-Clause", "dependencies": { - "@typescript-eslint/types": "8.8.0", - "@typescript-eslint/visitor-keys": "8.8.0", + "@typescript-eslint/types": "8.9.0", + "@typescript-eslint/visitor-keys": "8.9.0", "debug": "^4.3.4", "fast-glob": "^3.3.2", "is-glob": "^4.0.3", @@ -4196,16 +4190,16 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "8.8.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.8.0.tgz", - "integrity": "sha512-QE2MgfOTem00qrlPgyByaCHay9yb1+9BjnMFnSFkUKQfu7adBXDTnCAivURnuPPAG/qiB+kzKkZKmKfaMT0zVg==", + "version": "8.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.9.0.tgz", + "integrity": "sha512-PKgMmaSo/Yg/F7kIZvrgrWa1+Vwn036CdNUvYFEkYbPwOH4i8xvkaRlu148W3vtheWK9ckKRIz7PBP5oUlkrvQ==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "8.8.0", - "@typescript-eslint/types": "8.8.0", - "@typescript-eslint/typescript-estree": "8.8.0" + "@typescript-eslint/scope-manager": "8.9.0", + "@typescript-eslint/types": "8.9.0", + "@typescript-eslint/typescript-estree": "8.9.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -4219,13 +4213,13 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.8.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.8.0.tgz", - "integrity": "sha512-8mq51Lx6Hpmd7HnA2fcHQo3YgfX1qbccxQOgZcb4tvasu//zXRaA1j5ZRFeCw/VRAdFi4mRM9DnZw0Nu0Q2d1g==", + "version": "8.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.9.0.tgz", + "integrity": "sha512-Ht4y38ubk4L5/U8xKUBfKNYGmvKvA1CANoxiTRMM+tOLk3lbF3DvzZCxJCRSE+2GdCMSh6zq9VZJc3asc1XuAA==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.8.0", + "@typescript-eslint/types": "8.9.0", "eslint-visitor-keys": "^3.4.3" }, "engines": { @@ -4263,9 +4257,9 @@ } }, "node_modules/@vitest/coverage-v8": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-2.1.2.tgz", - "integrity": "sha512-b7kHrFrs2urS0cOk5N10lttI8UdJ/yP3nB4JYTREvR5o18cR99yPpK4gK8oQgI42BVv0ILWYUSYB7AXkAUDc0g==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-2.1.3.tgz", + "integrity": "sha512-2OJ3c7UPoFSmBZwqD2VEkUw6A/tzPF0LmW0ZZhhB8PFxuc+9IBG/FaSM+RLEenc7ljzFvGN+G0nGQoZnh7sy2A==", "dev": true, "license": "MIT", "dependencies": { @@ -4286,8 +4280,8 @@ "url": "https://opencollective.com/vitest" }, "peerDependencies": { - "@vitest/browser": "2.1.2", - "vitest": "2.1.2" + "@vitest/browser": "2.1.3", + "vitest": "2.1.3" }, "peerDependenciesMeta": { "@vitest/browser": { @@ -4296,14 +4290,14 @@ } }, "node_modules/@vitest/expect": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-2.1.2.tgz", - "integrity": "sha512-FEgtlN8mIUSEAAnlvn7mP8vzaWhEaAEvhSXCqrsijM7K6QqjB11qoRZYEd4AKSCDz8p0/+yH5LzhZ47qt+EyPg==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-2.1.3.tgz", + "integrity": "sha512-SNBoPubeCJhZ48agjXruCI57DvxcsivVDdWz+SSsmjTT4QN/DfHk3zB/xKsJqMs26bLZ/pNRLnCf0j679i0uWQ==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/spy": "2.1.2", - "@vitest/utils": "2.1.2", + "@vitest/spy": "2.1.3", + "@vitest/utils": "2.1.3", "chai": "^5.1.1", "tinyrainbow": "^1.2.0" }, @@ -4312,13 +4306,13 @@ } }, "node_modules/@vitest/mocker": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-2.1.2.tgz", - "integrity": "sha512-ExElkCGMS13JAJy+812fw1aCv2QO/LBK6CyO4WOPAzLTmve50gydOlWhgdBJPx2ztbADUq3JVI0C5U+bShaeEA==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-2.1.3.tgz", + "integrity": "sha512-eSpdY/eJDuOvuTA3ASzCjdithHa+GIF1L4PqtEELl6Qa3XafdMLBpBlZCIUCX2J+Q6sNmjmxtosAG62fK4BlqQ==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/spy": "^2.1.0-beta.1", + "@vitest/spy": "2.1.3", "estree-walker": "^3.0.3", "magic-string": "^0.30.11" }, @@ -4326,7 +4320,7 @@ "url": "https://opencollective.com/vitest" }, "peerDependencies": { - "@vitest/spy": "2.1.2", + "@vitest/spy": "2.1.3", "msw": "^2.3.5", "vite": "^5.0.0" }, @@ -4340,9 +4334,9 @@ } }, "node_modules/@vitest/pretty-format": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-2.1.2.tgz", - "integrity": "sha512-FIoglbHrSUlOJPDGIrh2bjX1sNars5HbxlcsFKCtKzu4+5lpsRhOCVcuzp0fEhAGHkPZRIXVNzPcpSlkoZ3LuA==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-2.1.3.tgz", + "integrity": "sha512-XH1XdtoLZCpqV59KRbPrIhFCOO0hErxrQCMcvnQete3Vibb9UeIOX02uFPfVn3Z9ZXsq78etlfyhnkmIZSzIwQ==", "dev": true, "license": "MIT", "dependencies": { @@ -4353,13 +4347,13 @@ } }, "node_modules/@vitest/runner": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-2.1.2.tgz", - "integrity": "sha512-UCsPtvluHO3u7jdoONGjOSil+uON5SSvU9buQh3lP7GgUXHp78guN1wRmZDX4wGK6J10f9NUtP6pO+SFquoMlw==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-2.1.3.tgz", + "integrity": "sha512-JGzpWqmFJ4fq5ZKHtVO3Xuy1iF2rHGV4d/pdzgkYHm1+gOzNZtqjvyiaDGJytRyMU54qkxpNzCx+PErzJ1/JqQ==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/utils": "2.1.2", + "@vitest/utils": "2.1.3", "pathe": "^1.1.2" }, "funding": { @@ -4367,13 +4361,13 @@ } }, "node_modules/@vitest/snapshot": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-2.1.2.tgz", - "integrity": "sha512-xtAeNsZ++aRIYIUsek7VHzry/9AcxeULlegBvsdLncLmNCR6tR8SRjn8BbDP4naxtccvzTqZ+L1ltZlRCfBZFA==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-2.1.3.tgz", + "integrity": "sha512-qWC2mWc7VAXmjAkEKxrScWHWFyCQx/cmiZtuGqMi+WwqQJ2iURsVY4ZfAK6dVo6K2smKRU6l3BPwqEBvhnpQGg==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/pretty-format": "2.1.2", + "@vitest/pretty-format": "2.1.3", "magic-string": "^0.30.11", "pathe": "^1.1.2" }, @@ -4382,9 +4376,9 @@ } }, "node_modules/@vitest/spy": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-2.1.2.tgz", - "integrity": "sha512-GSUi5zoy+abNRJwmFhBDC0yRuVUn8WMlQscvnbbXdKLXX9dE59YbfwXxuJ/mth6eeqIzofU8BB5XDo/Ns/qK2A==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-2.1.3.tgz", + "integrity": "sha512-Nb2UzbcUswzeSP7JksMDaqsI43Sj5+Kry6ry6jQJT4b5gAK+NS9NED6mDb8FlMRCX8m5guaHCDZmqYMMWRy5nQ==", "dev": true, "license": "MIT", "dependencies": { @@ -4395,13 +4389,13 @@ } }, "node_modules/@vitest/utils": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-2.1.2.tgz", - "integrity": "sha512-zMO2KdYy6mx56btx9JvAqAZ6EyS3g49krMPPrgOp1yxGZiA93HumGk+bZ5jIZtOg5/VBYl5eBmGRQHqq4FG6uQ==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-2.1.3.tgz", + "integrity": "sha512-xpiVfDSg1RrYT0tX6czgerkpcKFmFOF/gCr30+Mve5V2kewCy4Prn1/NDMSRwaSmT7PRaOF83wu+bEtsY1wrvA==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/pretty-format": "2.1.2", + "@vitest/pretty-format": "2.1.3", "loupe": "^3.1.1", "tinyrainbow": "^1.2.0" }, @@ -4409,12 +4403,6 @@ "url": "https://opencollective.com/vitest" } }, - "node_modules/@xobotyi/scrollbar-width": { - "version": "1.9.5", - "resolved": "https://registry.npmjs.org/@xobotyi/scrollbar-width/-/scrollbar-width-1.9.5.tgz", - "integrity": "sha512-N8tkAACJx2ww8vFMneJmaAgmjAG1tnVBZJRLRcx061tmsLRZHSEZSLuGWnwPtunsSLvSqXQ2wfp7Mgqg1I+2dQ==", - "license": "MIT" - }, "node_modules/@zeit/schemas": { "version": "2.36.0", "resolved": "https://registry.npmjs.org/@zeit/schemas/-/schemas-2.36.0.tgz", @@ -4815,9 +4803,9 @@ "license": "MIT" }, "node_modules/attr-accept": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/attr-accept/-/attr-accept-2.2.2.tgz", - "integrity": "sha512-7prDjvt9HmqiZ0cl5CRjtS84sEyhsHP2coDkaZKRKVfCDo9s7iw7ChVmar78Gu9pC4SoR/28wFu/G5JJhTnqEg==", + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/attr-accept/-/attr-accept-2.2.4.tgz", + "integrity": "sha512-2pA6xFIbdTUDCAwjN8nQwI+842VwzbDUXO2IYlpPXQIORgKnavorcr4Ce3rwh+zsNg9zK7QPsdvDj3Lum4WX4w==", "license": "MIT", "engines": { "node": ">=4" @@ -5097,9 +5085,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001667", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001667.tgz", - "integrity": "sha512-7LTwJjcRkzKFmtqGsibMeuXmvFDfZq/nzIjnmgCGzKKRVzjD72selLDK1oPF/Oxzmt4fNcPvTDvGqSDG4tCALw==", + "version": "1.0.30001668", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001668.tgz", + "integrity": "sha512-nWLrdxqCdblixUO+27JtGJJE/txpJlyUy5YN1u53wLZkP0emYCo5zgS6QYft7VUYR42LGgi/S5hdLZTrnyIddw==", "dev": true, "funding": [ { @@ -5228,9 +5216,9 @@ } }, "node_modules/chemical-elements": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/chemical-elements/-/chemical-elements-2.1.1.tgz", - "integrity": "sha512-ElkhZNOdCKLx773wFRuEkl6RbITbafFvOtTNsqf7/YkhWniHEHs9iZ4Bq3e/Y0C+x3VjPWFu0SHkgMEWc2CrMg==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/chemical-elements/-/chemical-elements-2.1.2.tgz", + "integrity": "sha512-deZ3gHqyXIC2/+3tEeU0IHqOwmneSEbMvTgNTCc5DEIv6PKw1E48rKGC6itNsu044Lv7k8tgggs+8u0ME9pm0Q==", "license": "MIT" }, "node_modules/chemical-groups": { @@ -5240,9 +5228,9 @@ "license": "MIT" }, "node_modules/cheminfo-font": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/cheminfo-font/-/cheminfo-font-1.13.0.tgz", - "integrity": "sha512-NreebXSQ97VyI4xvRXvriAh9lHEBUBO1/yzqcmGhunBDQv4lcTYNolIxuR74EXjt2OnBTKz7qZ5rpS0d0RAcOw==", + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/cheminfo-font/-/cheminfo-font-1.13.1.tgz", + "integrity": "sha512-FIT5ybXaNolIAl8V64a3YQWZ28YaJgRz93ApBloI6NDIA5kGifTma822/bSDA/ABSwqOJAWwr/cMipIZxMjE/g==", "license": "CC-BY-4.0" }, "node_modules/cheminfo-types": { @@ -5517,15 +5505,6 @@ "ml-spectra-processing": "^14.2.2" } }, - "node_modules/copy-to-clipboard": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/copy-to-clipboard/-/copy-to-clipboard-3.3.3.tgz", - "integrity": "sha512-2KV8NhB5JqC3ky0r9PMCAZKbUHSwtEo4CwCs0KXgruG43gX5PMqDEBbVU4OUzw2MuAWUfsuFmWvEKG5QRfSnJA==", - "license": "MIT", - "dependencies": { - "toggle-selection": "^1.0.6" - } - }, "node_modules/core-js-compat": { "version": "3.38.1", "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.38.1.tgz", @@ -5597,31 +5576,30 @@ } }, "node_modules/cspell": { - "version": "8.14.4", - "resolved": "https://registry.npmjs.org/cspell/-/cspell-8.14.4.tgz", - "integrity": "sha512-R5Awb3i/RKaVVcZzFt8dkN3M6VnifIEDYBcbzbmYjZ/Eq+ASF+QTmI0E9WPhMEcFM1nd7YOyXnETo560yRdoKw==", + "version": "8.15.3", + "resolved": "https://registry.npmjs.org/cspell/-/cspell-8.15.3.tgz", + "integrity": "sha512-diJiVBMunG3m7dYJpelSTsO4biLxVZ3glzLJF9jVs8n86dph04A9NXf29DKeAR0py62CFBKOrB1R4VGhxDxStg==", "dev": true, "license": "MIT", "dependencies": { - "@cspell/cspell-json-reporter": "8.14.4", - "@cspell/cspell-pipe": "8.14.4", - "@cspell/cspell-types": "8.14.4", - "@cspell/dynamic-import": "8.14.4", - "@cspell/url": "8.14.4", + "@cspell/cspell-json-reporter": "8.15.3", + "@cspell/cspell-pipe": "8.15.3", + "@cspell/cspell-types": "8.15.3", + "@cspell/dynamic-import": "8.15.3", + "@cspell/url": "8.15.3", "chalk": "^5.3.0", "chalk-template": "^1.1.0", "commander": "^12.1.0", - "cspell-dictionary": "8.14.4", - "cspell-gitignore": "8.14.4", - "cspell-glob": "8.14.4", - "cspell-io": "8.14.4", - "cspell-lib": "8.14.4", - "fast-glob": "^3.3.2", + "cspell-dictionary": "8.15.3", + "cspell-gitignore": "8.15.3", + "cspell-glob": "8.15.3", + "cspell-io": "8.15.3", + "cspell-lib": "8.15.3", "fast-json-stable-stringify": "^2.1.0", "file-entry-cache": "^9.1.0", "get-stdin": "^9.0.0", "semver": "^7.6.3", - "strip-ansi": "^7.1.0" + "tinyglobby": "^0.2.9" }, "bin": { "cspell": "bin.mjs", @@ -5635,24 +5613,24 @@ } }, "node_modules/cspell-config-lib": { - "version": "8.14.4", - "resolved": "https://registry.npmjs.org/cspell-config-lib/-/cspell-config-lib-8.14.4.tgz", - "integrity": "sha512-cnUeJfniTiebqCaQmIUnbSrPrTH7xzKRQjJDHAEV0WYnOG2MhRXI13OzytdFdhkVBdStmgTzTCJKE7x+kmU2NA==", + "version": "8.15.3", + "resolved": "https://registry.npmjs.org/cspell-config-lib/-/cspell-config-lib-8.15.3.tgz", + "integrity": "sha512-IMIvZ/2fzl628obiFhcgNsorcS4pimAgDi9M0k9GDA/zbLeweWZqjmSEN9tgUPvkRznQvJd0TZXJ0B5RkM5+2Q==", "dev": true, "license": "MIT", "dependencies": { - "@cspell/cspell-types": "8.14.4", + "@cspell/cspell-types": "8.15.3", "comment-json": "^4.2.5", - "yaml": "^2.5.1" + "yaml": "^2.6.0" }, "engines": { "node": ">=18" } }, "node_modules/cspell-config-lib/node_modules/yaml": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.5.1.tgz", - "integrity": "sha512-bLQOjaX/ADgQ20isPJRvF0iRUHIxVhYvr53Of7wGcWlO2jvtUlH5m87DsmulFVxRpNLOnI4tB6p/oh8D7kpn9Q==", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.6.0.tgz", + "integrity": "sha512-a6ae//JvKDEra2kdi1qzCyrJW/WZCgFi8ydDV+eXExl95t+5R+ijnqHJbz9tmMh8FUjx3iv2fCQ4dclAQlO2UQ==", "dev": true, "license": "ISC", "bin": { @@ -5663,15 +5641,15 @@ } }, "node_modules/cspell-dictionary": { - "version": "8.14.4", - "resolved": "https://registry.npmjs.org/cspell-dictionary/-/cspell-dictionary-8.14.4.tgz", - "integrity": "sha512-pZvQHxpAW5fZAnt3ZKKy3s7M+3CX2t8tCS3uJrpEHIynlCawpG0fPF78rVE5o+g0dON36Lguc/BUuSN4IWKLmQ==", + "version": "8.15.3", + "resolved": "https://registry.npmjs.org/cspell-dictionary/-/cspell-dictionary-8.15.3.tgz", + "integrity": "sha512-FwYpDou0oyHmfjz70juVvIskZo1/+Xzq4s6eX2ZjUNQSp/jaykWNOiqIw5eVx0Z3sq3cWzCJ9zUuHcXxvFi7EQ==", "dev": true, "license": "MIT", "dependencies": { - "@cspell/cspell-pipe": "8.14.4", - "@cspell/cspell-types": "8.14.4", - "cspell-trie-lib": "8.14.4", + "@cspell/cspell-pipe": "8.15.3", + "@cspell/cspell-types": "8.15.3", + "cspell-trie-lib": "8.15.3", "fast-equals": "^5.0.1" }, "engines": { @@ -5679,15 +5657,15 @@ } }, "node_modules/cspell-gitignore": { - "version": "8.14.4", - "resolved": "https://registry.npmjs.org/cspell-gitignore/-/cspell-gitignore-8.14.4.tgz", - "integrity": "sha512-RwfQEW5hD7CpYwS7m3b0ONG0nTLKP6bL2tvMdl7qtaYkL7ztGdsBTtLD1pmwqUsCbiN5RuaOxhYOYeRcpFRIkQ==", + "version": "8.15.3", + "resolved": "https://registry.npmjs.org/cspell-gitignore/-/cspell-gitignore-8.15.3.tgz", + "integrity": "sha512-h1O9y3F81e8RyDE87Bv7m6Faz4FjkUhr72QqakbGuhRsjembST5YEw1B5Okc4BSUQhRER+dEh4xLp90EmNzZuw==", "dev": true, "license": "MIT", "dependencies": { - "@cspell/url": "8.14.4", - "cspell-glob": "8.14.4", - "cspell-io": "8.14.4", + "@cspell/url": "8.15.3", + "cspell-glob": "8.15.3", + "cspell-io": "8.15.3", "find-up-simple": "^1.0.0" }, "bin": { @@ -5698,13 +5676,13 @@ } }, "node_modules/cspell-glob": { - "version": "8.14.4", - "resolved": "https://registry.npmjs.org/cspell-glob/-/cspell-glob-8.14.4.tgz", - "integrity": "sha512-C/xTS5nujMRMuguibq92qMVP767mtxrur7DcVolCvpzcivm1RB5NtIN0OctQxTyMbnmKeQv1t4epRKQ9A8vWRg==", + "version": "8.15.3", + "resolved": "https://registry.npmjs.org/cspell-glob/-/cspell-glob-8.15.3.tgz", + "integrity": "sha512-nsxe1PCFZyOHxVeo3Bqi2MyVy2JASF9p1xSCZAFjiVjeRmeqDrS098UcoucXRDFScJ2RP8A62niC6P3m6qg5IA==", "dev": true, "license": "MIT", "dependencies": { - "@cspell/url": "8.14.4", + "@cspell/url": "8.15.3", "micromatch": "^4.0.8" }, "engines": { @@ -5712,14 +5690,14 @@ } }, "node_modules/cspell-grammar": { - "version": "8.14.4", - "resolved": "https://registry.npmjs.org/cspell-grammar/-/cspell-grammar-8.14.4.tgz", - "integrity": "sha512-yaSKAAJDiamsw3FChbw4HXb2RvTQrDsLelh1+T4MavarOIcAxXrqAJ8ysqm++g+S/ooJz2YO8YWIyzJKxcMf8g==", + "version": "8.15.3", + "resolved": "https://registry.npmjs.org/cspell-grammar/-/cspell-grammar-8.15.3.tgz", + "integrity": "sha512-HCtGzym6JsdrYjwGySxKFsLjvASAgftv7nEOTBFp/u3Y2zVPmoQaFmmlSWBbJRsNQa9elL0DyQOSC7WC6GbGSQ==", "dev": true, "license": "MIT", "dependencies": { - "@cspell/cspell-pipe": "8.14.4", - "@cspell/cspell-types": "8.14.4" + "@cspell/cspell-pipe": "8.15.3", + "@cspell/cspell-types": "8.15.3" }, "bin": { "cspell-grammar": "bin.mjs" @@ -5729,42 +5707,42 @@ } }, "node_modules/cspell-io": { - "version": "8.14.4", - "resolved": "https://registry.npmjs.org/cspell-io/-/cspell-io-8.14.4.tgz", - "integrity": "sha512-o6OTWRyx/Az+PFhr1B0wMAwqG070hFC9g73Fkxd8+rHX0rfRS69QZH7LgSmZytqbZIMxCTDGdsLl33MFGWCbZQ==", + "version": "8.15.3", + "resolved": "https://registry.npmjs.org/cspell-io/-/cspell-io-8.15.3.tgz", + "integrity": "sha512-ycKrfTSurfleQNR5x7QRmQ/qtMJ6JkBiqaq5qtCHNYUlOjrmQBNVXFpbmPJ3+qG+ObW+eQKEvZH5xr17F2BMjw==", "dev": true, "license": "MIT", "dependencies": { - "@cspell/cspell-service-bus": "8.14.4", - "@cspell/url": "8.14.4" + "@cspell/cspell-service-bus": "8.15.3", + "@cspell/url": "8.15.3" }, "engines": { "node": ">=18" } }, "node_modules/cspell-lib": { - "version": "8.14.4", - "resolved": "https://registry.npmjs.org/cspell-lib/-/cspell-lib-8.14.4.tgz", - "integrity": "sha512-qdkUkKtm+nmgpA4jQbmQTuepDfjHBDWvs3zDuEwVIVFq/h8gnXrRr75gJ3RYdTy+vOOqHPoLLqgxyqkUUrUGXA==", + "version": "8.15.3", + "resolved": "https://registry.npmjs.org/cspell-lib/-/cspell-lib-8.15.3.tgz", + "integrity": "sha512-LJIEZ3E8ZCOAqcMwkonXH3NEa6ITTlp3nZ9nhmxHE0GbMUYP5/CmTCWSnJUjrINmhjl5dMj6Z7xzDTgEAu0K9Q==", "dev": true, "license": "MIT", "dependencies": { - "@cspell/cspell-bundled-dicts": "8.14.4", - "@cspell/cspell-pipe": "8.14.4", - "@cspell/cspell-resolver": "8.14.4", - "@cspell/cspell-types": "8.14.4", - "@cspell/dynamic-import": "8.14.4", - "@cspell/filetypes": "8.14.4", - "@cspell/strong-weak-map": "8.14.4", - "@cspell/url": "8.14.4", + "@cspell/cspell-bundled-dicts": "8.15.3", + "@cspell/cspell-pipe": "8.15.3", + "@cspell/cspell-resolver": "8.15.3", + "@cspell/cspell-types": "8.15.3", + "@cspell/dynamic-import": "8.15.3", + "@cspell/filetypes": "8.15.3", + "@cspell/strong-weak-map": "8.15.3", + "@cspell/url": "8.15.3", "clear-module": "^4.1.2", "comment-json": "^4.2.5", - "cspell-config-lib": "8.14.4", - "cspell-dictionary": "8.14.4", - "cspell-glob": "8.14.4", - "cspell-grammar": "8.14.4", - "cspell-io": "8.14.4", - "cspell-trie-lib": "8.14.4", + "cspell-config-lib": "8.15.3", + "cspell-dictionary": "8.15.3", + "cspell-glob": "8.15.3", + "cspell-grammar": "8.15.3", + "cspell-io": "8.15.3", + "cspell-trie-lib": "8.15.3", "env-paths": "^3.0.0", "fast-equals": "^5.0.1", "gensequence": "^7.0.0", @@ -5779,14 +5757,14 @@ } }, "node_modules/cspell-trie-lib": { - "version": "8.14.4", - "resolved": "https://registry.npmjs.org/cspell-trie-lib/-/cspell-trie-lib-8.14.4.tgz", - "integrity": "sha512-zu8EJ33CH+FA5lwTRGqS//Q6phO0qtgEmODMR1KPlD7WlrfTFMb3bWFsLo/tiv5hjpsn7CM6dYDAAgBOSkoyhQ==", + "version": "8.15.3", + "resolved": "https://registry.npmjs.org/cspell-trie-lib/-/cspell-trie-lib-8.15.3.tgz", + "integrity": "sha512-sJwGFE3ymkL6UsnZbMOGcD+iDOdYo7gyVafMDUJvb4rnKqAhLJumiCPT4bPLQ7oWAti7swHBQrOJ/Wp3phQ+LQ==", "dev": true, "license": "MIT", "dependencies": { - "@cspell/cspell-pipe": "8.14.4", - "@cspell/cspell-types": "8.14.4", + "@cspell/cspell-pipe": "8.15.3", + "@cspell/cspell-types": "8.15.3", "gensequence": "^7.0.0" }, "engines": { @@ -5820,46 +5798,15 @@ } }, "node_modules/css-functions-list": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/css-functions-list/-/css-functions-list-3.2.2.tgz", - "integrity": "sha512-c+N0v6wbKVxTu5gOBBFkr9BEdBWaqqjQeiJ8QvSRIJOf+UxlJh930m8e6/WNeODIK0mYLFkoONrnj16i2EcvfQ==", + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/css-functions-list/-/css-functions-list-3.2.3.tgz", + "integrity": "sha512-IQOkD3hbR5KrN93MtcYuad6YPuTSUhntLHDuLEbFWE+ff2/XSZNdZG+LcbbIW5AXKg/WFIfYItIzVoHngHXZzA==", "dev": true, "license": "MIT", "engines": { "node": ">=12 || >=16" } }, - "node_modules/css-in-js-utils": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/css-in-js-utils/-/css-in-js-utils-3.1.0.tgz", - "integrity": "sha512-fJAcud6B3rRu+KHYk+Bwf+WFL2MDCJJ1XG9x137tJQ0xYxor7XziQtuGFbWNdqrvF4Tk26O3H73nfVqXt/fW1A==", - "license": "MIT", - "dependencies": { - "hyphenate-style-name": "^1.0.3" - } - }, - "node_modules/css-tree": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", - "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", - "license": "MIT", - "dependencies": { - "mdn-data": "2.0.14", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/css-tree/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/cssesc": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", @@ -6504,34 +6451,34 @@ "license": "MIT" }, "node_modules/electron-to-chromium": { - "version": "1.5.32", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.32.tgz", - "integrity": "sha512-M+7ph0VGBQqqpTT2YrabjNKSQ2fEl9PVx6AK3N558gDH9NO8O6XN9SXXFWRo9u9PbEg/bWq+tjXQr+eXmxubCw==", + "version": "1.5.38", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.38.tgz", + "integrity": "sha512-VbeVexmZ1IFh+5EfrYz1I0HTzHVIlJa112UEWhciPyeOcKJGeTv6N8WnG4wsQB81DGCaVEGhpSb6o6a8WYFXXg==", "dev": true, "license": "ISC" }, "node_modules/emdb": { - "version": "3.3.7", - "resolved": "https://registry.npmjs.org/emdb/-/emdb-3.3.7.tgz", - "integrity": "sha512-gGqGl9Hi8/MUFHeMh4RrDMU4wZvls0htNsZnfffSpVm/UcVeMUynP4fQ1CDTn4Lhx0zepq7Ml1gXnmGDeZiL6w==", + "version": "3.3.8", + "resolved": "https://registry.npmjs.org/emdb/-/emdb-3.3.8.tgz", + "integrity": "sha512-Mf/rzM6LQ1lRBbhPIGCHw46KilyY+e9HmYp4FYAGFMd5o6diHpyFzfqImSi5LKzYQXVc3LQiK4Meg34GKux4iw==", "license": "MIT", "dependencies": { - "chemical-elements": "^2.1.1", + "chemical-elements": "^2.1.2", "chemical-groups": "^2.2.1", - "isotopic-distribution": "^3.3.2", + "isotopic-distribution": "^3.3.3", "jszip": "^3.10.1", - "mass-fragmentation": "^1.10.4", - "mf-finder": "^3.4.4", - "mf-from-google-sheet": "^3.1.4", - "mf-generator": "^3.3.4", - "mf-matcher": "^3.2.4", - "mf-parser": "^3.2.4", - "mf-utilities": "^3.2.4", + "mass-fragmentation": "^1.10.5", + "mf-finder": "^3.4.5", + "mf-from-google-sheet": "^3.1.5", + "mf-generator": "^3.3.5", + "mf-matcher": "^3.2.5", + "mf-parser": "^3.2.5", + "mf-utilities": "^3.2.5", "ml-regression-theil-sen": "^3.0.0", - "ml-spectra-processing": "^14.5.1", - "ms-spectrum": "^3.6.7", - "nucleotide": "^3.1.5", - "openchemlib-utils": "^6.3.0", + "ml-spectra-processing": "^14.6.0", + "ms-spectrum": "^3.6.8", + "nucleotide": "^3.1.6", + "openchemlib-utils": "^6.4.1", "peaks-similarity": "^3.1.1", "peptide": "^2.2.2" } @@ -6575,15 +6522,6 @@ "is-arrayish": "^0.2.1" } }, - "node_modules/error-stack-parser": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.1.4.tgz", - "integrity": "sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==", - "license": "MIT", - "dependencies": { - "stackframe": "^1.3.4" - } - }, "node_modules/es-abstract": { "version": "1.23.3", "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz", @@ -6669,9 +6607,9 @@ } }, "node_modules/es-iterator-helpers": { - "version": "1.0.19", - "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.19.tgz", - "integrity": "sha512-zoMwbCcH5hwUkKJkT8kDIBZSz9I6mVG//+lDCinLCGov4+r7NIy0ld8o03M0cJxl2spVf6ESYVS6/gpIfq1FFw==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.1.0.tgz", + "integrity": "sha512-/SurEfycdyssORP/E+bj4sEu1CWw4EmLDsHynHwSXQ7utgbrMRWW195pTrCjFgFCddf/UkYm3oqKPRq5i8bJbw==", "dev": true, "license": "MIT", "dependencies": { @@ -6682,12 +6620,12 @@ "es-set-tostringtag": "^2.0.3", "function-bind": "^1.1.2", "get-intrinsic": "^1.2.4", - "globalthis": "^1.0.3", + "globalthis": "^1.0.4", "has-property-descriptors": "^1.0.2", "has-proto": "^1.0.3", "has-symbols": "^1.0.3", "internal-slot": "^1.0.7", - "iterator.prototype": "^1.1.2", + "iterator.prototype": "^1.1.3", "safe-array-concat": "^1.1.2" }, "engines": { @@ -6880,9 +6818,9 @@ } }, "node_modules/eslint-config-cheminfo": { - "version": "12.0.0", - "resolved": "https://registry.npmjs.org/eslint-config-cheminfo/-/eslint-config-cheminfo-12.0.0.tgz", - "integrity": "sha512-8st/j4KGTWPWRcYPvih+4wALuMqmP1odSk8Tz4e/o0CUJkKrtB2OzQ9fOVvTunIbdrM8vRjRorKuGnjMUciUIw==", + "version": "12.0.1", + "resolved": "https://registry.npmjs.org/eslint-config-cheminfo/-/eslint-config-cheminfo-12.0.1.tgz", + "integrity": "sha512-EpaWuIypSAuqKHy8bgo7ngVj8JpP6bifY9elMjjXoipcbENgGagjjvwS70D6CGk/Ze0GkJpKMt2coKYm7gADPw==", "dev": true, "license": "MIT", "dependencies": { @@ -6913,9 +6851,9 @@ } }, "node_modules/eslint-config-cheminfo-react/node_modules/globals": { - "version": "15.10.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-15.10.0.tgz", - "integrity": "sha512-tqFIbz83w4Y5TCbtgjZjApohbuh7K9BxGYFm7ifwDR240tvdb7P9x+/9VvUKlmkPoiknoJtanI8UOrqxS3a7lQ==", + "version": "15.11.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-15.11.0.tgz", + "integrity": "sha512-yeyNSjdbyVaWurlwCpcA6XNBrHTMIeDdj0/hnvX/OLJ9ekOXYbLsLinH/MucQyGvNnXhidTdNhTtJaffL2sMfw==", "dev": true, "license": "MIT", "engines": { @@ -6941,9 +6879,9 @@ } }, "node_modules/eslint-config-cheminfo/node_modules/globals": { - "version": "15.10.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-15.10.0.tgz", - "integrity": "sha512-tqFIbz83w4Y5TCbtgjZjApohbuh7K9BxGYFm7ifwDR240tvdb7P9x+/9VvUKlmkPoiknoJtanI8UOrqxS3a7lQ==", + "version": "15.11.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-15.11.0.tgz", + "integrity": "sha512-yeyNSjdbyVaWurlwCpcA6XNBrHTMIeDdj0/hnvX/OLJ9ekOXYbLsLinH/MucQyGvNnXhidTdNhTtJaffL2sMfw==", "dev": true, "license": "MIT", "engines": { @@ -7048,13 +6986,13 @@ } }, "node_modules/eslint-plugin-jsdoc": { - "version": "50.3.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-50.3.1.tgz", - "integrity": "sha512-SY9oUuTMr6aWoJggUS40LtMjsRzJPB5ZT7F432xZIHK3EfHF+8i48GbUBpwanrtlL9l1gILNTHK9o8gEhYLcKA==", + "version": "50.4.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-50.4.1.tgz", + "integrity": "sha512-OXIq+JJQPCLAKL473/esioFOwbXyRE5MAQ4HbZjcp3e+K3zdxt2uDpGs3FR+WezUXNStzEtTfgx15T+JFrVwBA==", "dev": true, "license": "BSD-3-Clause", "dependencies": { - "@es-joy/jsdoccomment": "~0.48.0", + "@es-joy/jsdoccomment": "~0.49.0", "are-docs-informative": "^0.0.2", "comment-parser": "1.4.1", "debug": "^4.3.6", @@ -7195,9 +7133,9 @@ } }, "node_modules/eslint-plugin-unicorn/node_modules/globals": { - "version": "15.10.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-15.10.0.tgz", - "integrity": "sha512-tqFIbz83w4Y5TCbtgjZjApohbuh7K9BxGYFm7ifwDR240tvdb7P9x+/9VvUKlmkPoiknoJtanI8UOrqxS3a7lQ==", + "version": "15.11.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-15.11.0.tgz", + "integrity": "sha512-yeyNSjdbyVaWurlwCpcA6XNBrHTMIeDdj0/hnvX/OLJ9ekOXYbLsLinH/MucQyGvNnXhidTdNhTtJaffL2sMfw==", "dev": true, "license": "MIT", "engines": { @@ -7482,6 +7420,7 @@ "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true, "license": "MIT" }, "node_modules/fast-equals": { @@ -7538,11 +7477,6 @@ "dev": true, "license": "MIT" }, - "node_modules/fast-shallow-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fast-shallow-equal/-/fast-shallow-equal-1.0.0.tgz", - "integrity": "sha512-HPtaa38cPgWvaCFmRNhlc6NG7pv6NUHqjPgVAkWGoB9mQMwYB27/K0CvOM5Czy+qpT3e8XJ6Q4aPAnzpNpzNaw==" - }, "node_modules/fast-uri": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.2.tgz", @@ -7550,16 +7484,6 @@ "dev": true, "license": "MIT" }, - "node_modules/fast-url-parser": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/fast-url-parser/-/fast-url-parser-1.1.3.tgz", - "integrity": "sha512-5jOCVXADYNuRkKFzNJ0dCCewsZiYo0dz8QNYljkOpFC6r2U4OBmKtvm/Tsuh4w1YYdDqDb31a8TVhBJ2OJKdqQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "punycode": "^1.3.2" - } - }, "node_modules/fastest-levenshtein": { "version": "1.0.16", "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", @@ -7570,12 +7494,6 @@ "node": ">= 4.9.1" } }, - "node_modules/fastest-stable-stringify": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/fastest-stable-stringify/-/fastest-stable-stringify-2.0.2.tgz", - "integrity": "sha512-bijHueCGd0LqqNK9b5oCMHc0MluJAx0cwqASgbWMvkO01lCYgIhacVRLcaDz3QnyYIRNJRDwMb41VuT6pHJ91Q==", - "license": "MIT" - }, "node_modules/fastq": { "version": "1.17.1", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", @@ -7815,16 +7733,6 @@ "node": ">=6.9.0" } }, - "node_modules/get-func-name": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz", - "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": "*" - } - }, "node_modules/get-intrinsic": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", @@ -8275,12 +8183,6 @@ "node": ">=10.17.0" } }, - "node_modules/hyphenate-style-name": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/hyphenate-style-name/-/hyphenate-style-name-1.1.0.tgz", - "integrity": "sha512-WDC/ui2VVRrz3jOVi+XtjqkDjiVjTtFaAGiW37k6b+ohyQ5wYDOGkvCZa8+H0nx3gyvv0+BST9xuOgIyGQ00gw==", - "license": "BSD-3-Clause" - }, "node_modules/iconv-lite": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", @@ -8403,15 +8305,6 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/inline-style-prefixer": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/inline-style-prefixer/-/inline-style-prefixer-7.0.1.tgz", - "integrity": "sha512-lhYo5qNTQp3EvSSp3sRvXMbVQTLrvGV6DycRMJ5dm2BLMiJ30wpXKdDdgX+GmJZ5uQMucwRKHamXSst3Sj/Giw==", - "license": "MIT", - "dependencies": { - "css-in-js-utils": "^3.1.0" - } - }, "node_modules/install": { "version": "0.13.0", "resolved": "https://registry.npmjs.org/install/-/install-0.13.0.tgz", @@ -8950,14 +8843,14 @@ } }, "node_modules/isotopic-distribution": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/isotopic-distribution/-/isotopic-distribution-3.3.2.tgz", - "integrity": "sha512-tmQrJgWoBADxFx7cx2JhfSI+EU+cqNxmQd7MECqF/Ls3cF3DMsnPPpdUm/DdccPryWO7sKKnAgT78Z//darnyw==", + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/isotopic-distribution/-/isotopic-distribution-3.3.3.tgz", + "integrity": "sha512-ize5xogT2PtruMjhT5/n5qj+MAwc6eqIaespZf2dMfHRIojWfAaXqYb+9rKXy86plVt3YGO4xysKmVX10uOUew==", "license": "MIT", "dependencies": { - "chemical-elements": "^2.1.1", - "mf-parser": "^3.2.4", - "mf-utilities": "^3.2.4", + "chemical-elements": "^2.1.2", + "mf-parser": "^3.2.5", + "mf-utilities": "^3.2.5", "spectrum-generator": "^8.0.11" } }, @@ -9048,9 +8941,9 @@ } }, "node_modules/iterator.prototype": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.2.tgz", - "integrity": "sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.3.tgz", + "integrity": "sha512-FW5iMbeQ6rBGm/oKgzq2aW4KvAGpxPzYES8N4g4xNXUKpL1mclMvOe+76AcLDTvD+Ze+sOpVhgdAQEKF4L9iGQ==", "dev": true, "license": "MIT", "dependencies": { @@ -9059,6 +8952,9 @@ "has-symbols": "^1.0.3", "reflect.getprototypeof": "^1.0.4", "set-function-name": "^2.0.1" + }, + "engines": { + "node": ">= 0.4" } }, "node_modules/jackspeak": { @@ -9099,12 +8995,6 @@ "iobuffer": "^5.3.2" } }, - "node_modules/js-cookie": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/js-cookie/-/js-cookie-2.2.1.tgz", - "integrity": "sha512-HvdH2LzI/EAZcUwA8+0nKNtWHqS+ZmijLA30RwZA0bo7ToCckjK5MkGhjED9KoRcXO6BaGI3I9UIzSA1FKFPOQ==", - "license": "MIT" - }, "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -9349,14 +9239,11 @@ } }, "node_modules/loupe": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.1.1.tgz", - "integrity": "sha512-edNu/8D5MKVfGVFRhFf8aAxiTM6Wumfz5XsaatSxlD3w4R1d/WEKUTydCdPGbl9K7QG/Ca3GnDV2sIKIpXRQcw==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.1.2.tgz", + "integrity": "sha512-23I4pFZHmAemUnz8WZXbYRSKYj801VDaNv9ETuMh7IrMc7VuVVSo+Z9iLE3ni30+U48iDWfi30d3twAXBYmnCg==", "dev": true, - "license": "MIT", - "dependencies": { - "get-func-name": "^2.0.1" - } + "license": "MIT" }, "node_modules/lower-case": { "version": "2.0.2", @@ -9379,9 +9266,9 @@ } }, "node_modules/magic-string": { - "version": "0.30.11", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.11.tgz", - "integrity": "sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A==", + "version": "0.30.12", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.12.tgz", + "integrity": "sha512-Ea8I3sQMVXr8JhN4z+H/d8zwo+tYDgHE9+5G4Wnrwhs0gaK9fXTKx0Tw5Xwsd/bCPTTZNRAdpyzvoeORe9LYpw==", "dev": true, "license": "MIT", "dependencies": { @@ -9430,14 +9317,14 @@ } }, "node_modules/mass-fragmentation": { - "version": "1.10.4", - "resolved": "https://registry.npmjs.org/mass-fragmentation/-/mass-fragmentation-1.10.4.tgz", - "integrity": "sha512-6oNidwWk1qwfLfbMVSGceBxNd0GUvZAn2VeGG52mPO/oNNumt1o1y4c4cuGUQn+5veu29VfGZiaNzjJ/ltr3Tw==", + "version": "1.10.5", + "resolved": "https://registry.npmjs.org/mass-fragmentation/-/mass-fragmentation-1.10.5.tgz", + "integrity": "sha512-Y6ubQMTAvoLbFpeeOssue1EpHdnO5Oc/8EnGq9p2UiUU2ExEZRhW9P8OFVJoIcVAIC/Hbx8rot8uUnBRWOipqg==", "license": "MIT", "dependencies": { - "mf-parser": "^3.2.4", - "openchemlib-utils": "^6.3.0", - "react-tree-svg": "^1.0.0" + "mf-parser": "^3.2.5", + "openchemlib-utils": "^6.4.1", + "react-tree-svg": "^1.4.0" } }, "node_modules/mathml-tag-names": { @@ -9451,12 +9338,6 @@ "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/mdn-data": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", - "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==", - "license": "CC0-1.0" - }, "node_modules/median-quickselect": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/median-quickselect/-/median-quickselect-1.0.1.tgz", @@ -9494,74 +9375,74 @@ } }, "node_modules/mf-finder": { - "version": "3.4.4", - "resolved": "https://registry.npmjs.org/mf-finder/-/mf-finder-3.4.4.tgz", - "integrity": "sha512-cNXBCOvYtglVGkBurjByHq/93pF7oXop6xHDEekmubmHs0Z27jBED/pScNZPPi3wjSHiDyGnfkThyPtDP094RA==", + "version": "3.4.5", + "resolved": "https://registry.npmjs.org/mf-finder/-/mf-finder-3.4.5.tgz", + "integrity": "sha512-5iT5QsZuBrKaWjWTj9t+WTj7YAGR/GwUjTZTpzeW5rxU46t4NqMVhHQ/LJ8gvSHqreZYr+ToBMkUtma+5fUfnQ==", "license": "MIT", "dependencies": { "atom-sorter": "^2.1.3", - "chemical-elements": "^2.1.1", - "mf-matcher": "^3.2.4", - "mf-parser": "^3.2.4", - "mf-utilities": "^3.2.4" + "chemical-elements": "^2.1.2", + "mf-matcher": "^3.2.5", + "mf-parser": "^3.2.5", + "mf-utilities": "^3.2.5" } }, "node_modules/mf-from-google-sheet": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/mf-from-google-sheet/-/mf-from-google-sheet-3.1.4.tgz", - "integrity": "sha512-jDK9HYKMlf6T3+RlIrf+aRYMfPgYAeGsN2QSuz2+sZNLHeRqZM3JNs+lZ86mxcP6D2uf05L2/KKjAQdxgKMeDw==", + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/mf-from-google-sheet/-/mf-from-google-sheet-3.1.5.tgz", + "integrity": "sha512-mUOV7aVIKt33qZ72LEevJq8Q0xl6OID5HekO9MaNYWT/43tWR7DJj1YO4ImCScv5PSiFebwVNmZ33GIwf2NNJw==", "license": "MIT", "dependencies": { - "mf-generator": "^3.3.4", - "mf-parser": "^3.2.4", - "mf-utilities": "^3.2.4", + "mf-generator": "^3.3.5", + "mf-parser": "^3.2.5", + "mf-utilities": "^3.2.5", "papaparse": "^5.4.1" } }, "node_modules/mf-generator": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/mf-generator/-/mf-generator-3.3.4.tgz", - "integrity": "sha512-E5rfvFK3xY2R7Kd0D620HfLxOM+PgDdaVmg9U2FiNBguPTsU3sg53saz6gVMxyqD9Kig4UhtkK7/9bl1IPCN+g==", + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/mf-generator/-/mf-generator-3.3.5.tgz", + "integrity": "sha512-oQl3mMWg9sknsKmYrXxhWEcEprwkJshyL/Q/tKLYbnD6vBIbr2woj4ejgnluxt3KQ0E0lEALyOAt4E67/gXHMQ==", "license": "MIT", "dependencies": { - "chemical-elements": "^2.1.1", - "mf-finder": "^3.4.4", - "mf-matcher": "^3.2.4", - "mf-parser": "^3.2.4", - "mf-utilities": "^3.2.4", + "chemical-elements": "^2.1.2", + "mf-finder": "^3.4.5", + "mf-matcher": "^3.2.5", + "mf-parser": "^3.2.5", + "mf-utilities": "^3.2.5", "sum-object-keys": "^1.0.2" } }, "node_modules/mf-matcher": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/mf-matcher/-/mf-matcher-3.2.4.tgz", - "integrity": "sha512-NI6dVpFLLSpfzpa0XGvcMBuzfAQpYQoHFv/ChmlBpAA9dDou09THlM/gPaW4yr/bKuXaAEVwyIPkU9qxvo7i8A==", + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/mf-matcher/-/mf-matcher-3.2.5.tgz", + "integrity": "sha512-Pv6rykKmEd/3y3HqwukGYOnOcZL4FXSEgWBro8AGTu0PbBSHjw3JwyTGT2vTxYWk4jvhod6eYpgaFDwYwbS4cQ==", "license": "MIT", "dependencies": { - "mf-utilities": "^3.2.4", - "ml-spectra-processing": "^14.5.1" + "mf-utilities": "^3.2.5", + "ml-spectra-processing": "^14.6.0" } }, "node_modules/mf-parser": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/mf-parser/-/mf-parser-3.2.4.tgz", - "integrity": "sha512-KNX/NXyRXg9t5t6MBnJ+dmzeOJRDS3y0JMU3jnEWvBk7BR+hQAFPurwwlw/TkW/OauALIG1Ikok6/9U1yzxGXQ==", + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/mf-parser/-/mf-parser-3.2.5.tgz", + "integrity": "sha512-tAy3gpImJlAWoxeNyxynXoE9MMg+WSSgwJbHA8pyZaHd6RZRU1OK8UDP0BhvDA++LrQfSB5ITkXSdpSeMXWExg==", "license": "MIT", "dependencies": { "atom-sorter": "^2.1.3", - "chemical-elements": "^2.1.1", + "chemical-elements": "^2.1.2", "chemical-groups": "^2.2.1" } }, "node_modules/mf-utilities": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/mf-utilities/-/mf-utilities-3.2.4.tgz", - "integrity": "sha512-PKraEY96LCAOlj8HmbiaQvVyoMD63bbfnJg8g15BWzEq1VixGlgFO+Q9aURYgX7l+xJKzWGkFVz8OHWewph+yw==", + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/mf-utilities/-/mf-utilities-3.2.5.tgz", + "integrity": "sha512-KLU+DlajpTvB6HnvNSJLWH9xUUawYR2zMMsn3pxCS0W1IWoKNFqmQ/GC7tORCss8wUZMd0H6LetnEmiwECNKkA==", "license": "MIT", "dependencies": { - "chemical-elements": "^2.1.1", + "chemical-elements": "^2.1.2", "chemical-groups": "^2.2.1", - "mf-parser": "^3.2.4" + "mf-parser": "^3.2.5" } }, "node_modules/micromatch": { @@ -9870,9 +9751,9 @@ } }, "node_modules/ml-matrix": { - "version": "6.11.1", - "resolved": "https://registry.npmjs.org/ml-matrix/-/ml-matrix-6.11.1.tgz", - "integrity": "sha512-Fvp1xF1O07tt6Ux9NcnEQTei5UlqbRpvvaFZGs7l3Ij+nOaEDcmbSVtxwNa8V4IfdyFI1NLNUteroMJ1S6vcEg==", + "version": "6.12.0", + "resolved": "https://registry.npmjs.org/ml-matrix/-/ml-matrix-6.12.0.tgz", + "integrity": "sha512-AGfR+pWaC0GmzjUnB6BfwhndPEUGz0i7QUYdqNuw1zhTov/vSRJ9pP2hs6BoGpaSbtXgrKjZz2zjD1M0xuur6A==", "license": "MIT", "dependencies": { "is-any-array": "^2.0.1", @@ -9989,16 +9870,16 @@ } }, "node_modules/ml-signal-processing": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/ml-signal-processing/-/ml-signal-processing-1.0.4.tgz", - "integrity": "sha512-MYMyfhReCxJsbNu9pCbO7jVTQJXiDxyzm+ly1E7T2eS7dk048YLyLPxfTZFn9HDtNSTCnP7djac4Y7BRJC/JmQ==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ml-signal-processing/-/ml-signal-processing-1.1.1.tgz", + "integrity": "sha512-xFhw4DvGHu6qDIh09LmsIUAqdq/QKRp+olhZ14djiWqiz/3EMUgdKPQBpylQMkr5wBGac6O00muyEfWgu9CePg==", "license": "MIT", "dependencies": { - "baselines": "^1.1.7", - "cheminfo-types": "^1.7.2", - "ml-gsd": "^12.1.5", - "ml-savitzky-golay-generalized": "^4.0.1", - "ml-spectra-processing": "^14.2.0" + "baselines": "^1.1.9", + "cheminfo-types": "^1.8.0", + "ml-gsd": "^12.1.8", + "ml-savitzky-golay-generalized": "^4.2.0", + "ml-spectra-processing": "^14.5.3" } }, "node_modules/ml-simple-clustering": { @@ -10099,19 +9980,19 @@ "license": "MIT" }, "node_modules/ms-spectrum": { - "version": "3.6.7", - "resolved": "https://registry.npmjs.org/ms-spectrum/-/ms-spectrum-3.6.7.tgz", - "integrity": "sha512-BtRXC76Xrb7h7jrhdpzIRO2YiFw9IlGPxUg3L390/20LLuA6PT8RBoeB+b+O59MzvzgE4Tc+IZi5/DdmVvChaA==", + "version": "3.6.8", + "resolved": "https://registry.npmjs.org/ms-spectrum/-/ms-spectrum-3.6.8.tgz", + "integrity": "sha512-0UdezGLNO0uI5Bm9kDetF+LG/H+vbVY0moz58yh+5D3neW8jzl0IJZ3Q5WPYS9KqOfn3pMXL9meC6y8Oe8t1dg==", "license": "MIT", "dependencies": { - "cheminfo-types": "^1.7.3", - "emdb": "^3.3.7", + "cheminfo-types": "^1.8.0", + "emdb": "^3.3.8", "is-any-array": "^2.0.1", - "mf-parser": "^3.2.4", - "mf-utilities": "^3.2.4", - "ml-gsd": "^12.1.6", + "mf-parser": "^3.2.5", + "mf-utilities": "^3.2.5", + "ml-gsd": "^12.1.8", "ml-regression-power": "^3.0.0", - "ml-spectra-processing": "^14.5.1", + "ml-spectra-processing": "^14.6.0", "peaks-similarity": "^3.1.1", "xy-parser": "^5.0.5" } @@ -10126,32 +10007,6 @@ "ml-array-xy-max-y": "^1.0.2" } }, - "node_modules/nano-css": { - "version": "5.6.2", - "resolved": "https://registry.npmjs.org/nano-css/-/nano-css-5.6.2.tgz", - "integrity": "sha512-+6bHaC8dSDGALM1HJjOHVXpuastdu2xFoZlC77Jh4cg+33Zcgm+Gxd+1xsnpZK14eyHObSp82+ll5y3SX75liw==", - "license": "Unlicense", - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.4.15", - "css-tree": "^1.1.2", - "csstype": "^3.1.2", - "fastest-stable-stringify": "^2.0.2", - "inline-style-prefixer": "^7.0.1", - "rtl-css-js": "^1.16.1", - "stacktrace-js": "^2.0.2", - "stylis": "^4.3.0" - }, - "peerDependencies": { - "react": "*", - "react-dom": "*" - } - }, - "node_modules/nano-css/node_modules/stylis": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.3.4.tgz", - "integrity": "sha512-osIBl6BGUmSfDkyH2mB7EFvCJntXDrLhKjHTRj/rK6xLH0yuPrHULDRQzKokSOD4VoorhtKpfcfW1GAntu8now==", - "license": "MIT" - }, "node_modules/nanoid": { "version": "3.3.7", "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", @@ -10428,13 +10283,13 @@ } }, "node_modules/nucleotide": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/nucleotide/-/nucleotide-3.1.5.tgz", - "integrity": "sha512-dPJ+CMy2vp0nrD9rFB9RGA5YHRnLgDC45iVDymEZCQbHnksdTs4xIGMmr+SQ5FogsQzhmZnuBSHIiYwHFjVw7A==", + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/nucleotide/-/nucleotide-3.1.6.tgz", + "integrity": "sha512-uD1Atkf4pQdJJO4BxGds5i0QRtP65nFA3DsgTfu11hr9PzEbOx/wQisQMAX6G7ONMPwCl1ziskKWf9+JYgGiDA==", "license": "MIT", "dependencies": { "chemical-groups": "^2.2.1", - "mf-utilities": "^3.2.4" + "mf-utilities": "^3.2.5" } }, "node_modules/num-sort": { @@ -10603,9 +10458,9 @@ } }, "node_modules/openchemlib": { - "version": "8.15.0", - "resolved": "https://registry.npmjs.org/openchemlib/-/openchemlib-8.15.0.tgz", - "integrity": "sha512-8Kd7zrZ/VGWeLsMZDjYzfkoR7zQIdYyNS1xwhKD4BvFCbZXFyLpNKEC+zOiDmeEI8R6bhaRQwTkwYxIqASxIZg==", + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/openchemlib/-/openchemlib-8.16.0.tgz", + "integrity": "sha512-ZzZ9HX1JY69R5SScTch6XGCHgf4GAXr/qKXGdUxL+tBCRWHT7k/UD/PUawwEgJe2h8tv92Ryl5OhqKgihRARgg==", "license": "BSD-3-Clause" }, "node_modules/openchemlib-utils": { @@ -10842,9 +10697,9 @@ } }, "node_modules/path-to-regexp": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-2.2.1.tgz", - "integrity": "sha512-gu9bD6Ta5bwGrrU8muHzVOBFFREpp2iRkVfhBJahwJ6p6Xw20SjT0MxLnwkjOibQmGSYhiUnf2FLe7k+jcFmGQ==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-3.3.0.tgz", + "integrity": "sha512-qyCH421YQPS2WFDxDjftfc1ZR5WKQzVzqsp4n9M2kQhVOo/ByahFoUNJfl58kOcEGfQ//7weFTDhm+ss8Ecxgw==", "dev": true, "license": "MIT" }, @@ -10909,13 +10764,13 @@ } }, "node_modules/playwright": { - "version": "1.47.2", - "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.47.2.tgz", - "integrity": "sha512-nx1cLMmQWqmA3UsnjaaokyoUpdVaaDhJhMoxX2qj3McpjnsqFHs516QAKYhqHAgOP+oCFTEOCOAaD1RgD/RQfA==", + "version": "1.48.1", + "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.48.1.tgz", + "integrity": "sha512-j8CiHW/V6HxmbntOfyB4+T/uk08tBy6ph0MpBXwuoofkSnLmlfdYNNkFTYD6ofzzlSqLA1fwH4vwvVFvJgLN0w==", "dev": true, "license": "Apache-2.0", "dependencies": { - "playwright-core": "1.47.2" + "playwright-core": "1.48.1" }, "bin": { "playwright": "cli.js" @@ -10928,9 +10783,9 @@ } }, "node_modules/playwright-core": { - "version": "1.47.2", - "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.47.2.tgz", - "integrity": "sha512-3JvMfF+9LJfe16l7AbSmU555PaTl2tPyQsVInqm3id16pdDfvZ8TTZ/pyzmkbDrZTQefyzU7AIHlZqQnxpqHVQ==", + "version": "1.48.1", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.48.1.tgz", + "integrity": "sha512-Yw/t4VAFX/bBr1OzwCuOMZkY1Cnb4z/doAFSwf4huqAGWmf9eMNjmK7NiOljCdLmxeRYcGPPmcDgU0zOlzP0YA==", "dev": true, "license": "Apache-2.0", "bin": { @@ -11109,13 +10964,6 @@ "integrity": "sha512-SVtmxhRE/CGkn3eZY1T6pC8Nln6Fr/lu1mKSgRud0eC73whjGfoAogbn78LkD8aFL0zz3bAFerKSnOl7NlErBA==", "license": "MIT" }, - "node_modules/punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==", - "dev": true, - "license": "MIT" - }, "node_modules/queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", @@ -11294,14 +11142,14 @@ } }, "node_modules/react-d3-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/react-d3-utils/-/react-d3-utils-1.0.0.tgz", - "integrity": "sha512-gScTpgmZoPW2yLM56iMw/1cI7SzJ9dQn9feTXNjuq6R15tMQI2C7Lv3I2ShliUNO9HHKU6n1x3ThHCv2wYlLLA==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/react-d3-utils/-/react-d3-utils-2.0.0.tgz", + "integrity": "sha512-Q1OV7DDzyE26OkaUgk/G3UsdwhuCBr7ZATsClsRiJCamSxZkJvV96n2UjJkJU+DTJWwaKx+choSh913DskRLeA==", "license": "MIT", "dependencies": { - "@types/d3-scale": "^4.0.2", + "@types/d3-scale": "^4.0.8", "d3-scale": "^4.0.2", - "use-resize-observer": "^9.0.2" + "use-resize-observer": "^9.1.0" } }, "node_modules/react-dom": { @@ -11332,9 +11180,9 @@ } }, "node_modules/react-dropzone": { - "version": "14.2.9", - "resolved": "https://registry.npmjs.org/react-dropzone/-/react-dropzone-14.2.9.tgz", - "integrity": "sha512-jRZsMC7h48WONsOLHcmhyn3cRWJoIPQjPApvt/sJVfnYaB3Qltn025AoRTTJaj4WdmmgmLl6tUQg1s0wOhpodQ==", + "version": "14.2.3", + "resolved": "https://registry.npmjs.org/react-dropzone/-/react-dropzone-14.2.3.tgz", + "integrity": "sha512-O3om8I+PkFKbxCukfIR3QAGftYXDZfOE2N1mr/7qebQJHs7U+/RSL/9xomJNpRg9kM5h9soQSdf0Gc7OHF5Fug==", "license": "MIT", "dependencies": { "attr-accept": "^2.2.2", @@ -11349,13 +11197,16 @@ } }, "node_modules/react-error-boundary": { - "version": "4.0.13", - "resolved": "https://registry.npmjs.org/react-error-boundary/-/react-error-boundary-4.0.13.tgz", - "integrity": "sha512-b6PwbdSv8XeOSYvjt8LpgpKrZ0yGdtZokYwkwV2wlcZbxgopHX/hgPl5VgpnoVOWd868n1hktM8Qm4b+02MiLQ==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/react-error-boundary/-/react-error-boundary-4.1.1.tgz", + "integrity": "sha512-EOAEsbVm2EQD8zPS4m24SiaR/506RPC3CjMcjJ5JWKECsctyLsDTKxB26Hvl7jcz7KweSOkBYAcY/hmMpMn2jA==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.12.5" }, + "engines": { + "pnpm": "=9" + }, "peerDependencies": { "react": ">=16.13.1" } @@ -11421,9 +11272,9 @@ } }, "node_modules/react-ocl": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/react-ocl/-/react-ocl-6.1.0.tgz", - "integrity": "sha512-TkwkERltTDWIy2CZnjECjTVO1GZvWI2T1VAIojUTWVi91MJUEQfLKATcSiDJg9hrckYqKJAwwlUppfK4I7fUyA==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/react-ocl/-/react-ocl-7.0.2.tgz", + "integrity": "sha512-vzAJVL90qSbaNmS/RLLL0Xz+6K0fmuQHOH5/dwPer2NEDXx3MjQPuTqfaCnpY5HexoUpfgJ8/QLuOvhbtshK1Q==", "license": "MIT", "peerDependencies": { "openchemlib": ">=8", @@ -11432,23 +11283,23 @@ } }, "node_modules/react-ocl-nmr": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/react-ocl-nmr/-/react-ocl-nmr-3.0.3.tgz", - "integrity": "sha512-9g5FTgZSeDJvDBe7EdOUVLA0xDS4XGA7dJN5bKOhi3owigWY2Nu4l3gWepisLl9B5Wq3JpHXr+bJL2v1h6NWxA==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/react-ocl-nmr/-/react-ocl-nmr-3.1.0.tgz", + "integrity": "sha512-9rYsjPZmU7A6VOUylpPrBOh8f6cfDXVwJu/aIotwTn9z6na111xJYTgSznxjqGsyOkG0rBfyNjfkesWcHZKPWg==", "license": "MIT", "dependencies": { "openchemlib": "^8.15.0", "openchemlib-utils": "^6.4.1", - "react-ocl": "^6.1.0" + "react-ocl": "^7.0.2" }, "peerDependencies": { "openchemlib": ">=8" } }, "node_modules/react-plot": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/react-plot/-/react-plot-2.0.0.tgz", - "integrity": "sha512-fUNPkaBWLKdyMKt/KPeQ0Uk6/GEUmhHcEUX0x6y3BffXSvMDJHhV+RrZqXXHckIXtnXiZaY7T9351MUXTIY0Fg==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/react-plot/-/react-plot-3.0.0.tgz", + "integrity": "sha512-aJ+YUV2dgvCgbw4fHUeWsurDg1tt8QRm5H5AgaSmAWY9V6mE+tuYu18Wsl4jp0l5wqJOeq98L8ssoIwVl9CzDg==", "license": "MIT", "dependencies": { "d3-array": "^3.2.4", @@ -11457,7 +11308,7 @@ "d3-shape": "^3.2.0", "immer": "^10.1.1", "ml-distance-euclidean": "^2.0.0", - "react-d3-utils": "^1.0.0" + "react-d3-utils": "^2.0.0" }, "peerDependencies": { "@types/react": "*", @@ -11548,13 +11399,13 @@ "license": "0BSD" }, "node_modules/react-router": { - "version": "6.26.2", - "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.26.2.tgz", - "integrity": "sha512-tvN1iuT03kHgOFnLPfLJ8V95eijteveqdOSk+srqfePtQvqCExB8eHOYnlilbOcyJyKnYkr1vJvf7YqotAJu1A==", + "version": "6.27.0", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.27.0.tgz", + "integrity": "sha512-YA+HGZXz4jaAkVoYBE98VQl+nVzI+cVI2Oj/06F5ZM+0u3TgedN9Y9kmMRo2mnkSK2nCpNQn0DVob4HCsY/WLw==", "dev": true, "license": "MIT", "dependencies": { - "@remix-run/router": "1.19.2" + "@remix-run/router": "1.20.0" }, "engines": { "node": ">=14.0.0" @@ -11564,14 +11415,14 @@ } }, "node_modules/react-router-dom": { - "version": "6.26.2", - "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.26.2.tgz", - "integrity": "sha512-z7YkaEW0Dy35T3/QKPYB1LjMK2R1fxnHO8kWpUMTBdfVzZrWOiY9a7CtN8HqdWtDUWd5FY6Dl8HFsqVwH4uOtQ==", + "version": "6.27.0", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.27.0.tgz", + "integrity": "sha512-+bvtFWMC0DgAFrfKXKG9Fc+BcXWRUO1aJIihbB79xaeq0v5UzfvnM5houGUm1Y461WVRcgAQ+Clh5rdb1eCx4g==", "dev": true, "license": "MIT", "dependencies": { - "@remix-run/router": "1.19.2", - "react-router": "6.26.2" + "@remix-run/router": "1.20.0", + "react-router": "6.27.0" }, "engines": { "node": ">=14.0.0" @@ -11582,39 +11433,39 @@ } }, "node_modules/react-science": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/react-science/-/react-science-6.0.2.tgz", - "integrity": "sha512-YsTjVMLLVhXUaMK0pKEJ1sS6wltP/ErDYTBhgKwskuC7CDvW4E44hTlJLpL7cAmB/qQ4sxUjhVZIefb+Ipn/zQ==", + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/react-science/-/react-science-9.0.1.tgz", + "integrity": "sha512-ti0txhFlduazKWddL4YGMIs74XbyCE3XfOTBbJ59afBlTPxIFbOg7jugAuTLB9EfMlOuTEadgtCLNjE1JIG7gw==", "license": "MIT", "dependencies": { - "@blueprintjs/select": "^5.2.4", + "@blueprintjs/select": "^5.2.5", "@emotion/react": "^11.13.3", "@emotion/styled": "^11.13.0", "@lukeed/uuid": "^2.0.1", "@popperjs/core": "^2.11.8", - "@radix-ui/react-collapsible": "^1.1.0", - "@radix-ui/react-radio-group": "^1.2.0", - "@radix-ui/react-select": "^2.1.1", - "@tanstack/react-query": "^5.56.2", + "@radix-ui/react-collapsible": "^1.1.1", + "@radix-ui/react-radio-group": "^1.2.1", + "@radix-ui/react-select": "^2.1.2", + "@tanstack/react-query": "^5.59.13", "@tanstack/react-table": "^8.20.5", "biologic-converter": "^0.6.0", "cheminfo-types": "^1.8.0", "d3-scale-chromatic": "^3.1.0", - "filelist-utils": "^1.11.1", + "filelist-utils": "^1.11.2", "immer": "^10.1.1", "jcampconverter": "^9.6.4", "lodash": "^4.17.21", "ml-gsd": "^12.1.8", "ml-peak-shape-generator": "^4.1.4", - "ml-signal-processing": "^1.0.4", - "ml-spectra-processing": "^14.5.3", - "ms-spectrum": "^3.6.6", + "ml-signal-processing": "^1.1.1", + "ml-spectra-processing": "^14.6.0", + "ms-spectrum": "^3.6.8", "netcdfjs": "^3.0.0", - "react-d3-utils": "^1.0.0", - "react-dropzone": "^14.2.3", + "react-d3-utils": "^2.0.0", + "react-dropzone": "14.2.3", "react-icons": "^5.3.0", "react-inspector": "^6.0.2", - "react-plot": "^2.0.0", + "react-plot": "^3.0.0", "react-popper": "^2.3.0", "spc-parser": "^1.0.0", "tinycolor2": "^1.6.0", @@ -11682,9 +11533,9 @@ } }, "node_modules/react-tree-svg": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/react-tree-svg/-/react-tree-svg-1.3.0.tgz", - "integrity": "sha512-ZvAMjxVlO/EPsNpqFr36xPLSgR6K64KmDVcbTuuNsLY5a8t0deySL9R80QbAOO7aa7WWITkCCaMiZ90vFMVQJA==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/react-tree-svg/-/react-tree-svg-1.4.0.tgz", + "integrity": "sha512-c6QvUZRAPHIRwOtL7wIu/Peb7+WVki+exvYCX6DXXxtHZkRUbCQN3gNhv/sTOaO8CUh2WPYXwEfmEMzLCaxgdQ==", "dependencies": { "openchemlib": "^8.15.0" }, @@ -11714,41 +11565,6 @@ } } }, - "node_modules/react-universal-interface": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/react-universal-interface/-/react-universal-interface-0.6.2.tgz", - "integrity": "sha512-dg8yXdcQmvgR13RIlZbTRQOoUrDciFVoSBZILwjE2LFISxZZ8loVJKAkuzswl5js8BHda79bIb2b84ehU8IjXw==", - "peerDependencies": { - "react": "*", - "tslib": "*" - } - }, - "node_modules/react-use": { - "version": "17.5.1", - "resolved": "https://registry.npmjs.org/react-use/-/react-use-17.5.1.tgz", - "integrity": "sha512-LG/uPEVRflLWMwi3j/sZqR00nF6JGqTTDblkXK2nzXsIvij06hXl1V/MZIlwj1OKIQUtlh1l9jK8gLsRyCQxMg==", - "license": "Unlicense", - "dependencies": { - "@types/js-cookie": "^2.2.6", - "@xobotyi/scrollbar-width": "^1.9.5", - "copy-to-clipboard": "^3.3.1", - "fast-deep-equal": "^3.1.3", - "fast-shallow-equal": "^1.0.0", - "js-cookie": "^2.2.1", - "nano-css": "^5.6.2", - "react-universal-interface": "^0.6.2", - "resize-observer-polyfill": "^1.5.1", - "screenfull": "^5.1.0", - "set-harmonic-interval": "^1.0.1", - "throttle-debounce": "^3.0.1", - "ts-easing": "^0.2.0", - "tslib": "^2.1.0" - }, - "peerDependencies": { - "react": "*", - "react-dom": "*" - } - }, "node_modules/read-pkg": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", @@ -11991,6 +11807,7 @@ "version": "1.5.1", "resolved": "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz", "integrity": "sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==", + "dev": true, "license": "MIT" }, "node_modules/resolve": { @@ -12103,15 +11920,6 @@ "node": ">=8.0.0" } }, - "node_modules/rtl-css-js": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/rtl-css-js/-/rtl-css-js-1.16.1.tgz", - "integrity": "sha512-lRQgou1mu19e+Ya0LsTvKrVJ5TYUbqCVPAiImX3UfLTenarvPUl1QFdvu5Z3PYmHT9RCcwIfbjRQBntExyj3Zg==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.1.2" - } - }, "node_modules/run-parallel": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", @@ -12207,18 +12015,6 @@ "loose-envify": "^1.1.0" } }, - "node_modules/screenfull": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/screenfull/-/screenfull-5.2.0.tgz", - "integrity": "sha512-9BakfsO2aUQN2K9Fdbj87RJIEZ82Q9IGim7FqM5OsebfoFC6ZHXgDq/KvniuLTPdeM8wY2o6Dj3WQ7KeQCj3cA==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/sdf-parser": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/sdf-parser/-/sdf-parser-6.0.1.tgz", @@ -12251,9 +12047,9 @@ } }, "node_modules/serve": { - "version": "14.2.3", - "resolved": "https://registry.npmjs.org/serve/-/serve-14.2.3.tgz", - "integrity": "sha512-VqUFMC7K3LDGeGnJM9h56D3XGKb6KGgOw0cVNtA26yYXHCcpxf3xwCTUaQoWlVS7i8Jdh3GjQkOB23qsXyjoyQ==", + "version": "14.2.4", + "resolved": "https://registry.npmjs.org/serve/-/serve-14.2.4.tgz", + "integrity": "sha512-qy1S34PJ/fcY8gjVGszDB3EXiPSk5FKhUa7tQe0UPRddxRidc2V6cNHPNewbE1D7MAkgLuWEt3Vw56vYy73tzQ==", "dev": true, "license": "MIT", "dependencies": { @@ -12266,7 +12062,7 @@ "clipboardy": "3.0.0", "compression": "1.7.4", "is-port-reachable": "4.0.0", - "serve-handler": "6.1.5", + "serve-handler": "6.1.6", "update-check": "1.5.4" }, "bin": { @@ -12277,19 +12073,18 @@ } }, "node_modules/serve-handler": { - "version": "6.1.5", - "resolved": "https://registry.npmjs.org/serve-handler/-/serve-handler-6.1.5.tgz", - "integrity": "sha512-ijPFle6Hwe8zfmBxJdE+5fta53fdIY0lHISJvuikXB3VYFafRjMRpOffSPvCYsbKyBA7pvy9oYr/BT1O3EArlg==", + "version": "6.1.6", + "resolved": "https://registry.npmjs.org/serve-handler/-/serve-handler-6.1.6.tgz", + "integrity": "sha512-x5RL9Y2p5+Sh3D38Fh9i/iQ5ZK+e4xuXRd/pGbM4D13tgo/MGwbttUk8emytcr1YYzBYs+apnUngBDFYfpjPuQ==", "dev": true, "license": "MIT", "dependencies": { "bytes": "3.0.0", "content-disposition": "0.5.2", - "fast-url-parser": "1.1.3", "mime-types": "2.1.18", "minimatch": "3.1.2", "path-is-inside": "1.0.2", - "path-to-regexp": "2.2.1", + "path-to-regexp": "3.3.0", "range-parser": "1.2.0" } }, @@ -12479,15 +12274,6 @@ "node": ">= 0.4" } }, - "node_modules/set-harmonic-interval": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/set-harmonic-interval/-/set-harmonic-interval-1.0.1.tgz", - "integrity": "sha512-AhICkFV84tBP1aWqPwLZqFvAwqEoVA9kxNMniGEUvzOlm4vLmOFLiTT3UZ6bziJTy4bOVpzWGTfSCbmaayGx8g==", - "license": "Unlicense", - "engines": { - "node": ">=6.9" - } - }, "node_modules/setimmediate": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", @@ -12748,15 +12534,6 @@ "integrity": "sha512-Ifi3fH46Bco+Lb1mOlTxbFEuF3NdyElEVVD+EmoK327I0JzKAP4x57cl+HoxHqFcVd8F/uXLC+wtY3n/R1uO2w==", "license": "BSD-3-Clause" }, - "node_modules/stack-generator": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/stack-generator/-/stack-generator-2.0.10.tgz", - "integrity": "sha512-mwnua/hkqM6pF4k8SnmZ2zfETsRUpWXREfA/goT8SLCV4iOFa4bzOX2nDipWAZFPTjLvQB82f5yaodMVhK0yJQ==", - "license": "MIT", - "dependencies": { - "stackframe": "^1.3.4" - } - }, "node_modules/stackback": { "version": "0.0.2", "resolved": "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz", @@ -12764,42 +12541,6 @@ "dev": true, "license": "MIT" }, - "node_modules/stackframe": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.3.4.tgz", - "integrity": "sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==", - "license": "MIT" - }, - "node_modules/stacktrace-gps": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/stacktrace-gps/-/stacktrace-gps-3.1.2.tgz", - "integrity": "sha512-GcUgbO4Jsqqg6RxfyTHFiPxdPqF+3LFmQhm7MgCuYQOYuWyqxo5pwRPz5d/u6/WYJdEnWfK4r+jGbyD8TSggXQ==", - "license": "MIT", - "dependencies": { - "source-map": "0.5.6", - "stackframe": "^1.3.4" - } - }, - "node_modules/stacktrace-gps/node_modules/source-map": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz", - "integrity": "sha512-MjZkVp0NHr5+TPihLcadqnlVoGIoWo4IBHptutGh9wI3ttUYvCG26HkSuDi+K6lsZ25syXJXcctwgyVCt//xqA==", - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/stacktrace-js": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/stacktrace-js/-/stacktrace-js-2.0.2.tgz", - "integrity": "sha512-Je5vBeY4S1r/RnLydLl0TBTi3F2qdfWmYsGvtfZgEI+SCprPppaIhQf5nGcal4gI4cGpCV/duLcAzT1np6sQqg==", - "license": "MIT", - "dependencies": { - "error-stack-parser": "^2.0.6", - "stack-generator": "^2.0.5", - "stacktrace-gps": "^3.0.4" - } - }, "node_modules/std-env": { "version": "3.7.0", "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.7.0.tgz", @@ -13057,9 +12798,9 @@ } }, "node_modules/stylelint": { - "version": "16.9.0", - "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-16.9.0.tgz", - "integrity": "sha512-31Nm3WjxGOBGpQqF43o3wO9L5AC36TPIe6030Lnm13H3vDMTcS21DrLh69bMX+DBilKqMMVLian4iG6ybBoNRQ==", + "version": "16.10.0", + "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-16.10.0.tgz", + "integrity": "sha512-z/8X2rZ52dt2c0stVwI9QL2AFJhLhbPkyfpDFcizs200V/g7v+UYY6SNcB9hKOLcDDX/yGLDsY/pX08sLkz9xQ==", "dev": true, "funding": [ { @@ -13081,17 +12822,17 @@ "balanced-match": "^2.0.0", "colord": "^2.9.3", "cosmiconfig": "^9.0.0", - "css-functions-list": "^3.2.2", - "css-tree": "^2.3.1", - "debug": "^4.3.6", + "css-functions-list": "^3.2.3", + "css-tree": "^3.0.0", + "debug": "^4.3.7", "fast-glob": "^3.3.2", "fastest-levenshtein": "^1.0.16", - "file-entry-cache": "^9.0.0", + "file-entry-cache": "^9.1.0", "global-modules": "^2.0.0", "globby": "^11.1.0", "globjoin": "^0.1.4", "html-tags": "^3.3.1", - "ignore": "^5.3.2", + "ignore": "^6.0.2", "imurmurhash": "^0.1.4", "is-plain-object": "^5.0.0", "known-css-properties": "^0.34.0", @@ -13100,14 +12841,13 @@ "micromatch": "^4.0.8", "normalize-path": "^3.0.0", "picocolors": "^1.0.1", - "postcss": "^8.4.41", + "postcss": "^8.4.47", "postcss-resolve-nested-selector": "^0.1.6", - "postcss-safe-parser": "^7.0.0", + "postcss-safe-parser": "^7.0.1", "postcss-selector-parser": "^6.1.2", "postcss-value-parser": "^4.2.0", "resolve-from": "^5.0.0", "string-width": "^4.2.3", - "strip-ansi": "^7.1.0", "supports-hyperlinks": "^3.1.0", "svg-tags": "^1.0.0", "table": "^6.8.2", @@ -13214,13 +12954,13 @@ } }, "node_modules/stylelint/node_modules/css-tree": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz", - "integrity": "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-3.0.0.tgz", + "integrity": "sha512-o88DVQ6GzsABn1+6+zo2ct801dBO5OASVyxbbvA2W20ue2puSh/VOuqUj90eUeMSX/xqGqBmOKiRQN7tJOuBXw==", "dev": true, "license": "MIT", "dependencies": { - "mdn-data": "2.0.30", + "mdn-data": "2.10.0", "source-map-js": "^1.0.1" }, "engines": { @@ -13244,10 +12984,20 @@ "node": ">=6" } }, + "node_modules/stylelint/node_modules/ignore": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-6.0.2.tgz", + "integrity": "sha512-InwqeHHN2XpumIkMvpl/DCJVrAHgCsG5+cn1XlnLWGwtZBm8QJfSusItfrwx81CTp5agNZqpKU2J/ccC5nGT4A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, "node_modules/stylelint/node_modules/mdn-data": { - "version": "2.0.30", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz", - "integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==", + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.10.0.tgz", + "integrity": "sha512-qq7C3EtK3yJXMwz1zAab65pjl+UhohqMOctTgcqjLOWABqmwj+me02LSsCuEUxnst9X1lCBpoE0WArGKgdGDzw==", "dev": true, "license": "CC0-1.0" }, @@ -13266,7 +13016,7 @@ "node": ">=8" } }, - "node_modules/stylelint/node_modules/string-width/node_modules/strip-ansi": { + "node_modules/stylelint/node_modules/strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", @@ -13362,9 +13112,9 @@ "dev": true }, "node_modules/synckit": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.9.1.tgz", - "integrity": "sha512-7gr8p9TQP6RAHusBOSLs46F4564ZrjV8xFmw5zCmgmhGUcw2hxsShhJ6CEiHQMgPDwAQ1fWHPM0ypc4RMAig4A==", + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.9.2.tgz", + "integrity": "sha512-vrozgXDQwYO72vHjUb/HnFbQx1exDjoKzqx23aXEg2a9VIg2TSFZ8FmeZpTjUCFMYw7mpX4BE2SFu8wI7asYsw==", "dev": true, "license": "MIT", "dependencies": { @@ -13573,15 +13323,6 @@ "dev": true, "license": "MIT" }, - "node_modules/throttle-debounce": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/throttle-debounce/-/throttle-debounce-3.0.1.tgz", - "integrity": "sha512-dTEWWNu6JmeVXY0ZYoPuH5cRIwc0MeGbJwah9KUNYSJwommQpCzTySTpEe8Gs1J23aeWEuAobe4Ag7EHVt/LOg==", - "license": "MIT", - "engines": { - "node": ">=10" - } - }, "node_modules/tiny-case": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/tiny-case/-/tiny-case-1.0.3.tgz", @@ -13608,6 +13349,48 @@ "dev": true, "license": "MIT" }, + "node_modules/tinyglobby": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.9.tgz", + "integrity": "sha512-8or1+BGEdk1Zkkw2ii16qSS7uVrQJPre5A9o/XkWPATkk23FZh/15BKFxPnlTy6vkljZxLqYCzzBMj30ZrSvjw==", + "dev": true, + "license": "MIT", + "dependencies": { + "fdir": "^6.4.0", + "picomatch": "^4.0.2" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/tinyglobby/node_modules/fdir": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.0.tgz", + "integrity": "sha512-3oB133prH1o4j/L5lLW7uOCF1PlD+/It2L0eL/iAqWMB91RBbqTewABqxhj0ibBd90EEmWZq7ntIWzVaWcXTGQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/tinyglobby/node_modules/picomatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", + "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, "node_modules/tinypool": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-1.0.1.tgz", @@ -13660,12 +13443,6 @@ "node": ">=8.0" } }, - "node_modules/toggle-selection": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/toggle-selection/-/toggle-selection-1.0.6.tgz", - "integrity": "sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ==", - "license": "MIT" - }, "node_modules/toposort": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/toposort/-/toposort-2.0.2.tgz", @@ -13685,12 +13462,6 @@ "typescript": ">=4.2.0" } }, - "node_modules/ts-easing": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/ts-easing/-/ts-easing-0.2.0.tgz", - "integrity": "sha512-Z86EW+fFFh/IFB1fqQ3/+7Zpf9t2ebOAxNI/V6Wo7r5gqiqtxmgTlQ1qbqQcjLKYeSHPTsEmvlJUDg/EuL0uHQ==", - "license": "Unlicense" - }, "node_modules/tsconfig-paths": { "version": "3.15.0", "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", @@ -13824,9 +13595,9 @@ } }, "node_modules/typescript": { - "version": "5.6.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.6.2.tgz", - "integrity": "sha512-NW8ByodCSNCwZeghjN3o+JX5OFH0Ojg6sadjEKY4huZ52TqbJTJnDo5+Tw98lSy63NZvi4n+ez5m2u5d4PkZyw==", + "version": "5.6.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.6.3.tgz", + "integrity": "sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==", "dev": true, "license": "Apache-2.0", "bin": { @@ -13838,15 +13609,15 @@ } }, "node_modules/typescript-eslint": { - "version": "8.8.0", - "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.8.0.tgz", - "integrity": "sha512-BjIT/VwJ8+0rVO01ZQ2ZVnjE1svFBiRczcpr1t1Yxt7sT25VSbPfrJtDsQ8uQTy2pilX5nI9gwxhUyLULNentw==", + "version": "8.9.0", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.9.0.tgz", + "integrity": "sha512-AuD/FXGYRQyqyOBCpNLldMlsCGvmDNxptQ3Dp58/NXeB+FqyvTfXmMyba3PYa0Vi9ybnj7G8S/yd/4Cw8y47eA==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/eslint-plugin": "8.8.0", - "@typescript-eslint/parser": "8.8.0", - "@typescript-eslint/utils": "8.8.0" + "@typescript-eslint/eslint-plugin": "8.9.0", + "@typescript-eslint/parser": "8.9.0", + "@typescript-eslint/utils": "8.9.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -14085,9 +13856,9 @@ } }, "node_modules/vite": { - "version": "5.4.8", - "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.8.tgz", - "integrity": "sha512-FqrItQ4DT1NC4zCUqMB4c4AZORMKIa0m8/URVCZ77OZ/QSNeJ54bU1vrFADbDsuwfIPcgknRkmqakQcgnL4GiQ==", + "version": "5.4.9", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.9.tgz", + "integrity": "sha512-20OVpJHh0PAM0oSOELa5GaZNWeDjcAvQjGXy2Uyr+Tp+/D2/Hdz6NLgpJLsarPTA2QJ6v8mX2P1ZfbsSKvdMkg==", "dev": true, "license": "MIT", "dependencies": { @@ -14145,9 +13916,9 @@ } }, "node_modules/vite-node": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-2.1.2.tgz", - "integrity": "sha512-HPcGNN5g/7I2OtPjLqgOtCRu/qhVvBxTUD3qzitmL0SrG1cWFzxzhMDWussxSbrRYWqnKf8P2jiNhPMSN+ymsQ==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-2.1.3.tgz", + "integrity": "sha512-I1JadzO+xYX887S39Do+paRePCKoiDrWRRjp9kkG5he0t7RXNvPAJPCQSJqbGN4uCrFFeS3Kj3sLqY8NMYBEdA==", "dev": true, "license": "MIT", "dependencies": { @@ -14182,19 +13953,19 @@ } }, "node_modules/vitest": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/vitest/-/vitest-2.1.2.tgz", - "integrity": "sha512-veNjLizOMkRrJ6xxb+pvxN6/QAWg95mzcRjtmkepXdN87FNfxAss9RKe2far/G9cQpipfgP2taqg0KiWsquj8A==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-2.1.3.tgz", + "integrity": "sha512-Zrxbg/WiIvUP2uEzelDNTXmEMJXuzJ1kCpbDvaKByFA9MNeO95V+7r/3ti0qzJzrxdyuUw5VduN7k+D3VmVOSA==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/expect": "2.1.2", - "@vitest/mocker": "2.1.2", - "@vitest/pretty-format": "^2.1.2", - "@vitest/runner": "2.1.2", - "@vitest/snapshot": "2.1.2", - "@vitest/spy": "2.1.2", - "@vitest/utils": "2.1.2", + "@vitest/expect": "2.1.3", + "@vitest/mocker": "2.1.3", + "@vitest/pretty-format": "^2.1.3", + "@vitest/runner": "2.1.3", + "@vitest/snapshot": "2.1.3", + "@vitest/spy": "2.1.3", + "@vitest/utils": "2.1.3", "chai": "^5.1.1", "debug": "^4.3.6", "magic-string": "^0.30.11", @@ -14205,7 +13976,7 @@ "tinypool": "^1.0.0", "tinyrainbow": "^1.2.0", "vite": "^5.0.0", - "vite-node": "2.1.2", + "vite-node": "2.1.3", "why-is-node-running": "^2.3.0" }, "bin": { @@ -14220,8 +13991,8 @@ "peerDependencies": { "@edge-runtime/vm": "*", "@types/node": "^18.0.0 || >=20.0.0", - "@vitest/browser": "2.1.2", - "@vitest/ui": "2.1.2", + "@vitest/browser": "2.1.3", + "@vitest/ui": "2.1.3", "happy-dom": "*", "jsdom": "*" }, diff --git a/package.json b/package.json index a07f3a54f..c37104d8b 100644 --- a/package.json +++ b/package.json @@ -3,10 +3,11 @@ "description": "React component to display and process nuclear magnetic resonance (NMR) spectra.", "version": "0.60.0", "license": "MIT", - "module": "lib/component/main/index.js", - "types": "lib/component/main/index.d.ts", + "type": "module", + "exports": "./lib/component/main/index.js", "files": [ - "lib" + "lib", + "src" ], "scripts": { "build": "vite build --outDir build", @@ -15,8 +16,8 @@ "build-cloudflare": "npm run set-version-sha && npm run build-with-profiling && npm run copy-samples-toc", "build-no-minify": "cross-env NO_MINIFY=true npm run build", "build-with-profiling": "cross-env WITH_PROFILING=true NO_MINIFY=true npm run build", - "check-types": "tsc --project tsconfig.esm.json", - "compile": "tsc --project tsconfig.esm.json", + "check-types": "tsc --noEmit", + "compile": "tsc --project tsconfig.build.json", "copy-samples-toc": "cp src/demo/samples.json build/", "clean-lib": "rimraf lib", "dev": "vite --host localhost --port 3000 --open", @@ -60,7 +61,7 @@ "@emotion/styled": "^11.13.0", "@hookform/resolvers": "^3.9.0", "@lukeed/uuid": "^2.0.1", - "cheminfo-font": "^1.13.0", + "cheminfo-font": "^1.13.1", "cheminfo-types": "^1.8.0", "clipboard-polyfill": "^4.1.0", "convert-to-jcamp": "^5.4.11", @@ -72,7 +73,7 @@ "immer": "^10.1.1", "jszip": "^3.10.1", "lodash": "^4.17.21", - "mf-parser": "^3.2.4", + "mf-parser": "^3.2.5", "ml-array-max": "^1.2.4", "ml-array-mean": "^1.1.6", "ml-array-median": "^1.1.6", @@ -80,9 +81,9 @@ "ml-baseline-correction-regression": "^2.0.1", "ml-conrec": "^5.0.3", "ml-gsd": "^12.1.8", - "ml-matrix": "^6.11.1", - "ml-signal-processing": "^1.0.4", - "ml-spectra-processing": "^14.5.3", + "ml-matrix": "^6.12.0", + "ml-signal-processing": "^1.1.1", + "ml-spectra-processing": "^14.6.0", "ml-stat": "^1.3.3", "ml-tree-similarity": "^2.2.0", "multiplet-analysis": "^2.1.2", @@ -91,45 +92,45 @@ "nmr-processing": "^12.12.3", "nmredata": "^0.9.11", "numeral": "^2.0.6", - "openchemlib": "^8.15.0", + "openchemlib": "^8.16.0", "openchemlib-utils": "^6.4.1", "papaparse": "^5.4.1", "re-resizable": "6.10.0", - "react-d3-utils": "^1.0.0", - "react-dropzone": "^14.2.9", - "react-error-boundary": "^4.0.13", + "react-d3-utils": "^2.0.0", + "react-dropzone": "14.2.3", + "react-error-boundary": "^4.1.1", "react-hook-form": "^7.53.0", "react-icons": "^5.3.0", "react-inspector": "^6.0.2", "react-mf": "^2.0.3", - "react-ocl": "^6.1.0", - "react-ocl-nmr": "^3.0.3", - "react-plot": "^2.0.0", + "react-ocl": "^7.0.2", + "react-ocl-nmr": "^3.1.0", + "react-plot": "^3.0.0", "react-rnd": "^10.4.13", - "react-science": "^6.0.2", + "react-science": "^9.0.1", "react-table": "^7.8.0", "react-transition-group": "^4.4.5", - "react-use": "^17.5.1", "smart-array-filter": "^4.0.2", + "use-resize-observer": "^9.1.0", "yup": "^1.4.0" }, "devDependencies": { "@babel/plugin-transform-modules-commonjs": "^7.25.7", "@babel/preset-react": "^7.25.7", "@babel/preset-typescript": "^7.25.7", - "@playwright/test": "^1.47.2", + "@playwright/test": "^1.48.1", "@simbathesailor/use-what-changed": "^2.0.0", "@types/d3": "^7.4.3", "@types/lodash": "^4.17.10", - "@types/node": "^22.7.4", + "@types/node": "^22.7.6", "@types/papaparse": "^5.3.14", "@types/react": "^18.3.11", - "@types/react-dom": "^18.3.0", + "@types/react-dom": "^18.3.1", "@types/react-table": "^7.7.20", "@vitejs/plugin-react-swc": "^3.7.1", - "@vitest/coverage-v8": "^2.1.2", + "@vitest/coverage-v8": "^2.1.3", "cross-env": "^7.0.3", - "cspell": "^8.14.4", + "cspell": "^8.15.3", "eslint": "^9.12.0", "eslint-config-cheminfo-react": "^14.0.0", "eslint-config-cheminfo-typescript": "^16.0.0", @@ -139,14 +140,14 @@ "rc-menu": "^9.15.1", "react": "^18.3.1", "react-dom": "^18.3.1", - "react-router-dom": "^6.26.2", + "react-router-dom": "^6.27.0", "rimraf": "^6.0.1", "rollup-plugin-analyzer": "^4.0.0", - "serve": "^14.2.3", - "stylelint": "^16.9.0", + "serve": "^14.2.4", + "stylelint": "^16.10.0", "stylelint-config-standard": "^36.0.1", - "typescript": "^5.6.2", - "vite": "^5.4.8", - "vitest": "^2.1.2" + "typescript": "^5.6.3", + "vite": "^5.4.9", + "vitest": "^2.1.3" } } diff --git a/playwright.config.ts b/playwright.config.ts index e86dfd9f7..823b625b0 100644 --- a/playwright.config.ts +++ b/playwright.config.ts @@ -1,4 +1,5 @@ -import { devices, ViewportSize, defineConfig } from '@playwright/test'; +import type { ViewportSize} from '@playwright/test'; +import { devices, defineConfig } from '@playwright/test'; const viewportOverride: ViewportSize = { width: 1600, diff --git a/src/component/1d-2d/FieldEdition.tsx b/src/component/1d-2d/FieldEdition.tsx index 1377c15fa..b90244ef1 100644 --- a/src/component/1d-2d/FieldEdition.tsx +++ b/src/component/1d-2d/FieldEdition.tsx @@ -1,13 +1,15 @@ /** @jsxImportSource @emotion/react */ -import { Popover, PopoverProps } from '@blueprintjs/core'; +import type { PopoverProps } from '@blueprintjs/core'; +import { Popover } from '@blueprintjs/core'; import { css } from '@emotion/react'; import { yupResolver } from '@hookform/resolvers/yup'; -import { ReactNode, useState } from 'react'; +import type { ReactNode } from 'react'; +import { useState } from 'react'; import { useForm } from 'react-hook-form'; import * as Yup from 'yup'; -import { Input2Controller } from '../elements/Input2Controller'; -import { NumberInput2Controller } from '../elements/NumberInput2Controller'; +import { Input2Controller } from '../elements/Input2Controller.js'; +import { NumberInput2Controller } from '../elements/NumberInput2Controller.js'; type InputType = 'number' | 'text'; diff --git a/src/component/1d-2d/components/FloatMoleculeStructures/ActionsButton.tsx b/src/component/1d-2d/components/FloatMoleculeStructures/ActionsButton.tsx index aec9080e3..337ed3728 100644 --- a/src/component/1d-2d/components/FloatMoleculeStructures/ActionsButton.tsx +++ b/src/component/1d-2d/components/FloatMoleculeStructures/ActionsButton.tsx @@ -1,7 +1,7 @@ import { BsArrowsMove } from 'react-icons/bs'; import { FaTimes } from 'react-icons/fa'; -import Button from '../../../elements/Button'; +import Button from '../../../elements/Button.js'; export default function ActionsButton({ onFloatBtnClick }) { return ( diff --git a/src/component/1d-2d/components/FloatMoleculeStructures/DraggableStructure.tsx b/src/component/1d-2d/components/FloatMoleculeStructures/DraggableStructure.tsx index 347d74bb9..352f25526 100644 --- a/src/component/1d-2d/components/FloatMoleculeStructures/DraggableStructure.tsx +++ b/src/component/1d-2d/components/FloatMoleculeStructures/DraggableStructure.tsx @@ -1,24 +1,24 @@ /** @jsxImportSource @emotion/react */ import { css } from '@emotion/react'; -import { Ranges, Zones } from 'nmr-processing'; +import type { Ranges, Zones } from 'nmr-processing'; import OCL from 'openchemlib/full'; import { ResponsiveChart } from 'react-d3-utils'; import OCLnmr from 'react-ocl-nmr'; import { Rnd } from 'react-rnd'; -import { +import type { MoleculeBoundingRect, MoleculeView, StateMoleculeExtended, -} from '../../../../data/molecules/Molecule'; -import { useDispatch } from '../../../context/DispatchContext'; -import { useGlobal } from '../../../context/GlobalContext'; -import { useHighlightColor } from '../../../hooks/useHighlightColor'; -import { useMoleculeEditor } from '../../../modal/MoleculeStructureEditorModal'; -import useAtomAssignment from '../../../panels/MoleculesPanel/useAtomAssignment'; -import { DisplayerMode } from '../../../reducer/Reducer'; +} from '../../../../data/molecules/Molecule.js'; +import { useDispatch } from '../../../context/DispatchContext.js'; +import { useGlobal } from '../../../context/GlobalContext.js'; +import { useHighlightColor } from '../../../hooks/useHighlightColor.js'; +import { useMoleculeEditor } from '../../../modal/MoleculeStructureEditorModal.js'; +import useAtomAssignment from '../../../panels/MoleculesPanel/useAtomAssignment.js'; +import type { DisplayerMode } from '../../../reducer/Reducer.js'; -import ActionsButton from './ActionsButton'; +import ActionsButton from './ActionsButton.js'; interface DraggableStructureProps { zones: Zones; diff --git a/src/component/1d-2d/components/FloatMoleculeStructures/index.tsx b/src/component/1d-2d/components/FloatMoleculeStructures/index.tsx index 7aae5fa76..d0c0227b8 100644 --- a/src/component/1d-2d/components/FloatMoleculeStructures/index.tsx +++ b/src/component/1d-2d/components/FloatMoleculeStructures/index.tsx @@ -1,18 +1,18 @@ -import { Spectrum1D, Spectrum2D } from 'nmr-load-save'; -import { Zones, Ranges } from 'nmr-processing'; +import type { Spectrum1D, Spectrum2D } from 'nmr-load-save'; +import type { Ranges, Zones } from 'nmr-processing'; import { memo } from 'react'; -import { +import type { MoleculesView, MoleculeView, StateMoleculeExtended, -} from '../../../../data/molecules/Molecule'; -import { useChartData } from '../../../context/ChartContext'; -import useSpectrum from '../../../hooks/useSpectrum'; -import { DisplayerMode } from '../../../reducer/Reducer'; -import { assert } from '../../../utility/assert'; +} from '../../../../data/molecules/Molecule.js'; +import { useChartData } from '../../../context/ChartContext.js'; +import useSpectrum from '../../../hooks/useSpectrum.js'; +import type { DisplayerMode } from '../../../reducer/Reducer.js'; +import { assert } from '../../../utility/assert.js'; -import { DraggableStructure } from './DraggableStructure'; +import { DraggableStructure } from './DraggableStructure.js'; interface FloatMoleculeStructuresProps { zones: Zones; diff --git a/src/component/1d-2d/components/SpectrumInfoBlock.tsx b/src/component/1d-2d/components/SpectrumInfoBlock.tsx index fdd3d6f3c..e4f9fb908 100644 --- a/src/component/1d-2d/components/SpectrumInfoBlock.tsx +++ b/src/component/1d-2d/components/SpectrumInfoBlock.tsx @@ -1,23 +1,22 @@ /** @jsxImportSource @emotion/react */ -import lodashGet from 'lodash/get'; -import { Spectrum } from 'nmr-load-save'; -import { CSSProperties, useState } from 'react'; +import lodashGet from 'lodash/get.js'; +import type { Spectrum } from 'nmr-load-save'; +import type { CSSProperties } from 'react'; +import { useState } from 'react'; import { BsArrowsMove } from 'react-icons/bs'; import { FaTimes } from 'react-icons/fa'; -import { useMeasure } from 'react-use'; - -import { useChartData } from '../../context/ChartContext'; -import { useGlobal } from '../../context/GlobalContext'; -import { usePreferences } from '../../context/PreferencesContext'; -import { - ActionsButtonsPopover, - ActionsButtonsPopoverProps, -} from '../../elements/ActionsButtonsPopover'; -import { SVGGroup } from '../../elements/SVGGroup'; -import useDraggable from '../../elements/draggable/useDraggable'; -import useSpectrum from '../../hooks/useSpectrum'; -import { Margin } from '../../reducer/Reducer'; -import { formatNumber } from '../../utility/formatNumber'; +import useResizeObserver from 'use-resize-observer'; + +import { useChartData } from '../../context/ChartContext.js'; +import { useGlobal } from '../../context/GlobalContext.js'; +import { usePreferences } from '../../context/PreferencesContext.js'; +import type { ActionsButtonsPopoverProps } from '../../elements/ActionsButtonsPopover.js'; +import { ActionsButtonsPopover } from '../../elements/ActionsButtonsPopover.js'; +import { SVGGroup } from '../../elements/SVGGroup.js'; +import useDraggable from '../../elements/draggable/useDraggable.js'; +import useSpectrum from '../../hooks/useSpectrum.js'; +import type { Margin } from '../../reducer/Reducer.js'; +import { formatNumber } from '../../utility/formatNumber.js'; const verticalSpace = 5; const boxPadding = 0; @@ -95,7 +94,12 @@ function SpectrumInfoBlock() { : infoFields?.length - (infoFields?.length % 2) ? 2 : 1) || 0); - const [ref, boxSize] = useMeasure(); + const { + ref, + width: boxWidth = 0, + height: boxHeight = 0, + // @ts-expect-error Module is not published correctly. + } = useResizeObserver(); const { onPointerDown } = useDraggable({ position: coordinate, onChange: (dragEvent) => { @@ -140,23 +144,23 @@ function SpectrumInfoBlock() { let { x, y } = currentPosition; - if (x + boxSize.width + boxPadding > width - margin.right) { - x = width - margin.right - boxSize.width - boxPadding; + if (x + boxWidth + boxPadding > width - margin.right) { + x = width - margin.right - boxWidth - boxPadding; } if (x - boxPadding < margin.left) { x = margin.left + boxPadding; } - if (y + boxSize.height + bothSidePadding + shift > height - margin.bottom) { - y = height - margin.bottom - boxSize.height - bothSidePadding - shift; + if (y + boxHeight + bothSidePadding + shift > height - margin.bottom) { + y = height - margin.bottom - boxHeight - bothSidePadding - shift; } if (y + shift < margin.top) { y = margin.top - shift; } - const boxWidth = boxSize.width + bothSidePadding; - const boxHeight = boxSize.height + bothSidePadding; + const finalBoxWidth = boxWidth + bothSidePadding; + const finalBoxHeight = boxHeight + bothSidePadding; const actionsButtons: ActionsButtonsPopoverProps['buttons'] = [ { @@ -202,8 +206,8 @@ function SpectrumInfoBlock() { data-no-export="true" x={-boxPadding} y={-boxPadding + totalSpace} - width={boxWidth} - height={boxHeight} + width={finalBoxWidth} + height={finalBoxHeight} rx="5" fill={isMoveActive ? 'white' : 'transparent'} opacity={isMoveActive ? 0.9 : 0} diff --git a/src/component/1d-2d/tools/BrushX.tsx b/src/component/1d-2d/tools/BrushX.tsx index 5cedb9b64..0c1096600 100644 --- a/src/component/1d-2d/tools/BrushX.tsx +++ b/src/component/1d-2d/tools/BrushX.tsx @@ -1,8 +1,8 @@ -import { CSSProperties } from 'react'; +import type { CSSProperties } from 'react'; -import { useBrushTracker } from '../../EventsTrackers/BrushTracker'; -import { useChartData } from '../../context/ChartContext'; -import { options } from '../../toolbar/ToolTypes'; +import { useBrushTracker } from '../../EventsTrackers/BrushTracker.js'; +import { useChartData } from '../../context/ChartContext.js'; +import { options } from '../../toolbar/ToolTypes.js'; const styles: Record<'container', CSSProperties> = { container: { diff --git a/src/component/1d-2d/tools/BrushXY.tsx b/src/component/1d-2d/tools/BrushXY.tsx index a6f956dba..7cda3dc49 100644 --- a/src/component/1d-2d/tools/BrushXY.tsx +++ b/src/component/1d-2d/tools/BrushXY.tsx @@ -1,8 +1,8 @@ -import { CSSProperties } from 'react'; +import type { CSSProperties } from 'react'; -import { useBrushTracker } from '../../EventsTrackers/BrushTracker'; -import { useChartData } from '../../context/ChartContext'; -import { options } from '../../toolbar/ToolTypes'; +import { useBrushTracker } from '../../EventsTrackers/BrushTracker.js'; +import { useChartData } from '../../context/ChartContext.js'; +import { options } from '../../toolbar/ToolTypes.js'; const styles: Record<'container', CSSProperties> = { container: { diff --git a/src/component/1d-2d/tools/CrossLinePointer.tsx b/src/component/1d-2d/tools/CrossLinePointer.tsx index e800d389e..1665d0737 100644 --- a/src/component/1d-2d/tools/CrossLinePointer.tsx +++ b/src/component/1d-2d/tools/CrossLinePointer.tsx @@ -1,9 +1,9 @@ -import { CSSProperties } from 'react'; +import type { CSSProperties } from 'react'; -import { useBrushTracker } from '../../EventsTrackers/BrushTracker'; -import { useMouseTracker } from '../../EventsTrackers/MouseTracker'; -import { useChartData } from '../../context/ChartContext'; -import { options } from '../../toolbar/ToolTypes'; +import { useBrushTracker } from '../../EventsTrackers/BrushTracker.js'; +import { useMouseTracker } from '../../EventsTrackers/MouseTracker.js'; +import { useChartData } from '../../context/ChartContext.js'; +import { options } from '../../toolbar/ToolTypes.js'; const styles: Record<'line', CSSProperties> = { line: { diff --git a/src/component/1d/ApodizationLine.tsx b/src/component/1d/ApodizationLine.tsx index 88f1ec741..2cc9f306c 100644 --- a/src/component/1d/ApodizationLine.tsx +++ b/src/component/1d/ApodizationLine.tsx @@ -1,16 +1,16 @@ -import { Spectrum1D } from 'nmr-load-save'; -import { Filters, apodization } from 'nmr-processing'; +import type { Spectrum1D } from 'nmr-load-save'; +import { apodization, Filters } from 'nmr-processing'; -import { defaultApodizationOptions } from '../../data/constants/DefaultApodizationOptions'; -import { useChartData } from '../context/ChartContext'; -import { useScaleChecked } from '../context/ScaleContext'; -import { useActiveSpectrum } from '../hooks/useActiveSpectrum'; -import useSpectrum from '../hooks/useSpectrum'; -import { useVerticalAlign } from '../hooks/useVerticalAlign'; -import useXYReduce, { XYReducerDomainAxis } from '../hooks/useXYReduce'; -import { PathBuilder } from '../utility/PathBuilder'; +import { defaultApodizationOptions } from '../../data/constants/DefaultApodizationOptions.js'; +import { useChartData } from '../context/ChartContext.js'; +import { useScaleChecked } from '../context/ScaleContext.js'; +import { useActiveSpectrum } from '../hooks/useActiveSpectrum.js'; +import useSpectrum from '../hooks/useSpectrum.js'; +import { useVerticalAlign } from '../hooks/useVerticalAlign.js'; +import useXYReduce, { XYReducerDomainAxis } from '../hooks/useXYReduce.js'; +import { PathBuilder } from '../utility/PathBuilder.js'; -import { getYScale } from './utilities/scale'; +import { getYScale } from './utilities/scale.js'; const emptyData = { data: {}, info: {} }; diff --git a/src/component/1d/Chart1D.tsx b/src/component/1d/Chart1D.tsx index 804897648..a46479327 100644 --- a/src/component/1d/Chart1D.tsx +++ b/src/component/1d/Chart1D.tsx @@ -1,25 +1,25 @@ -import SpectrumInfoBlock from '../1d-2d/components/SpectrumInfoBlock'; -import { usePreferences } from '../context/PreferencesContext'; +import SpectrumInfoBlock from '../1d-2d/components/SpectrumInfoBlock.js'; +import { usePreferences } from '../context/PreferencesContext.js'; -import ApodizationLine from './ApodizationLine'; -import ExclusionZonesAnnotations from './ExclusionZonesAnnotations'; -import LinesSeries from './LinesSeries'; -import SimilarityTree from './SimilarityTree'; -import SpectraTracker from './SpectraLegends'; -import XAxis from './XAxis'; -import DatabaseElements from './database/DatabaseElements'; -import IntegralsSeries from './integral/IntegralsSeries'; -import JGraph from './jCouplingGraph/JGraph'; -import { Boxplot } from './matrix/Boxplot'; -import { Stocsy } from './matrix/Stocsy'; -import MultiAnalysisRanges from './multiAnalysis/MultiAnalysisRanges'; -import MultiplicityTrees from './multiplicityTree/MultiplicityTrees'; -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'; +import ApodizationLine from './ApodizationLine.js'; +import ExclusionZonesAnnotations from './ExclusionZonesAnnotations.js'; +import LinesSeries from './LinesSeries.js'; +import SimilarityTree from './SimilarityTree.js'; +import SpectraTracker from './SpectraLegends.js'; +import XAxis from './XAxis.js'; +import DatabaseElements from './database/DatabaseElements.js'; +import IntegralsSeries from './integral/IntegralsSeries.js'; +import JGraph from './jCouplingGraph/JGraph.js'; +import { Boxplot } from './matrix/Boxplot.js'; +import { Stocsy } from './matrix/Stocsy.js'; +import MultiAnalysisRanges from './multiAnalysis/MultiAnalysisRanges.js'; +import MultiplicityTrees from './multiplicityTree/MultiplicityTrees.js'; +import { PeakEditionProvider } from './peaks/PeakEditionManager.js'; +import Peaks from './peaks/Peaks.js'; +import PeaksShapes from './peaks/PeaksShapes.js'; +import Ranges from './ranges/Ranges.js'; +import RangesIntegrals from './ranges/RangesIntegrals.js'; +import BaseLineZones from './tool/BaseLineZones.js'; function Chart1D({ mode, width, height, margin, displayerKey }) { const { diff --git a/src/component/1d/ExclusionZoneAnnotation.tsx b/src/component/1d/ExclusionZoneAnnotation.tsx index 2b096fba0..fccbb1f33 100644 --- a/src/component/1d/ExclusionZoneAnnotation.tsx +++ b/src/component/1d/ExclusionZoneAnnotation.tsx @@ -3,10 +3,10 @@ import { css } from '@emotion/react'; import { Filters } from 'nmr-processing'; import { memo } from 'react'; -import { ExclusionZone } from '../../data/types/data1d/ExclusionZone'; -import { useScaleChecked } from '../context/ScaleContext'; -import { HighlightEventSource, useHighlight } from '../highlight'; -import useActiveSpectrumStyleOptions from '../hooks/useActiveSpectrumStyleOptions'; +import type { ExclusionZone } from '../../data/types/data1d/ExclusionZone.js'; +import { useScaleChecked } from '../context/ScaleContext.js'; +import { HighlightEventSource, useHighlight } from '../highlight/index.js'; +import useActiveSpectrumStyleOptions from '../hooks/useActiveSpectrumStyleOptions.js'; interface ExclusionZoneProps { zone: ExclusionZone; diff --git a/src/component/1d/ExclusionZonesAnnotations.tsx b/src/component/1d/ExclusionZonesAnnotations.tsx index 56bde8de4..43e0ae445 100644 --- a/src/component/1d/ExclusionZonesAnnotations.tsx +++ b/src/component/1d/ExclusionZonesAnnotations.tsx @@ -1,13 +1,13 @@ -import { Spectrum1D } from 'nmr-load-save'; +import type { Spectrum1D } from 'nmr-load-save'; import { Filters } from 'nmr-processing'; import { memo } from 'react'; -import { ExclusionZone } from '../../data/types/data1d/ExclusionZone'; -import { useChartData } from '../context/ChartContext'; -import { useScale } from '../context/ScaleContext'; -import useSpectraByActiveNucleus from '../hooks/useSpectraPerNucleus'; +import type { ExclusionZone } from '../../data/types/data1d/ExclusionZone.js'; +import { useChartData } from '../context/ChartContext.js'; +import { useScale } from '../context/ScaleContext.js'; +import useSpectraByActiveNucleus from '../hooks/useSpectraPerNucleus.js'; -import ExclusionZoneAnnotation from './ExclusionZoneAnnotation'; +import ExclusionZoneAnnotation from './ExclusionZoneAnnotation.js'; interface ExclusionZonesAnnotationsInnerProps { displayerKey: string; diff --git a/src/component/1d/FooterBanner.tsx b/src/component/1d/FooterBanner.tsx index 9abf605c6..793fab00e 100644 --- a/src/component/1d/FooterBanner.tsx +++ b/src/component/1d/FooterBanner.tsx @@ -1,19 +1,19 @@ /** @jsxImportSource @emotion/react */ import { css } from '@emotion/react'; import { xFindClosestIndex } from 'ml-spectra-processing'; -import { ActiveSpectrum, Spectrum1D } from 'nmr-load-save'; +import type { ActiveSpectrum, Spectrum1D } from 'nmr-load-save'; import { memo } from 'react'; import { BsCursor } from 'react-icons/bs'; import { IoPulseSharp } from 'react-icons/io5'; -import { get1DDataXY } from '../../data/data1d/Spectrum1D/get1DDataXY'; -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'; +import { get1DDataXY } from '../../data/data1d/Spectrum1D/get1DDataXY.js'; +import { useBrushTracker } from '../EventsTrackers/BrushTracker.js'; +import { useMouseTracker } from '../EventsTrackers/MouseTracker.js'; +import { useChartData } from '../context/ChartContext.js'; +import { useScaleChecked } from '../context/ScaleContext.js'; +import { useActiveSpectrum } from '../hooks/useActiveSpectrum.js'; +import { useFormatNumberByNucleus } from '../hooks/useFormatNumberByNucleus.js'; +import useSpectrum from '../hooks/useSpectrum.js'; const styles = css` display: flex; diff --git a/src/component/1d/Line.tsx b/src/component/1d/Line.tsx index 8e183ccbe..aa9832431 100644 --- a/src/component/1d/Line.tsx +++ b/src/component/1d/Line.tsx @@ -1,10 +1,11 @@ -import { CSSProperties, useMemo } from 'react'; +import type { CSSProperties } from 'react'; +import { useMemo } from 'react'; -import { useScaleChecked } from '../context/ScaleContext'; -import useActiveSpectrumStyleOptions from '../hooks/useActiveSpectrumStyleOptions'; -import useXYReduce, { XYReducerDomainAxis } from '../hooks/useXYReduce'; -import { PathBuilder } from '../utility/PathBuilder'; -import { parseColor } from '../utility/parseColor'; +import { useScaleChecked } from '../context/ScaleContext.js'; +import useActiveSpectrumStyleOptions from '../hooks/useActiveSpectrumStyleOptions.js'; +import useXYReduce, { XYReducerDomainAxis } from '../hooks/useXYReduce.js'; +import { PathBuilder } from '../utility/PathBuilder.js'; +import { parseColor } from '../utility/parseColor.js'; interface LineProps { data?: { diff --git a/src/component/1d/LinesSeries.tsx b/src/component/1d/LinesSeries.tsx index 04d37688c..d005cb7c1 100644 --- a/src/component/1d/LinesSeries.tsx +++ b/src/component/1d/LinesSeries.tsx @@ -1,18 +1,18 @@ /** @jsxImportSource @emotion/react */ import { css } from '@emotion/react'; -import { Spectrum1D } from 'nmr-load-save'; +import type { Spectrum1D } from 'nmr-load-save'; -import { get1DDataXY } from '../../data/data1d/Spectrum1D/get1DDataXY'; -import { isSpectrum1D } from '../../data/data1d/Spectrum1D/isSpectrum1D'; -import { useBrushTracker } from '../EventsTrackers/BrushTracker'; -import { useChartData } from '../context/ChartContext'; -import { useScaleChecked } from '../context/ScaleContext'; -import { useActiveSpectra } from '../hooks/useActiveSpectra'; -import { useSetActiveSpectrumAction } from '../hooks/useSetActiveSpectrumAction'; -import { useVerticalAlign } from '../hooks/useVerticalAlign'; +import { get1DDataXY } from '../../data/data1d/Spectrum1D/get1DDataXY.js'; +import { isSpectrum1D } from '../../data/data1d/Spectrum1D/isSpectrum1D.js'; +import { useBrushTracker } from '../EventsTrackers/BrushTracker.js'; +import { useChartData } from '../context/ChartContext.js'; +import { useScaleChecked } from '../context/ScaleContext.js'; +import { useActiveSpectra } from '../hooks/useActiveSpectra.js'; +import { useSetActiveSpectrumAction } from '../hooks/useSetActiveSpectrumAction.js'; +import { useVerticalAlign } from '../hooks/useVerticalAlign.js'; -import Line from './Line'; -import { SPECTRA_BOTTOM_MARGIN } from './utilities/scale'; +import Line from './Line.js'; +import { SPECTRA_BOTTOM_MARGIN } from './utilities/scale.js'; const BOX_SIZE = 10; diff --git a/src/component/1d/SimilarityTree.tsx b/src/component/1d/SimilarityTree.tsx index 9b3d4f1d2..5bc77b160 100644 --- a/src/component/1d/SimilarityTree.tsx +++ b/src/component/1d/SimilarityTree.tsx @@ -1,11 +1,12 @@ import { createTree } from 'ml-tree-similarity'; -import { CSSProperties, Fragment } from 'react'; +import type { CSSProperties } from 'react'; +import { Fragment } from 'react'; -import { isSpectrum1D } from '../../data/data1d/Spectrum1D'; -import { useChartData } from '../context/ChartContext'; -import { useScaleChecked } from '../context/ScaleContext'; -import { useFormatNumberByNucleus } from '../hooks/useFormatNumberByNucleus'; -import useSpectrum from '../hooks/useSpectrum'; +import { isSpectrum1D } from '../../data/data1d/Spectrum1D/index.js'; +import { useChartData } from '../context/ChartContext.js'; +import { useScaleChecked } from '../context/ScaleContext.js'; +import { useFormatNumberByNucleus } from '../hooks/useFormatNumberByNucleus.js'; +import useSpectrum from '../hooks/useSpectrum.js'; const circleSize = 3; const marginTop = circleSize + 10; diff --git a/src/component/1d/SpectraLegends.tsx b/src/component/1d/SpectraLegends.tsx index c3c7e5de2..e1b9faa5a 100644 --- a/src/component/1d/SpectraLegends.tsx +++ b/src/component/1d/SpectraLegends.tsx @@ -1,22 +1,22 @@ -import lodashGet from 'lodash/get'; +import lodashGet from 'lodash/get.js'; import { xFindClosestIndex } from 'ml-spectra-processing'; -import { - Spectrum, - Spectrum1D, +import type { JpathLegendField, LegendField, PredefinedLegendField, + Spectrum, + Spectrum1D, } from 'nmr-load-save'; -import { CSSProperties } from 'react'; - -import { get1DDataXY } from '../../data/data1d/Spectrum1D/get1DDataXY'; -import { useMouseTracker } from '../EventsTrackers/MouseTracker'; -import { useChartData } from '../context/ChartContext'; -import { useScale } from '../context/ScaleContext'; -import { SVGGroup } from '../elements/SVGGroup'; -import { useActiveSpectra } from '../hooks/useActiveSpectra'; -import { usePanelPreferences } from '../hooks/usePanelPreferences'; -import { convertPathArrayToString } from '../utility/convertPathArrayToString'; +import type { CSSProperties } from 'react'; + +import { get1DDataXY } from '../../data/data1d/Spectrum1D/get1DDataXY.js'; +import { useMouseTracker } from '../EventsTrackers/MouseTracker.js'; +import { useChartData } from '../context/ChartContext.js'; +import { useScale } from '../context/ScaleContext.js'; +import { SVGGroup } from '../elements/SVGGroup.js'; +import { useActiveSpectra } from '../hooks/useActiveSpectra.js'; +import { usePanelPreferences } from '../hooks/usePanelPreferences.js'; +import { convertPathArrayToString } from '../utility/convertPathArrayToString.js'; const styles: Record<'text' | 'colorIndicator', CSSProperties> = { text: { diff --git a/src/component/1d/Viewer1D.tsx b/src/component/1d/Viewer1D.tsx index ec0986b72..16d6d85f4 100644 --- a/src/component/1d/Viewer1D.tsx +++ b/src/component/1d/Viewer1D.tsx @@ -1,55 +1,53 @@ -import { - useCallback, - useEffect, - useReducer, - ReactNode, - useRef, - useState, -} from 'react'; +import type { ReactNode } from 'react'; +import { useCallback, useEffect, useReducer, useRef, useState } from 'react'; import { ResponsiveChart } from 'react-d3-utils'; import { useOnOff } from 'react-science/ui'; -import { createRange, isSpectrum1D } from '../../data/data1d/Spectrum1D'; -import { cutRange } from '../../data/data1d/Spectrum1D/ranges/createRange'; -import BrushXY, { BRUSH_TYPE } from '../1d-2d/tools/BrushXY'; -import CrossLinePointer from '../1d-2d/tools/CrossLinePointer'; -import { ViewerResponsiveWrapper } from '../2d/Viewer2D'; import { - BrushTracker, + createRange, + isSpectrum1D, +} from '../../data/data1d/Spectrum1D/index.js'; +import { cutRange } from '../../data/data1d/Spectrum1D/ranges/createRange.js'; +import BrushXY, { BRUSH_TYPE } from '../1d-2d/tools/BrushXY.js'; +import CrossLinePointer from '../1d-2d/tools/CrossLinePointer.js'; +import { ViewerResponsiveWrapper } from '../2d/Viewer2D.js'; +import type { BrushTrackerContext, OnBrush, OnClick, OnZoom, -} from '../EventsTrackers/BrushTracker'; -import { MouseTracker } from '../EventsTrackers/MouseTracker'; -import { useChartData } from '../context/ChartContext'; -import { useDispatch } from '../context/DispatchContext'; -import { useMapKeyModifiers } from '../context/KeyModifierContext'; -import { useLogger } from '../context/LoggerContext'; -import { usePreferences } from '../context/PreferencesContext'; -import { ScaleProvider } from '../context/ScaleContext'; -import { useActiveSpectrum } from '../hooks/useActiveSpectrum'; -import { usePanelPreferences } from '../hooks/usePanelPreferences'; -import useSpectrum from '../hooks/useSpectrum'; -import { useVerticalAlign } from '../hooks/useVerticalAlign'; -import Spinner from '../loader/Spinner'; -import MultipletAnalysisModal from '../modal/MultipletAnalysisModal'; -import { ZOOM_TYPES } from '../reducer/helper/Zoom1DManager'; -import getRange from '../reducer/helper/getRange'; +} from '../EventsTrackers/BrushTracker.js'; +import { BrushTracker } from '../EventsTrackers/BrushTracker.js'; +import { MouseTracker } from '../EventsTrackers/MouseTracker.js'; +import { useChartData } from '../context/ChartContext.js'; +import { useDispatch } from '../context/DispatchContext.js'; +import { useMapKeyModifiers } from '../context/KeyModifierContext.js'; +import { useLogger } from '../context/LoggerContext.js'; +import { usePreferences } from '../context/PreferencesContext.js'; +import { ScaleProvider } from '../context/ScaleContext.js'; +import { useActiveSpectrum } from '../hooks/useActiveSpectrum.js'; +import { usePanelPreferences } from '../hooks/usePanelPreferences.js'; +import useSpectrum from '../hooks/useSpectrum.js'; +import { useVerticalAlign } from '../hooks/useVerticalAlign.js'; +import Spinner from '../loader/Spinner.js'; +import MultipletAnalysisModal from '../modal/MultipletAnalysisModal.js'; +import { ZOOM_TYPES } from '../reducer/helper/Zoom1DManager.js'; +import getRange from '../reducer/helper/getRange.js'; import scaleReducer, { scaleInitialState, SET_SCALE, -} from '../reducer/scaleReducer'; -import { Tool, options } from '../toolbar/ToolTypes'; -import Events from '../utility/Events'; - -import Chart1D from './Chart1D'; -import FooterBanner from './FooterBanner'; -import BaseLine from './tool/BaseLine'; -import PeakPointer from './tool/PeakPointer'; -import { PivotIndicator } from './tool/PivotIndicator'; -import XLabelPointer from './tool/XLabelPointer'; -import { getXScale } from './utilities/scale'; +} from '../reducer/scaleReducer.js'; +import type { Tool } from '../toolbar/ToolTypes.js'; +import { options } from '../toolbar/ToolTypes.js'; +import Events from '../utility/Events.js'; + +import Chart1D from './Chart1D.js'; +import FooterBanner from './FooterBanner.js'; +import BaseLine from './tool/BaseLine.js'; +import PeakPointer from './tool/PeakPointer.js'; +import { PivotIndicator } from './tool/PivotIndicator.js'; +import XLabelPointer from './tool/XLabelPointer.js'; +import { getXScale } from './utilities/scale.js'; interface Viewer1DProps { emptyText?: ReactNode; diff --git a/src/component/1d/XAxis.tsx b/src/component/1d/XAxis.tsx index b5d797c75..27a442efc 100644 --- a/src/component/1d/XAxis.tsx +++ b/src/component/1d/XAxis.tsx @@ -3,8 +3,8 @@ import { css } from '@emotion/react'; import * as d3 from 'd3'; import { useEffect, useRef } from 'react'; -import { useChartData } from '../context/ChartContext'; -import { useScale } from '../context/ScaleContext'; +import { useChartData } from '../context/ChartContext.js'; +import { useScale } from '../context/ScaleContext.js'; const axisStyles = css` user-select: none; diff --git a/src/component/1d/YAxis.tsx b/src/component/1d/YAxis.tsx index f6770338a..cdf948204 100644 --- a/src/component/1d/YAxis.tsx +++ b/src/component/1d/YAxis.tsx @@ -3,8 +3,8 @@ import { css } from '@emotion/react'; import * as d3 from 'd3'; import { useEffect, useRef } from 'react'; -import { useChartData } from '../context/ChartContext'; -import { useScale } from '../context/ScaleContext'; +import { useChartData } from '../context/ChartContext.js'; +import { useScale } from '../context/ScaleContext.js'; const axisStyles = css` user-select: none; diff --git a/src/component/1d/database/DatabaseElements.tsx b/src/component/1d/database/DatabaseElements.tsx index 4e513117c..fd7df3244 100644 --- a/src/component/1d/database/DatabaseElements.tsx +++ b/src/component/1d/database/DatabaseElements.tsx @@ -1,8 +1,11 @@ -import { HighlightEventSource, useHighlightData } from '../../highlight'; -import { usePanelPreferences } from '../../hooks/usePanelPreferences'; +import { + HighlightEventSource, + useHighlightData, +} from '../../highlight/index.js'; +import { usePanelPreferences } from '../../hooks/usePanelPreferences.js'; -import DatabaseSpectrum from './DatabaseSpectrum'; -import ResurrectedDatabaseRanges from './ResurrectedDatabaseRanges'; +import DatabaseSpectrum from './DatabaseSpectrum.js'; +import ResurrectedDatabaseRanges from './ResurrectedDatabaseRanges.js'; function DatabaseElements() { const { highlight } = useHighlightData(); diff --git a/src/component/1d/database/DatabaseSpectrum.tsx b/src/component/1d/database/DatabaseSpectrum.tsx index bc74ed5aa..b98c80ae3 100644 --- a/src/component/1d/database/DatabaseSpectrum.tsx +++ b/src/component/1d/database/DatabaseSpectrum.tsx @@ -1,16 +1,20 @@ import { extent } from 'd3'; -import throttle from 'lodash/throttle'; -import { readFromWebSource, Spectrum1D } from 'nmr-load-save'; +import throttle from 'lodash/throttle.js'; +import type { Spectrum1D } from 'nmr-load-save'; +import { readFromWebSource } from 'nmr-load-save'; import { useCallback, useContext, useEffect, useRef, useState } from 'react'; -import { useChartData } from '../../context/ChartContext'; -import { useScaleChecked } from '../../context/ScaleContext'; -import { useToaster } from '../../context/ToasterContext'; -import { HighlightEventSource, useHighlightData } from '../../highlight'; -import { usePanelPreferences } from '../../hooks/usePanelPreferences'; -import { spinnerContext } from '../../loader/SpinnerContext'; -import { PathBuilder } from '../../utility/PathBuilder'; -import { getYScaleWithRation } from '../utilities/scale'; +import { useChartData } from '../../context/ChartContext.js'; +import { useScaleChecked } from '../../context/ScaleContext.js'; +import { useToaster } from '../../context/ToasterContext.js'; +import { + HighlightEventSource, + useHighlightData, +} from '../../highlight/index.js'; +import { usePanelPreferences } from '../../hooks/usePanelPreferences.js'; +import { spinnerContext } from '../../loader/SpinnerContext.js'; +import { PathBuilder } from '../../utility/PathBuilder.js'; +import { getYScaleWithRation } from '../utilities/scale.js'; function DatabaseSpectrum() { const { displayerKey, height, margin } = useChartData(); diff --git a/src/component/1d/database/ResurrectedDatabaseRanges.tsx b/src/component/1d/database/ResurrectedDatabaseRanges.tsx index dd047d347..3297bf81f 100644 --- a/src/component/1d/database/ResurrectedDatabaseRanges.tsx +++ b/src/component/1d/database/ResurrectedDatabaseRanges.tsx @@ -1,15 +1,18 @@ import { extent } from 'd3'; -import { Spectrum1D } from 'nmr-load-save'; +import type { Spectrum1D } from 'nmr-load-save'; import { rangesToXY } from 'nmr-processing'; -import { useChartData } from '../../context/ChartContext'; -import { useScaleChecked } from '../../context/ScaleContext'; -import { HighlightEventSource, useHighlightData } from '../../highlight'; -import { usePanelPreferences } from '../../hooks/usePanelPreferences'; -import useSpectrum from '../../hooks/useSpectrum'; -import { useVerticalAlign } from '../../hooks/useVerticalAlign'; -import { PathBuilder } from '../../utility/PathBuilder'; -import { getYScale } from '../utilities/scale'; +import { useChartData } from '../../context/ChartContext.js'; +import { useScaleChecked } from '../../context/ScaleContext.js'; +import { + HighlightEventSource, + useHighlightData, +} from '../../highlight/index.js'; +import { usePanelPreferences } from '../../hooks/usePanelPreferences.js'; +import useSpectrum from '../../hooks/useSpectrum.js'; +import { useVerticalAlign } from '../../hooks/useVerticalAlign.js'; +import { PathBuilder } from '../../utility/PathBuilder.js'; +import { getYScale } from '../utilities/scale.js'; const emptyData = { info: { originFrequency: 400 } }; diff --git a/src/component/1d/integral/IntegralIndicator.tsx b/src/component/1d/integral/IntegralIndicator.tsx index f3b95b843..680e51cca 100644 --- a/src/component/1d/integral/IntegralIndicator.tsx +++ b/src/component/1d/integral/IntegralIndicator.tsx @@ -1,7 +1,7 @@ -import { CSSProperties } from 'react'; +import type { CSSProperties } from 'react'; -import { useChartData } from '../../context/ChartContext'; -import { formatNumber } from '../../utility/formatNumber'; +import { useChartData } from '../../context/ChartContext.js'; +import { formatNumber } from '../../utility/formatNumber.js'; interface IntegralIndicatorProps { value: number | undefined; diff --git a/src/component/1d/integral/IntegralResizable.tsx b/src/component/1d/integral/IntegralResizable.tsx index 9935eb640..5dea708d7 100644 --- a/src/component/1d/integral/IntegralResizable.tsx +++ b/src/component/1d/integral/IntegralResizable.tsx @@ -1,15 +1,15 @@ /** @jsxImportSource @emotion/react */ import { css } from '@emotion/react'; -import { Integral } from 'nmr-processing'; +import type { Integral } from 'nmr-processing'; -import { useChartData } from '../../context/ChartContext'; -import { useDispatch } from '../../context/DispatchContext'; -import { useScaleChecked } from '../../context/ScaleContext'; -import { ResizerWithScale } from '../../elements/ResizerWithScale'; -import { HighlightEventSource, useHighlight } from '../../highlight/index'; -import { useResizerStatus } from '../../hooks/useResizerStatus'; +import { useChartData } from '../../context/ChartContext.js'; +import { useDispatch } from '../../context/DispatchContext.js'; +import { useScaleChecked } from '../../context/ScaleContext.js'; +import { ResizerWithScale } from '../../elements/ResizerWithScale.js'; +import { HighlightEventSource, useHighlight } from '../../highlight/index.js'; +import { useResizerStatus } from '../../hooks/useResizerStatus.js'; -import { IntegralIndicator } from './IntegralIndicator'; +import { IntegralIndicator } from './IntegralIndicator.js'; const stylesOnHover = css` pointer-events: bounding-box; diff --git a/src/component/1d/integral/IntegralsSeries.tsx b/src/component/1d/integral/IntegralsSeries.tsx index eea7c8714..413bde3ed 100644 --- a/src/component/1d/integral/IntegralsSeries.tsx +++ b/src/component/1d/integral/IntegralsSeries.tsx @@ -1,11 +1,11 @@ import { xyIntegral, xyMaxY } from 'ml-spectra-processing'; -import { Spectrum1D } from 'nmr-load-save'; -import { Integral as IntegralType } from 'nmr-processing'; +import type { Spectrum1D } from 'nmr-load-save'; +import type { Integral as IntegralType } from 'nmr-processing'; -import { useChartData } from '../../context/ChartContext'; -import useSpectrum from '../../hooks/useSpectrum'; +import { useChartData } from '../../context/ChartContext.js'; +import useSpectrum from '../../hooks/useSpectrum.js'; -import { Integration } from './Integration'; +import { Integration } from './Integration.js'; const emptyData = { integrals: {}, info: {}, display: {} }; diff --git a/src/component/1d/integral/Integration.tsx b/src/component/1d/integral/Integration.tsx index 9cacfcdd3..7524c555d 100644 --- a/src/component/1d/integral/Integration.tsx +++ b/src/component/1d/integral/Integration.tsx @@ -1,9 +1,9 @@ -import { useActiveSpectrumIntegralsViewState } from '../../hooks/useActiveSpectrumIntegralsViewState'; -import useIntegralPath from '../../hooks/useIntegralPath'; -import { usePanelPreferences } from '../../hooks/usePanelPreferences'; +import { useActiveSpectrumIntegralsViewState } from '../../hooks/useActiveSpectrumIntegralsViewState.js'; +import useIntegralPath from '../../hooks/useIntegralPath.js'; +import { usePanelPreferences } from '../../hooks/usePanelPreferences.js'; -import IntegralResizable from './IntegralResizable'; -import { IntegralData } from './IntegralsSeries'; +import IntegralResizable from './IntegralResizable.js'; +import type { IntegralData } from './IntegralsSeries.js'; interface IntegralProps { integral: IntegralData; diff --git a/src/component/1d/jCouplingGraph/JGraph.tsx b/src/component/1d/jCouplingGraph/JGraph.tsx index 76ecc1427..a5247d599 100644 --- a/src/component/1d/jCouplingGraph/JGraph.tsx +++ b/src/component/1d/jCouplingGraph/JGraph.tsx @@ -1,20 +1,19 @@ import { scaleLinear } from 'd3'; -import { Spectrum1D } from 'nmr-load-save'; -import { Signal1D } from 'nmr-processing'; +import type { Spectrum1D } from 'nmr-load-save'; +import type { Signal1D } from 'nmr-processing'; import { memo, useMemo } from 'react'; -import generateJGraphData, { - CouplingLink, -} from '../../../data/data1d/Spectrum1D/generateJGraphData'; -import { useChartData } from '../../context/ChartContext'; -import { useActiveSpectrumRangesViewState } from '../../hooks/useActiveSpectrumRangesViewState'; -import { usePanelPreferences } from '../../hooks/usePanelPreferences'; -import useSpectrum from '../../hooks/useSpectrum'; +import type { CouplingLink } from '../../../data/data1d/Spectrum1D/generateJGraphData.js'; +import generateJGraphData from '../../../data/data1d/Spectrum1D/generateJGraphData.js'; +import { useChartData } from '../../context/ChartContext.js'; +import { useActiveSpectrumRangesViewState } from '../../hooks/useActiveSpectrumRangesViewState.js'; +import { usePanelPreferences } from '../../hooks/usePanelPreferences.js'; +import useSpectrum from '../../hooks/useSpectrum.js'; -import { JGraphContextProvider } from './JGraphContext'; -import { JGraphVerticalAxis } from './JGraphVerticalAxis'; -import JCouplingLinks from './JsCouplingLinks'; -import JsCouplings from './JsCouplings'; +import { JGraphContextProvider } from './JGraphContext.js'; +import { JGraphVerticalAxis } from './JGraphVerticalAxis.js'; +import JCouplingLinks from './JsCouplingLinks.js'; +import JsCouplings from './JsCouplings.js'; const marginTop = 50; diff --git a/src/component/1d/jCouplingGraph/JGraphContext.tsx b/src/component/1d/jCouplingGraph/JGraphContext.tsx index 471b0ae66..966016149 100644 --- a/src/component/1d/jCouplingGraph/JGraphContext.tsx +++ b/src/component/1d/jCouplingGraph/JGraphContext.tsx @@ -1,5 +1,5 @@ -import { ScaleLinear } from 'd3'; -import { useContext, createContext } from 'react'; +import type { ScaleLinear } from 'd3'; +import { createContext, useContext } from 'react'; interface JGraphState { scaleY: ScaleLinear | null; diff --git a/src/component/1d/jCouplingGraph/JGraphVerticalAxis.tsx b/src/component/1d/jCouplingGraph/JGraphVerticalAxis.tsx index 8a895b697..beb114658 100644 --- a/src/component/1d/jCouplingGraph/JGraphVerticalAxis.tsx +++ b/src/component/1d/jCouplingGraph/JGraphVerticalAxis.tsx @@ -1,7 +1,7 @@ -import { useChartData } from '../../context/ChartContext'; -import { LinearVerticalAxis } from '../../elements/linearAxis/LinearVerticalAxis'; +import { useChartData } from '../../context/ChartContext.js'; +import { LinearVerticalAxis } from '../../elements/linearAxis/LinearVerticalAxis.js'; -import { useJGraph } from './JGraphContext'; +import { useJGraph } from './JGraphContext.js'; export function JGraphVerticalAxis() { const { width, margin } = useChartData(); diff --git a/src/component/1d/jCouplingGraph/JsCoupling.tsx b/src/component/1d/jCouplingGraph/JsCoupling.tsx index 5d6a769b0..1fab0ac2e 100644 --- a/src/component/1d/jCouplingGraph/JsCoupling.tsx +++ b/src/component/1d/jCouplingGraph/JsCoupling.tsx @@ -1,6 +1,6 @@ import { useState } from 'react'; -import { useJGraph } from './JGraphContext'; +import { useJGraph } from './JGraphContext.js'; interface JsCouplingProps { value: number; diff --git a/src/component/1d/jCouplingGraph/JsCouplingLinks.tsx b/src/component/1d/jCouplingGraph/JsCouplingLinks.tsx index d5c3639f4..25f6c5478 100644 --- a/src/component/1d/jCouplingGraph/JsCouplingLinks.tsx +++ b/src/component/1d/jCouplingGraph/JsCouplingLinks.tsx @@ -1,9 +1,9 @@ import { useCallback } from 'react'; -import { CouplingLink } from '../../../data/data1d/Spectrum1D/generateJGraphData'; -import { useScaleChecked } from '../../context/ScaleContext'; +import type { CouplingLink } from '../../../data/data1d/Spectrum1D/generateJGraphData.js'; +import { useScaleChecked } from '../../context/ScaleContext.js'; -import { useJGraph } from './JGraphContext'; +import { useJGraph } from './JGraphContext.js'; interface JsCouplingLinksProps { links: CouplingLink[]; diff --git a/src/component/1d/jCouplingGraph/JsCouplings.tsx b/src/component/1d/jCouplingGraph/JsCouplings.tsx index 1fd83c6d6..33e689606 100644 --- a/src/component/1d/jCouplingGraph/JsCouplings.tsx +++ b/src/component/1d/jCouplingGraph/JsCouplings.tsx @@ -1,9 +1,9 @@ -import { Signal1D } from 'nmr-processing'; +import type { Signal1D } from 'nmr-processing'; -import { useScaleChecked } from '../../context/ScaleContext'; +import { useScaleChecked } from '../../context/ScaleContext.js'; -import { useJGraph } from './JGraphContext'; -import JsCoupling from './JsCoupling'; +import { useJGraph } from './JGraphContext.js'; +import JsCoupling from './JsCoupling.js'; interface JsCouplingsProps { signals: Signal1D[]; diff --git a/src/component/1d/matrix/Boxplot.tsx b/src/component/1d/matrix/Boxplot.tsx index 0e90a696b..0c4f6f90b 100644 --- a/src/component/1d/matrix/Boxplot.tsx +++ b/src/component/1d/matrix/Boxplot.tsx @@ -1,16 +1,17 @@ -import { NumberArray } from 'cheminfo-types'; +import type { NumberArray } from 'cheminfo-types'; import { extent } from 'd3'; import { xFindClosestIndex } from 'ml-spectra-processing'; import { matrixToBoxPlot } from 'nmr-processing'; -import { CSSProperties, useMemo } from 'react'; +import type { CSSProperties } from 'react'; +import { useMemo } from 'react'; -import { useChartData } from '../../context/ChartContext'; -import { useScaleChecked } from '../../context/ScaleContext'; -import { usePanelPreferences } from '../../hooks/usePanelPreferences'; -import { PathBuilder } from '../../utility/PathBuilder'; -import { getYScaleWithRation } from '../utilities/scale'; +import { useChartData } from '../../context/ChartContext.js'; +import { useScaleChecked } from '../../context/ScaleContext.js'; +import { usePanelPreferences } from '../../hooks/usePanelPreferences.js'; +import { PathBuilder } from '../../utility/PathBuilder.js'; +import { getYScaleWithRation } from '../utilities/scale.js'; -import { sliceArrayForDomain, useMatrix } from './useMatrix'; +import { sliceArrayForDomain, useMatrix } from './useMatrix.js'; interface InnerBoxplotProps { scaleRatio: number; diff --git a/src/component/1d/matrix/Stocsy.tsx b/src/component/1d/matrix/Stocsy.tsx index 50f10607f..86d58d7a2 100644 --- a/src/component/1d/matrix/Stocsy.tsx +++ b/src/component/1d/matrix/Stocsy.tsx @@ -3,17 +3,17 @@ import { xFindClosestIndex } from 'ml-spectra-processing'; import { matrixToStocsy } from 'nmr-processing'; import { useMemo } from 'react'; -import { useChartData } from '../../context/ChartContext'; -import { useScaleChecked } from '../../context/ScaleContext'; -import { usePanelPreferences } from '../../hooks/usePanelPreferences'; -import { PathBuilder } from '../../utility/PathBuilder'; -import { getYScaleWithRation } from '../utilities/scale'; +import { useChartData } from '../../context/ChartContext.js'; +import { useScaleChecked } from '../../context/ScaleContext.js'; +import { usePanelPreferences } from '../../hooks/usePanelPreferences.js'; +import { PathBuilder } from '../../utility/PathBuilder.js'; +import { getYScaleWithRation } from '../utilities/scale.js'; import { - sliceArrayForDomain, groupPointsByColor, + sliceArrayForDomain, useMatrix, -} from './useMatrix'; +} from './useMatrix.js'; interface StocsyProps { x: Float64Array | number[]; diff --git a/src/component/1d/matrix/useMatrix.ts b/src/component/1d/matrix/useMatrix.ts index 413ea9ba7..a6e5bb6cf 100644 --- a/src/component/1d/matrix/useMatrix.ts +++ b/src/component/1d/matrix/useMatrix.ts @@ -1,11 +1,11 @@ -import { NumberArray } from 'cheminfo-types'; -import { Spectrum } from 'nmr-load-save'; +import type { NumberArray } from 'cheminfo-types'; +import type { Spectrum } from 'nmr-load-save'; import { Filters } from 'nmr-processing'; import { useMemo } from 'react'; -import { isSpectrum1D } from '../../../data/data1d/Spectrum1D'; -import { useChartData } from '../../context/ChartContext'; -import useSpectraByActiveNucleus from '../../hooks/useSpectraPerNucleus'; +import { isSpectrum1D } from '../../../data/data1d/Spectrum1D/index.js'; +import { useChartData } from '../../context/ChartContext.js'; +import useSpectraByActiveNucleus from '../../hooks/useSpectraPerNucleus.js'; const { signalProcessing } = Filters; diff --git a/src/component/1d/multiAnalysis/AnalysisRange.tsx b/src/component/1d/multiAnalysis/AnalysisRange.tsx index be002837c..cad8d06f1 100644 --- a/src/component/1d/multiAnalysis/AnalysisRange.tsx +++ b/src/component/1d/multiAnalysis/AnalysisRange.tsx @@ -2,11 +2,11 @@ import { css } from '@emotion/react'; import { useCallback } from 'react'; -import { usePreferences } from '../../context/PreferencesContext'; -import { useScaleChecked } from '../../context/ScaleContext'; -import { ResizerWithScale } from '../../elements/ResizerWithScale'; -import { useHighlight } from '../../highlight'; -import { useResizerStatus } from '../../hooks/useResizerStatus'; +import { usePreferences } from '../../context/PreferencesContext.js'; +import { useScaleChecked } from '../../context/ScaleContext.js'; +import { ResizerWithScale } from '../../elements/ResizerWithScale.js'; +import { useHighlight } from '../../highlight/index.js'; +import { useResizerStatus } from '../../hooks/useResizerStatus.js'; const styles = { common: css` diff --git a/src/component/1d/multiAnalysis/MultiAnalysisRanges.tsx b/src/component/1d/multiAnalysis/MultiAnalysisRanges.tsx index 4275296fe..387ae11b7 100644 --- a/src/component/1d/multiAnalysis/MultiAnalysisRanges.tsx +++ b/src/component/1d/multiAnalysis/MultiAnalysisRanges.tsx @@ -1,10 +1,11 @@ -import { AnalysisColumnsTypes, SpectraAnalysisColumns } from 'nmr-load-save'; +import type { SpectraAnalysisColumns } from 'nmr-load-save'; +import { AnalysisColumnsTypes } from 'nmr-load-save'; import { memo } from 'react'; -import { useChartData } from '../../context/ChartContext'; -import { usePanelPreferences } from '../../hooks/usePanelPreferences'; +import { useChartData } from '../../context/ChartContext.js'; +import { usePanelPreferences } from '../../hooks/usePanelPreferences.js'; -import AnalysisRange from './AnalysisRange'; +import AnalysisRange from './AnalysisRange.js'; interface MultiAnalysisRangesInnerProps { displayerKey: string; diff --git a/src/component/1d/multiplicityTree/MultiplicityTree.tsx b/src/component/1d/multiplicityTree/MultiplicityTree.tsx index 688d8d41c..e47050cb5 100644 --- a/src/component/1d/multiplicityTree/MultiplicityTree.tsx +++ b/src/component/1d/multiplicityTree/MultiplicityTree.tsx @@ -1,23 +1,24 @@ /** @jsxImportSource @emotion/react */ import { css } from '@emotion/react'; import { xFindClosestIndex } from 'ml-spectra-processing'; -import { Spectrum1D } from 'nmr-load-save'; -import { Range } from 'nmr-processing'; +import type { Spectrum1D } from 'nmr-load-save'; +import type { Range } from 'nmr-processing'; -import { isSpectrum1D } from '../../../data/data1d/Spectrum1D'; +import { isSpectrum1D } from '../../../data/data1d/Spectrum1D/index.js'; +import type { AssignmentsData } from '../../assignment/AssignmentsContext.js'; import { - AssignmentsData, useAssignment, useAssignmentData, -} from '../../assignment/AssignmentsContext'; -import { useChartData } from '../../context/ChartContext'; -import { useDispatch } from '../../context/DispatchContext'; -import { useScaleChecked } from '../../context/ScaleContext'; -import { HighlightEventSource, useHighlight } from '../../highlight'; -import useSpectrum from '../../hooks/useSpectrum'; -import { AssignmentActionsButtons } from '../ranges/AssignmentActionsButtons'; - -import { TreeNodes, generateTreeNodes } from './generateTreeNodes'; +} from '../../assignment/AssignmentsContext.js'; +import { useChartData } from '../../context/ChartContext.js'; +import { useDispatch } from '../../context/DispatchContext.js'; +import { useScaleChecked } from '../../context/ScaleContext.js'; +import { HighlightEventSource, useHighlight } from '../../highlight/index.js'; +import useSpectrum from '../../hooks/useSpectrum.js'; +import { AssignmentActionsButtons } from '../ranges/AssignmentActionsButtons.js'; + +import type { TreeNodes } from './generateTreeNodes.js'; +import { generateTreeNodes } from './generateTreeNodes.js'; const styles = { cursor: 'default', diff --git a/src/component/1d/multiplicityTree/MultiplicityTrees.tsx b/src/component/1d/multiplicityTree/MultiplicityTrees.tsx index 4ef710d93..74b75f477 100644 --- a/src/component/1d/multiplicityTree/MultiplicityTrees.tsx +++ b/src/component/1d/multiplicityTree/MultiplicityTrees.tsx @@ -1,12 +1,12 @@ -import { Spectrum1D } from 'nmr-load-save'; -import { Ranges as RangesProps } from 'nmr-processing'; +import type { Spectrum1D } from 'nmr-load-save'; +import type { Ranges as RangesProps } from 'nmr-processing'; import { memo } from 'react'; -import { useChartData } from '../../context/ChartContext'; -import { useActiveSpectrumRangesViewState } from '../../hooks/useActiveSpectrumRangesViewState'; -import useSpectrum from '../../hooks/useSpectrum'; +import { useChartData } from '../../context/ChartContext.js'; +import { useActiveSpectrumRangesViewState } from '../../hooks/useActiveSpectrumRangesViewState.js'; +import useSpectrum from '../../hooks/useSpectrum.js'; -import MultiplicityTreeNode from './MultiplicityTree'; +import MultiplicityTreeNode from './MultiplicityTree.js'; interface MultiplicityTreesInnerProps { displayerKey: string; diff --git a/src/component/1d/multiplicityTree/generateTreeNodes.ts b/src/component/1d/multiplicityTree/generateTreeNodes.ts index 68f1469e3..aaa67d2c5 100644 --- a/src/component/1d/multiplicityTree/generateTreeNodes.ts +++ b/src/component/1d/multiplicityTree/generateTreeNodes.ts @@ -1,13 +1,11 @@ -import lodashGet from 'lodash/get'; -import { Spectrum1D } from 'nmr-load-save'; -import { Jcoupling, Range } from 'nmr-processing'; +import lodashGet from 'lodash/get.js'; +import type { Spectrum1D } from 'nmr-load-save'; +import type { Jcoupling, Range } from 'nmr-processing'; import { getMultiplicityNumber, getPascal, -} from '../../panels/extra/utilities/MultiplicityUtilities'; - -// import { TREE_LEVEL_COLORS } from './TreeColors'; +} from '../../panels/extra/utilities/MultiplicityUtilities.js'; export interface TreeNode { x: number; diff --git a/src/component/1d/peaks/PeakAnnotations.tsx b/src/component/1d/peaks/PeakAnnotations.tsx index 891d48b53..8ce28002e 100644 --- a/src/component/1d/peaks/PeakAnnotations.tsx +++ b/src/component/1d/peaks/PeakAnnotations.tsx @@ -1,17 +1,12 @@ -import { useChartData } from '../../context/ChartContext'; -import { useScaleChecked } from '../../context/ScaleContext'; -import { useHighlight } from '../../highlight'; -import { useActiveSpectrum } from '../../hooks/useActiveSpectrum'; -import { formatNumber } from '../../utility/formatNumber'; +import { useChartData } from '../../context/ChartContext.js'; +import { useScaleChecked } from '../../context/ScaleContext.js'; +import { useHighlight } from '../../highlight/index.js'; +import { useActiveSpectrum } from '../../hooks/useActiveSpectrum.js'; +import { formatNumber } from '../../utility/formatNumber.js'; -import { PeakEditionListener } from './PeakEditionManager'; -import { - Peak, - PeaksAnnotationsProps, - PeaksSource, - getHighlightExtraId, - getHighlightSource, -} from './Peaks'; +import { PeakEditionListener } from './PeakEditionManager.js'; +import type { Peak, PeaksAnnotationsProps, PeaksSource } from './Peaks.js'; +import { getHighlightExtraId, getHighlightSource } from './Peaks.js'; function PeakAnnotations(props: PeaksAnnotationsProps) { const { peaks, peaksSource, spectrumId, peakFormat } = props; diff --git a/src/component/1d/peaks/PeakAnnotationsSpreadMode.tsx b/src/component/1d/peaks/PeakAnnotationsSpreadMode.tsx index fda7f1a51..76ba59e7a 100644 --- a/src/component/1d/peaks/PeakAnnotationsSpreadMode.tsx +++ b/src/component/1d/peaks/PeakAnnotationsSpreadMode.tsx @@ -1,27 +1,21 @@ import { memo, useState } from 'react'; import { BsArrowsMove } from 'react-icons/bs'; -import { useMeasure } from 'react-use'; - -import { useGlobal } from '../../context/GlobalContext'; -import { usePreferences } from '../../context/PreferencesContext'; -import { - ActionsButtonsPopover, - ActionsButtonsPopoverProps, -} from '../../elements/ActionsButtonsPopover'; -import useDraggable from '../../elements/draggable/useDraggable'; -import { useHighlight } from '../../highlight'; -import { usePeaksLabelSettings } from '../../hooks/usePeaksLabelSettings'; -import { Margin } from '../../reducer/Reducer'; -import { formatNumber } from '../../utility/formatNumber'; -import { resolve } from '../utilities/intersectionResolver'; - -import { PeakEditionListener } from './PeakEditionManager'; -import { - PeaksAnnotationsProps, - PeaksSource, - getHighlightExtraId, - getHighlightSource, -} from './Peaks'; +import useResizeObserver from 'use-resize-observer'; + +import { useGlobal } from '../../context/GlobalContext.js'; +import { usePreferences } from '../../context/PreferencesContext.js'; +import type { ActionsButtonsPopoverProps } from '../../elements/ActionsButtonsPopover.js'; +import { ActionsButtonsPopover } from '../../elements/ActionsButtonsPopover.js'; +import useDraggable from '../../elements/draggable/useDraggable.js'; +import { useHighlight } from '../../highlight/index.js'; +import { usePeaksLabelSettings } from '../../hooks/usePeaksLabelSettings.js'; +import type { Margin } from '../../reducer/Reducer.js'; +import { formatNumber } from '../../utility/formatNumber.js'; +import { resolve } from '../utilities/intersectionResolver.js'; + +import { PeakEditionListener } from './PeakEditionManager.js'; +import type { PeaksAnnotationsProps, PeaksSource } from './Peaks.js'; +import { getHighlightExtraId, getHighlightSource } from './Peaks.js'; const notationWidth = 10; const notationMargin = 2; @@ -84,7 +78,11 @@ function PeakAnnotationsSpreadMode(props: PeakAnnotationsSpreadModeProps) { margin, height, } = props; - const [ref, boxSize] = useMeasure(); + const { + ref, + height: boxSizeHeight = 0, + // @ts-expect-error Module is not published correctly. + } = useResizeObserver(); const { marginTop, isDragActive, onPointerDown } = usePeaksPosition(); const actionsButtons: ActionsButtonsPopoverProps['buttons'] = [ @@ -107,16 +105,16 @@ function PeakAnnotationsSpreadMode(props: PeakAnnotationsSpreadModeProps) { groupMargin: 10, }); - const boxHeight = Math.round(boxSize.height); + const roundedBoxHeight = Math.round(boxSizeHeight); - let y = boxHeight + marginTop; + let y = roundedBoxHeight + marginTop; - if (y + boxHeight > height - margin.bottom) { - y = height - margin.bottom - boxHeight; + if (y + roundedBoxHeight > height - margin.bottom) { + y = height - margin.bottom - roundedBoxHeight; } if (marginTop < 0) { - y = boxHeight; + y = roundedBoxHeight; } return ( 0 ? 'visible' : 'hidden' }} + style={{ visibility: boxSizeHeight > 0 ? 'visible' : 'hidden' }} > diff --git a/src/component/1d/peaks/PeakEditionManager.tsx b/src/component/1d/peaks/PeakEditionManager.tsx index 1ef586267..00d29f80d 100644 --- a/src/component/1d/peaks/PeakEditionManager.tsx +++ b/src/component/1d/peaks/PeakEditionManager.tsx @@ -1,6 +1,6 @@ import { yupResolver } from '@hookform/resolvers/yup'; +import type { ReactNode } from 'react'; import { - ReactNode, createContext, useCallback, useContext, @@ -10,11 +10,11 @@ import { import { useForm } from 'react-hook-form'; import * as Yup from 'yup'; -import { useChartData } from '../../context/ChartContext'; -import { useDispatch } from '../../context/DispatchContext'; -import { useScaleChecked } from '../../context/ScaleContext'; -import { NumberInput2Controller } from '../../elements/NumberInput2Controller'; -import { useActiveSpectrum } from '../../hooks/useActiveSpectrum'; +import { useChartData } from '../../context/ChartContext.js'; +import { useDispatch } from '../../context/DispatchContext.js'; +import { useScaleChecked } from '../../context/ScaleContext.js'; +import { NumberInput2Controller } from '../../elements/NumberInput2Controller.js'; +import { useActiveSpectrum } from '../../hooks/useActiveSpectrum.js'; 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 34acb3acd..1c866b6fd 100644 --- a/src/component/1d/peaks/Peaks.tsx +++ b/src/component/1d/peaks/Peaks.tsx @@ -1,17 +1,17 @@ -import { Spectrum1D } from 'nmr-load-save'; -import { NMRPeak1D, Peak1D, Range } from 'nmr-processing'; +import type { Spectrum1D } from 'nmr-load-save'; +import type { 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 { Margin } from '../../reducer/Reducer'; -import { useScaleX } from '../utilities/scale'; +import { useChartData } from '../../context/ChartContext.js'; +import { useActiveSpectrumPeaksViewState } from '../../hooks/useActiveSpectrumPeaksViewState.js'; +import { useActiveSpectrumRangesViewState } from '../../hooks/useActiveSpectrumRangesViewState.js'; +import { usePanelPreferences } from '../../hooks/usePanelPreferences.js'; +import useSpectrum from '../../hooks/useSpectrum.js'; +import type { Margin } from '../../reducer/Reducer.js'; +import { useScaleX } from '../utilities/scale.js'; -import PeakAnnotations from './PeakAnnotations'; -import PeakAnnotationsSpreadMode from './PeakAnnotationsSpreadMode'; +import PeakAnnotations from './PeakAnnotations.js'; +import PeakAnnotationsSpreadMode from './PeakAnnotationsSpreadMode.js'; interface Peak1DWithParentKeys extends Peak1D { parentKeys?: string[]; diff --git a/src/component/1d/peaks/PeaksShapes.tsx b/src/component/1d/peaks/PeaksShapes.tsx index a401878a2..2aa9a8c27 100644 --- a/src/component/1d/peaks/PeaksShapes.tsx +++ b/src/component/1d/peaks/PeaksShapes.tsx @@ -1,12 +1,12 @@ -import { Spectrum1D } from 'nmr-load-save'; +import type { Spectrum1D } from 'nmr-load-save'; -import { useChartData } from '../../context/ChartContext'; -import { useScale } from '../../context/ScaleContext'; -import { useActiveSpectrum } from '../../hooks/useActiveSpectrum'; -import { useActiveSpectrumPeaksViewState } from '../../hooks/useActiveSpectrumPeaksViewState'; -import useSpectrum from '../../hooks/useSpectrum'; +import { useChartData } from '../../context/ChartContext.js'; +import { useScale } from '../../context/ScaleContext.js'; +import { useActiveSpectrum } from '../../hooks/useActiveSpectrum.js'; +import { useActiveSpectrumPeaksViewState } from '../../hooks/useActiveSpectrumPeaksViewState.js'; +import useSpectrum from '../../hooks/useSpectrum.js'; -import { usePeakShapesPath } from './usePeakShapesPath'; +import { usePeakShapesPath } from './usePeakShapesPath.js'; const emptyData = { peaks: {}, display: {} }; diff --git a/src/component/1d/peaks/usePeakShapesPath.ts b/src/component/1d/peaks/usePeakShapesPath.ts index 70ffc62dd..b996bd96f 100644 --- a/src/component/1d/peaks/usePeakShapesPath.ts +++ b/src/component/1d/peaks/usePeakShapesPath.ts @@ -1,10 +1,11 @@ -import { DataXY } from 'cheminfo-types'; -import { Spectrum1D } from 'nmr-load-save'; -import { Peak1D, peakToXY, peaksToXY } from 'nmr-processing'; +import type { DataXY } from 'cheminfo-types'; +import type { Spectrum1D } from 'nmr-load-save'; +import type { Peak1D } from 'nmr-processing'; +import { peaksToXY, peakToXY } from 'nmr-processing'; -import { useChartData } from '../../context/ChartContext'; -import { useScaleChecked } from '../../context/ScaleContext'; -import { PathBuilder } from '../../utility/PathBuilder'; +import { useChartData } from '../../context/ChartContext.js'; +import { useScaleChecked } from '../../context/ScaleContext.js'; +import { PathBuilder } from '../../utility/PathBuilder.js'; type PeaksShapesOptions = | { diff --git a/src/component/1d/ranges/AssignmentActionsButtons.tsx b/src/component/1d/ranges/AssignmentActionsButtons.tsx index 9d2d4b5f2..b0d529c3d 100644 --- a/src/component/1d/ranges/AssignmentActionsButtons.tsx +++ b/src/component/1d/ranges/AssignmentActionsButtons.tsx @@ -1,7 +1,8 @@ -import { CSSProperties } from 'react'; +import type { CSSProperties } from 'react'; import { LuLink, LuUnlink } from 'react-icons/lu'; -import Button, { ButtonProps } from '../../elements/Button'; +import type { ButtonProps } from '../../elements/Button.js'; +import Button from '../../elements/Button.js'; const styles: Record<'button' | 'icon', CSSProperties> = { button: { width: '16px', height: '16px', padding: 0 }, diff --git a/src/component/1d/ranges/AssignmentLabel.tsx b/src/component/1d/ranges/AssignmentLabel.tsx index 87f9f4bd0..a15b99cba 100644 --- a/src/component/1d/ranges/AssignmentLabel.tsx +++ b/src/component/1d/ranges/AssignmentLabel.tsx @@ -1,11 +1,11 @@ -import { Range } from 'nmr-processing'; +import type { Range } from 'nmr-processing'; import { useRef } from 'react'; -import { FieldEdition } from '../../1d-2d/FieldEdition'; -import { useChartData } from '../../context/ChartContext'; -import { useDispatch } from '../../context/DispatchContext'; -import { useActiveSpectrumRangesViewState } from '../../hooks/useActiveSpectrumRangesViewState'; -import { useTriggerNewAssignmentLabel } from '../../hooks/useTriggerNewAssignmentLabel'; +import { FieldEdition } from '../../1d-2d/FieldEdition.js'; +import { useChartData } from '../../context/ChartContext.js'; +import { useDispatch } from '../../context/DispatchContext.js'; +import { useActiveSpectrumRangesViewState } from '../../hooks/useActiveSpectrumRangesViewState.js'; +import { useTriggerNewAssignmentLabel } from '../../hooks/useTriggerNewAssignmentLabel.js'; const marginTop = 15; diff --git a/src/component/1d/ranges/Atoms.tsx b/src/component/1d/ranges/Atoms.tsx index 44ca61455..aa7e60786 100644 --- a/src/component/1d/ranges/Atoms.tsx +++ b/src/component/1d/ranges/Atoms.tsx @@ -1,9 +1,9 @@ -import { Range } from 'nmr-processing'; +import type { Range } from 'nmr-processing'; -import { useChartData } from '../../context/ChartContext'; -import { useTopicMolecule } from '../../context/TopicMoleculeContext'; -import { SVGGroup } from '../../elements/SVGGroup'; -import { SVGText } from '../../elements/SVGText'; +import { useChartData } from '../../context/ChartContext.js'; +import { useTopicMolecule } from '../../context/TopicMoleculeContext.js'; +import { SVGGroup } from '../../elements/SVGGroup.js'; +import { SVGText } from '../../elements/SVGText.js'; const fontSize = 12; const marginTop = 45; diff --git a/src/component/1d/ranges/Range.tsx b/src/component/1d/ranges/Range.tsx index d452c4bdf..1a4b697bf 100644 --- a/src/component/1d/ranges/Range.tsx +++ b/src/component/1d/ranges/Range.tsx @@ -1,37 +1,38 @@ /** @jsxImportSource @emotion/react */ import { css } from '@emotion/react'; -import { Range as RangeType } from 'nmr-processing'; -import { LuUnlink, LuLink } from 'react-icons/lu'; +import type { Range as RangeType } from 'nmr-processing'; +import { LuLink, LuUnlink } from 'react-icons/lu'; import { PiTextTBold, PiTextTSlashBold } from 'react-icons/pi'; -import { isSpectrum1D, resizeRange } from '../../../data/data1d/Spectrum1D'; -import { isRangeAssigned } from '../../../data/data1d/Spectrum1D/isRangeAssigned'; -import { checkRangeKind } from '../../../data/utilities/RangeUtilities'; +import { + isSpectrum1D, + resizeRange, +} from '../../../data/data1d/Spectrum1D/index.js'; +import { isRangeAssigned } from '../../../data/data1d/Spectrum1D/isRangeAssigned.js'; +import { checkRangeKind } from '../../../data/utilities/RangeUtilities.js'; import { useAssignment, useAssignmentData, -} from '../../assignment/AssignmentsContext'; -import { filterForIDsWithAssignment } from '../../assignment/utilities/filterForIDsWithAssignment'; -import { useDispatch } from '../../context/DispatchContext'; -import { useLogger } from '../../context/LoggerContext'; -import { useShareData } from '../../context/ShareDataContext'; -import { - ActionsButtonsPopover, - ActionsButtonsPopoverProps, -} from '../../elements/ActionsButtonsPopover'; -import { useDialogData } from '../../elements/DialogManager'; -import { ResizerWithScale } from '../../elements/ResizerWithScale'; -import { HighlightEventSource, useHighlight } from '../../highlight'; -import { useActiveSpectrumRangesViewState } from '../../hooks/useActiveSpectrumRangesViewState'; -import { useHighlightColor } from '../../hooks/useHighlightColor'; -import { useResizerStatus } from '../../hooks/useResizerStatus'; -import useSpectrum from '../../hooks/useSpectrum'; -import { EditRangeModal } from '../../modal/editRange/EditRangeModal'; -import { IntegralIndicator } from '../integral/IntegralIndicator'; -import { useScaleX } from '../utilities/scale'; - -import { AssignmentLabel } from './AssignmentLabel'; -import { Atoms } from './Atoms'; +} from '../../assignment/AssignmentsContext.js'; +import { filterForIDsWithAssignment } from '../../assignment/utilities/filterForIDsWithAssignment.js'; +import { useDispatch } from '../../context/DispatchContext.js'; +import { useLogger } from '../../context/LoggerContext.js'; +import { useShareData } from '../../context/ShareDataContext.js'; +import type { ActionsButtonsPopoverProps } from '../../elements/ActionsButtonsPopover.js'; +import { ActionsButtonsPopover } from '../../elements/ActionsButtonsPopover.js'; +import { useDialogData } from '../../elements/DialogManager.js'; +import { ResizerWithScale } from '../../elements/ResizerWithScale.js'; +import { HighlightEventSource, useHighlight } from '../../highlight/index.js'; +import { useActiveSpectrumRangesViewState } from '../../hooks/useActiveSpectrumRangesViewState.js'; +import { useHighlightColor } from '../../hooks/useHighlightColor.js'; +import { useResizerStatus } from '../../hooks/useResizerStatus.js'; +import useSpectrum from '../../hooks/useSpectrum.js'; +import { EditRangeModal } from '../../modal/editRange/EditRangeModal.js'; +import { IntegralIndicator } from '../integral/IntegralIndicator.js'; +import { useScaleX } from '../utilities/scale.js'; + +import { AssignmentLabel } from './AssignmentLabel.js'; +import { Atoms } from './Atoms.js'; const style = css` .target { diff --git a/src/component/1d/ranges/Ranges.tsx b/src/component/1d/ranges/Ranges.tsx index b42e97765..7af7e2e55 100644 --- a/src/component/1d/ranges/Ranges.tsx +++ b/src/component/1d/ranges/Ranges.tsx @@ -1,14 +1,14 @@ -import { Spectrum1D } from 'nmr-load-save'; -import { Ranges as RangesProps } from 'nmr-processing'; +import type { Spectrum1D } from 'nmr-load-save'; +import type { Ranges as RangesProps } from 'nmr-processing'; import { memo } from 'react'; -import { useChartData } from '../../context/ChartContext'; -import { ShareDataProvider } from '../../context/ShareDataContext'; -import { useActiveSpectrumRangesViewState } from '../../hooks/useActiveSpectrumRangesViewState'; -import { usePanelPreferences } from '../../hooks/usePanelPreferences'; -import useSpectrum from '../../hooks/useSpectrum'; +import { useChartData } from '../../context/ChartContext.js'; +import { ShareDataProvider } from '../../context/ShareDataContext.js'; +import { useActiveSpectrumRangesViewState } from '../../hooks/useActiveSpectrumRangesViewState.js'; +import { usePanelPreferences } from '../../hooks/usePanelPreferences.js'; +import useSpectrum from '../../hooks/useSpectrum.js'; -import Range from './Range'; +import Range from './Range.js'; interface RangesInnerProps { displayerKey: string; diff --git a/src/component/1d/ranges/RangesIntegrals.tsx b/src/component/1d/ranges/RangesIntegrals.tsx index f21b63c7e..d9a41df99 100644 --- a/src/component/1d/ranges/RangesIntegrals.tsx +++ b/src/component/1d/ranges/RangesIntegrals.tsx @@ -1,10 +1,10 @@ import { xyIntegral, xyMaxY } from 'ml-spectra-processing'; -import { Spectrum1D } from 'nmr-load-save'; +import type { 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'; +import { useChartData } from '../../context/ChartContext.js'; +import { useActiveSpectrumRangesViewState } from '../../hooks/useActiveSpectrumRangesViewState.js'; +import useIntegralPath from '../../hooks/useIntegralPath.js'; +import useSpectrum from '../../hooks/useSpectrum.js'; interface IntegralData { x: Float64Array; diff --git a/src/component/1d/tool/BaseLine.tsx b/src/component/1d/tool/BaseLine.tsx index e44173a8d..939ddc885 100644 --- a/src/component/1d/tool/BaseLine.tsx +++ b/src/component/1d/tool/BaseLine.tsx @@ -1,8 +1,8 @@ -import { CSSProperties } from 'react'; +import type { CSSProperties } from 'react'; -import { useChartData } from '../../context/ChartContext'; -import { useScaleChecked } from '../../context/ScaleContext'; -import { options } from '../../toolbar/ToolTypes'; +import { useChartData } from '../../context/ChartContext.js'; +import { useScaleChecked } from '../../context/ScaleContext.js'; +import { options } from '../../toolbar/ToolTypes.js'; const styles: CSSProperties = { transformOrigin: 'top left', diff --git a/src/component/1d/tool/BaseLineZones.tsx b/src/component/1d/tool/BaseLineZones.tsx index 3ba4df061..50b5518a6 100644 --- a/src/component/1d/tool/BaseLineZones.tsx +++ b/src/component/1d/tool/BaseLineZones.tsx @@ -1,11 +1,11 @@ -import { BaselineCorrectionZone } from 'nmr-processing'; +import type { BaselineCorrectionZone } from 'nmr-processing'; -import { useChartData } from '../../context/ChartContext'; -import { useDispatch } from '../../context/DispatchContext'; -import { useScaleChecked } from '../../context/ScaleContext'; -import { ResizerWithScale } from '../../elements/ResizerWithScale'; -import { useHighlight } from '../../highlight'; -import { useResizerStatus } from '../../hooks/useResizerStatus'; +import { useChartData } from '../../context/ChartContext.js'; +import { useDispatch } from '../../context/DispatchContext.js'; +import { useScaleChecked } from '../../context/ScaleContext.js'; +import { ResizerWithScale } from '../../elements/ResizerWithScale.js'; +import { useHighlight } from '../../highlight/index.js'; +import { useResizerStatus } from '../../hooks/useResizerStatus.js'; function BaseLineZones() { const { diff --git a/src/component/1d/tool/PeakPointer.tsx b/src/component/1d/tool/PeakPointer.tsx index d2c1966a5..34a33da85 100644 --- a/src/component/1d/tool/PeakPointer.tsx +++ b/src/component/1d/tool/PeakPointer.tsx @@ -1,13 +1,13 @@ -import { Spectrum1D } from 'nmr-load-save'; +import type { Spectrum1D } from 'nmr-load-save'; -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 useSpectraByActiveNucleus from '../../hooks/useSpectraPerNucleus'; -import { options } from '../../toolbar/ToolTypes'; -import { getClosePeak } from '../../utility/getClosePeak'; +import { useBrushTracker } from '../../EventsTrackers/BrushTracker.js'; +import { useMouseTracker } from '../../EventsTrackers/MouseTracker.js'; +import { useChartData } from '../../context/ChartContext.js'; +import { useScaleChecked } from '../../context/ScaleContext.js'; +import { useActiveSpectrum } from '../../hooks/useActiveSpectrum.js'; +import useSpectraByActiveNucleus from '../../hooks/useSpectraPerNucleus.js'; +import { options } from '../../toolbar/ToolTypes.js'; +import { getClosePeak } from '../../utility/getClosePeak.js'; const styles = { radius: 10, diff --git a/src/component/1d/tool/PivotIndicator.tsx b/src/component/1d/tool/PivotIndicator.tsx index 13f8a4f41..98d2abd10 100644 --- a/src/component/1d/tool/PivotIndicator.tsx +++ b/src/component/1d/tool/PivotIndicator.tsx @@ -1,8 +1,8 @@ -import { CSSProperties } from 'react'; +import type { CSSProperties } from 'react'; -import { useChartData } from '../../context/ChartContext'; -import { useScaleChecked } from '../../context/ScaleContext'; -import { options } from '../../toolbar/ToolTypes'; +import { useChartData } from '../../context/ChartContext.js'; +import { useScaleChecked } from '../../context/ScaleContext.js'; +import { options } from '../../toolbar/ToolTypes.js'; const styles: CSSProperties = { transformOrigin: 'top left', diff --git a/src/component/1d/tool/XLabelPointer.tsx b/src/component/1d/tool/XLabelPointer.tsx index c9027f5bc..e48534949 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 { CSSProperties } from 'react'; - -import { useBrushTracker } from '../../EventsTrackers/BrushTracker'; -import { useMouseTracker } from '../../EventsTrackers/MouseTracker'; -import { useChartData } from '../../context/ChartContext'; -import { useScaleChecked } from '../../context/ScaleContext'; -import { useFormatNumberByNucleus } from '../../hooks/useFormatNumberByNucleus'; -import useSpectrum from '../../hooks/useSpectrum'; +import type { Spectrum1D } from 'nmr-load-save'; +import type { CSSProperties } from 'react'; + +import { useBrushTracker } from '../../EventsTrackers/BrushTracker.js'; +import { useMouseTracker } from '../../EventsTrackers/MouseTracker.js'; +import { useChartData } from '../../context/ChartContext.js'; +import { useScaleChecked } from '../../context/ScaleContext.js'; +import { useFormatNumberByNucleus } from '../../hooks/useFormatNumberByNucleus.js'; +import useSpectrum from '../../hooks/useSpectrum.js'; const style: CSSProperties = { cursor: 'crosshair', diff --git a/src/component/1d/utilities/scale.ts b/src/component/1d/utilities/scale.ts index 3d39cb3b2..e49e2d3c5 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 { +import { useChartData } from '../../context/ChartContext.js'; +import { useVerticalAlign } from '../../hooks/useVerticalAlign.js'; +import type { Domains, Margin, SpectraDirection, VerticalAlignment, -} from '../../reducer/Reducer'; +} from '../../reducer/Reducer.js'; interface ScaleXOptions { width: number; diff --git a/src/component/2d/1d-tracer/HorizontalSliceChart.tsx b/src/component/2d/1d-tracer/HorizontalSliceChart.tsx index a1b9c28a6..88c54fb65 100644 --- a/src/component/2d/1d-tracer/HorizontalSliceChart.tsx +++ b/src/component/2d/1d-tracer/HorizontalSliceChart.tsx @@ -1,10 +1,10 @@ -import { NmrData1D } from 'cheminfo-types'; -import { Spectrum2D } from 'nmr-load-save'; +import type { NmrData1D } from 'cheminfo-types'; +import type { Spectrum2D } from 'nmr-load-save'; -import { useChartData } from '../../context/ChartContext'; -import useSpectrum from '../../hooks/useSpectrum'; -import { PathBuilder } from '../../utility/PathBuilder'; -import { useScale2DX, getSliceYScale } from '../utilities/scale'; +import { useChartData } from '../../context/ChartContext.js'; +import useSpectrum from '../../hooks/useSpectrum.js'; +import { PathBuilder } from '../../utility/PathBuilder.js'; +import { getSliceYScale, useScale2DX } from '../utilities/scale.js'; interface BaseProps { verticalMargin?: number; diff --git a/src/component/2d/1d-tracer/Left1DChart.tsx b/src/component/2d/1d-tracer/Left1DChart.tsx index 81b958d15..692a59860 100644 --- a/src/component/2d/1d-tracer/Left1DChart.tsx +++ b/src/component/2d/1d-tracer/Left1DChart.tsx @@ -1,10 +1,10 @@ -import { Spectrum1D } from 'nmr-load-save'; +import type { Spectrum1D } from 'nmr-load-save'; import { memo } from 'react'; -import { useChartData } from '../../context/ChartContext'; -import useXYReduce, { XYReducerDomainAxis } from '../../hooks/useXYReduce'; -import { PathBuilder } from '../../utility/PathBuilder'; -import { use1DTraceYScale, useScale2DY } from '../utilities/scale'; +import { useChartData } from '../../context/ChartContext.js'; +import useXYReduce, { XYReducerDomainAxis } from '../../hooks/useXYReduce.js'; +import { PathBuilder } from '../../utility/PathBuilder.js'; +import { use1DTraceYScale, useScale2DY } from '../utilities/scale.js'; interface Left1DChartProps { horizontalMargin?: number; diff --git a/src/component/2d/1d-tracer/Top1DChart.tsx b/src/component/2d/1d-tracer/Top1DChart.tsx index 246ced63a..6462ca1ec 100644 --- a/src/component/2d/1d-tracer/Top1DChart.tsx +++ b/src/component/2d/1d-tracer/Top1DChart.tsx @@ -1,10 +1,10 @@ -import { Spectrum1D } from 'nmr-load-save'; +import type { Spectrum1D } from 'nmr-load-save'; import { memo } from 'react'; -import { useChartData } from '../../context/ChartContext'; -import useXYReduce, { XYReducerDomainAxis } from '../../hooks/useXYReduce'; -import { PathBuilder } from '../../utility/PathBuilder'; -import { use1DTraceYScale, useScale2DX } from '../utilities/scale'; +import { useChartData } from '../../context/ChartContext.js'; +import useXYReduce, { XYReducerDomainAxis } from '../../hooks/useXYReduce.js'; +import { PathBuilder } from '../../utility/PathBuilder.js'; +import { use1DTraceYScale, useScale2DX } from '../utilities/scale.js'; interface Top1DChartProps { verticalMargin?: number; diff --git a/src/component/2d/1d-tracer/VerticalSliceChart.tsx b/src/component/2d/1d-tracer/VerticalSliceChart.tsx index 6f6833b06..3df454206 100644 --- a/src/component/2d/1d-tracer/VerticalSliceChart.tsx +++ b/src/component/2d/1d-tracer/VerticalSliceChart.tsx @@ -1,10 +1,10 @@ -import { NmrData1D } from 'cheminfo-types'; -import { Spectrum2D } from 'nmr-load-save'; +import type { NmrData1D } from 'cheminfo-types'; +import type { Spectrum2D } from 'nmr-load-save'; -import { useChartData } from '../../context/ChartContext'; -import useSpectrum from '../../hooks/useSpectrum'; -import { PathBuilder } from '../../utility/PathBuilder'; -import { getSliceYScale, useScale2DY } from '../utilities/scale'; +import { useChartData } from '../../context/ChartContext.js'; +import useSpectrum from '../../hooks/useSpectrum.js'; +import { PathBuilder } from '../../utility/PathBuilder.js'; +import { getSliceYScale, useScale2DY } from '../utilities/scale.js'; interface BaseProps { reverse?: boolean; diff --git a/src/component/2d/1d-tracer/phase-correction-traces/PhaseTraceWithMouse.tsx b/src/component/2d/1d-tracer/phase-correction-traces/PhaseTraceWithMouse.tsx index 064a7f69a..2aa4800eb 100644 --- a/src/component/2d/1d-tracer/phase-correction-traces/PhaseTraceWithMouse.tsx +++ b/src/component/2d/1d-tracer/phase-correction-traces/PhaseTraceWithMouse.tsx @@ -1,6 +1,6 @@ -import { useMouseTracker } from '../../../EventsTrackers/MouseTracker'; +import { useMouseTracker } from '../../../EventsTrackers/MouseTracker.js'; -import { SpectrumPhaseTrace } from './SpectrumPhaseTrace'; +import { SpectrumPhaseTrace } from './SpectrumPhaseTrace.js'; export function PhaseTraceWithMouse() { const position = useMouseTracker(); diff --git a/src/component/2d/1d-tracer/phase-correction-traces/PhaseTraces.tsx b/src/component/2d/1d-tracer/phase-correction-traces/PhaseTraces.tsx index af195ce01..356894fd8 100644 --- a/src/component/2d/1d-tracer/phase-correction-traces/PhaseTraces.tsx +++ b/src/component/2d/1d-tracer/phase-correction-traces/PhaseTraces.tsx @@ -1,8 +1,8 @@ -import { useChartData } from '../../../context/ChartContext'; -import { useActiveSpectrum } from '../../../hooks/useActiveSpectrum'; +import { useChartData } from '../../../context/ChartContext.js'; +import { useActiveSpectrum } from '../../../hooks/useActiveSpectrum.js'; -import { PhaseTraceWithMouse } from './PhaseTraceWithMouse'; -import { SpectraPhaseTraces } from './SpectraPhaseTraces'; +import { PhaseTraceWithMouse } from './PhaseTraceWithMouse.js'; +import { SpectraPhaseTraces } from './SpectraPhaseTraces.js'; export function PhaseTraces() { const { width, height, margin, displayerKey } = useChartData(); diff --git a/src/component/2d/1d-tracer/phase-correction-traces/SpectraPhaseTraces.tsx b/src/component/2d/1d-tracer/phase-correction-traces/SpectraPhaseTraces.tsx index 618489c5d..f6ddff077 100644 --- a/src/component/2d/1d-tracer/phase-correction-traces/SpectraPhaseTraces.tsx +++ b/src/component/2d/1d-tracer/phase-correction-traces/SpectraPhaseTraces.tsx @@ -1,12 +1,18 @@ /** @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 { useChartData } from '../../../context/ChartContext.js'; +import { + HighlightEventSource, + useHighlight, +} from '../../../highlight/index.js'; +import type { + SpectrumTrace, + TraceDirection, +} from '../../../reducer/Reducer.js'; -import { SpectrumPhaseTrace } from './SpectrumPhaseTrace'; -import { useActivePhaseTraces } from './useActivePhaseTraces'; +import { SpectrumPhaseTrace } from './SpectrumPhaseTrace.js'; +import { useActivePhaseTraces } from './useActivePhaseTraces.js'; const BOX_SIZE = 20; diff --git a/src/component/2d/1d-tracer/phase-correction-traces/SpectrumPhaseTrace.tsx b/src/component/2d/1d-tracer/phase-correction-traces/SpectrumPhaseTrace.tsx index 64bb79f6e..c4cfb9435 100644 --- a/src/component/2d/1d-tracer/phase-correction-traces/SpectrumPhaseTrace.tsx +++ b/src/component/2d/1d-tracer/phase-correction-traces/SpectrumPhaseTrace.tsx @@ -1,22 +1,22 @@ -import { Spectrum1D, Spectrum2D } from 'nmr-load-save'; +import type { Spectrum1D, Spectrum2D } from 'nmr-load-save'; import { Filters } from 'nmr-processing'; -import { ReactNode } from 'react'; - -import { getSlice } from '../../../../data/data2d/Spectrum2D'; -import { useChartData } from '../../../context/ChartContext'; -import { useActiveSpectrum } from '../../../hooks/useActiveSpectrum'; -import useSpectrum from '../../../hooks/useSpectrum'; -import { TraceDirection } from '../../../reducer/Reducer'; -import { PathBuilder } from '../../../utility/PathBuilder'; +import type { ReactNode } from 'react'; + +import { getSlice } from '../../../../data/data2d/Spectrum2D/index.js'; +import { useChartData } from '../../../context/ChartContext.js'; +import { useActiveSpectrum } from '../../../hooks/useActiveSpectrum.js'; +import useSpectrum from '../../../hooks/useSpectrum.js'; +import type { TraceDirection } from '../../../reducer/Reducer.js'; +import { PathBuilder } from '../../../utility/PathBuilder.js'; import { get2DXScale, get2DYScale, getSliceYScale, useScale2DX, useScale2DY, -} from '../../utilities/scale'; +} from '../../utilities/scale.js'; -import { useActivePhaseTraces } from './useActivePhaseTraces'; +import { useActivePhaseTraces } from './useActivePhaseTraces.js'; interface BaseComponentProps extends React.SVGAttributes { children?: ReactNode; diff --git a/src/component/2d/1d-tracer/phase-correction-traces/index.ts b/src/component/2d/1d-tracer/phase-correction-traces/index.ts index b0e25c9df..cb65cf060 100644 --- a/src/component/2d/1d-tracer/phase-correction-traces/index.ts +++ b/src/component/2d/1d-tracer/phase-correction-traces/index.ts @@ -1 +1 @@ -export { PhaseTraces } from './PhaseTraces'; +export { PhaseTraces } from './PhaseTraces.js'; diff --git a/src/component/2d/1d-tracer/phase-correction-traces/useActivePhaseTraces.ts b/src/component/2d/1d-tracer/phase-correction-traces/useActivePhaseTraces.ts index 373c30b83..9d5ccd685 100644 --- a/src/component/2d/1d-tracer/phase-correction-traces/useActivePhaseTraces.ts +++ b/src/component/2d/1d-tracer/phase-correction-traces/useActivePhaseTraces.ts @@ -1,5 +1,5 @@ -import { COLORS } from '../../../../data/utilities/generateColor'; -import { useChartData } from '../../../context/ChartContext'; +import { COLORS } from '../../../../data/utilities/generateColor.js'; +import { useChartData } from '../../../context/ChartContext.js'; export function useActivePhaseTraces() { const { diff --git a/src/component/2d/Chart2D.tsx b/src/component/2d/Chart2D.tsx index 3534adafb..5be194748 100644 --- a/src/component/2d/Chart2D.tsx +++ b/src/component/2d/Chart2D.tsx @@ -1,19 +1,19 @@ -import { Spectrum1D, SpectraRendering } from 'nmr-load-save'; +import type { SpectraRendering, Spectrum1D } from 'nmr-load-save'; import { memo } from 'react'; -import SpectrumInfoBlock from '../1d-2d/components/SpectrumInfoBlock'; -import { useChartData } from '../context/ChartContext'; -import { usePreferences } from '../context/PreferencesContext'; -import { ShareDataProvider } from '../context/ShareDataContext'; -import { Margin } from '../reducer/Reducer'; +import SpectrumInfoBlock from '../1d-2d/components/SpectrumInfoBlock.js'; +import { useChartData } from '../context/ChartContext.js'; +import { usePreferences } from '../context/PreferencesContext.js'; +import { ShareDataProvider } from '../context/ShareDataContext.js'; +import type { Margin } from '../reducer/Reducer.js'; -import XAxis from './XAxis'; -import YAxis from './YAxis'; -import { FidContainer } from './fid/FidContainer'; -import { FTContainer } from './ft/FTContainer'; -import IndicationLines from './zones/IndicationLines'; -import Zones from './zones/Zones'; -import ZonesAssignmentsLabels from './zones/ZonesAssignmentsLabels'; +import XAxis from './XAxis.js'; +import YAxis from './YAxis.js'; +import { FidContainer } from './fid/FidContainer.js'; +import { FTContainer } from './ft/FTContainer.js'; +import IndicationLines from './zones/IndicationLines.js'; +import Zones from './zones/Zones.js'; +import ZonesAssignmentsLabels from './zones/ZonesAssignmentsLabels.js'; interface Chart2DProps { spectra?: Spectrum1D[]; diff --git a/src/component/2d/FooterBanner.tsx b/src/component/2d/FooterBanner.tsx index 02acc2d9d..274622941 100644 --- a/src/component/2d/FooterBanner.tsx +++ b/src/component/2d/FooterBanner.tsx @@ -1,20 +1,20 @@ /** @jsxImportSource @emotion/react */ import { css } from '@emotion/react'; -import { NmrData2DFid, NmrData2DFt } from 'cheminfo-types'; +import type { NmrData2DFid, NmrData2DFt } from 'cheminfo-types'; import { xFindClosestIndex } from 'ml-spectra-processing'; -import { useMemo, Fragment } from 'react'; +import { Fragment, useMemo } from 'react'; import { MF } from 'react-mf'; -import { get1DDataXY } from '../../data/data1d/Spectrum1D/get1DDataXY'; -import { useBrushTracker } from '../EventsTrackers/BrushTracker'; -import { useMouseTracker } from '../EventsTrackers/MouseTracker'; -import { useChartData } from '../context/ChartContext'; -import { useActiveSpectrum } from '../hooks/useActiveSpectrum'; -import { useFormatNumberByNucleus } from '../hooks/useFormatNumberByNucleus'; -import { options } from '../toolbar/ToolTypes'; +import { get1DDataXY } from '../../data/data1d/Spectrum1D/get1DDataXY.js'; +import { useBrushTracker } from '../EventsTrackers/BrushTracker.js'; +import { useMouseTracker } from '../EventsTrackers/MouseTracker.js'; +import { useChartData } from '../context/ChartContext.js'; +import { useActiveSpectrum } from '../hooks/useActiveSpectrum.js'; +import { useFormatNumberByNucleus } from '../hooks/useFormatNumberByNucleus.js'; +import { options } from '../toolbar/ToolTypes.js'; -import { getLayoutID, LAYOUT } from './utilities/DimensionLayout'; -import { get2DXScale, get1DYScale, get2DYScale } from './utilities/scale'; +import { getLayoutID, LAYOUT } from './utilities/DimensionLayout.js'; +import { get1DYScale, get2DXScale, get2DYScale } from './utilities/scale.js'; const styles = css` display: flex; diff --git a/src/component/2d/SignalDeltaLine.tsx b/src/component/2d/SignalDeltaLine.tsx index d4cc7712c..dbd90b7f9 100644 --- a/src/component/2d/SignalDeltaLine.tsx +++ b/src/component/2d/SignalDeltaLine.tsx @@ -1,9 +1,9 @@ /** @jsxImportSource @emotion/react */ import { css } from '@emotion/react'; -import { useChartData } from '../context/ChartContext'; +import { useChartData } from '../context/ChartContext.js'; -import { useScale2DX, useScale2DY } from './utilities/scale'; +import { useScale2DX, useScale2DY } from './utilities/scale.js'; const lineStyle = css` stroke: green; diff --git a/src/component/2d/SlicingView.tsx b/src/component/2d/SlicingView.tsx index 4e9bd4985..8b837c403 100644 --- a/src/component/2d/SlicingView.tsx +++ b/src/component/2d/SlicingView.tsx @@ -1,13 +1,13 @@ -import { Spectrum2D } from 'nmr-load-save'; +import type { 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 { getSlice } from '../../data/data2d/Spectrum2D/index.js'; +import { useMouseTracker } from '../EventsTrackers/MouseTracker.js'; +import { useChartData } from '../context/ChartContext.js'; +import { useActiveSpectrum } from '../hooks/useActiveSpectrum.js'; -import HorizontalSliceChart from './1d-tracer/HorizontalSliceChart'; -import VerticalSliceChart from './1d-tracer/VerticalSliceChart'; -import { useScale2DX, useScale2DY } from './utilities/scale'; +import HorizontalSliceChart from './1d-tracer/HorizontalSliceChart.js'; +import VerticalSliceChart from './1d-tracer/VerticalSliceChart.js'; +import { useScale2DX, useScale2DY } from './utilities/scale.js'; function SlicingView() { const { width, height, margin, data: spectra } = useChartData(); diff --git a/src/component/2d/Viewer2D.tsx b/src/component/2d/Viewer2D.tsx index b41ca4707..c0d97591a 100644 --- a/src/component/2d/Viewer2D.tsx +++ b/src/component/2d/Viewer2D.tsx @@ -1,32 +1,36 @@ -import { Spectrum1D } from 'nmr-load-save'; -import { useCallback, useEffect, useMemo, ReactNode, useRef } from 'react'; +import type { Spectrum1D } from 'nmr-load-save'; +import type { ReactNode } from 'react'; +import { useCallback, useEffect, useMemo, useRef } from 'react'; import { ResponsiveChart } from 'react-d3-utils'; -import BrushXY, { BRUSH_TYPE } from '../1d-2d/tools/BrushXY'; -import CrossLinePointer from '../1d-2d/tools/CrossLinePointer'; -import { - BrushTracker, +import BrushXY, { BRUSH_TYPE } from '../1d-2d/tools/BrushXY.js'; +import CrossLinePointer from '../1d-2d/tools/CrossLinePointer.js'; +import type { OnBrush, OnClick, OnDoubleClick, OnZoom, -} from '../EventsTrackers/BrushTracker'; -import { MouseTracker } from '../EventsTrackers/MouseTracker'; -import { useChartData } from '../context/ChartContext'; -import { useDispatch } from '../context/DispatchContext'; -import { useMapKeyModifiers } from '../context/KeyModifierContext'; -import { useViewportSize } from '../hooks/useViewportSize'; -import Spinner from '../loader/Spinner'; -import { options } from '../toolbar/ToolTypes'; +} from '../EventsTrackers/BrushTracker.js'; +import { BrushTracker } from '../EventsTrackers/BrushTracker.js'; +import { MouseTracker } from '../EventsTrackers/MouseTracker.js'; +import { useChartData } from '../context/ChartContext.js'; +import { useDispatch } from '../context/DispatchContext.js'; +import { useMapKeyModifiers } from '../context/KeyModifierContext.js'; +import { useViewportSize } from '../hooks/useViewportSize.js'; +import Spinner from '../loader/Spinner.js'; +import { options } from '../toolbar/ToolTypes.js'; -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'; +import { PhaseTraces } from './1d-tracer/phase-correction-traces/index.js'; +import Chart2D from './Chart2D.js'; +import FooterBanner from './FooterBanner.js'; +import SlicingView from './SlicingView.js'; +import { PivotIndicator } from './tools/PivotIndicator.js'; +import XYLabelPointer from './tools/XYLabelPointer.js'; +import { + get2DDimensionLayout, + getLayoutID, +} from './utilities/DimensionLayout.js'; +import { get2DXScale, get2DYScale } from './utilities/scale.js'; interface Viewer2DProps { emptyText: ReactNode; diff --git a/src/component/2d/XAxis.tsx b/src/component/2d/XAxis.tsx index f3079574f..f9f223f52 100644 --- a/src/component/2d/XAxis.tsx +++ b/src/component/2d/XAxis.tsx @@ -1,13 +1,13 @@ /** @jsxImportSource @emotion/react */ import { css } from '@emotion/react'; import * as d3 from 'd3'; -import { Spectrum2D } from 'nmr-load-save'; -import { useEffect, useRef, memo } from 'react'; +import type { Spectrum2D } from 'nmr-load-save'; +import { memo, useEffect, useRef } from 'react'; -import { useChartData } from '../context/ChartContext'; -import useSpectrum from '../hooks/useSpectrum'; +import { useChartData } from '../context/ChartContext.js'; +import useSpectrum from '../hooks/useSpectrum.js'; -import { useScale2DX } from './utilities/scale'; +import { useScale2DX } from './utilities/scale.js'; const axisStyles = css` user-select: none; diff --git a/src/component/2d/YAxis.tsx b/src/component/2d/YAxis.tsx index 671df414b..9f6987ed2 100644 --- a/src/component/2d/YAxis.tsx +++ b/src/component/2d/YAxis.tsx @@ -1,13 +1,13 @@ /** @jsxImportSource @emotion/react */ import { css } from '@emotion/react'; import * as d3 from 'd3'; -import { Spectrum2D } from 'nmr-load-save'; -import { useEffect, useRef, memo } from 'react'; +import type { Spectrum2D } from 'nmr-load-save'; +import { memo, useEffect, useRef } from 'react'; -import { useChartData } from '../context/ChartContext'; -import useSpectrum from '../hooks/useSpectrum'; +import { useChartData } from '../context/ChartContext.js'; +import useSpectrum from '../hooks/useSpectrum.js'; -import { useScale2DY } from './utilities/scale'; +import { useScale2DY } from './utilities/scale.js'; const axisStyles = css` user-select: none; diff --git a/src/component/2d/fid/FidCanvas.tsx b/src/component/2d/fid/FidCanvas.tsx index 5f5afebc9..ed4a09118 100644 --- a/src/component/2d/fid/FidCanvas.tsx +++ b/src/component/2d/fid/FidCanvas.tsx @@ -1,16 +1,16 @@ -import { NmrData2DFid, NmrData2DFt } from 'cheminfo-types'; +import type { NmrData2DFid, NmrData2DFt } from 'cheminfo-types'; import { matrixZPivotRescale } from 'ml-spectra-processing'; -import { Spectrum2D } from 'nmr-load-save'; -import { useEffect, useRef, useMemo } from 'react'; +import type { Spectrum2D } from 'nmr-load-save'; +import { useEffect, useMemo, useRef } from 'react'; -import { useChartData } from '../../context/ChartContext'; -import useSpectrum from '../../hooks/useSpectrum'; +import { useChartData } from '../../context/ChartContext.js'; +import useSpectrum from '../../hooks/useSpectrum.js'; import { get2DXScale, get2DYScale, useScale2DX, useScale2DY, -} from '../utilities/scale'; +} from '../utilities/scale.js'; export function FidCanvas() { const { width, height, margin, mode, xDomain, yDomain, originDomain } = diff --git a/src/component/2d/fid/FidContainer.tsx b/src/component/2d/fid/FidContainer.tsx index 0ca209d44..b48fbe381 100644 --- a/src/component/2d/fid/FidContainer.tsx +++ b/src/component/2d/fid/FidContainer.tsx @@ -1,13 +1,13 @@ -import { Spectrum2D } from 'nmr-load-save'; +import type { Spectrum2D } from 'nmr-load-save'; -import { getSlice } from '../../../data/data2d/Spectrum2D'; -import { useMouseTracker } from '../../EventsTrackers/MouseTracker'; -import useSpectrum from '../../hooks/useSpectrum'; -import HorizontalSliceChart from '../1d-tracer/HorizontalSliceChart'; -import VerticalSliceChart from '../1d-tracer/VerticalSliceChart'; -import { useScale2DX, useScale2DY } from '../utilities/scale'; +import { getSlice } from '../../../data/data2d/Spectrum2D/index.js'; +import { useMouseTracker } from '../../EventsTrackers/MouseTracker.js'; +import useSpectrum from '../../hooks/useSpectrum.js'; +import HorizontalSliceChart from '../1d-tracer/HorizontalSliceChart.js'; +import VerticalSliceChart from '../1d-tracer/VerticalSliceChart.js'; +import { useScale2DX, useScale2DY } from '../utilities/scale.js'; -import { FidCanvas } from './FidCanvas'; +import { FidCanvas } from './FidCanvas.js'; export function FidContainer() { const spectrum = useSpectrum() as Spectrum2D; diff --git a/src/component/2d/ft/Contours.tsx b/src/component/2d/ft/Contours.tsx index 184ddcc7c..ecf15e359 100644 --- a/src/component/2d/ft/Contours.tsx +++ b/src/component/2d/ft/Contours.tsx @@ -1,20 +1,20 @@ -import debounce from 'lodash/debounce'; -import get from 'lodash/get'; -import { Spectrum2D } from 'nmr-load-save'; +import debounce from 'lodash/debounce.js'; +import get from 'lodash/get.js'; +import type { Spectrum2D } from 'nmr-load-save'; import { memo, useMemo, useRef } from 'react'; +import type { LevelSign } from '../../../data/data2d/Spectrum2D/contours.js'; import { drawContours, getDefaultContoursLevel, - LevelSign, -} from '../../../data/data2d/Spectrum2D/contours'; -import { useChartData } from '../../context/ChartContext'; -import { usePreferences } from '../../context/PreferencesContext'; -import { useToaster } from '../../context/ToasterContext'; -import { useActiveSpectrum } from '../../hooks/useActiveSpectrum'; -import { PathBuilder } from '../../utility/PathBuilder'; -import { getSpectraByNucleus } from '../../utility/getSpectraByNucleus'; -import { useScale2DX, useScale2DY } from '../utilities/scale'; +} from '../../../data/data2d/Spectrum2D/contours.js'; +import { useChartData } from '../../context/ChartContext.js'; +import { usePreferences } from '../../context/PreferencesContext.js'; +import { useToaster } from '../../context/ToasterContext.js'; +import { useActiveSpectrum } from '../../hooks/useActiveSpectrum.js'; +import { PathBuilder } from '../../utility/PathBuilder.js'; +import { getSpectraByNucleus } from '../../utility/getSpectraByNucleus.js'; +import { useScale2DX, useScale2DY } from '../utilities/scale.js'; interface ContoursPathsProps { id: string; diff --git a/src/component/2d/ft/FTContainer.tsx b/src/component/2d/ft/FTContainer.tsx index c89c4a9d6..831033af7 100644 --- a/src/component/2d/ft/FTContainer.tsx +++ b/src/component/2d/ft/FTContainer.tsx @@ -1,10 +1,10 @@ -import { Spectrum1D } from 'nmr-load-save'; +import type { Spectrum1D } from 'nmr-load-save'; -import useSpectrum from '../../hooks/useSpectrum'; -import Left1DChart from '../1d-tracer/Left1DChart'; -import Top1DChart from '../1d-tracer/Top1DChart'; +import useSpectrum from '../../hooks/useSpectrum.js'; +import Left1DChart from '../1d-tracer/Left1DChart.js'; +import Top1DChart from '../1d-tracer/Top1DChart.js'; -import Contours from './Contours'; +import Contours from './Contours.js'; interface FTContainerProps { spectra?: Spectrum1D[]; diff --git a/src/component/2d/tools/PivotIndicator.tsx b/src/component/2d/tools/PivotIndicator.tsx index b6f825401..f708d0945 100644 --- a/src/component/2d/tools/PivotIndicator.tsx +++ b/src/component/2d/tools/PivotIndicator.tsx @@ -1,10 +1,10 @@ -import { CSSProperties } from 'react'; +import type { 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'; +import { useChartData } from '../../context/ChartContext.js'; +import type { TraceDirection } from '../../reducer/Reducer.js'; +import { options } from '../../toolbar/ToolTypes.js'; +import { useActivePhaseTraces } from '../1d-tracer/phase-correction-traces/useActivePhaseTraces.js'; +import { get2DXScale, get2DYScale } from '../utilities/scale.js'; function getStyle(direction: TraceDirection, translate: number) { const base: CSSProperties = { diff --git a/src/component/2d/tools/XYLabelPointer.tsx b/src/component/2d/tools/XYLabelPointer.tsx index 9e3dfeb41..82755409b 100644 --- a/src/component/2d/tools/XYLabelPointer.tsx +++ b/src/component/2d/tools/XYLabelPointer.tsx @@ -1,12 +1,13 @@ -import { useMemo, CSSProperties } from 'react'; +import type { CSSProperties } from 'react'; +import { useMemo } from 'react'; -import { useBrushTracker } from '../../EventsTrackers/BrushTracker'; -import { useMouseTracker } from '../../EventsTrackers/MouseTracker'; -import { useChartData } from '../../context/ChartContext'; -import { useActiveSpectrum } from '../../hooks/useActiveSpectrum'; -import { useFormatNumberByNucleus } from '../../hooks/useFormatNumberByNucleus'; -import { getLayoutID, LAYOUT } from '../utilities/DimensionLayout'; -import { get1DYScale, useScale2DX, useScale2DY } from '../utilities/scale'; +import { useBrushTracker } from '../../EventsTrackers/BrushTracker.js'; +import { useMouseTracker } from '../../EventsTrackers/MouseTracker.js'; +import { useChartData } from '../../context/ChartContext.js'; +import { useActiveSpectrum } from '../../hooks/useActiveSpectrum.js'; +import { useFormatNumberByNucleus } from '../../hooks/useFormatNumberByNucleus.js'; +import { getLayoutID, LAYOUT } from '../utilities/DimensionLayout.js'; +import { get1DYScale, useScale2DX, useScale2DY } from '../utilities/scale.js'; const style: CSSProperties = { cursor: 'crosshair', diff --git a/src/component/2d/utilities/scale.ts b/src/component/2d/utilities/scale.ts index f446c1970..e2e8f6bf8 100644 --- a/src/component/2d/utilities/scale.ts +++ b/src/component/2d/utilities/scale.ts @@ -1,10 +1,11 @@ -import { NmrData2D } from 'cheminfo-types'; +import type { NmrData2D } from 'cheminfo-types'; import { scaleLinear } from 'd3'; -import { useChartData } from '../../context/ChartContext'; -import { Margin, SpectraDirection } from '../../reducer/Reducer'; +import { useChartData } from '../../context/ChartContext.js'; +import type { Margin, SpectraDirection } from '../../reducer/Reducer.js'; -import { LAYOUT, Layout } from './DimensionLayout'; +import type { Layout } from './DimensionLayout.js'; +import { LAYOUT } from './DimensionLayout.js'; interface Scale2DXOptions { width: number; diff --git a/src/component/2d/zones/IndicationLines.tsx b/src/component/2d/zones/IndicationLines.tsx index 6c7ce285b..f47e4cafb 100644 --- a/src/component/2d/zones/IndicationLines.tsx +++ b/src/component/2d/zones/IndicationLines.tsx @@ -1,12 +1,12 @@ /** @jsxImportSource @emotion/react */ import { css } from '@emotion/react'; -import { Spectrum1D } from 'nmr-load-save'; -import { useState, useEffect } from 'react'; +import type { Spectrum1D } from 'nmr-load-save'; +import { useEffect, useState } from 'react'; -import { SIGNAL_INCLUDED_KINDS } from '../../../data/constants/signalsKinds'; -import { isSpectrum1D } from '../../../data/data1d/Spectrum1D'; -import { useChartData } from '../../context/ChartContext'; -import { useScale2DX, useScale2DY } from '../utilities/scale'; +import { SIGNAL_INCLUDED_KINDS } from '../../../data/constants/signalsKinds.js'; +import { isSpectrum1D } from '../../../data/data1d/Spectrum1D/index.js'; +import { useChartData } from '../../context/ChartContext.js'; +import { useScale2DX, useScale2DY } from '../utilities/scale.js'; const lineStyle = css` stroke: lightgrey; diff --git a/src/component/2d/zones/Signal.tsx b/src/component/2d/zones/Signal.tsx index ed7bcefbf..6c6cb70c5 100644 --- a/src/component/2d/zones/Signal.tsx +++ b/src/component/2d/zones/Signal.tsx @@ -1,15 +1,15 @@ /** @jsxImportSource @emotion/react */ -import { Signal2D } from 'nmr-processing'; -import { useState, useEffect, useCallback } from 'react'; +import type { Signal2D } from 'nmr-processing'; +import { useCallback, useEffect, useState } from 'react'; -import { buildID } from '../../../data/utilities/Concatenation'; -import { useAssignment } from '../../assignment/AssignmentsContext'; -import { useHighlightData, useHighlight } from '../../highlight'; -import { useActiveSpectrumZonesViewState } from '../../hooks/useActiveSpectrumZonesViewState'; -import { useScale2DX, useScale2DY } from '../utilities/scale'; +import { buildID } from '../../../data/utilities/Concatenation.js'; +import { useAssignment } from '../../assignment/AssignmentsContext.js'; +import { useHighlight, useHighlightData } from '../../highlight/index.js'; +import { useActiveSpectrumZonesViewState } from '../../hooks/useActiveSpectrumZonesViewState.js'; +import { useScale2DX, useScale2DY } from '../utilities/scale.js'; -import SignalCrosshair from './SignalCrosshair'; +import SignalCrosshair from './SignalCrosshair.js'; interface SignalProps { signal: Signal2D; diff --git a/src/component/2d/zones/SignalCrosshair.tsx b/src/component/2d/zones/SignalCrosshair.tsx index 36a605bea..b3f4d2588 100644 --- a/src/component/2d/zones/SignalCrosshair.tsx +++ b/src/component/2d/zones/SignalCrosshair.tsx @@ -1,11 +1,11 @@ /** @jsxImportSource @emotion/react */ -import { Signal2D } from 'nmr-processing'; +import type { Signal2D } from 'nmr-processing'; import { useMemo } from 'react'; -import { buildID } from '../../../data/utilities/Concatenation'; -import { useHighlight } from '../../highlight'; -import SignalDeltaLine from '../SignalDeltaLine'; +import { buildID } from '../../../data/utilities/Concatenation.js'; +import { useHighlight } from '../../highlight/index.js'; +import SignalDeltaLine from '../SignalDeltaLine.js'; interface SignalCrosshairProps { signal: Signal2D; diff --git a/src/component/2d/zones/Zone.tsx b/src/component/2d/zones/Zone.tsx index fa1481ab6..e93539de7 100644 --- a/src/component/2d/zones/Zone.tsx +++ b/src/component/2d/zones/Zone.tsx @@ -1,19 +1,19 @@ /** @jsxImportSource @emotion/react */ import { css } from '@emotion/react'; import styled from '@emotion/styled'; -import { Zone as ZoneType } from 'nmr-processing'; -import { useState, useEffect } from 'react'; +import type { Zone as ZoneType } from 'nmr-processing'; +import { useEffect, useState } from 'react'; import { PiTextTBold } from 'react-icons/pi'; -import { checkZoneKind } from '../../../data/utilities/ZoneUtilities'; -import { useAssignment } from '../../assignment/AssignmentsContext'; -import { useShareData } from '../../context/ShareDataContext'; -import { SVGButton } from '../../elements/SVGButton'; -import { HighlightEventSource, useHighlight } from '../../highlight'; -import { useActiveSpectrumZonesViewState } from '../../hooks/useActiveSpectrumZonesViewState'; -import { useScale2DX, useScale2DY } from '../utilities/scale'; +import { checkZoneKind } from '../../../data/utilities/ZoneUtilities.js'; +import { useAssignment } from '../../assignment/AssignmentsContext.js'; +import { useShareData } from '../../context/ShareDataContext.js'; +import { SVGButton } from '../../elements/SVGButton.js'; +import { HighlightEventSource, useHighlight } from '../../highlight/index.js'; +import { useActiveSpectrumZonesViewState } from '../../hooks/useActiveSpectrumZonesViewState.js'; +import { useScale2DX, useScale2DY } from '../utilities/scale.js'; -import Signal from './Signal'; +import Signal from './Signal.js'; const stylesOnHover = css` pointer-events: bounding-box; diff --git a/src/component/2d/zones/Zones.tsx b/src/component/2d/zones/Zones.tsx index 0e031fac4..7ab474e4e 100644 --- a/src/component/2d/zones/Zones.tsx +++ b/src/component/2d/zones/Zones.tsx @@ -1,11 +1,11 @@ -import { Display2D, Spectrum2D } from 'nmr-load-save'; -import { Zones as ZonesType } from 'nmr-processing'; +import type { Display2D, Spectrum2D } from 'nmr-load-save'; +import type { Zones as ZonesType } from 'nmr-processing'; import { memo } from 'react'; -import { useChartData } from '../../context/ChartContext'; -import useSpectrum from '../../hooks/useSpectrum'; +import { useChartData } from '../../context/ChartContext.js'; +import useSpectrum from '../../hooks/useSpectrum.js'; -import Zone from './Zone'; +import Zone from './Zone.js'; interface ZonesInnerProps { zones: ZonesType; diff --git a/src/component/2d/zones/ZonesAssignmentsLabels.tsx b/src/component/2d/zones/ZonesAssignmentsLabels.tsx index c566486dc..9fd9d94d4 100644 --- a/src/component/2d/zones/ZonesAssignmentsLabels.tsx +++ b/src/component/2d/zones/ZonesAssignmentsLabels.tsx @@ -1,21 +1,22 @@ import styled from '@emotion/styled'; -import { Spectrum2D } from 'nmr-load-save'; -import { Zone, Zones as ZonesType } from 'nmr-processing'; +import type { Spectrum2D } from 'nmr-load-save'; +import type { Zone, Zones as ZonesType } from 'nmr-processing'; import { useEffect, useLayoutEffect, useRef, useState } from 'react'; import { PiTextTSlash } from 'react-icons/pi'; -import { FieldEdition } from '../../1d-2d/FieldEdition'; -import { useChartData } from '../../context/ChartContext'; -import { useDispatch } from '../../context/DispatchContext'; -import { useGlobal } from '../../context/GlobalContext'; -import { useShareData } from '../../context/ShareDataContext'; -import { SVGButton } from '../../elements/SVGButton'; -import { SVGGroup } from '../../elements/SVGGroup'; -import useDraggable, { Position } from '../../elements/draggable/useDraggable'; -import { useHighlight } from '../../highlight'; -import { useActiveSpectrumZonesViewState } from '../../hooks/useActiveSpectrumZonesViewState'; -import useSpectrum from '../../hooks/useSpectrum'; -import { useScale2DX, useScale2DY } from '../utilities/scale'; +import { FieldEdition } from '../../1d-2d/FieldEdition.js'; +import { useChartData } from '../../context/ChartContext.js'; +import { useDispatch } from '../../context/DispatchContext.js'; +import { useGlobal } from '../../context/GlobalContext.js'; +import { useShareData } from '../../context/ShareDataContext.js'; +import { SVGButton } from '../../elements/SVGButton.js'; +import { SVGGroup } from '../../elements/SVGGroup.js'; +import type { Position } from '../../elements/draggable/useDraggable.js'; +import useDraggable from '../../elements/draggable/useDraggable.js'; +import { useHighlight } from '../../highlight/index.js'; +import { useActiveSpectrumZonesViewState } from '../../hooks/useActiveSpectrumZonesViewState.js'; +import useSpectrum from '../../hooks/useSpectrum.js'; +import { useScale2DX, useScale2DY } from '../utilities/scale.js'; interface ZonesInnerProps { zones: ZonesType; diff --git a/src/component/EventsTrackers/BrushTracker.tsx b/src/component/EventsTrackers/BrushTracker.tsx index dae486640..65db31df8 100644 --- a/src/component/EventsTrackers/BrushTracker.tsx +++ b/src/component/EventsTrackers/BrushTracker.tsx @@ -1,19 +1,17 @@ -import lodashDebounce from 'lodash/debounce'; -import lodashMap from 'lodash/map'; +import lodashDebounce from 'lodash/debounce.js'; +import lodashMap from 'lodash/map.js'; +import type { CSSProperties, ReactNode, Reducer } from 'react'; import { createContext, - CSSProperties, - ReactNode, useCallback, + useContext, useEffect, useReducer, useRef, useState, - useContext, - Reducer, } from 'react'; -import { ActionType } from '../reducer/types/ActionType'; +import type { ActionType } from '../reducer/types/ActionType.js'; type Step = 'initial' | 'start' | 'end' | 'brushing'; export interface BrushTrackerContext { diff --git a/src/component/EventsTrackers/KeysListenerTracker.tsx b/src/component/EventsTrackers/KeysListenerTracker.tsx index d4d17bfd6..4b3bbd6c5 100644 --- a/src/component/EventsTrackers/KeysListenerTracker.tsx +++ b/src/component/EventsTrackers/KeysListenerTracker.tsx @@ -1,21 +1,23 @@ -import { RefObject, useCallback, useEffect, useMemo, useRef } from 'react'; +import type { RefObject } from 'react'; +import { useCallback, useEffect, useMemo, useRef } from 'react'; import { useOnOff } from 'react-science/ui'; -import checkModifierKeyActivated from '../../data/utilities/checkModifierKeyActivated'; -import { useAssignmentData } from '../assignment/AssignmentsContext'; -import { useChartData } from '../context/ChartContext'; -import { useDispatch } from '../context/DispatchContext'; -import { useLoader } from '../context/LoaderContext'; -import { usePreferences } from '../context/PreferencesContext'; -import { useToaster } from '../context/ToasterContext'; -import { AlertButton, useAlert } from '../elements/Alert'; -import { useExportManagerAPI } from '../elements/export/ExportManager'; -import { HighlightEventSource, useHighlightData } from '../highlight/index'; -import { useCheckToolsVisibility } from '../hooks/useCheckToolsVisibility'; -import { useExport } from '../hooks/useExport'; -import useToolsFunctions from '../hooks/useToolsFunctions'; -import SaveAsModal from '../modal/SaveAsModal'; -import { options } from '../toolbar/ToolTypes'; +import checkModifierKeyActivated from '../../data/utilities/checkModifierKeyActivated.js'; +import { useAssignmentData } from '../assignment/AssignmentsContext.js'; +import { useChartData } from '../context/ChartContext.js'; +import { useDispatch } from '../context/DispatchContext.js'; +import { useLoader } from '../context/LoaderContext.js'; +import { usePreferences } from '../context/PreferencesContext.js'; +import { useToaster } from '../context/ToasterContext.js'; +import type { AlertButton } from '../elements/Alert.js'; +import { useAlert } from '../elements/Alert.js'; +import { useExportManagerAPI } from '../elements/export/ExportManager.js'; +import { HighlightEventSource, useHighlightData } from '../highlight/index.js'; +import { useCheckToolsVisibility } from '../hooks/useCheckToolsVisibility.js'; +import { useExport } from '../hooks/useExport.js'; +import useToolsFunctions from '../hooks/useToolsFunctions.js'; +import SaveAsModal from '../modal/SaveAsModal.js'; +import { options } from '../toolbar/ToolTypes.js'; interface KeysListenerTrackerProps { mainDivRef: RefObject; diff --git a/src/component/EventsTrackers/MouseTracker.tsx b/src/component/EventsTrackers/MouseTracker.tsx index 83edde246..00b2769ec 100644 --- a/src/component/EventsTrackers/MouseTracker.tsx +++ b/src/component/EventsTrackers/MouseTracker.tsx @@ -1,11 +1,5 @@ -import { - CSSProperties, - createContext, - useCallback, - useState, - useContext, - ReactNode, -} from 'react'; +import type { CSSProperties, ReactNode } from 'react'; +import { createContext, useCallback, useState, useContext } from 'react'; interface MouseTrackerData { x: number; diff --git a/src/component/assignment/AssignmentsContext.ts b/src/component/assignment/AssignmentsContext.ts index edfbb1375..4772ffbe5 100644 --- a/src/component/assignment/AssignmentsContext.ts +++ b/src/component/assignment/AssignmentsContext.ts @@ -1,6 +1,6 @@ import { createContext, useCallback, useContext, useMemo } from 'react'; -import { AssignmentsActions } from './AssignmentsReducer'; +import type { AssignmentsActions } from './AssignmentsReducer.js'; export type Axis = 'x' | 'y'; export type Assignment = Record; diff --git a/src/component/assignment/AssignmentsReducer.ts b/src/component/assignment/AssignmentsReducer.ts index 09e24f584..0c0ff5c77 100644 --- a/src/component/assignment/AssignmentsReducer.ts +++ b/src/component/assignment/AssignmentsReducer.ts @@ -1,16 +1,16 @@ -import { NmrData1D, NmrData2D } from 'cheminfo-types'; +import type { NmrData1D, NmrData2D } from 'cheminfo-types'; -import { ActionType } from '../reducer/types/ActionType'; +import type { ActionType } from '../reducer/types/ActionType.js'; -import { +import type { AssignmentDimension, AssignmentState, Axis, -} from './AssignmentsContext'; -import initAssignment from './actions/initAssignment'; -import removeAssignments from './actions/removeAssignment'; -import setActiveAssignment from './actions/setActiveAssignment'; -import toggleAssignment from './actions/toggleAssignment'; +} from './AssignmentsContext.js'; +import initAssignment from './actions/initAssignment.js'; +import removeAssignments from './actions/removeAssignment.js'; +import setActiveAssignment from './actions/setActiveAssignment.js'; +import toggleAssignment from './actions/toggleAssignment.js'; export type InitiateAction = ActionType< 'INITIATE_ASSIGNMENTS', diff --git a/src/component/assignment/actions/initAssignment.ts b/src/component/assignment/actions/initAssignment.ts index b861f6a07..a1e850dc1 100644 --- a/src/component/assignment/actions/initAssignment.ts +++ b/src/component/assignment/actions/initAssignment.ts @@ -1,8 +1,9 @@ -import { Spectrum } from 'nmr-load-save'; -import { Ranges, Zones } from 'nmr-processing'; +import type { Spectrum } from 'nmr-load-save'; +import type { Ranges, Zones } from 'nmr-processing'; -import { isSpectrum1D } from '../../../data/data1d/Spectrum1D'; -import { assignmentState, AssignmentState, Axis } from '../AssignmentsContext'; +import { isSpectrum1D } from '../../../data/data1d/Spectrum1D/index.js'; +import type { AssignmentState, Axis } from '../AssignmentsContext.js'; +import { assignmentState } from '../AssignmentsContext.js'; export default function initAssignment(action) { const newState = { diff --git a/src/component/assignment/actions/removeAssignment.ts b/src/component/assignment/actions/removeAssignment.ts index 44a2d7146..0dcdf3b3b 100644 --- a/src/component/assignment/actions/removeAssignment.ts +++ b/src/component/assignment/actions/removeAssignment.ts @@ -1,4 +1,4 @@ -import { AssignmentState, Axis } from '../AssignmentsContext'; +import type { AssignmentState, Axis } from '../AssignmentsContext.js'; interface RemoveAction { ids: string[]; diff --git a/src/component/assignment/actions/setActiveAssignment.ts b/src/component/assignment/actions/setActiveAssignment.ts index a218a3c8b..afa387a68 100644 --- a/src/component/assignment/actions/setActiveAssignment.ts +++ b/src/component/assignment/actions/setActiveAssignment.ts @@ -1,5 +1,5 @@ -import { AssignmentState } from '../AssignmentsContext'; -import { SetActiveAction } from '../AssignmentsReducer'; +import type { AssignmentState } from '../AssignmentsContext.js'; +import type { SetActiveAction } from '../AssignmentsReducer.js'; export default function setActiveAssignment( state: AssignmentState, diff --git a/src/component/assignment/actions/toggleAssignment.ts b/src/component/assignment/actions/toggleAssignment.ts index 0f52c9ecc..f15f608fa 100644 --- a/src/component/assignment/actions/toggleAssignment.ts +++ b/src/component/assignment/actions/toggleAssignment.ts @@ -1,11 +1,11 @@ -import { +import type { AssignmentDimension, AssignmentState, Axis, -} from '../AssignmentsContext'; -import { ToggleAction } from '../AssignmentsReducer'; +} from '../AssignmentsContext.js'; +import type { ToggleAction } from '../AssignmentsReducer.js'; -import { removeAssignment } from './removeAssignment'; +import { removeAssignment } from './removeAssignment.js'; interface AddAction { id: string; diff --git a/src/component/assignment/index.tsx b/src/component/assignment/index.tsx index 776efdde7..c74f206f0 100644 --- a/src/component/assignment/index.tsx +++ b/src/component/assignment/index.tsx @@ -1,14 +1,15 @@ -import { useReducer, useMemo, useEffect, Reducer, ReactNode } from 'react'; +import type { Reducer, ReactNode } from 'react'; +import { useReducer, useMemo, useEffect } from 'react'; -import { useChartData } from '../context/ChartContext'; +import { useChartData } from '../context/ChartContext.js'; -import { +import type { AssignmentContext, - assignmentState, AssignmentState, - assignmentContext, -} from './AssignmentsContext'; -import assignmentReducer, { AssignmentsActions } from './AssignmentsReducer'; +} from './AssignmentsContext.js'; +import { assignmentState, assignmentContext } from './AssignmentsContext.js'; +import type { AssignmentsActions } from './AssignmentsReducer.js'; +import assignmentReducer from './AssignmentsReducer.js'; interface AssignmentProviderProps { children: ReactNode; diff --git a/src/component/assignment/utilities/filterForIDsWithAssignment.ts b/src/component/assignment/utilities/filterForIDsWithAssignment.ts index 223790eb3..51e299d4c 100644 --- a/src/component/assignment/utilities/filterForIDsWithAssignment.ts +++ b/src/component/assignment/utilities/filterForIDsWithAssignment.ts @@ -1,4 +1,4 @@ -import { AssignmentContext } from '../AssignmentsContext'; +import type { AssignmentContext } from '../AssignmentsContext.js'; export function filterForIDsWithAssignment( assignmentData: AssignmentContext, diff --git a/src/component/context/ChartContext.tsx b/src/component/context/ChartContext.tsx index 78ffc57bc..da50f7d01 100644 --- a/src/component/context/ChartContext.tsx +++ b/src/component/context/ChartContext.tsx @@ -1,8 +1,9 @@ import { produce } from 'immer'; import { createContext, useContext } from 'react'; -import { useViewportSize } from '../hooks/useViewportSize'; -import { initialState, State } from '../reducer/Reducer'; +import { useViewportSize } from '../hooks/useViewportSize.js'; +import type { State } from '../reducer/Reducer.js'; +import { initialState } from '../reducer/Reducer.js'; export const ChartContext = createContext(initialState); export const ChartDataProvider = ChartContext.Provider; diff --git a/src/component/context/DispatchContext.tsx b/src/component/context/DispatchContext.tsx index fb4626c5e..d8b483a9a 100644 --- a/src/component/context/DispatchContext.tsx +++ b/src/component/context/DispatchContext.tsx @@ -1,22 +1,22 @@ import { createContext, useContext } from 'react'; -import { AssignmentsActions } from '../reducer/actions/AssignmentsActions'; -import { CorrelationsActions } from '../reducer/actions/CorrelationsActions'; -import { DatabaseActions } from '../reducer/actions/DatabaseActions'; -import { DimensionsActions } from '../reducer/actions/DimensionsActions'; -import { DomainActions } from '../reducer/actions/DomainActions'; -import { FiltersActions } from '../reducer/actions/FiltersActions'; -import { IntegralsActions } from '../reducer/actions/IntegralsActions'; -import { LoadActions } from '../reducer/actions/LoadActions'; -import { MoleculeActions } from '../reducer/actions/MoleculeActions'; -import { PeaksActions } from '../reducer/actions/PeaksActions'; -import { PreferencesActions } from '../reducer/actions/PreferencesActions'; -import { RangesActions } from '../reducer/actions/RangesActions'; -import { SpectrumActions } from '../reducer/actions/SpectraActions'; -import { SpectraAnalysisActions } from '../reducer/actions/SpectraAnalysisAction'; -import { ToolsActions } from '../reducer/actions/ToolsActions'; -import { ZonesActions } from '../reducer/actions/ZonesActions'; -import { ActionType } from '../reducer/types/ActionType'; +import type { AssignmentsActions } from '../reducer/actions/AssignmentsActions.js'; +import type { CorrelationsActions } from '../reducer/actions/CorrelationsActions.js'; +import type { DatabaseActions } from '../reducer/actions/DatabaseActions.js'; +import type { DimensionsActions } from '../reducer/actions/DimensionsActions.js'; +import type { DomainActions } from '../reducer/actions/DomainActions.js'; +import type { FiltersActions } from '../reducer/actions/FiltersActions.js'; +import type { IntegralsActions } from '../reducer/actions/IntegralsActions.js'; +import type { LoadActions } from '../reducer/actions/LoadActions.js'; +import type { MoleculeActions } from '../reducer/actions/MoleculeActions.js'; +import type { PeaksActions } from '../reducer/actions/PeaksActions.js'; +import type { PreferencesActions } from '../reducer/actions/PreferencesActions.js'; +import type { RangesActions } from '../reducer/actions/RangesActions.js'; +import type { SpectrumActions } from '../reducer/actions/SpectraActions.js'; +import type { SpectraAnalysisActions } from '../reducer/actions/SpectraAnalysisAction.js'; +import type { ToolsActions } from '../reducer/actions/ToolsActions.js'; +import type { ZonesActions } from '../reducer/actions/ZonesActions.js'; +import type { ActionType } from '../reducer/types/ActionType.js'; export type Action = | ToolsActions diff --git a/src/component/context/FilterSyncOptionsContext.tsx b/src/component/context/FilterSyncOptionsContext.tsx index 2773160d6..2e415b2a3 100644 --- a/src/component/context/FilterSyncOptionsContext.tsx +++ b/src/component/context/FilterSyncOptionsContext.tsx @@ -1,4 +1,5 @@ -import React, { +import type { ReactNode } from 'react'; +import { createContext, useCallback, useContext, @@ -68,7 +69,7 @@ export function useSyncedFilterOptions(onWatch: (options: any) => void) { export function FilterSyncOptionsProvider({ children, }: { - children: React.ReactNode; + children: ReactNode; }) { const [sharedFilterOptions, updateFilterOptions] = useState( null, diff --git a/src/component/context/KeyModifierContext.tsx b/src/component/context/KeyModifierContext.tsx index 16480d2c1..a50576c57 100644 --- a/src/component/context/KeyModifierContext.tsx +++ b/src/component/context/KeyModifierContext.tsx @@ -1,13 +1,7 @@ -import { - ReactNode, - createContext, - useContext, - useEffect, - useMemo, - useState, -} from 'react'; - -import { usePreferences } from './PreferencesContext'; +import type { ReactNode } from 'react'; +import { createContext, useContext, useEffect, useMemo, useState } from 'react'; + +import { usePreferences } from './PreferencesContext.js'; type ModifiersKey = `shift[${boolean}]_ctrl[${boolean}]_alt[${boolean}]`; diff --git a/src/component/context/LoggerContext.tsx b/src/component/context/LoggerContext.tsx index 08b5b82ba..b7945e0a0 100644 --- a/src/component/context/LoggerContext.tsx +++ b/src/component/context/LoggerContext.tsx @@ -1,18 +1,19 @@ -import { FifoLogger, LogEntry } from 'fifo-logger'; +import type { LogEntry } from 'fifo-logger'; +import { FifoLogger } from 'fifo-logger'; +import type { ReactNode } from 'react'; import { createContext, + useCallback, useContext, - ReactNode, - useRef, + useEffect, useMemo, + useRef, useState, - useCallback, - useEffect, } from 'react'; -import { LogsHistoryModal } from '../modal/LogsHistoryModal'; +import { LogsHistoryModal } from '../modal/LogsHistoryModal.js'; -import { usePreferences } from './PreferencesContext'; +import { usePreferences } from './PreferencesContext.js'; export const LoggerContext = createContext<{ logger: FifoLogger; diff --git a/src/component/context/PreferencesContext.tsx b/src/component/context/PreferencesContext.tsx index 7cf6b7aef..992230b95 100644 --- a/src/component/context/PreferencesContext.tsx +++ b/src/component/context/PreferencesContext.tsx @@ -1,11 +1,11 @@ import { createContext, useContext, useMemo } from 'react'; -import { - preferencesInitialState, +import type { PreferencesState, WorkspaceWithSource, -} from '../reducer/preferences/preferencesReducer'; -import { isReadOnlyWorkspace } from '../reducer/preferences/utilities/isReadOnlyWorkspace'; +} from '../reducer/preferences/preferencesReducer.js'; +import { preferencesInitialState } from '../reducer/preferences/preferencesReducer.js'; +import { isReadOnlyWorkspace } from '../reducer/preferences/utilities/isReadOnlyWorkspace.js'; export interface PreferencesContextData extends PreferencesState { isCurrentWorkspaceReadOnly: boolean; diff --git a/src/component/context/PrepareExportContext.tsx b/src/component/context/PrepareExportContext.tsx index 784b18eea..5223821e2 100644 --- a/src/component/context/PrepareExportContext.tsx +++ b/src/component/context/PrepareExportContext.tsx @@ -1,5 +1,5 @@ +import type { ReactNode } from 'react'; import { - ReactNode, createContext, useCallback, useContext, diff --git a/src/component/context/ScaleContext.tsx b/src/component/context/ScaleContext.tsx index b52b7ec4a..cb45a1749 100644 --- a/src/component/context/ScaleContext.tsx +++ b/src/component/context/ScaleContext.tsx @@ -1,6 +1,7 @@ import { createContext, useContext } from 'react'; -import { scaleInitialState, ScaleState } from '../reducer/scaleReducer'; +import type { ScaleState } from '../reducer/scaleReducer.js'; +import { scaleInitialState } from '../reducer/scaleReducer.js'; export const scaleContext = createContext(scaleInitialState); export const ScaleProvider = scaleContext.Provider; diff --git a/src/component/context/ShareDataContext.tsx b/src/component/context/ShareDataContext.tsx index d117b2d7e..b6b3d5f93 100644 --- a/src/component/context/ShareDataContext.tsx +++ b/src/component/context/ShareDataContext.tsx @@ -1,4 +1,5 @@ -import React, { createContext, useContext, useMemo, useState } from 'react'; +import type { ReactNode } from 'react'; +import { createContext, useContext, useMemo, useState } from 'react'; interface ShareDataState { data: T | null; @@ -17,7 +18,7 @@ export function useShareData(): ShareDataState { return context; } -export function ShareDataProvider({ children }: { children: React.ReactNode }) { +export function ShareDataProvider({ children }: { children: ReactNode }) { const [data, setData] = useState(null); const state = useMemo(() => { diff --git a/src/component/context/ToasterContext.tsx b/src/component/context/ToasterContext.tsx index a7fee8f7e..20922d430 100644 --- a/src/component/context/ToasterContext.tsx +++ b/src/component/context/ToasterContext.tsx @@ -1,11 +1,7 @@ -import { - Classes, - OverlayToaster, - Position, - Spinner, - ToastProps, -} from '@blueprintjs/core'; -import { ReactNode, createContext, useContext, useMemo, useRef } from 'react'; +import type { ToastProps } from '@blueprintjs/core'; +import { Classes, OverlayToaster, Position, Spinner } from '@blueprintjs/core'; +import type { ReactNode } from 'react'; +import { createContext, useContext, useMemo, useRef } from 'react'; interface ToasterContextProps { toaster: OverlayToaster | null; diff --git a/src/component/context/TopicMoleculeContext.tsx b/src/component/context/TopicMoleculeContext.tsx index e2c423b1f..7fc6e845e 100644 --- a/src/component/context/TopicMoleculeContext.tsx +++ b/src/component/context/TopicMoleculeContext.tsx @@ -1,8 +1,9 @@ import OCL from 'openchemlib/full'; import { TopicMolecule } from 'openchemlib-utils'; -import { ReactNode, createContext, useContext, useEffect, useRef } from 'react'; +import type { ReactNode } from 'react'; +import { createContext, useContext, useEffect, useRef } from 'react'; -import { useChartData } from './ChartContext'; +import { useChartData } from './ChartContext.js'; const TopicMoleculeContext = createContext>({}); diff --git a/src/component/elements/ActionButtons.tsx b/src/component/elements/ActionButtons.tsx index 6b58a4ae3..783eef64e 100644 --- a/src/component/elements/ActionButtons.tsx +++ b/src/component/elements/ActionButtons.tsx @@ -1,5 +1,5 @@ import { Button } from '@blueprintjs/core'; -import { CSSProperties, MouseEvent } from 'react'; +import type { CSSProperties, MouseEvent } from 'react'; interface ActionButtonsProps { onDone: (event?: MouseEvent) => void; diff --git a/src/component/elements/ActionsButtonsPopover.tsx b/src/component/elements/ActionsButtonsPopover.tsx index fe3f9bd01..0497920af 100644 --- a/src/component/elements/ActionsButtonsPopover.tsx +++ b/src/component/elements/ActionsButtonsPopover.tsx @@ -1,8 +1,12 @@ /** @jsxImportSource @emotion/react */ -import { Popover, PopoverProps } from '@blueprintjs/core'; -import { css, Interpolation, Theme } from '@emotion/react'; -import { CSSProperties, Fragment } from 'react'; -import { Button, ButtonProps } from 'react-science/ui'; +import type { PopoverProps } from '@blueprintjs/core'; +import { Popover } from '@blueprintjs/core'; +import type { Interpolation, Theme } from '@emotion/react'; +import { css } from '@emotion/react'; +import type { CSSProperties } from 'react'; +import { Fragment } from 'react'; +import type { ButtonProps } from 'react-science/ui'; +import { Button } from 'react-science/ui'; export interface ActionsButtonsPopoverProps extends Omit { diff --git a/src/component/elements/ActiveButton.tsx b/src/component/elements/ActiveButton.tsx index 6a2e789a7..9b236b34b 100644 --- a/src/component/elements/ActiveButton.tsx +++ b/src/component/elements/ActiveButton.tsx @@ -1,8 +1,9 @@ /** @jsxImportSource @emotion/react */ import { css } from '@emotion/react'; -import { CSSProperties, memo, ReactNode, useCallback } from 'react'; +import type { CSSProperties, ReactNode } from 'react'; +import { memo, useCallback } from 'react'; -import ToolTip from './ToolTip/ToolTip'; +import ToolTip from './ToolTip/ToolTip.js'; const styles = css` background-color: #f5f5f5; diff --git a/src/component/elements/Alert.tsx b/src/component/elements/Alert.tsx index ec1de5aa7..ba4eb107b 100644 --- a/src/component/elements/Alert.tsx +++ b/src/component/elements/Alert.tsx @@ -1,20 +1,10 @@ /** @jsxImportSource @emotion/react */ -import { - Button, - ButtonProps, - Dialog, - DialogBody, - DialogFooter, -} from '@blueprintjs/core'; +import type { ButtonProps } from '@blueprintjs/core'; +import { Button, Dialog, DialogBody, DialogFooter } from '@blueprintjs/core'; import styled from '@emotion/styled'; import { v4 } from '@lukeed/uuid'; -import React, { - createContext, - useState, - useContext, - ReactNode, - useMemo, -} from 'react'; +import type { ReactNode } from 'react'; +import { createContext, useContext, useMemo, useState } from 'react'; const Message = styled.p` font-weight: bold; @@ -84,9 +74,7 @@ export function useAlert() { return context; } -export const AlertProvider: React.FC<{ children: ReactNode }> = ({ - children, -}) => { +export function AlertProvider({ children }: { children: ReactNode }) { const [alerts, setAlerts] = useState([]); function hideAlert(id: string) { @@ -110,7 +98,7 @@ export const AlertProvider: React.FC<{ children: ReactNode }> = ({ ); -}; +} interface AlertsProps { onHide: (id: string) => void; diff --git a/src/component/elements/Button.tsx b/src/component/elements/Button.tsx index ec96a9e67..78a2b4494 100644 --- a/src/component/elements/Button.tsx +++ b/src/component/elements/Button.tsx @@ -1,8 +1,13 @@ //TODO resolve the eslint rules /** @jsxImportSource @emotion/react */ -import { css, CSSObject, SerializedStyles } from '@emotion/react'; -import { CSSProperties, ComponentPropsWithoutRef, ElementType } from 'react'; +import type { CSSObject, SerializedStyles } from '@emotion/react'; +import { css } from '@emotion/react'; +import type { + CSSProperties, + ComponentPropsWithoutRef, + ElementType, +} from 'react'; import { FaInfoCircle } from 'react-icons/fa'; type Size = 'xSmall' | 'small' | 'medium' | 'large'; diff --git a/src/component/elements/ButtonToolTip.tsx b/src/component/elements/ButtonToolTip.tsx index 3bdb68602..de2828f75 100644 --- a/src/component/elements/ButtonToolTip.tsx +++ b/src/component/elements/ButtonToolTip.tsx @@ -1,6 +1,6 @@ -import { CSSProperties, InputHTMLAttributes, ReactNode } from 'react'; +import type { CSSProperties, InputHTMLAttributes, ReactNode } from 'react'; -import ToolTip from './ToolTip/ToolTip'; +import ToolTip from './ToolTip/ToolTip.js'; interface ButtonToolTipProps extends Omit, 'type'> { diff --git a/src/component/elements/CheckBox.tsx b/src/component/elements/CheckBox.tsx index c39ce1e12..bf1aa78eb 100644 --- a/src/component/elements/CheckBox.tsx +++ b/src/component/elements/CheckBox.tsx @@ -1,4 +1,5 @@ -import { useCallback, forwardRef, ForwardedRef, CSSProperties } from 'react'; +import type { ForwardedRef, CSSProperties } from 'react'; +import { useCallback, forwardRef } from 'react'; export interface CheckBoxProps extends React.InputHTMLAttributes { diff --git a/src/component/elements/CheckController.tsx b/src/component/elements/CheckController.tsx index 3728dd84e..61657d26e 100644 --- a/src/component/elements/CheckController.tsx +++ b/src/component/elements/CheckController.tsx @@ -1,5 +1,7 @@ -import { Checkbox, CheckboxProps } from '@blueprintjs/core'; -import { Controller, ControllerProps, FieldValues } from 'react-hook-form'; +import type { CheckboxProps } from '@blueprintjs/core'; +import { Checkbox } from '@blueprintjs/core'; +import type { ControllerProps, FieldValues } from 'react-hook-form'; +import { Controller } from 'react-hook-form'; interface CheckControllerProps extends Omit, diff --git a/src/component/elements/CloseButton.tsx b/src/component/elements/CloseButton.tsx index f2986cc10..ac252f216 100644 --- a/src/component/elements/CloseButton.tsx +++ b/src/component/elements/CloseButton.tsx @@ -1,10 +1,10 @@ import { FaTimes } from 'react-icons/fa'; -import { ToolbarItemProps } from 'react-science/ui'; +import type { ToolbarItemProps } from 'react-science/ui'; -import { ToolBarButton } from './ToolBarButton'; +import { ToolBarButton } from './ToolBarButton.js'; export function CloseButton( - props: Pick, + props: Pick, ) { return ( boolean); export interface ContextMenuItem extends Omit { @@ -46,7 +43,7 @@ export function ContextMenu( ...other } = props; - function handleContextMenu(event: React.MouseEvent) { + function handleContextMenu(event: MouseEvent) { if (!Array.isArray(options) || options.length === 0) { return; } diff --git a/src/component/elements/CounterLabel.tsx b/src/component/elements/CounterLabel.tsx index 082982255..d48d269c0 100644 --- a/src/component/elements/CounterLabel.tsx +++ b/src/component/elements/CounterLabel.tsx @@ -1,4 +1,4 @@ -import { CSSProperties } from 'react'; +import type { CSSProperties } from 'react'; const labelStyle: CSSProperties = { margin: 0, diff --git a/src/component/elements/DraggableDialog.tsx b/src/component/elements/DraggableDialog.tsx index 0f9f643ca..d2c835f3d 100644 --- a/src/component/elements/DraggableDialog.tsx +++ b/src/component/elements/DraggableDialog.tsx @@ -1,21 +1,24 @@ /** @jsxImportSource @emotion/react */ +import type { + DialogProps, + HTMLDivProps, + OverlayProps, +} from '@blueprintjs/core'; import { Button, Classes, - DialogProps, H6, - HTMLDivProps, Icon, IconSize, mergeRefs, Overlay2, - OverlayProps, } from '@blueprintjs/core'; import { SmallCross } from '@blueprintjs/icons'; import { css, Global } from '@emotion/react'; import styled from '@emotion/styled'; -import { ReactNode, RefObject, useLayoutEffect, useRef } from 'react'; +import type { ReactNode, RefObject } from 'react'; +import { useLayoutEffect, useRef } from 'react'; const Container = styled.div` min-height: 100%; diff --git a/src/component/elements/EditableColumn.tsx b/src/component/elements/EditableColumn.tsx index 672d56f04..bf4e13eb2 100644 --- a/src/component/elements/EditableColumn.tsx +++ b/src/component/elements/EditableColumn.tsx @@ -1,7 +1,5 @@ +import type { CSSProperties, ChangeEvent, KeyboardEvent } from 'react'; import { - CSSProperties, - ChangeEvent, - KeyboardEvent, forwardRef, useCallback, useEffect, @@ -9,7 +7,8 @@ import { useState, } from 'react'; -import Input, { InputProps } from './Input'; +import type { InputProps } from './Input.js'; +import Input from './Input.js'; function extractNumber(val: string | number, type: string) { if (type === 'number' && typeof val !== 'number') { diff --git a/src/component/elements/FormatField.tsx b/src/component/elements/FormatField.tsx index e9642eaed..06bf82387 100644 --- a/src/component/elements/FormatField.tsx +++ b/src/component/elements/FormatField.tsx @@ -1,9 +1,10 @@ -import { CSSProperties } from 'react'; -import { ControllerProps, FieldValues } from 'react-hook-form'; +import type { CSSProperties } from 'react'; +import type { ControllerProps, FieldValues } from 'react-hook-form'; -import { CheckController } from './CheckController'; -import { Input2Controller } from './Input2Controller'; -import Label, { LabelStyle } from './Label'; +import { CheckController } from './CheckController.js'; +import { Input2Controller } from './Input2Controller.js'; +import type { LabelStyle } from './Label.js'; +import Label from './Label.js'; export const formatFieldInputStyle: CSSProperties = { textAlign: 'center', diff --git a/src/component/elements/GroupPane.tsx b/src/component/elements/GroupPane.tsx index cd4ea8a73..e211cfb82 100644 --- a/src/component/elements/GroupPane.tsx +++ b/src/component/elements/GroupPane.tsx @@ -1,4 +1,4 @@ -import { CSSProperties, ReactNode } from 'react'; +import type { CSSProperties, ReactNode } from 'react'; const styles: Record<'header', CSSProperties> = { header: { diff --git a/src/component/elements/Input.tsx b/src/component/elements/Input.tsx index 30cf3d434..fa7ed3ffe 100644 --- a/src/component/elements/Input.tsx +++ b/src/component/elements/Input.tsx @@ -1,17 +1,13 @@ -import debounce from 'lodash/debounce'; -import { - useEffect, - useRef, +import debounce from 'lodash/debounce.js'; +import type { CSSProperties, - forwardRef, ForwardedRef, ReactElement, - useMemo, ChangeEvent, - useState, } from 'react'; +import { useEffect, useRef, forwardRef, useMemo, useState } from 'react'; -import useCombinedRefs from '../hooks/useCombinedRefs'; +import useCombinedRefs from '../hooks/useCombinedRefs.js'; const styles: Record<'input' | 'inputWrapper' | 'clearButton', CSSProperties> = { diff --git a/src/component/elements/Input2.tsx b/src/component/elements/Input2.tsx index 63b19d114..b78f0b88e 100644 --- a/src/component/elements/Input2.tsx +++ b/src/component/elements/Input2.tsx @@ -1,6 +1,8 @@ -import { Classes, InputGroupProps, MenuItem } from '@blueprintjs/core'; +import type { InputGroupProps } from '@blueprintjs/core'; +import { Classes, MenuItem } from '@blueprintjs/core'; import { Suggest } from '@blueprintjs/select'; -import debounce from 'lodash/debounce'; +import debounce from 'lodash/debounce.js'; +import type { ForwardedRef } from 'react'; import { useEffect, useRef, @@ -8,10 +10,9 @@ import { useState, isValidElement, forwardRef, - ForwardedRef, } from 'react'; -import useCombinedRefs from '../hooks/useCombinedRefs'; +import useCombinedRefs from '../hooks/useCombinedRefs.js'; interface UseInputProps extends BaseInputProps { value?: string; diff --git a/src/component/elements/Input2Controller.tsx b/src/component/elements/Input2Controller.tsx index 3f7adcd4e..98efb87ae 100644 --- a/src/component/elements/Input2Controller.tsx +++ b/src/component/elements/Input2Controller.tsx @@ -2,9 +2,11 @@ import { FormGroup } from '@blueprintjs/core'; import { css } from '@emotion/react'; -import { Controller, ControllerProps, FieldValues } from 'react-hook-form'; +import type { ControllerProps, FieldValues } from 'react-hook-form'; +import { Controller } from 'react-hook-form'; -import { Input2, Input2Props } from './Input2'; +import type { Input2Props } from './Input2.js'; +import { Input2 } from './Input2.js'; export interface InputMapValueFunctions { mapOnChangeValue?: (value: string) => any; diff --git a/src/component/elements/InputRange.tsx b/src/component/elements/InputRange.tsx index dbed45abc..e873a6d86 100644 --- a/src/component/elements/InputRange.tsx +++ b/src/component/elements/InputRange.tsx @@ -1,10 +1,5 @@ -import { - CSSProperties, - forwardRef, - useCallback, - useImperativeHandle, - useRef, -} from 'react'; +import type { CSSProperties } from 'react'; +import { forwardRef, useCallback, useImperativeHandle, useRef } from 'react'; const styles: Record<'container' | 'label', CSSProperties> = { container: { diff --git a/src/component/elements/IsotopesViewer.tsx b/src/component/elements/IsotopesViewer.tsx index fadbdc72e..3c198a78a 100644 --- a/src/component/elements/IsotopesViewer.tsx +++ b/src/component/elements/IsotopesViewer.tsx @@ -1,4 +1,4 @@ -import { HTMLAttributes } from 'react'; +import type { HTMLAttributes } from 'react'; interface IsotopesViewerProps extends HTMLAttributes { value?: string; diff --git a/src/component/elements/Label.tsx b/src/component/elements/Label.tsx index 50c699da5..40642ddf5 100644 --- a/src/component/elements/Label.tsx +++ b/src/component/elements/Label.tsx @@ -1,8 +1,8 @@ /** @jsxImportSource @emotion/react */ import { css } from '@emotion/react'; -import React, { CSSProperties, ReactNode } from 'react'; +import type { CSSProperties, LabelHTMLAttributes, ReactNode } from 'react'; -import Button from './Button'; +import Button from './Button.js'; export interface LabelStyle { label?: CSSProperties; @@ -10,7 +10,7 @@ export interface LabelStyle { container?: CSSProperties; } interface LabelProps - extends Omit, 'style'> { + extends Omit, 'style'> { title: string; renderTitle?: (title: string) => ReactNode; shortTitle?: string; diff --git a/src/component/elements/MenuButton.tsx b/src/component/elements/MenuButton.tsx index 5553851e5..0ca7a8104 100644 --- a/src/component/elements/MenuButton.tsx +++ b/src/component/elements/MenuButton.tsx @@ -1,8 +1,10 @@ /** @jsxImportSource @emotion/react */ -import { SerializedStyles, css } from '@emotion/react'; -import { ReactNode, useState, useCallback, useRef } from 'react'; +import type { SerializedStyles } from '@emotion/react'; +import { css } from '@emotion/react'; +import type { ReactNode } from 'react'; +import { useState, useCallback, useRef } from 'react'; -import ToolTip from './ToolTip/ToolTip'; +import ToolTip from './ToolTip/ToolTip.js'; const menuStyles = css` .menu { diff --git a/src/component/elements/Message.tsx b/src/component/elements/Message.tsx index e14652259..6c9bcd2de 100644 --- a/src/component/elements/Message.tsx +++ b/src/component/elements/Message.tsx @@ -1,4 +1,4 @@ -import { CSSProperties, ReactNode } from 'react'; +import type { CSSProperties, ReactNode } from 'react'; type MessageType = 'success' | 'error' | 'warning' | 'info'; diff --git a/src/component/elements/MoleculeSelection.tsx b/src/component/elements/MoleculeSelection.tsx index 44fe63c7d..441475368 100644 --- a/src/component/elements/MoleculeSelection.tsx +++ b/src/component/elements/MoleculeSelection.tsx @@ -4,9 +4,9 @@ import { useCallback, useEffect, useState } from 'react'; import { MF } from 'react-mf'; import { MolfileSvgRenderer } from 'react-ocl/full'; -import { StateMoleculeExtended } from '../../data/molecules/Molecule'; +import type { StateMoleculeExtended } from '../../data/molecules/Molecule.js'; -import { NextPrev } from './NextPrev'; +import { NextPrev } from './NextPrev.js'; const toolbarStyle = css` display: flex; diff --git a/src/component/elements/NextPrev.tsx b/src/component/elements/NextPrev.tsx index 09ca553f1..f97d736a4 100644 --- a/src/component/elements/NextPrev.tsx +++ b/src/component/elements/NextPrev.tsx @@ -1,9 +1,10 @@ /** @jsxImportSource @emotion/react */ import { css } from '@emotion/react'; import styled from '@emotion/styled'; -import { Children, CSSProperties, ReactElement } from 'react'; +import type { CSSProperties, ReactElement } from 'react'; +import { Children } from 'react'; import { FaAngleLeft } from 'react-icons/fa'; -import { useMeasure } from 'react-use'; +import useResizeObserver from 'use-resize-observer'; interface ArrowProps { direction: 'right' | 'left'; @@ -20,7 +21,6 @@ function Arrow({ direction, onClick, style = {} }: ArrowProps) { height: 40px; width: 40px; justify-content: center; - background: white; border-radius: 50%; cursor: pointer; align-items: center; @@ -90,7 +90,11 @@ export function NextPrev(props: NextPrevProps) { onChange = () => null, style = {}, } = props; - const [ref, { width }] = useMeasure(); + const { + ref, + width = 0, + // @ts-expect-error Module is not published correctly. + } = useResizeObserver(); const slidersCount = Children.count(children); const lastIndex = slidersCount > 0 ? slidersCount - 1 : 0; const activeIndex = Math.min(index, lastIndex); diff --git a/src/component/elements/NumberInput.tsx b/src/component/elements/NumberInput.tsx index 84c36bf1d..f1e1caea9 100644 --- a/src/component/elements/NumberInput.tsx +++ b/src/component/elements/NumberInput.tsx @@ -1,6 +1,7 @@ -import { CSSProperties, ForwardedRef, forwardRef, useEffect } from 'react'; +import type { CSSProperties, ForwardedRef } from 'react'; +import { forwardRef, useEffect } from 'react'; -import useCombinedRefs from '../hooks/useCombinedRefs'; +import useCombinedRefs from '../hooks/useCombinedRefs.js'; const inputStyle: CSSProperties = { height: '100%', diff --git a/src/component/elements/NumberInput2.tsx b/src/component/elements/NumberInput2.tsx index 23bd8f379..a1a9a39ee 100644 --- a/src/component/elements/NumberInput2.tsx +++ b/src/component/elements/NumberInput2.tsx @@ -1,11 +1,7 @@ /** @jsxImportSource @emotion/react */ -import { - Classes, - HTMLInputProps, - NumericInput, - NumericInputProps, -} from '@blueprintjs/core'; -import debounce from 'lodash/debounce'; +import type { HTMLInputProps, NumericInputProps } from '@blueprintjs/core'; +import { Classes, NumericInput } from '@blueprintjs/core'; +import debounce from 'lodash/debounce.js'; import { useEffect, useMemo, diff --git a/src/component/elements/NumberInput2Controller.tsx b/src/component/elements/NumberInput2Controller.tsx index 6139fd2e4..b200083ee 100644 --- a/src/component/elements/NumberInput2Controller.tsx +++ b/src/component/elements/NumberInput2Controller.tsx @@ -1,6 +1,8 @@ -import { Controller, ControllerProps, FieldValues } from 'react-hook-form'; +import type { ControllerProps, FieldValues } from 'react-hook-form'; +import { Controller } from 'react-hook-form'; -import { NumberInput2, NumberInput2Props } from './NumberInput2'; +import type { NumberInput2Props } from './NumberInput2.js'; +import { NumberInput2 } from './NumberInput2.js'; interface NumberInput2ControllerProps< TFieldValues extends FieldValues = FieldValues, diff --git a/src/component/elements/PreferencesButton.tsx b/src/component/elements/PreferencesButton.tsx index a2402b481..74c54691a 100644 --- a/src/component/elements/PreferencesButton.tsx +++ b/src/component/elements/PreferencesButton.tsx @@ -1,7 +1,7 @@ import { FaCog } from 'react-icons/fa'; -import { ToolbarItemProps } from 'react-science/ui'; +import type { ToolbarItemProps } from 'react-science/ui'; -import { ToolBarButton } from './ToolBarButton'; +import { ToolBarButton } from './ToolBarButton.js'; export function PreferencesButton(props: Omit) { return } {...props} />; diff --git a/src/component/elements/ReactTable/Elements/ReactTableHeader.tsx b/src/component/elements/ReactTable/Elements/ReactTableHeader.tsx index df1e14328..d7398d01a 100644 --- a/src/component/elements/ReactTable/Elements/ReactTableHeader.tsx +++ b/src/component/elements/ReactTable/Elements/ReactTableHeader.tsx @@ -1,4 +1,4 @@ -import { CSSProperties, MouseEvent } from 'react'; +import type { CSSProperties, MouseEvent } from 'react'; import { FaSortAmountDown, FaSortAmountUp } from 'react-icons/fa'; interface TableCellEvent { diff --git a/src/component/elements/ReactTable/Elements/ReactTableRow.tsx b/src/component/elements/ReactTable/Elements/ReactTableRow.tsx index 1a415873a..ef6cce0d9 100644 --- a/src/component/elements/ReactTable/Elements/ReactTableRow.tsx +++ b/src/component/elements/ReactTable/Elements/ReactTableRow.tsx @@ -1,11 +1,15 @@ /** @jsxImportSource @emotion/react */ -import { css, CSSObject, SerializedStyles } from '@emotion/react'; +import type { CSSObject, SerializedStyles } from '@emotion/react'; +import { css } from '@emotion/react'; import { useMemo, useEffect, useCallback } from 'react'; -import { HighlightEventSource, useHighlight } from '../../../highlight/index'; -import { ContextMenu } from '../../ContextMenuBluePrint'; -import { BaseRowStyle, TableContextMenuProps } from '../ReactTable'; +import { + HighlightEventSource, + useHighlight, +} from '../../../highlight/index.js'; +import { ContextMenu } from '../../ContextMenuBluePrint.js'; +import type { BaseRowStyle, TableContextMenuProps } from '../ReactTable.js'; function getRowStyle( isActive: boolean, diff --git a/src/component/elements/ReactTable/ReactTable.tsx b/src/component/elements/ReactTable/ReactTable.tsx index f07384ff0..aa38a8b44 100644 --- a/src/component/elements/ReactTable/ReactTable.tsx +++ b/src/component/elements/ReactTable/ReactTable.tsx @@ -1,47 +1,43 @@ /* eslint-disable unicorn/prefer-logical-operator-over-ternary */ /** @jsxImportSource @emotion/react */ -import { CSSObject, SerializedStyles, css } from '@emotion/react'; -import React, { - useRef, - memo, +import type { CSSObject, SerializedStyles } from '@emotion/react'; +import { css } from '@emotion/react'; +import type { CSSProperties, ReactElement, Ref, WheelEvent } from 'react'; +import { forwardRef, - useState, - Ref, - CSSProperties, - WheelEvent, - useLayoutEffect, + memo, useEffect, + useLayoutEffect, useMemo, - ReactElement, + useRef, + useState, } from 'react'; -import { - useTable, - useSortBy, - TableInstance, +import type { CellProps, Column as ReactColumn, + TableInstance, UseSortByColumnOptions, UseSortByInstanceProps, - UseTableOptions, UseSortByOptions, + UseTableOptions, } from 'react-table'; -import { useMeasure } from 'react-use'; +import { useSortBy, useTable } from 'react-table'; +import useResizeObserver from 'use-resize-observer'; -import { HighlightEventSource } from '../../highlight'; -import { BaseContextMenuProps } from '../ContextMenuBluePrint'; +import type { HighlightEventSource } from '../../highlight/index.js'; +import type { BaseContextMenuProps } from '../ContextMenuBluePrint.js'; -import { EmptyDataRow } from './Elements/EmptyDataRow'; -import ReactTableHeader from './Elements/ReactTableHeader'; -import ReactTableRow, { ClickEvent } from './Elements/ReactTableRow'; -import { ReactTableStyle } from './Style'; +import { EmptyDataRow } from './Elements/EmptyDataRow.js'; +import ReactTableHeader from './Elements/ReactTableHeader.js'; +import type { ClickEvent } from './Elements/ReactTableRow.js'; +import ReactTableRow from './Elements/ReactTableRow.js'; +import { ReactTableStyle } from './Style.js'; import { ReactTableProvider, useReactTableContext, -} from './utility/ReactTableContext'; -import useRowSpan, { - prepareRowSpan, - RowSpanHeaders, -} from './utility/useRowSpan'; +} from './utility/ReactTableContext.js'; +import type { RowSpanHeaders } from './utility/useRowSpan.js'; +import useRowSpan, { prepareRowSpan } from './utility/useRowSpan.js'; interface ExtraColumn { enableRowSpan?: boolean; @@ -137,7 +133,7 @@ const counterStyle: CSSProperties = { const ReactTableInner = forwardRef(TableInner) as ( props: ReactTableInnerProps & { ref?: Ref }, -) => React.JSX.Element; +) => ReactElement; function TableInner( props: ReactTableInnerProps, @@ -372,7 +368,12 @@ function ReactTable(props: ReactTableProps) { const containerRef = useRef(null); const visibleRowsCountRef = useRef(0); const visibleColumnsCountRef = useRef(0); - const [mRef, { height, width }] = useMeasure(); + const { + ref: mRef, + width = 0, + height = 0, + // @ts-expect-error Module is not published correctly. + } = useResizeObserver(); const [tableVirtualBoundary, setTableVirtualBoundary] = useState({ @@ -517,4 +518,4 @@ function ReactTable(props: ReactTableProps) { export default memo(ReactTable) as ( props: ReactTableInnerProps, -) => JSX.Element; +) => ReactElement; diff --git a/src/component/elements/ReactTable/ReactTableFlexLayout.tsx b/src/component/elements/ReactTable/ReactTableFlexLayout.tsx index ddf69e418..ef8b294b4 100644 --- a/src/component/elements/ReactTable/ReactTableFlexLayout.tsx +++ b/src/component/elements/ReactTable/ReactTableFlexLayout.tsx @@ -1,9 +1,9 @@ /** @jsxImportSource @emotion/react */ -import { CSSProperties } from 'react'; +import type { CSSProperties } from 'react'; import { useTable, useSortBy, useFlexLayout } from 'react-table'; -import { ReactTableStyle } from './Style'; +import { ReactTableStyle } from './Style.js'; interface ReactTableFlexLayoutProps { data: any; diff --git a/src/component/elements/ReactTable/Style.ts b/src/component/elements/ReactTable/Style.ts index 8f68c05d1..103befd06 100644 --- a/src/component/elements/ReactTable/Style.ts +++ b/src/component/elements/ReactTable/Style.ts @@ -1,6 +1,6 @@ import { css } from '@emotion/react'; -import { InputStyle } from '../Input'; +import type { InputStyle } from '../Input.js'; const ReactTableStyle = css` border-spacing: 0; diff --git a/src/component/elements/ReactTable/utility/ReactTableContext.ts b/src/component/elements/ReactTable/utility/ReactTableContext.ts index 8dd1b8448..4db874dd3 100644 --- a/src/component/elements/ReactTable/utility/ReactTableContext.ts +++ b/src/component/elements/ReactTable/utility/ReactTableContext.ts @@ -1,6 +1,6 @@ import { createContext, useContext } from 'react'; -import { TableVirtualBoundary } from '../ReactTable'; +import type { TableVirtualBoundary } from '../ReactTable.js'; const reactContext = createContext(null); export const ReactTableProvider = reactContext.Provider; diff --git a/src/component/elements/ReactTable/utility/addCustomColumn.tsx b/src/component/elements/ReactTable/utility/addCustomColumn.tsx index 070b28b40..5a69cc8f4 100644 --- a/src/component/elements/ReactTable/utility/addCustomColumn.tsx +++ b/src/component/elements/ReactTable/utility/addCustomColumn.tsx @@ -1,7 +1,7 @@ import { v4 } from '@lukeed/uuid'; -import { CSSProperties, MouseEvent, ReactNode } from 'react'; +import type { CSSProperties, MouseEvent, ReactNode } from 'react'; -import { Column } from '../ReactTable'; +import type { Column } from '../ReactTable.js'; export type CustomColumn = Column & { index: number }; export type ControlCustomColumn = CustomColumn & { diff --git a/src/component/elements/ReadOnly.tsx b/src/component/elements/ReadOnly.tsx index 9cc56631d..ce13f7149 100644 --- a/src/component/elements/ReadOnly.tsx +++ b/src/component/elements/ReadOnly.tsx @@ -1,7 +1,8 @@ /** @jsxImportSource @emotion/react */ import { keyframes } from '@emotion/react'; import styled from '@emotion/styled'; -import { ReactNode, useState } from 'react'; +import type { ReactNode } from 'react'; +import { useState } from 'react'; import { IoLockClosedOutline } from 'react-icons/io5'; const fadeIn = keyframes` diff --git a/src/component/elements/ResizerWithScale.tsx b/src/component/elements/ResizerWithScale.tsx index 6a75844f2..47d6eac05 100644 --- a/src/component/elements/ResizerWithScale.tsx +++ b/src/component/elements/ResizerWithScale.tsx @@ -1,9 +1,10 @@ import { useEffect, useRef, useState } from 'react'; -import { useScaleX } from '../1d/utilities/scale'; -import { useGlobal } from '../context/GlobalContext'; +import { useScaleX } from '../1d/utilities/scale.js'; +import { useGlobal } from '../context/GlobalContext.js'; -import SVGResizer, { Position, ResizerProps } from './resizer/SVGResizer'; +import type { Position, ResizerProps } from './resizer/SVGResizer.js'; +import SVGResizer from './resizer/SVGResizer.js'; interface ResizerWithScaleProps { disabled: boolean; diff --git a/src/component/elements/SVGButton.tsx b/src/component/elements/SVGButton.tsx index bac8bf35d..760eab04a 100644 --- a/src/component/elements/SVGButton.tsx +++ b/src/component/elements/SVGButton.tsx @@ -1,5 +1,6 @@ -import { Icon, IconName, Tooltip, TooltipProps } from '@blueprintjs/core'; -import { CSSProperties, ReactNode } from 'react'; +import type { IconName, TooltipProps } from '@blueprintjs/core'; +import { Icon, Tooltip } from '@blueprintjs/core'; +import type { CSSProperties, ReactNode } from 'react'; interface IconButtonProps extends React.SVGAttributes { size?: number; diff --git a/src/component/elements/SVGGroup.tsx b/src/component/elements/SVGGroup.tsx index 1ab9c1de0..59687c66b 100644 --- a/src/component/elements/SVGGroup.tsx +++ b/src/component/elements/SVGGroup.tsx @@ -1,10 +1,5 @@ -import { - Children, - useLayoutEffect, - useRef, - SVGAttributes, - ReactElement, -} from 'react'; +import type { SVGAttributes, ReactElement } from 'react'; +import { Children, useLayoutEffect, useRef } from 'react'; interface SVGGroupProps extends SVGAttributes { children: ReactElement | ReactElement[]; diff --git a/src/component/elements/SVGText.tsx b/src/component/elements/SVGText.tsx index 92c75470d..a8523cab3 100644 --- a/src/component/elements/SVGText.tsx +++ b/src/component/elements/SVGText.tsx @@ -1,4 +1,5 @@ -import { SVGAttributes, useLayoutEffect, useRef, useState } from 'react'; +import type { SVGAttributes } from 'react'; +import { useLayoutEffect, useRef, useState } from 'react'; interface SVGTextProps extends SVGAttributes { rectProps?: SVGAttributes; diff --git a/src/component/elements/SaveButton.tsx b/src/component/elements/SaveButton.tsx index b78877e6e..e1850f107 100644 --- a/src/component/elements/SaveButton.tsx +++ b/src/component/elements/SaveButton.tsx @@ -1,7 +1,7 @@ import { FaCheck } from 'react-icons/fa'; -import { ToolbarItemProps } from 'react-science/ui'; +import type { ToolbarItemProps } from 'react-science/ui'; -import { ToolBarButton } from './ToolBarButton'; +import { ToolBarButton } from './ToolBarButton.js'; export function SaveButton( props: Pick, diff --git a/src/component/elements/Scroller.tsx b/src/component/elements/Scroller.tsx index 13b7eb7ad..033c61370 100644 --- a/src/component/elements/Scroller.tsx +++ b/src/component/elements/Scroller.tsx @@ -1,6 +1,6 @@ +import type { ReactNode } from 'react'; import { Children, - ReactNode, createContext, isValidElement, useContext, diff --git a/src/component/elements/Sections.tsx b/src/component/elements/Sections.tsx index f647080a1..bd1b2dad5 100644 --- a/src/component/elements/Sections.tsx +++ b/src/component/elements/Sections.tsx @@ -1,13 +1,14 @@ /** @jsxImportSource @emotion/react */ import { Icon, Tag } from '@blueprintjs/core'; import styled from '@emotion/styled'; -import React, { - createContext, +import type { CSSProperties, + HTMLAttributes, + HTMLProps, + MouseEvent, ReactNode, - useContext, - useMemo, } from 'react'; +import { createContext, useContext, useMemo } from 'react'; interface SelectionsContextState { overflow: boolean; @@ -140,7 +141,7 @@ interface BaseSectionProps { interface SectionItemProps extends BaseSectionProps { id?: string; - onClick?: (id, event?: React.MouseEvent) => void; + onClick?: (id, event?: MouseEvent) => void; children?: ReactNode | ((options: { isOpen?: boolean }) => ReactNode); selectedSectionId?: string; sticky?: boolean; @@ -169,12 +170,12 @@ export function Sections(props: SectionProps) { ); } -function SectionHeader(props: React.HTMLAttributes) { +function SectionHeader(props: HTMLAttributes) { const { children, ...otherProps } = props; return {children}; } -function SectionBody(props: React.HTMLAttributes) { +function SectionBody(props: HTMLAttributes) { const { children, ...otherProps } = props; return {children}; @@ -238,7 +239,7 @@ function Wrapper(props: WrapperProps) { } interface MainSectionHeaderProps - extends Pick, 'onClick'>, + extends Pick, 'onClick'>, BaseSectionProps { isOpen: boolean; sticky: boolean; diff --git a/src/component/elements/Select.tsx b/src/component/elements/Select.tsx index 5faa8fe6c..875aa333b 100644 --- a/src/component/elements/Select.tsx +++ b/src/component/elements/Select.tsx @@ -1,6 +1,7 @@ /** @jsxImportSource @emotion/react */ import { css } from '@emotion/react'; -import { CSSProperties, ForwardedRef, forwardRef, useCallback } from 'react'; +import type { CSSProperties, ForwardedRef } from 'react'; +import { forwardRef, useCallback } from 'react'; const arrowDownIcon = `url('data:image/svg+xml;utf8,')`; diff --git a/src/component/elements/Select2.tsx b/src/component/elements/Select2.tsx index be74ba476..4f49f9468 100644 --- a/src/component/elements/Select2.tsx +++ b/src/component/elements/Select2.tsx @@ -1,9 +1,12 @@ -import { Button, ButtonProps } from '@blueprintjs/core'; -import { Select, SelectProps } from '@blueprintjs/select'; -import { forwardRef, ForwardedRef, ReactNode, useEffect } from 'react'; +import type { ButtonProps } from '@blueprintjs/core'; +import { Button } from '@blueprintjs/core'; +import type { SelectProps } from '@blueprintjs/select'; +import { Select } from '@blueprintjs/select'; +import type { ForwardedRef, ReactNode } from 'react'; +import { forwardRef, useEffect } from 'react'; import { useSelect } from 'react-science/ui'; -import { FilterType } from '../utility/filterType'; +import type { FilterType } from '../utility/filterType.js'; interface ItemOptions { renderItem?: (item: T) => ReactNode; diff --git a/src/component/elements/Select2Controller.tsx b/src/component/elements/Select2Controller.tsx index 9fd219318..c088a50ff 100644 --- a/src/component/elements/Select2Controller.tsx +++ b/src/component/elements/Select2Controller.tsx @@ -1,6 +1,8 @@ -import { Controller, ControllerProps, FieldValues } from 'react-hook-form'; +import type { ControllerProps, FieldValues } from 'react-hook-form'; +import { Controller } from 'react-hook-form'; -import { Select2, Select2Props, SelectDefaultItem } from './Select2'; +import type { Select2Props, SelectDefaultItem } from './Select2.js'; +import { Select2 } from './Select2.js'; type Select2ControllerProps< T extends Record = SelectDefaultItem, diff --git a/src/component/elements/Tab/DeleteButton.tsx b/src/component/elements/Tab/DeleteButton.tsx index 4543c69a1..3c379ef00 100644 --- a/src/component/elements/Tab/DeleteButton.tsx +++ b/src/component/elements/Tab/DeleteButton.tsx @@ -1,6 +1,6 @@ /** @jsxImportSource @emotion/react */ import { css } from '@emotion/react'; -import { CSSProperties } from 'react'; +import type { CSSProperties } from 'react'; import { FaTimes } from 'react-icons/fa'; const styles = css` diff --git a/src/component/elements/Tab/Tab.tsx b/src/component/elements/Tab/Tab.tsx index 500d8b500..f0e8e9d73 100644 --- a/src/component/elements/Tab/Tab.tsx +++ b/src/component/elements/Tab/Tab.tsx @@ -1,8 +1,9 @@ /** @jsxImportSource @emotion/react */ -import { css, SerializedStyles } from '@emotion/react'; -import { CSSProperties, ReactNode } from 'react'; +import type { SerializedStyles } from '@emotion/react'; +import { css } from '@emotion/react'; +import type { CSSProperties, ReactNode } from 'react'; -import DeleteButton from './DeleteButton'; +import DeleteButton from './DeleteButton.js'; const styles = (styles) => css` position: relative; diff --git a/src/component/elements/Tab/Tabs.tsx b/src/component/elements/Tab/Tabs.tsx index 3d075648b..ecb4de3fe 100644 --- a/src/component/elements/Tab/Tabs.tsx +++ b/src/component/elements/Tab/Tabs.tsx @@ -1,8 +1,10 @@ /** @jsxImportSource @emotion/react */ import { css } from '@emotion/react'; -import { isValidElement, useMemo, Children, memo, ReactElement } from 'react'; +import type { ReactElement } from 'react'; +import { isValidElement, useMemo, Children, memo } from 'react'; -import Tab, { TabEvents, TabProps } from './Tab'; +import type { TabEvents, TabProps } from './Tab.js'; +import Tab from './Tab.js'; const topStyles = css` height: 100%; diff --git a/src/component/elements/TabTitle.tsx b/src/component/elements/TabTitle.tsx index 6362d5b94..33fd1fc16 100644 --- a/src/component/elements/TabTitle.tsx +++ b/src/component/elements/TabTitle.tsx @@ -1,7 +1,8 @@ /** @jsxImportSource @emotion/react */ -import { Button, ButtonProps, Popover } from '@blueprintjs/core'; +import type { ButtonProps } from '@blueprintjs/core'; +import { Button, Popover } from '@blueprintjs/core'; import styled from '@emotion/styled'; -import { ReactNode } from 'react'; +import type { ReactNode } from 'react'; interface TabTitleProps { onDelete?: ButtonProps['onClick']; diff --git a/src/component/elements/Table/Table.tsx b/src/component/elements/Table/Table.tsx index 1105c0d82..0d9c03d91 100644 --- a/src/component/elements/Table/Table.tsx +++ b/src/component/elements/Table/Table.tsx @@ -1,4 +1,5 @@ -import { CSSProperties, memo, ReactNode } from 'react'; +import type { CSSProperties, ReactNode } from 'react'; +import { memo } from 'react'; const styles: CSSProperties = { width: '100%', diff --git a/src/component/elements/Table/TableBody.tsx b/src/component/elements/Table/TableBody.tsx index deed77717..12242f13d 100644 --- a/src/component/elements/Table/TableBody.tsx +++ b/src/component/elements/Table/TableBody.tsx @@ -1,11 +1,5 @@ -import { - useMemo, - memo, - Children, - cloneElement, - ReactNode, - CSSProperties, -} from 'react'; +import type { ReactNode, CSSProperties } from 'react'; +import { useMemo, memo, Children, cloneElement } from 'react'; const styles: CSSProperties = { width: '100%', diff --git a/src/component/elements/Table/TableCell.tsx b/src/component/elements/Table/TableCell.tsx index 7b1fc3cfe..3201cb973 100644 --- a/src/component/elements/Table/TableCell.tsx +++ b/src/component/elements/Table/TableCell.tsx @@ -1,4 +1,5 @@ -import { CSSProperties, memo, ReactNode } from 'react'; +import type { CSSProperties, ReactNode } from 'react'; +import { memo } from 'react'; const styles = { width: '100%', diff --git a/src/component/elements/Table/TableHead.tsx b/src/component/elements/Table/TableHead.tsx index f85292510..2eb31f26e 100644 --- a/src/component/elements/Table/TableHead.tsx +++ b/src/component/elements/Table/TableHead.tsx @@ -1,4 +1,5 @@ -import { CSSProperties, memo, ReactNode } from 'react'; +import type { CSSProperties, ReactNode } from 'react'; +import { memo } from 'react'; const styles: CSSProperties = { width: '100%', diff --git a/src/component/elements/Table/TableRow.tsx b/src/component/elements/Table/TableRow.tsx index 197041c24..1a7a77735 100644 --- a/src/component/elements/Table/TableRow.tsx +++ b/src/component/elements/Table/TableRow.tsx @@ -1,4 +1,5 @@ -import { CSSProperties, memo, ReactNode } from 'react'; +import type { CSSProperties, ReactNode } from 'react'; +import { memo } from 'react'; const styles = { width: '100%', diff --git a/src/component/elements/ToggleButton.tsx b/src/component/elements/ToggleButton.tsx index 575fd8003..af47861f0 100644 --- a/src/component/elements/ToggleButton.tsx +++ b/src/component/elements/ToggleButton.tsx @@ -1,8 +1,9 @@ /** @jsxImportSource @emotion/react */ import { css } from '@emotion/react'; -import { CSSProperties, memo, ReactNode, useCallback, useState } from 'react'; +import type { CSSProperties, ReactNode } from 'react'; +import { memo, useCallback, useState } from 'react'; -import ToolTip from './ToolTip/ToolTip'; +import ToolTip from './ToolTip/ToolTip.js'; const styles = css` background-color: #f5f5f5; diff --git a/src/component/elements/ToolBarButton.tsx b/src/component/elements/ToolBarButton.tsx index 03331d0dc..21c8fbf94 100644 --- a/src/component/elements/ToolBarButton.tsx +++ b/src/component/elements/ToolBarButton.tsx @@ -1,4 +1,5 @@ -import { Toolbar, ToolbarItemProps } from 'react-science/ui'; +import type { ToolbarItemProps } from 'react-science/ui'; +import { Toolbar } from 'react-science/ui'; export function ToolBarButton(props: ToolbarItemProps) { return ( diff --git a/src/component/elements/ToolTip/ToolTip.tsx b/src/component/elements/ToolTip/ToolTip.tsx index 80795253c..7f38e2a78 100644 --- a/src/component/elements/ToolTip/ToolTip.tsx +++ b/src/component/elements/ToolTip/ToolTip.tsx @@ -1,3 +1,4 @@ +import type { CSSProperties, ReactNode } from 'react'; import { useRef, useLayoutEffect, @@ -5,12 +6,10 @@ import { useState, memo, Fragment, - CSSProperties, - ReactNode, } from 'react'; import { createPortal } from 'react-dom'; -import { useGlobal } from '../../context/GlobalContext'; +import { useGlobal } from '../../context/GlobalContext.js'; const styles: Record<'popup', CSSProperties> = { popup: { diff --git a/src/component/elements/ToolbarPopoverItem.tsx b/src/component/elements/ToolbarPopoverItem.tsx index 7e4288cec..2bd9e18a4 100644 --- a/src/component/elements/ToolbarPopoverItem.tsx +++ b/src/component/elements/ToolbarPopoverItem.tsx @@ -1,9 +1,10 @@ -import { Menu, MenuItem, MenuItemProps } from '@blueprintjs/core'; -import { - Toolbar, +import type { MenuItemProps } from '@blueprintjs/core'; +import { Menu, MenuItem } from '@blueprintjs/core'; +import type { ToolbarPopoverItemProps as BaseToolbarPopoverItemProps, ToolbarItemProps, } from 'react-science/ui'; +import { Toolbar } from 'react-science/ui'; export interface ToolbarPopoverMenuItem extends MenuItemProps { data?: T; diff --git a/src/component/elements/accordion/Accordion.tsx b/src/component/elements/accordion/Accordion.tsx index 23243c8cc..5fe8bc938 100644 --- a/src/component/elements/accordion/Accordion.tsx +++ b/src/component/elements/accordion/Accordion.tsx @@ -1,5 +1,5 @@ +import type { ReactNode, CSSProperties } from 'react'; import { - ReactNode, useState, useRef, useCallback, @@ -7,10 +7,9 @@ import { useEffect, Children, cloneElement, - CSSProperties, } from 'react'; -import { triggerSource } from './AccordionItem'; +import { triggerSource } from './AccordionItem.js'; const styles: Record<'container', CSSProperties> = { container: { diff --git a/src/component/elements/accordion/AccordionItem.tsx b/src/component/elements/accordion/AccordionItem.tsx index 91dcb4222..c54896d0f 100644 --- a/src/component/elements/accordion/AccordionItem.tsx +++ b/src/component/elements/accordion/AccordionItem.tsx @@ -1,11 +1,5 @@ -import { - useState, - useRef, - useEffect, - useCallback, - CSSProperties, - ReactNode, -} from 'react'; +import type { CSSProperties, ReactNode } from 'react'; +import { useState, useRef, useEffect, useCallback } from 'react'; const styles: Record< 'container' | 'button' | 'buttonTitle' | 'content', diff --git a/src/component/elements/draggable/SVGDraggable.tsx b/src/component/elements/draggable/SVGDraggable.tsx index 6dd9f7320..b2576861e 100644 --- a/src/component/elements/draggable/SVGDraggable.tsx +++ b/src/component/elements/draggable/SVGDraggable.tsx @@ -1,6 +1,7 @@ -import { ReactElement } from 'react'; +import type { ReactElement } from 'react'; -import useDraggable, { Position } from './useDraggable'; +import type { Position } from './useDraggable.js'; +import useDraggable from './useDraggable.js'; type ChildType = ReactElement[] | ReactElement | boolean | null; diff --git a/src/component/elements/dropDownButton/DropDownButton.tsx b/src/component/elements/dropDownButton/DropDownButton.tsx index e2e141035..083ae0042 100644 --- a/src/component/elements/dropDownButton/DropDownButton.tsx +++ b/src/component/elements/dropDownButton/DropDownButton.tsx @@ -1,10 +1,11 @@ /** @jsxImportSource @emotion/react */ import { Popover, Button } from '@blueprintjs/core'; import { css } from '@emotion/react'; -import { CSSProperties, ReactNode, useEffect, useState } from 'react'; +import type { CSSProperties, ReactNode } from 'react'; +import { useEffect, useState } from 'react'; import { FaEllipsisH } from 'react-icons/fa'; -import DropDownList from './DropDownList'; +import DropDownList from './DropDownList.js'; export interface DropDownListItem { key: string; diff --git a/src/component/elements/dropDownButton/DropDownList.tsx b/src/component/elements/dropDownButton/DropDownList.tsx index 1bb6e3f17..cf104b6bc 100644 --- a/src/component/elements/dropDownButton/DropDownList.tsx +++ b/src/component/elements/dropDownButton/DropDownList.tsx @@ -1,11 +1,11 @@ /** @jsxImportSource @emotion/react */ import { css } from '@emotion/react'; -import { +import type { DropDownListItem, DropDownListProps, ItemProps, -} from './DropDownButton'; +} from './DropDownButton.js'; const styles = { ul: css` diff --git a/src/component/elements/export/ExportContent.tsx b/src/component/elements/export/ExportContent.tsx index 2b7e36d44..97b3f4301 100644 --- a/src/component/elements/export/ExportContent.tsx +++ b/src/component/elements/export/ExportContent.tsx @@ -1,14 +1,15 @@ /** @jsxImportSource @emotion/react */ -import { ExportSettings } from 'nmr-load-save'; -import { ReactNode, useCallback, useEffect, useRef, useState } from 'react'; +import type { ExportSettings } from 'nmr-load-save'; +import type { ReactNode } from 'react'; +import { useCallback, useEffect, useRef, useState } from 'react'; import { createPortal } from 'react-dom'; -import { ExportOptionsModal } from './ExportOptionsModal'; -import { ExportSettingsProvider } from './ExportSettingsProvider'; -import { RenderDetector } from './RenderDetector'; -import { INITIAL_BASIC_EXPORT_OPTIONS } from './utilities/getExportOptions'; -import { getSizeInPixel } from './utilities/getSizeInPixel'; -import { transferDocumentStyles } from './utilities/transferDocumentStyles'; +import { ExportOptionsModal } from './ExportOptionsModal.js'; +import { ExportSettingsProvider } from './ExportSettingsProvider.js'; +import { RenderDetector } from './RenderDetector.js'; +import { INITIAL_BASIC_EXPORT_OPTIONS } from './utilities/getExportOptions.js'; +import { getSizeInPixel } from './utilities/getSizeInPixel.js'; +import { transferDocumentStyles } from './utilities/transferDocumentStyles.js'; const isFirefox = navigator.userAgent.toLowerCase().includes('firefox'); diff --git a/src/component/elements/export/ExportManager.tsx b/src/component/elements/export/ExportManager.tsx index 57121a2ab..0e7120853 100644 --- a/src/component/elements/export/ExportManager.tsx +++ b/src/component/elements/export/ExportManager.tsx @@ -1,21 +1,20 @@ -import { ExportPreferences, ExportSettings } from 'nmr-load-save'; +import type { ExportPreferences, ExportSettings } from 'nmr-load-save'; +import type { ReactNode, RefObject } from 'react'; import { createContext, - ReactNode, - RefObject, useContext, useImperativeHandle, useRef, useState, } from 'react'; -import { useChartData } from '../../context/ChartContext'; -import { usePreferences } from '../../context/PreferencesContext'; -import { useExportViewPort } from '../../hooks/useExport'; -import { useWorkspaceExportSettings } from '../../hooks/useWorkspaceExportSettings'; +import { useChartData } from '../../context/ChartContext.js'; +import { usePreferences } from '../../context/PreferencesContext.js'; +import { useExportViewPort } from '../../hooks/useExport.js'; +import { useWorkspaceExportSettings } from '../../hooks/useWorkspaceExportSettings.js'; -import { ExportContent } from './ExportContent'; -import { getSizeInPixel } from './utilities/getSizeInPixel'; +import { ExportContent } from './ExportContent.js'; +import { getSizeInPixel } from './utilities/getSizeInPixel.js'; export type ExportFormat = 'png' | 'svg'; export type ExportDestination = 'file' | 'clipboard'; diff --git a/src/component/elements/export/ExportOptionsModal.tsx b/src/component/elements/export/ExportOptionsModal.tsx index b31d17fac..254e056d3 100644 --- a/src/component/elements/export/ExportOptionsModal.tsx +++ b/src/component/elements/export/ExportOptionsModal.tsx @@ -11,7 +11,7 @@ import { } from '@blueprintjs/core'; import { css } from '@emotion/react'; import { yupResolver } from '@hookform/resolvers/yup'; -import { +import type { AdvanceExportSettings, BasicExportSettings, ExportSettings, @@ -19,22 +19,25 @@ import { import { useEffect, useState } from 'react'; import { Controller, useForm } from 'react-hook-form'; -import ActionButtons from '../ActionButtons'; -import { CheckController } from '../CheckController'; -import Label, { LabelStyle } from '../Label'; -import { NumberInput2Controller } from '../NumberInput2Controller'; -import { Select2Controller } from '../Select2Controller'; -import { getSizesList, SizeItem } from '../print/pageSize'; +import ActionButtons from '../ActionButtons.js'; +import { CheckController } from '../CheckController.js'; +import type { LabelStyle } from '../Label.js'; +import Label from '../Label.js'; +import { NumberInput2Controller } from '../NumberInput2Controller.js'; +import { Select2Controller } from '../Select2Controller.js'; +import type { SizeItem } from '../print/pageSize.js'; +import { getSizesList } from '../print/pageSize.js'; -import { BaseExportProps } from './ExportContent'; -import { units } from './units'; -import { useExportConfigurer } from './useExportConfigurer'; -import { exportOptionValidationSchema } from './utilities/exportOptionValidationSchema'; +import type { BaseExportProps } from './ExportContent.js'; +import { units } from './units.js'; +import { useExportConfigurer } from './useExportConfigurer.js'; +import { exportOptionValidationSchema } from './utilities/exportOptionValidationSchema.js'; import { getExportDefaultOptions, getExportDefaultOptionsByMode, -} from './utilities/getExportOptions'; -import { Mode, MODES } from './utilities/getModes'; +} from './utilities/getExportOptions.js'; +import type { Mode } from './utilities/getModes.js'; +import { MODES } from './utilities/getModes.js'; interface InnerExportOptionsModalProps extends BaseExportProps { onCloseDialog: () => void; diff --git a/src/component/elements/export/ExportSettingsProvider.tsx b/src/component/elements/export/ExportSettingsProvider.tsx index ef7450d7c..ac6703937 100644 --- a/src/component/elements/export/ExportSettingsProvider.tsx +++ b/src/component/elements/export/ExportSettingsProvider.tsx @@ -1,4 +1,5 @@ -import { createContext, ReactNode, useContext, useMemo } from 'react'; +import type { ReactNode } from 'react'; +import { createContext, useContext, useMemo } from 'react'; export interface ExportSettingsContextProps { width: number; diff --git a/src/component/elements/export/RenderDetector.tsx b/src/component/elements/export/RenderDetector.tsx index 29e257cde..0ae0d823d 100644 --- a/src/component/elements/export/RenderDetector.tsx +++ b/src/component/elements/export/RenderDetector.tsx @@ -1,4 +1,5 @@ -import { CSSProperties, ReactNode, useEffect } from 'react'; +import type { CSSProperties, ReactNode } from 'react'; +import { useEffect } from 'react'; interface RenderDetectorProps { onRender: () => void; diff --git a/src/component/elements/export/index.ts b/src/component/elements/export/index.ts index d8da245a6..6530a0908 100644 --- a/src/component/elements/export/index.ts +++ b/src/component/elements/export/index.ts @@ -1,2 +1,2 @@ -export * from './ExportContent'; -export * from './ExportSettingsProvider'; +export * from './ExportContent.js'; +export * from './ExportSettingsProvider.js'; diff --git a/src/component/elements/export/units.ts b/src/component/elements/export/units.ts index 475853fc8..98f65a3a6 100644 --- a/src/component/elements/export/units.ts +++ b/src/component/elements/export/units.ts @@ -1,6 +1,7 @@ -import { units as baseUnits, Unit } from 'nmr-load-save'; +import type { Unit } from 'nmr-load-save'; +import { units as baseUnits } from 'nmr-load-save'; -import { roundNumber } from '../../utility/roundNumber'; +import { roundNumber } from '../../utility/roundNumber.js'; export const units = baseUnits.map((unit) => ({ ...unit, diff --git a/src/component/elements/export/useExportConfigurer.tsx b/src/component/elements/export/useExportConfigurer.tsx index eb4b08a47..2f09da555 100644 --- a/src/component/elements/export/useExportConfigurer.tsx +++ b/src/component/elements/export/useExportConfigurer.tsx @@ -1,10 +1,10 @@ -import { ExportSettings } from 'nmr-load-save'; +import type { ExportSettings } from 'nmr-load-save'; import { useDeferredValue, useRef, useState } from 'react'; -import { roundNumber } from '../../utility/roundNumber'; +import { roundNumber } from '../../utility/roundNumber.js'; -import { convert, convertToPixels } from './units'; -import { getExportOptions } from './utilities/getExportOptions'; +import { convert, convertToPixels } from './units.js'; +import { getExportOptions } from './utilities/getExportOptions.js'; export function useExportConfigurer(options: ExportSettings) { const { width, height, unit, dpi } = getExportOptions(options); diff --git a/src/component/elements/export/utilities/convertPixelsBasedOnDPI.ts b/src/component/elements/export/utilities/convertPixelsBasedOnDPI.ts index a82c26f5a..6ef2980eb 100644 --- a/src/component/elements/export/utilities/convertPixelsBasedOnDPI.ts +++ b/src/component/elements/export/utilities/convertPixelsBasedOnDPI.ts @@ -1,4 +1,4 @@ -import { roundNumber } from '../../../utility/roundNumber'; +import { roundNumber } from '../../../utility/roundNumber.js'; export function convertPixelsBasedOnDPI( originalPixelSize: number, diff --git a/src/component/elements/export/utilities/exportOptionValidationSchema.ts b/src/component/elements/export/utilities/exportOptionValidationSchema.ts index dbd344c02..4ff7fa6ab 100644 --- a/src/component/elements/export/utilities/exportOptionValidationSchema.ts +++ b/src/component/elements/export/utilities/exportOptionValidationSchema.ts @@ -1,8 +1,8 @@ -import { ExportSettings, Layout, PageSizeName, Unit } from 'nmr-load-save'; +import type { ExportSettings, Layout, PageSizeName, Unit } from 'nmr-load-save'; import * as Yup from 'yup'; -import { pageSizes } from '../../print/pageSize'; -import { convertToPixels, units } from '../units'; +import { pageSizes } from '../../print/pageSize.js'; +import { convertToPixels, units } from '../units.js'; const MAX_PIXEL = 16000; diff --git a/src/component/elements/export/utilities/getExportOptions.ts b/src/component/elements/export/utilities/getExportOptions.ts index 248b1808b..39e1b688d 100644 --- a/src/component/elements/export/utilities/getExportOptions.ts +++ b/src/component/elements/export/utilities/getExportOptions.ts @@ -1,10 +1,10 @@ -import { +import type { AdvanceExportSettings, BasicExportSettings, ExportSettings, } from 'nmr-load-save'; -import { getPageDimension } from '../../print/pageSize'; +import { getPageDimension } from '../../print/pageSize.js'; type ReturnExportOptions = Omit; diff --git a/src/component/elements/export/utilities/getModes.ts b/src/component/elements/export/utilities/getModes.ts index 7ea4a6b36..015397265 100644 --- a/src/component/elements/export/utilities/getModes.ts +++ b/src/component/elements/export/utilities/getModes.ts @@ -1,4 +1,4 @@ -import { OptionProps } from '@blueprintjs/core'; +import type { OptionProps } from '@blueprintjs/core'; export const MODES: Array> = [ { diff --git a/src/component/elements/export/utilities/getSizeInPixel.ts b/src/component/elements/export/utilities/getSizeInPixel.ts index dc9f7068b..42a4a4e96 100644 --- a/src/component/elements/export/utilities/getSizeInPixel.ts +++ b/src/component/elements/export/utilities/getSizeInPixel.ts @@ -1,8 +1,8 @@ -import { ExportSettings } from 'nmr-load-save'; +import type { ExportSettings } from 'nmr-load-save'; -import { convertToPixels } from '../units'; +import { convertToPixels } from '../units.js'; -import { getExportOptions } from './getExportOptions'; +import { getExportOptions } from './getExportOptions.js'; export function getSizeInPixel(exportPageOptions: ExportSettings) { const { width, height, dpi, unit } = getExportOptions(exportPageOptions); diff --git a/src/component/elements/linearAxis/LinearVerticalAxis.tsx b/src/component/elements/linearAxis/LinearVerticalAxis.tsx index ecf0750d0..3794726c2 100644 --- a/src/component/elements/linearAxis/LinearVerticalAxis.tsx +++ b/src/component/elements/linearAxis/LinearVerticalAxis.tsx @@ -1,4 +1,4 @@ -import { ScaleLinear } from 'd3'; +import type { ScaleLinear } from 'd3'; import { forwardRef, useRef } from 'react'; import { useLinearPrimaryTicks } from 'react-d3-utils'; diff --git a/src/component/elements/print/PrintContent.tsx b/src/component/elements/print/PrintContent.tsx index 34a14a1fe..d05cb8a8c 100644 --- a/src/component/elements/print/PrintContent.tsx +++ b/src/component/elements/print/PrintContent.tsx @@ -8,25 +8,20 @@ import { Tag, } from '@blueprintjs/core'; import { css } from '@emotion/react'; -import { PageSizeName, PrintPageOptions } from 'nmr-load-save'; -import { - CSSProperties, - ReactNode, - useCallback, - useEffect, - useRef, - useState, -} from 'react'; +import type { PageSizeName, PrintPageOptions } from 'nmr-load-save'; +import type { CSSProperties, ReactNode } from 'react'; +import { useCallback, useEffect, useRef, useState } from 'react'; import { createPortal } from 'react-dom'; import { Controller, useForm } from 'react-hook-form'; -import ActionButtons from '../ActionButtons'; -import Label, { LabelStyle } from '../Label'; -import { NumberInput2Controller } from '../NumberInput2Controller'; -import { Select2Controller } from '../Select2Controller'; +import ActionButtons from '../ActionButtons.js'; +import type { LabelStyle } from '../Label.js'; +import Label from '../Label.js'; +import { NumberInput2Controller } from '../NumberInput2Controller.js'; +import { Select2Controller } from '../Select2Controller.js'; -import { PrintProvider } from './PrintProvider'; -import { getSizesList, pageSizes } from './pageSize'; +import { PrintProvider } from './PrintProvider.js'; +import { getSizesList, pageSizes } from './pageSize.js'; const isFirefox = navigator.userAgent.toLowerCase().includes('firefox'); diff --git a/src/component/elements/print/PrintProvider.tsx b/src/component/elements/print/PrintProvider.tsx index f6fd11509..3f5eb86bd 100644 --- a/src/component/elements/print/PrintProvider.tsx +++ b/src/component/elements/print/PrintProvider.tsx @@ -1,6 +1,7 @@ -import { createContext, ReactNode, useContext, useMemo } from 'react'; +import type { ReactNode } from 'react'; +import { createContext, useContext, useMemo } from 'react'; -interface PrintPagContextProps { +export interface PrintPagContextProps { width: number; height: number; } diff --git a/src/component/elements/print/index.ts b/src/component/elements/print/index.ts index ee12b2f5c..a36876328 100644 --- a/src/component/elements/print/index.ts +++ b/src/component/elements/print/index.ts @@ -1,2 +1,2 @@ -export * from './PrintContent'; -export * from './PrintProvider'; +export * from './PrintContent.js'; +export * from './PrintProvider.js'; diff --git a/src/component/elements/print/pageSize.ts b/src/component/elements/print/pageSize.ts index 5d1c3a89e..fed3a031d 100644 --- a/src/component/elements/print/pageSize.ts +++ b/src/component/elements/print/pageSize.ts @@ -1,4 +1,4 @@ -import { Layout, PageSizeName } from 'nmr-load-save'; +import type { Layout, PageSizeName } from 'nmr-load-save'; export interface PageSize { name: PageSizeName; diff --git a/src/component/elements/resizer/SVGResizer.tsx b/src/component/elements/resizer/SVGResizer.tsx index 74bf1aa79..b103dc515 100644 --- a/src/component/elements/resizer/SVGResizer.tsx +++ b/src/component/elements/resizer/SVGResizer.tsx @@ -1,9 +1,9 @@ /* eslint-disable react/no-unused-prop-types */ /** @jsxImportSource @emotion/react */ import { css } from '@emotion/react'; -import { CSSProperties } from 'react'; +import type { CSSProperties } from 'react'; -import useResizer from './useResizer'; +import useResizer from './useResizer.js'; const style: Record<'anchor' | 'innerContainer', CSSProperties> = { anchor: { diff --git a/src/component/elements/resizer/useResizer.tsx b/src/component/elements/resizer/useResizer.tsx index 38b5d884a..d4876e6f8 100644 --- a/src/component/elements/resizer/useResizer.tsx +++ b/src/component/elements/resizer/useResizer.tsx @@ -1,8 +1,9 @@ import { useRef } from 'react'; -import useDraggable, { Draggable } from '../draggable/useDraggable'; +import type { Draggable } from '../draggable/useDraggable.js'; +import useDraggable from '../draggable/useDraggable.js'; -import { ResizerProps, Position } from './SVGResizer'; +import type { ResizerProps, Position } from './SVGResizer.js'; interface UseResizer { right: Draggable; diff --git a/src/component/elements/useFormValidateField.ts b/src/component/elements/useFormValidateField.ts index 45f36ab62..5e3669558 100644 --- a/src/component/elements/useFormValidateField.ts +++ b/src/component/elements/useFormValidateField.ts @@ -1,4 +1,4 @@ -import has from 'lodash/has'; +import has from 'lodash/has.js'; import { useCallback } from 'react'; import { useFormContext } from 'react-hook-form'; diff --git a/src/component/header/AutoPeakPickingOptionPanel.tsx b/src/component/header/AutoPeakPickingOptionPanel.tsx index 9b3e787a5..21f62617b 100644 --- a/src/component/header/AutoPeakPickingOptionPanel.tsx +++ b/src/component/header/AutoPeakPickingOptionPanel.tsx @@ -3,18 +3,18 @@ import { yupResolver } from '@hookform/resolvers/yup'; import { useForm } from 'react-hook-form'; import * as Yup from 'yup'; -import { useDispatch } from '../context/DispatchContext'; -import { useToaster } from '../context/ToasterContext'; -import Label from '../elements/Label'; -import { NumberInput2Controller } from '../elements/NumberInput2Controller'; -import { Select2Controller } from '../elements/Select2Controller'; +import { useDispatch } from '../context/DispatchContext.js'; +import { useToaster } from '../context/ToasterContext.js'; +import Label from '../elements/Label.js'; +import { NumberInput2Controller } from '../elements/NumberInput2Controller.js'; +import { Select2Controller } from '../elements/Select2Controller.js'; import { MIN_AREA_POINTS, useCheckPointsNumberInWindowArea, -} from '../hooks/useCheckPointsNumberInWindowArea'; +} from '../hooks/useCheckPointsNumberInWindowArea.js'; -import { headerLabelStyle } from './Header'; -import { HeaderWrapper } from './HeaderWrapper'; +import { headerLabelStyle } from './Header.js'; +import { HeaderWrapper } from './HeaderWrapper.js'; type Direction = 'positive' | 'negative' | 'both'; diff --git a/src/component/header/Header.tsx b/src/component/header/Header.tsx index a921fd269..dc03d3a4d 100644 --- a/src/component/header/Header.tsx +++ b/src/component/header/Header.tsx @@ -1,43 +1,42 @@ /** @jsxImportSource @emotion/react */ import { css } from '@emotion/react'; -import { useMemo, memo } from 'react'; +import { memo, useMemo } from 'react'; import { - FaRegWindowMaximize, + FaFilm, FaQuestionCircle, FaRegSave, - FaFilm, + FaRegWindowMaximize, } from 'react-icons/fa'; import { Toolbar, useFullscreen } from 'react-science/ui'; -import { docsBaseUrl } from '../../constants'; -import { useChartData } from '../context/ChartContext'; +import { docsBaseUrl } from '../../constants.js'; +import { useChartData } from '../context/ChartContext.js'; import { usePreferences, useWorkspacesList, -} from '../context/PreferencesContext'; -import Button from '../elements/Button'; -import { HeaderContainer } from '../elements/HeaderContainer'; -import { LabelStyle } from '../elements/Label'; -import DropDownButton, { - DropDownListItem, -} from '../elements/dropDownButton/DropDownButton'; -import { useSaveSettings } from '../hooks/useSaveSettings'; -import { useWorkspaceAction } from '../hooks/useWorkspaceAction'; -import { LogsHistoryModal } from '../modal/LogsHistoryModal'; -import AboutUsModal from '../modal/aboutUs/AboutUsModal'; -import GeneralSettingsModal from '../modal/setting/GeneralSettings'; -import WorkspaceItem from '../modal/setting/WorkspaceItem'; -import { options } from '../toolbar/ToolTypes'; - -import { AutoPeakPickingOptionPanel } from './AutoPeakPickingOptionPanel'; -import { HeaderWrapper } from './HeaderWrapper'; -import RangesPickingOptionPanel from './RangesPickingOptionPanel'; -import { SimpleApodizationOptionsPanel } from './SimpleApodizationOptionsPanel'; -import { SimpleBaseLineCorrectionOptionsPanel } from './SimpleBaseLineCorrectionOptionsPanel'; -import { SimplePhaseCorrectionOptionsPanel } from './SimplePhaseCorrectionOptionsPanel'; -import { SimplePhaseCorrectionTwoDimensionsPanel } from './SimplePhaseCorrectionTwoDimensionsPanel'; -import { SimpleZeroFillingOptionsPanel } from './SimpleZeroFillingOptionsPanel'; -import Zones2DOptionPanel from './Zones2DOptionPanel'; +} from '../context/PreferencesContext.js'; +import Button from '../elements/Button.js'; +import { HeaderContainer } from '../elements/HeaderContainer.js'; +import type { LabelStyle } from '../elements/Label.js'; +import type { DropDownListItem } from '../elements/dropDownButton/DropDownButton.js'; +import DropDownButton from '../elements/dropDownButton/DropDownButton.js'; +import { useSaveSettings } from '../hooks/useSaveSettings.js'; +import { useWorkspaceAction } from '../hooks/useWorkspaceAction.js'; +import { LogsHistoryModal } from '../modal/LogsHistoryModal.js'; +import AboutUsModal from '../modal/aboutUs/AboutUsModal.js'; +import GeneralSettingsModal from '../modal/setting/GeneralSettings.js'; +import WorkspaceItem from '../modal/setting/WorkspaceItem.js'; +import { options } from '../toolbar/ToolTypes.js'; + +import { AutoPeakPickingOptionPanel } from './AutoPeakPickingOptionPanel.js'; +import { HeaderWrapper } from './HeaderWrapper.js'; +import RangesPickingOptionPanel from './RangesPickingOptionPanel.js'; +import { SimpleApodizationOptionsPanel } from './SimpleApodizationOptionsPanel.js'; +import { SimpleBaseLineCorrectionOptionsPanel } from './SimpleBaseLineCorrectionOptionsPanel.js'; +import { SimplePhaseCorrectionOptionsPanel } from './SimplePhaseCorrectionOptionsPanel.js'; +import { SimplePhaseCorrectionTwoDimensionsPanel } from './SimplePhaseCorrectionTwoDimensionsPanel.js'; +import { SimpleZeroFillingOptionsPanel } from './SimpleZeroFillingOptionsPanel.js'; +import Zones2DOptionPanel from './Zones2DOptionPanel.js'; export const headerLabelStyle: LabelStyle = { label: { @@ -195,7 +194,6 @@ function HeaderInner(props: HeaderInnerProps) { id="full-screen" onClick={fullscreen.toggle} tooltip="Full screen" - className="windowButton" icon={} /> )} diff --git a/src/component/header/HeaderWrapper.tsx b/src/component/header/HeaderWrapper.tsx index 7634f088b..7381bb4c9 100644 --- a/src/component/header/HeaderWrapper.tsx +++ b/src/component/header/HeaderWrapper.tsx @@ -1,4 +1,4 @@ -import { CSSProperties, ReactNode } from 'react'; +import type { CSSProperties, ReactNode } from 'react'; const containerStyle: CSSProperties = { display: 'flex', diff --git a/src/component/header/RangesPickingOptionPanel.tsx b/src/component/header/RangesPickingOptionPanel.tsx index e256fc833..7b580eb29 100644 --- a/src/component/header/RangesPickingOptionPanel.tsx +++ b/src/component/header/RangesPickingOptionPanel.tsx @@ -1,19 +1,19 @@ -import { Checkbox, Button } from '@blueprintjs/core'; +import { Button, Checkbox } from '@blueprintjs/core'; import { yupResolver } from '@hookform/resolvers/yup'; import { useForm } from 'react-hook-form'; import * as Yup from 'yup'; -import { useDispatch } from '../context/DispatchContext'; -import { useToaster } from '../context/ToasterContext'; -import Label from '../elements/Label'; -import { NumberInput2Controller } from '../elements/NumberInput2Controller'; +import { useDispatch } from '../context/DispatchContext.js'; +import { useToaster } from '../context/ToasterContext.js'; +import Label from '../elements/Label.js'; +import { NumberInput2Controller } from '../elements/NumberInput2Controller.js'; import { MIN_AREA_POINTS, useCheckPointsNumberInWindowArea, -} from '../hooks/useCheckPointsNumberInWindowArea'; +} from '../hooks/useCheckPointsNumberInWindowArea.js'; -import { headerLabelStyle } from './Header'; -import { HeaderWrapper } from './HeaderWrapper'; +import { headerLabelStyle } from './Header.js'; +import { HeaderWrapper } from './HeaderWrapper.js'; interface AutoRangesOptions { minMaxRatio: number; diff --git a/src/component/header/SimpleApodizationOptionsPanel.tsx b/src/component/header/SimpleApodizationOptionsPanel.tsx index e986f7d36..7a94bc22f 100644 --- a/src/component/header/SimpleApodizationOptionsPanel.tsx +++ b/src/component/header/SimpleApodizationOptionsPanel.tsx @@ -1,15 +1,16 @@ import { Checkbox } from '@blueprintjs/core'; -import { Filters, Filter } from 'nmr-processing'; +import type { Filter } from 'nmr-processing'; +import { Filters } from 'nmr-processing'; import { memo } from 'react'; -import ActionButtons from '../elements/ActionButtons'; -import Label from '../elements/Label'; -import { NumberInput2Controller } from '../elements/NumberInput2Controller'; -import { useFilter } from '../hooks/useFilter'; -import { useSharedApodization } from '../panels/filtersPanel/Filters/hooks/useSharedApodization'; +import ActionButtons from '../elements/ActionButtons.js'; +import Label from '../elements/Label.js'; +import { NumberInput2Controller } from '../elements/NumberInput2Controller.js'; +import { useFilter } from '../hooks/useFilter.js'; +import { useSharedApodization } from '../panels/filtersPanel/Filters/hooks/useSharedApodization.js'; -import { headerLabelStyle } from './Header'; -import { HeaderWrapper } from './HeaderWrapper'; +import { headerLabelStyle } from './Header.js'; +import { HeaderWrapper } from './HeaderWrapper.js'; interface ApodizationOptionsInnerPanelProps { filter: Filter | null; diff --git a/src/component/header/SimpleBaseLineCorrectionOptionsPanel.tsx b/src/component/header/SimpleBaseLineCorrectionOptionsPanel.tsx index 99d58420c..fdd74034b 100644 --- a/src/component/header/SimpleBaseLineCorrectionOptionsPanel.tsx +++ b/src/component/header/SimpleBaseLineCorrectionOptionsPanel.tsx @@ -1,21 +1,22 @@ import { Checkbox } from '@blueprintjs/core'; import { Select } from '@blueprintjs/select'; -import { Filter, Filters } from 'nmr-processing'; +import type { Filter } from 'nmr-processing'; +import { Filters } from 'nmr-processing'; import { memo } from 'react'; import { Button } from 'react-science/ui'; -import ActionButtons from '../elements/ActionButtons'; -import Label from '../elements/Label'; -import { NumberInput2Controller } from '../elements/NumberInput2Controller'; -import { useFilter } from '../hooks/useFilter'; +import ActionButtons from '../elements/ActionButtons.js'; +import Label from '../elements/Label.js'; +import { NumberInput2Controller } from '../elements/NumberInput2Controller.js'; +import { useFilter } from '../hooks/useFilter.js'; import { baselineCorrectionsAlgorithms, getBaselineData, useBaselineCorrection, -} from '../panels/filtersPanel/Filters/hooks/useBaselineCorrection'; +} from '../panels/filtersPanel/Filters/hooks/useBaselineCorrection.js'; -import { headerLabelStyle } from './Header'; -import { HeaderWrapper } from './HeaderWrapper'; +import { headerLabelStyle } from './Header.js'; +import { HeaderWrapper } from './HeaderWrapper.js'; interface BaseLineCorrectionInnerPanelProps { filter: Filter | null; diff --git a/src/component/header/SimplePhaseCorrectionOptionsPanel.tsx b/src/component/header/SimplePhaseCorrectionOptionsPanel.tsx index 36dc50699..c1619b4db 100644 --- a/src/component/header/SimplePhaseCorrectionOptionsPanel.tsx +++ b/src/component/header/SimplePhaseCorrectionOptionsPanel.tsx @@ -2,16 +2,16 @@ import { Select } from '@blueprintjs/select'; import { Filters } from 'nmr-processing'; import { Button } from 'react-science/ui'; -import ActionButtons from '../elements/ActionButtons'; -import InputRange from '../elements/InputRange'; -import { useFilter } from '../hooks/useFilter'; +import ActionButtons from '../elements/ActionButtons.js'; +import InputRange from '../elements/InputRange.js'; +import { useFilter } from '../hooks/useFilter.js'; +import type { AlgorithmItem } from '../panels/filtersPanel/Filters/hooks/usePhaseCorrection.js'; import { algorithms, - AlgorithmItem, usePhaseCorrection, -} from '../panels/filtersPanel/Filters/hooks/usePhaseCorrection'; +} from '../panels/filtersPanel/Filters/hooks/usePhaseCorrection.js'; -import { HeaderWrapper } from './HeaderWrapper'; +import { HeaderWrapper } from './HeaderWrapper.js'; export function SimplePhaseCorrectionOptionsPanel() { const filter = useFilter(Filters.phaseCorrection.id); diff --git a/src/component/header/SimplePhaseCorrectionTwoDimensionsPanel.tsx b/src/component/header/SimplePhaseCorrectionTwoDimensionsPanel.tsx index 237ea808c..5463c6dde 100644 --- a/src/component/header/SimplePhaseCorrectionTwoDimensionsPanel.tsx +++ b/src/component/header/SimplePhaseCorrectionTwoDimensionsPanel.tsx @@ -1,23 +1,22 @@ /** @jsxImportSource @emotion/react */ import { Select } from '@blueprintjs/select'; -import { css } from '@emotion/react'; import { Filters } from 'nmr-processing'; import { FaRulerHorizontal, FaRulerVertical } from 'react-icons/fa'; import { MdLooksTwo } from 'react-icons/md'; import { Button, Toolbar } from 'react-science/ui'; -import ActionButtons from '../elements/ActionButtons'; -import InputRange from '../elements/InputRange'; -import Label from '../elements/Label'; -import { useFilter } from '../hooks/useFilter'; +import ActionButtons from '../elements/ActionButtons.js'; +import InputRange from '../elements/InputRange.js'; +import Label from '../elements/Label.js'; +import { useFilter } from '../hooks/useFilter.js'; +import type { AlgorithmItem } from '../panels/filtersPanel/Filters/hooks/usePhaseCorrectionTwoDimensions.js'; import { phaseCorrectionalAlgorithms, usePhaseCorrectionTwoDimensions, - AlgorithmItem, -} from '../panels/filtersPanel/Filters/hooks/usePhaseCorrectionTwoDimensions'; +} from '../panels/filtersPanel/Filters/hooks/usePhaseCorrectionTwoDimensions.js'; -import { headerLabelStyle } from './Header'; -import { HeaderWrapper } from './HeaderWrapper'; +import { headerLabelStyle } from './Header.js'; +import { HeaderWrapper } from './HeaderWrapper.js'; export function SimplePhaseCorrectionTwoDimensionsPanel() { const filter = useFilter(Filters.phaseCorrectionTwoDimensions.id); @@ -55,18 +54,12 @@ export function SimplePhaseCorrectionTwoDimensionsPanel() {