diff --git a/Dockerfile b/Dockerfile index 91d61460f..5b9df1090 100644 --- a/Dockerfile +++ b/Dockerfile @@ -9,11 +9,11 @@ COPY package.json package-lock.json ./ FROM base AS dependencies # install node packages #RUN npm set progress=false && npm config set depth 0 -RUN npm install --legacy-peer-deps +RUN npm ci --legacy-peer-deps # BUILD STAGE # run NPM build -FROM dependencies as build +FROM dependencies AS build # If an app is supposed to be deployed in a subdir, this is the place to specify that # Make sure that React app is built using the right path context COPY . . diff --git a/NEWS.cs.md b/NEWS.cs.md index 6ffba211a..54aeeb947 100644 --- a/NEWS.cs.md +++ b/NEWS.cs.md @@ -1,3 +1,9 @@ +#### Verze 3.3.0 + +- Přidána možnost stáhnout anotovaný soubor bez nepotvrzených výskytů. +- Upraveno fulltextové vyhledávání - nově se zobrazuje informace o atributu, ve kterém byla shoda nalezena. +- Do fasetového vyhledávání přidána možnost filtrovat dle příkladů (`skos:example`). + #### Verze 3.2.0 - Přidána podpora pro import slovníků z MS Excel. diff --git a/NEWS.en.md b/NEWS.en.md index 4462c1088..d48dc9757 100644 --- a/NEWS.en.md +++ b/NEWS.en.md @@ -1,3 +1,9 @@ +#### Version 3.3.0 + +- Added the possibility to download annotated file without unconfirmed occurrences. +- Enhanced fulltext search - now it shows information about the attribute in which a match was found. +- Added support for filtering by example (`skos:example`) in the faceted search. + #### Version 3.2.0 - Added support for importing a vocabulary from MS Excel. diff --git a/doc/development.md b/doc/development.md index 0ae5745e5..1c2089ea7 100644 --- a/doc/development.md +++ b/doc/development.md @@ -23,7 +23,7 @@ marking it as production-ready. ## Development Requirements -Unless you are using Docker to build the project, **Node.js 14** or later and **npm 7** or later (due to using lockfile v2) are required. Node.js 16 and npm 8 is recommended. +Unless you are using Docker to build the project, **Node.js 20** or later and **npm 8** or later are required. ## Tests @@ -124,15 +124,6 @@ tracking and the corresponding loading mask. See `TermChangeFrequency` for usage - Tests can be debugged directly in IDEA just like JUnit tests - IDEA is able to run singular tests. - The application can be debugged in IDEA as well, see the [JetBrains blog](https://blog.jetbrains.com/webstorm/2017/01/debugging-react-apps/). -## Mocking Server REST API - -It is possible to mock server REST API, so that the application can be developed and run without having to start the backend application. -To do so, use `npm run start-mock-rest`, which sets environment variables telling the app to mock the REST API. Now, the mock API is set up -in `src/util/Ajax`, function `mockRestApi`, we are using [Axios Mock Adapter](https://github.com/ctimmerm/axios-mock-adapter). The usage should be -fairly intuitive. Data should be kept in JSON files in `src/rest-mock` (has to be in `src`, otherwise webpack refuses to import the data). - -However, note that the current mocked API does not cover the actual backend REST API anymore, and it is recommended to run the backend (e.g. in Docker) for real and connect to it instead. - ## Adjusting Bootstrap Styles It is possible to adjust the styling of the application. We are using Bootstrap which provides SCSS definitions which can be overridden. Based on the diff --git a/package-lock.json b/package-lock.json index a1da7b351..e793b0189 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,37 +1,37 @@ { "name": "termit-ui", - "version": "3.2.0", + "version": "3.3.0", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "termit-ui", - "version": "3.2.0", + "version": "3.3.0", "license": "GPL-3.0-only", "dependencies": { - "@formatjs/intl-pluralrules": "^5.2.4", - "@formatjs/intl-relativetimeformat": "^11.2.4", - "@fortawesome/fontawesome-free": "^6.4.0", + "@formatjs/intl-pluralrules": "^5.3.1", + "@formatjs/intl-relativetimeformat": "^11.4.1", + "@fortawesome/fontawesome-free": "^6.6.0", "@opendata-mvcr/assembly-line-shared": "^0.3.2", - "apexcharts": "^3.41.0", - "axios": "^1.6.5", + "apexcharts": "^3.54.0", + "axios": "^1.7.7", "bootstrap": "4.6.2", "chart.js": "^3.9.1", - "classnames": "^2.3.2", + "classnames": "^2.5.1", "dom-serializer": "^1.3.2", "domhandler": "^4.3.1", "easymde": "2.18.0", "html-to-react": "1.5.0", "htmlparser2": "^4.1.0", - "intelligent-tree-select": "0.11.4", + "intelligent-tree-select": "0.11.8", "iso-639-1": "^2.1.15", - "javascript-time-ago": "2.5.9", + "javascript-time-ago": "2.5.11", "js-cookie": "^3.0.5", "jsonld": "8.3.2", "last": "^1.1.0", "ld-query": "^2.6.1", "lodash": "^4.17.21", - "luxon": "^3.3.0", + "luxon": "^3.5.0", "marked": "^9.1.6", "object-assign": "4.1.1", "oidc-client": "^1.11.5", @@ -63,7 +63,8 @@ "redux-thunk": "^2.4.2", "resolve": "1.22.2", "simple-xpath-position": "^2.0.2", - "uuid": "^9.0.0", + "use-debounce": "^10.0.4", + "uuid": "^10.0.0", "whatwg-fetch": "3.6.2", "whatwg-mimetype": "3.0.0" }, @@ -73,8 +74,8 @@ "@types/enzyme": "^3.10.13", "@types/jest": "^27.4.1", "@types/js-cookie": "^3.0.3", - "@types/lodash": "^4.14.195", - "@types/luxon": "^3.3.0", + "@types/lodash": "^4.17.10", + "@types/luxon": "^3.4.2", "@types/node": "^18.11.17", "@types/react": "^17.0.61", "@types/react-dom": "^17.0.20", @@ -82,12 +83,12 @@ "@types/react-highlight-words": "^0.16.4", "@types/react-router-dom": "^5.3.3", "@types/react-table": "^7.7.14", - "@types/redux-logger": "^3.0.9", + "@types/redux-logger": "^3.0.13", "@types/redux-mock-store": "^1.0.3", - "@types/uuid": "^9.0.2", + "@types/uuid": "^10.0.0", "@types/whatwg-mimetype": "^2.1.1", "@wojtekmaj/enzyme-adapter-react-17": "^0.8.0", - "axios-mock-adapter": "^1.22.0", + "axios-mock-adapter": "^2.1.0", "babel-plugin-macros": "2.8.0", "cross-env": "^7.0.3", "enzyme": "^3.11.0", @@ -96,8 +97,8 @@ "jest-localstorage-mock": "^2.4.26", "jest-react-hooks-shallow": "^1.5.1", "jest-watch-typeahead": "^0.6.5", - "prettier": "2.3.0", - "pretty-quick": "^3.1.3", + "prettier": "2.8.8", + "pretty-quick": "^3.3.1", "raw.macro": "0.6.2", "redux-mock-store": "^1.5.4", "sass": "^1.63.3", @@ -2145,15 +2146,15 @@ } }, "node_modules/@emotion/babel-plugin": { - "version": "11.11.0", - "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.11.0.tgz", - "integrity": "sha512-m4HEDZleaaCH+XgDDsPF15Ht6wTLsgDTeR3WYj9Q/k76JtWhrJjcP4+/XlG8LGT/Rol9qUfOIztXeA84ATpqPQ==", + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.12.0.tgz", + "integrity": "sha512-y2WQb+oP8Jqvvclh8Q55gLUyb7UFvgv7eJfsj7td5TToBrIUtPay2kMrZi4xjq9qw2vD0ZR5fSho0yqoFgX7Rw==", "dependencies": { "@babel/helper-module-imports": "^7.16.7", "@babel/runtime": "^7.18.3", - "@emotion/hash": "^0.9.1", - "@emotion/memoize": "^0.8.1", - "@emotion/serialize": "^1.1.2", + "@emotion/hash": "^0.9.2", + "@emotion/memoize": "^0.9.0", + "@emotion/serialize": "^1.2.0", "babel-plugin-macros": "^3.1.0", "convert-source-map": "^1.5.0", "escape-string-regexp": "^4.0.0", @@ -2203,39 +2204,39 @@ } }, "node_modules/@emotion/cache": { - "version": "11.11.0", - "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.11.0.tgz", - "integrity": "sha512-P34z9ssTCBi3e9EI1ZsWpNHcfY1r09ZO0rZbRO2ob3ZQMnFI35jB536qoXbkdesr5EUhYi22anuEJuyxifaqAQ==", - "dependencies": { - "@emotion/memoize": "^0.8.1", - "@emotion/sheet": "^1.2.2", - "@emotion/utils": "^1.2.1", - "@emotion/weak-memoize": "^0.3.1", + "version": "11.13.1", + "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.13.1.tgz", + "integrity": "sha512-iqouYkuEblRcXmylXIwwOodiEK5Ifl7JcX7o6V4jI3iW4mLXX3dmt5xwBtIkJiQEXFAI+pC8X0i67yiPkH9Ucw==", + "dependencies": { + "@emotion/memoize": "^0.9.0", + "@emotion/sheet": "^1.4.0", + "@emotion/utils": "^1.4.0", + "@emotion/weak-memoize": "^0.4.0", "stylis": "4.2.0" } }, "node_modules/@emotion/hash": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.1.tgz", - "integrity": "sha512-gJB6HLm5rYwSLI6PQa+X1t5CFGrv1J1TWG+sOyMCeKz2ojaj6Fnl/rZEspogG+cvqbt4AE/2eIyD2QfLKTBNlQ==" + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.2.tgz", + "integrity": "sha512-MyqliTZGuOm3+5ZRSaaBGP3USLw6+EGykkwZns2EPC5g8jJ4z9OrdZY9apkl3+UP9+sdz76YYkwCKP5gh8iY3g==" }, "node_modules/@emotion/memoize": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.8.1.tgz", - "integrity": "sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA==" + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.9.0.tgz", + "integrity": "sha512-30FAj7/EoJ5mwVPOWhAyCX+FPfMDrVecJAM+Iw9NRoSl4BBAQeqj4cApHHUXOVvIPgLVDsCFoz/hGD+5QQD1GQ==" }, "node_modules/@emotion/react": { - "version": "11.11.3", - "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.11.3.tgz", - "integrity": "sha512-Cnn0kuq4DoONOMcnoVsTOR8E+AdnKFf//6kUWc4LCdnxj31pZWn7rIULd6Y7/Js1PiPHzn7SKCM9vB/jBni8eA==", + "version": "11.13.3", + "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.13.3.tgz", + "integrity": "sha512-lIsdU6JNrmYfJ5EbUCf4xW1ovy5wKQ2CkPRM4xogziOxH1nXxBSjpC9YqbFAP7circxMfYp+6x676BqWcEiixg==", "dependencies": { "@babel/runtime": "^7.18.3", - "@emotion/babel-plugin": "^11.11.0", - "@emotion/cache": "^11.11.0", - "@emotion/serialize": "^1.1.3", - "@emotion/use-insertion-effect-with-fallbacks": "^1.0.1", - "@emotion/utils": "^1.2.1", - "@emotion/weak-memoize": "^0.3.1", + "@emotion/babel-plugin": "^11.12.0", + "@emotion/cache": "^11.13.0", + "@emotion/serialize": "^1.3.1", + "@emotion/use-insertion-effect-with-fallbacks": "^1.1.0", + "@emotion/utils": "^1.4.0", + "@emotion/weak-memoize": "^0.4.0", "hoist-non-react-statics": "^3.3.1" }, "peerDependencies": { @@ -2248,44 +2249,44 @@ } }, "node_modules/@emotion/serialize": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.1.3.tgz", - "integrity": "sha512-iD4D6QVZFDhcbH0RAG1uVu1CwVLMWUkCvAqqlewO/rxf8+87yIBAlt4+AxMiiKPLs5hFc0owNk/sLLAOROw3cA==", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.3.2.tgz", + "integrity": "sha512-grVnMvVPK9yUVE6rkKfAJlYZgo0cu3l9iMC77V7DW6E1DUIrU68pSEXRmFZFOFB1QFo57TncmOcvcbMDWsL4yA==", "dependencies": { - "@emotion/hash": "^0.9.1", - "@emotion/memoize": "^0.8.1", - "@emotion/unitless": "^0.8.1", - "@emotion/utils": "^1.2.1", + "@emotion/hash": "^0.9.2", + "@emotion/memoize": "^0.9.0", + "@emotion/unitless": "^0.10.0", + "@emotion/utils": "^1.4.1", "csstype": "^3.0.2" } }, "node_modules/@emotion/sheet": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.2.2.tgz", - "integrity": "sha512-0QBtGvaqtWi+nx6doRwDdBIzhNdZrXUppvTM4dtZZWEGTXL/XE/yJxLMGlDT1Gt+UHH5IX1n+jkXyytE/av7OA==" + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.4.0.tgz", + "integrity": "sha512-fTBW9/8r2w3dXWYM4HCB1Rdp8NLibOw2+XELH5m5+AkWiL/KqYX6dc0kKYlaYyKjrQ6ds33MCdMPEwgs2z1rqg==" }, "node_modules/@emotion/unitless": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.8.1.tgz", - "integrity": "sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ==" + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.10.0.tgz", + "integrity": "sha512-dFoMUuQA20zvtVTuxZww6OHoJYgrzfKM1t52mVySDJnMSEa08ruEvdYQbhvyu6soU+NeLVd3yKfTfT0NeV6qGg==" }, "node_modules/@emotion/use-insertion-effect-with-fallbacks": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.0.1.tgz", - "integrity": "sha512-jT/qyKZ9rzLErtrjGgdkMBn2OP8wl0G3sQlBb3YPryvKHsjvINUhVaPFfP+fpBcOkmrVOVEEHQFJ7nbj2TH2gw==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.1.0.tgz", + "integrity": "sha512-+wBOcIV5snwGgI2ya3u99D7/FJquOIniQT1IKyDsBmEgwvpxMNeS65Oib7OnE2d2aY+3BU4OiH+0Wchf8yk3Hw==", "peerDependencies": { "react": ">=16.8.0" } }, "node_modules/@emotion/utils": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.2.1.tgz", - "integrity": "sha512-Y2tGf3I+XVnajdItskUCn6LX+VUDmP6lTL4fcqsXAv43dnlbZiuW4MWQW38rW/BVWSE7Q/7+XQocmpnRYILUmg==" + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.4.1.tgz", + "integrity": "sha512-BymCXzCG3r72VKJxaYVwOXATqXIZ85cuvg0YOUDxMGNrKc1DJRZk8MgV5wyXRyEayIMd4FuXJIUgTBXvDNW5cA==" }, "node_modules/@emotion/weak-memoize": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.3.1.tgz", - "integrity": "sha512-EsBwpc7hBUJWAsNPBmJy4hxWx12v6bshQsldrVmjxJoc3isbxhOrF2IcCpaXxfvq03NwkI7sbsOLXbYuqF/8Ww==" + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.4.0.tgz", + "integrity": "sha512-snKqtPW01tN0ui7yu9rGv69aJXr/a/Ywvl11sUjNtEcRc+ng/mQriFL0wLXMef74iHa/EkftbDzU9F8iFbH+zg==" }, "node_modules/@eslint/eslintrc": { "version": "1.0.5", @@ -2364,26 +2365,26 @@ } }, "node_modules/@floating-ui/core": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.6.0.tgz", - "integrity": "sha512-PcF++MykgmTj3CIyOQbKA/hDzOAiqI3mhuoN44WRCopIs1sgoDoU4oty4Jtqaj/y3oDU6fnVSm4QG0a3t5i0+g==", + "version": "1.6.8", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.6.8.tgz", + "integrity": "sha512-7XJ9cPU+yI2QeLS+FCSlqNFZJq8arvswefkZrYI1yQBbftw6FyrZOxYSh+9S7z7TpeWlRt9zJ5IhM1WIL334jA==", "dependencies": { - "@floating-ui/utils": "^0.2.1" + "@floating-ui/utils": "^0.2.8" } }, "node_modules/@floating-ui/dom": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.6.3.tgz", - "integrity": "sha512-RnDthu3mzPlQ31Ss/BTwQ1zjzIhr3lk1gZB1OC56h/1vEtaXkESrOqL5fQVMfXpwGtRwX+YsZBdyHtJMQnkArw==", + "version": "1.6.12", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.6.12.tgz", + "integrity": "sha512-NP83c0HjokcGVEMeoStg317VD9W7eDlGK7457dMBANbKA6GJZdc7rjujdgqzTaz93jkGgc5P/jeWbaCHnMNc+w==", "dependencies": { - "@floating-ui/core": "^1.0.0", - "@floating-ui/utils": "^0.2.0" + "@floating-ui/core": "^1.6.0", + "@floating-ui/utils": "^0.2.8" } }, "node_modules/@floating-ui/utils": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.1.tgz", - "integrity": "sha512-9TANp6GPoMtYzQdt54kfAyMmz1+osLlXdg2ENroU7zzrtflTLrrC/lgrIfaSe+Wu0b89GKccT7vxXA0MoAIO+Q==" + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.8.tgz", + "integrity": "sha512-kym7SodPp8/wloecOpcmSnWJsK7M0E5Wg8UcFA+uO4B9s5d0ywXOEro/8HM9x0rW+TljRzul/14UYz3TleT3ig==" }, "node_modules/@formatjs/ecma402-abstract": { "version": "1.17.0", @@ -2472,30 +2473,81 @@ } }, "node_modules/@formatjs/intl-pluralrules": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/@formatjs/intl-pluralrules/-/intl-pluralrules-5.2.4.tgz", - "integrity": "sha512-6meo376d8I4zikRFSUxATLnqzGwezmc57SmToP4z1/NQwTHXGe0yIG/ABPbO3QMx7IUkofH/ROP3A4DhtPTpnA==", + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/@formatjs/intl-pluralrules/-/intl-pluralrules-5.3.1.tgz", + "integrity": "sha512-KcBiwhjFyIDiWEG6OAaoA2DbEw4zgk0UlGpBrNpZI3LfogmC0tWfh5jKofokT3k7Gb57sA0REEIr60D0dqPN7g==", "dependencies": { - "@formatjs/ecma402-abstract": "1.17.0", - "@formatjs/intl-localematcher": "0.4.0", - "tslib": "^2.4.0" + "@formatjs/ecma402-abstract": "2.2.1", + "@formatjs/intl-localematcher": "0.5.6", + "tslib": "2" + } + }, + "node_modules/@formatjs/intl-pluralrules/node_modules/@formatjs/ecma402-abstract": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-2.2.1.tgz", + "integrity": "sha512-O4ywpkdJybrjFc9zyL8qK5aklleIAi5O4nYhBVJaOFtCkNrnU+lKFeJOFC48zpsZQmR8Aok2V79hGpHnzbmFpg==", + "dependencies": { + "@formatjs/fast-memoize": "2.2.2", + "@formatjs/intl-localematcher": "0.5.6", + "tslib": "2" + } + }, + "node_modules/@formatjs/intl-pluralrules/node_modules/@formatjs/fast-memoize": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@formatjs/fast-memoize/-/fast-memoize-2.2.2.tgz", + "integrity": "sha512-mzxZcS0g1pOzwZTslJOBTmLzDXseMLLvnh25ymRilCm8QLMObsQ7x/rj9GNrH0iUhZMlFisVOD6J1n6WQqpKPQ==", + "dependencies": { + "tslib": "2" + } + }, + "node_modules/@formatjs/intl-pluralrules/node_modules/@formatjs/intl-localematcher": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/@formatjs/intl-localematcher/-/intl-localematcher-0.5.6.tgz", + "integrity": "sha512-roz1+Ba5e23AHX6KUAWmLEyTRZegM5YDuxuvkHCyK3RJddf/UXB2f+s7pOMm9ktfPGla0g+mQXOn5vsuYirnaA==", + "dependencies": { + "tslib": "2" } }, "node_modules/@formatjs/intl-relativetimeformat": { - "version": "11.2.4", - "resolved": "https://registry.npmjs.org/@formatjs/intl-relativetimeformat/-/intl-relativetimeformat-11.2.4.tgz", - "integrity": "sha512-AJtPvpF7ub/nlu+PmysW9qho7Bev/v0qBNamY4Olh81P73ayf6JgFhxSxuLI2IxuHbXwqPb0iNBhvEXGBklCbQ==", + "version": "11.4.1", + "resolved": "https://registry.npmjs.org/@formatjs/intl-relativetimeformat/-/intl-relativetimeformat-11.4.1.tgz", + "integrity": "sha512-gYonywpv55uJ11RvfKzwt8S9FHUmlB+Tn1e8ppXmAwRBpQe5fRwk0zejFEJtKXIC42exoIrpxPaWgeg1uJe2hg==", "dependencies": { - "@formatjs/ecma402-abstract": "1.17.0", - "@formatjs/intl-localematcher": "0.4.0", - "tslib": "^2.4.0" + "@formatjs/ecma402-abstract": "2.2.1", + "@formatjs/intl-localematcher": "0.5.6", + "tslib": "2" + } + }, + "node_modules/@formatjs/intl-relativetimeformat/node_modules/@formatjs/ecma402-abstract": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-2.2.1.tgz", + "integrity": "sha512-O4ywpkdJybrjFc9zyL8qK5aklleIAi5O4nYhBVJaOFtCkNrnU+lKFeJOFC48zpsZQmR8Aok2V79hGpHnzbmFpg==", + "dependencies": { + "@formatjs/fast-memoize": "2.2.2", + "@formatjs/intl-localematcher": "0.5.6", + "tslib": "2" + } + }, + "node_modules/@formatjs/intl-relativetimeformat/node_modules/@formatjs/fast-memoize": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@formatjs/fast-memoize/-/fast-memoize-2.2.2.tgz", + "integrity": "sha512-mzxZcS0g1pOzwZTslJOBTmLzDXseMLLvnh25ymRilCm8QLMObsQ7x/rj9GNrH0iUhZMlFisVOD6J1n6WQqpKPQ==", + "dependencies": { + "tslib": "2" + } + }, + "node_modules/@formatjs/intl-relativetimeformat/node_modules/@formatjs/intl-localematcher": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/@formatjs/intl-localematcher/-/intl-localematcher-0.5.6.tgz", + "integrity": "sha512-roz1+Ba5e23AHX6KUAWmLEyTRZegM5YDuxuvkHCyK3RJddf/UXB2f+s7pOMm9ktfPGla0g+mQXOn5vsuYirnaA==", + "dependencies": { + "tslib": "2" } }, "node_modules/@fortawesome/fontawesome-free": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-free/-/fontawesome-free-6.4.0.tgz", - "integrity": "sha512-0NyytTlPJwB/BF5LtRV8rrABDbe3TdTXqNB3PdZ+UUUZAEIrdOJdmABqKjt4AXwIoJNaRVVZEXxpNrqvE1GAYQ==", - "hasInstallScript": true, + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-free/-/fontawesome-free-6.6.0.tgz", + "integrity": "sha512-60G28ke/sXdtS9KZCpZSHHkCbdsOGEhIUGlwq6yhY74UpTiToIh8np7A8yphhM4BWsvNFtIvLpi4co+h9Mr9Ow==", "engines": { "node": ">=6" } @@ -3728,15 +3780,15 @@ "integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4=" }, "node_modules/@types/lodash": { - "version": "4.14.195", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.195.tgz", - "integrity": "sha512-Hwx9EUgdwf2GLarOjQp5ZH8ZmblzcbTBC2wtQWNKARBSxM9ezRIAUpeDTgoQRAFB0+8CNWXVA9+MaSOzOF3nPg==", + "version": "4.17.10", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.10.tgz", + "integrity": "sha512-YpS0zzoduEhuOWjAotS6A5AVCva7X4lVlYLF0FYHAY9sdraBfnatttHItlWeZdGhuEkf+OzMNg2ZYAx8t+52uQ==", "dev": true }, "node_modules/@types/luxon": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/@types/luxon/-/luxon-3.3.0.tgz", - "integrity": "sha512-uKRI5QORDnrGFYgcdAVnHvEIvEZ8noTpP/Bg+HeUzZghwinDlIS87DEenV5r1YoOF9G4x600YsUXLWZ19rmTmg==", + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/@types/luxon/-/luxon-3.4.2.tgz", + "integrity": "sha512-TifLZlFudklWlMBfhubvgqTXRzLDI5pCbGa4P8a3wPyUQSW+1xQ5eDsreP9DWHX3tjq1ke96uYG/nwundroWcA==", "dev": true }, "node_modules/@types/marked": { @@ -3757,12 +3809,6 @@ "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==" }, - "node_modules/@types/minimatch": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz", - "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==", - "dev": true - }, "node_modules/@types/node": { "version": "18.11.17", "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.17.tgz", @@ -3874,22 +3920,28 @@ } }, "node_modules/@types/react-transition-group": { - "version": "4.4.10", - "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.10.tgz", - "integrity": "sha512-hT/+s0VQs2ojCX823m60m5f0sL5idt9SO6Tj6Dg+rdphGPIeJbJ6CxvBYkgkGKrYeDjvIpKTR38UzmtHJOGW3Q==", + "version": "4.4.11", + "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.11.tgz", + "integrity": "sha512-RM05tAniPZ5DZPzzNFP+DmrcOdD0efDUxMy3145oljWSl3x9ZV5vhme98gTxFrj2lhXvmGNnUiuDyJgY9IKkNA==", "dependencies": { "@types/react": "*" } }, "node_modules/@types/redux-logger": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/@types/redux-logger/-/redux-logger-3.0.9.tgz", - "integrity": "sha512-cwYhVbYNgH01aepeMwhd0ABX6fhVB2rcQ9m80u8Fl50ZODhsZ8RhQArnLTkE7/Zrfq4Sz/taNoF7DQy9pCZSKg==", + "version": "3.0.13", + "resolved": "https://registry.npmjs.org/@types/redux-logger/-/redux-logger-3.0.13.tgz", + "integrity": "sha512-jylqZXQfMxahkuPcO8J12AKSSCQngdEWQrw7UiLUJzMBcv1r4Qg77P6mjGLjM27e5gFQDPD8vwUMJ9AyVxFSsg==", "dev": true, "dependencies": { - "redux": "^4.0.0" + "redux": "^5.0.0" } }, + "node_modules/@types/redux-logger/node_modules/redux": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/redux/-/redux-5.0.1.tgz", + "integrity": "sha512-M9/ELqF6fy8FwmkpnF0S3YKOqMyoWJ4+CS5Efg2ct3oY9daQvd/Pc71FpGZsVsbl3Cpb+IIcjBDUnnyBdQbq4w==", + "dev": true + }, "node_modules/@types/redux-mock-store": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/@types/redux-mock-store/-/redux-mock-store-1.0.3.tgz", @@ -3976,9 +4028,9 @@ "integrity": "sha512-EwmlvuaxPNej9+T4v5AuBPJa2x2UOJVdjCtDHgcDqitUeOtjnJKJ+apYjVcAoBEMjKW1VVFGZLUb5+qqa09XFA==" }, "node_modules/@types/uuid": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-9.0.2.tgz", - "integrity": "sha512-kNnC1GFBLuhImSnV7w4njQkUiJi0ZXUycu1rUaouPqiKlXkh77JKgdRnTAp1x5eBwcIwbtI+3otwzuIDEuDoxQ==", + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-10.0.0.tgz", + "integrity": "sha512-7gqG38EyHgyP1S+7+xomFtL+ZNHcKv6DwNaCZmJmo1vgMugyF3TCnXVg4t1uk89mLNwnLtnY3TpOpCOyp1/xHQ==", "dev": true }, "node_modules/@types/whatwg-mimetype": { @@ -4437,6 +4489,11 @@ "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==" }, + "node_modules/@yr/monotone-cubic-spline": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@yr/monotone-cubic-spline/-/monotone-cubic-spline-1.0.3.tgz", + "integrity": "sha512-FQXkOta0XBSUPHndIKON2Y9JeQz5ZeMqLYZVVK93FliNBFm7LNMIZmY6FrMEB9XPcDbE2bekMbZD6kzDkxwYjA==" + }, "node_modules/abab": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.5.tgz", @@ -4661,10 +4718,11 @@ } }, "node_modules/apexcharts": { - "version": "3.41.0", - "resolved": "https://registry.npmjs.org/apexcharts/-/apexcharts-3.41.0.tgz", - "integrity": "sha512-FJXA7NVjxs1q+ptR3b1I+pN8K/gWuXn+qLZjFz8EHvJOokdgcuwa/HSe5aC465HW/LWnrjWLSTsOQejQbQ42hQ==", + "version": "3.54.0", + "resolved": "https://registry.npmjs.org/apexcharts/-/apexcharts-3.54.0.tgz", + "integrity": "sha512-ZgI/seScffjLpwNRX/gAhIkAhpCNWiTNsdICv7qxnF0xisI23XSsaENUKIcMlyP1rbe8ECgvybDnp7plZld89A==", "dependencies": { + "@yr/monotone-cubic-spline": "^1.0.3", "svg.draggable.js": "^2.2.2", "svg.easing.js": "^2.0.0", "svg.filter.js": "^2.0.2", @@ -4698,15 +4756,6 @@ "node": ">=6.0" } }, - "node_modules/array-differ": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-3.0.0.tgz", - "integrity": "sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/array-filter": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-1.0.0.tgz", @@ -4772,15 +4821,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/arrify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", - "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/asap": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", @@ -4872,9 +4912,9 @@ } }, "node_modules/axios-mock-adapter": { - "version": "1.22.0", - "resolved": "https://registry.npmjs.org/axios-mock-adapter/-/axios-mock-adapter-1.22.0.tgz", - "integrity": "sha512-dmI0KbkyAhntUR05YY96qg2H6gg0XMl2+qTW0xmYg6Up+BFBAJYRLROMXRdDEL06/Wqwa0TJThAYvFtSFdRCZw==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/axios-mock-adapter/-/axios-mock-adapter-2.1.0.tgz", + "integrity": "sha512-AZUe4OjECGCNNssH8SOdtneiQELsqTsat3SQQCWLPjN436/H+L9AjWfV7bF+Zg/YL9cgbhrz5671hoh+Tbn98w==", "dev": true, "dependencies": { "fast-deep-equal": "^3.1.3", @@ -5242,9 +5282,9 @@ "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" }, "node_modules/body-parser": { - "version": "1.20.2", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", - "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==", + "version": "1.20.3", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz", + "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==", "dependencies": { "bytes": "3.1.2", "content-type": "~1.0.5", @@ -5254,7 +5294,7 @@ "http-errors": "2.0.0", "iconv-lite": "0.4.24", "on-finished": "2.4.1", - "qs": "6.11.0", + "qs": "6.13.0", "raw-body": "2.5.2", "type-is": "~1.6.18", "unpipe": "1.0.0" @@ -5438,12 +5478,18 @@ } }, "node_modules/call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -5705,9 +5751,9 @@ "integrity": "sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==" }, "node_modules/classnames": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.3.2.tgz", - "integrity": "sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw==" + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.5.1.tgz", + "integrity": "sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==" }, "node_modules/clean-css": { "version": "5.2.4", @@ -6679,6 +6725,22 @@ "node": ">= 10" } }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/define-lazy-prop": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", @@ -7042,9 +7104,9 @@ } }, "node_modules/encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", "engines": { "node": ">= 0.8" } @@ -7173,6 +7235,25 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "dependencies": { + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "engines": { + "node": ">= 0.4" + } + }, "node_modules/es-module-lexer": { "version": "1.5.4", "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.5.4.tgz", @@ -7892,36 +7973,36 @@ } }, "node_modules/express": { - "version": "4.19.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.19.2.tgz", - "integrity": "sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==", + "version": "4.21.0", + "resolved": "https://registry.npmjs.org/express/-/express-4.21.0.tgz", + "integrity": "sha512-VqcNGcj/Id5ZT1LZ/cfihi3ttTn+NJmkli2eZADigjq29qTlWi/hAQ43t/VLPq8+UX06FCEx3ByOYet6ZFblng==", "dependencies": { "accepts": "~1.3.8", "array-flatten": "1.1.1", - "body-parser": "1.20.2", + "body-parser": "1.20.3", "content-disposition": "0.5.4", "content-type": "~1.0.4", "cookie": "0.6.0", "cookie-signature": "1.0.6", "debug": "2.6.9", "depd": "2.0.0", - "encodeurl": "~1.0.2", + "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "etag": "~1.8.1", - "finalhandler": "1.2.0", + "finalhandler": "1.3.1", "fresh": "0.5.2", "http-errors": "2.0.0", - "merge-descriptors": "1.0.1", + "merge-descriptors": "1.0.3", "methods": "~1.1.2", "on-finished": "2.4.1", "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", + "path-to-regexp": "0.1.10", "proxy-addr": "~2.0.7", - "qs": "6.11.0", + "qs": "6.13.0", "range-parser": "~1.2.1", "safe-buffer": "5.2.1", - "send": "0.18.0", - "serve-static": "1.15.0", + "send": "0.19.0", + "serve-static": "1.16.2", "setprototypeof": "1.2.0", "statuses": "2.0.1", "type-is": "~1.6.18", @@ -7959,9 +8040,9 @@ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" }, "node_modules/express/node_modules/path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" + "version": "0.1.10", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.10.tgz", + "integrity": "sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w==" }, "node_modules/express/node_modules/safe-buffer": { "version": "5.2.1", @@ -8173,12 +8254,12 @@ } }, "node_modules/finalhandler": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", - "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz", + "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==", "dependencies": { "debug": "2.6.9", - "encodeurl": "~1.0.2", + "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "on-finished": "2.4.1", "parseurl": "~1.3.3", @@ -8454,9 +8535,12 @@ } }, "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/function.prototype.name": { "version": "1.1.4", @@ -8512,13 +8596,18 @@ "integrity": "sha1-SCG85m8cJMsDMWAr5strEsTwHEs=" }, "node_modules/get-intrinsic": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", - "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1" + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -8660,6 +8749,17 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/graceful-fs": { "version": "4.2.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", @@ -8722,11 +8822,22 @@ } }, "node_modules/has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", "dependencies": { - "get-intrinsic": "^1.1.1" + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -8757,6 +8868,17 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/he": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", @@ -9173,9 +9295,9 @@ } }, "node_modules/ignore": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", - "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", "engines": { "node": ">= 4" } @@ -9261,13 +9383,13 @@ "integrity": "sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==" }, "node_modules/intelligent-tree-select": { - "version": "0.11.4", - "resolved": "https://registry.npmjs.org/intelligent-tree-select/-/intelligent-tree-select-0.11.4.tgz", - "integrity": "sha512-PJ0Z1t2+eahPW7bOzImL51RAzBgBRTTUoXton7Mc06CywGqvK73d50PPXXDyjVlOZ1KpOD023vI1rJoLrQfBFQ==", + "version": "0.11.8", + "resolved": "https://registry.npmjs.org/intelligent-tree-select/-/intelligent-tree-select-0.11.8.tgz", + "integrity": "sha512-uhhQEz1iFD/04giG0lga83vMQbRErtNV54hzozUGS1hI+e+bJnsOfPYT2hpvzrr+qbM9t9zu/ayFH9pG6K5CLw==", "dependencies": { - "classnames": "latest", + "classnames": "^2.5.1", "react-highlight-words": "^0.20.0", - "react-select": "^5.8.0", + "react-select": "^5.8.1", "react-window": "^1.8.10" }, "peerDependencies": { @@ -9791,9 +9913,9 @@ } }, "node_modules/javascript-time-ago": { - "version": "2.5.9", - "resolved": "https://registry.npmjs.org/javascript-time-ago/-/javascript-time-ago-2.5.9.tgz", - "integrity": "sha512-pQ8mNco/9g9TqWXWWjP0EWl6i/lAQScOyEeXy5AB+f7MfLSdgyV9BJhiOD1zrIac/lrxPYOWNbyl/IW8CW5n0A==", + "version": "2.5.11", + "resolved": "https://registry.npmjs.org/javascript-time-ago/-/javascript-time-ago-2.5.11.tgz", + "integrity": "sha512-Zeyf5R7oM1fSMW9zsU3YgAYwE0bimEeF54Udn2ixGd8PUwu+z1Yc5t4Y8YScJDMHD6uCx6giLt3VJR5K4CMwbg==", "dependencies": { "relative-time-format": "^1.1.6" } @@ -10935,9 +11057,9 @@ } }, "node_modules/luxon": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/luxon/-/luxon-3.3.0.tgz", - "integrity": "sha512-An0UCfG/rSiqtAIiBPO0Y9/zAnHUZxAMiCpTd5h2smgsj7GGmcenvrvww2cqNA8/4A5ZrD1gJpHN2mIHZQF+Mg==", + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/luxon/-/luxon-3.5.0.tgz", + "integrity": "sha512-rh+Zjr6DNfUYR3bPwJEnuwDdqMbxZW7LOQfUN4B54+Cl+0o5zaU9RJ6bcidfDtC1cWCZXQ+nvX8bf6bAji37QQ==", "engines": { "node": ">=12" } @@ -11080,9 +11202,12 @@ "integrity": "sha512-QmpUu4KqDmX0plH4u+tf0riMc1KHE1+lw95cMrLlXQAFOx/xnBtwhZ52XJxd9X2O6kwKBqX32kmhbhlobD0cuw==" }, "node_modules/merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", + "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==", + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, "node_modules/merge-stream": { "version": "2.0.0", @@ -11319,22 +11444,6 @@ "multicast-dns": "cli.js" } }, - "node_modules/multimatch": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/multimatch/-/multimatch-4.0.0.tgz", - "integrity": "sha512-lDmx79y1z6i7RNx0ZGCPq1bzJ6ZoDDKbvh7jxr9SJcWLkShMzXrHbYVpTdnhNM5MXpDUxCQ4DgqVttVXlBgiBQ==", - "dev": true, - "dependencies": { - "@types/minimatch": "^3.0.3", - "array-differ": "^3.0.0", - "array-union": "^2.1.0", - "arrify": "^2.0.1", - "minimatch": "^3.0.4" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/nanoid": { "version": "3.3.7", "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", @@ -11525,9 +11634,12 @@ } }, "node_modules/object-inspect": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.0.tgz", - "integrity": "sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==", + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz", + "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==", + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -11914,9 +12026,9 @@ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" }, "node_modules/path-to-regexp": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz", - "integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.9.0.tgz", + "integrity": "sha512-xIp7/apCFJuUHdDLWe8O1HIkb0kQrOMb/0u6FXQjemHn/ii5LrIzU6bdECnsiTF/GjZkMEKg1xdiZwNqDYlZ6g==", "dependencies": { "isarray": "0.0.1" } @@ -13153,14 +13265,17 @@ } }, "node_modules/prettier": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.3.0.tgz", - "integrity": "sha512-kXtO4s0Lz/DW/IJ9QdWhAf7/NmPWQXkFr/r/WkR3vyI+0v8amTDxiaQSLzs8NBlytfLWX/7uQUMIW677yLKl4w==", + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", + "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", "bin": { "prettier": "bin-prettier.js" }, "engines": { "node": ">=10.13.0" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" } }, "node_modules/prettier-plugin-tailwindcss": { @@ -13224,39 +13339,27 @@ "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==" }, "node_modules/pretty-quick": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/pretty-quick/-/pretty-quick-3.1.3.tgz", - "integrity": "sha512-kOCi2FJabvuh1as9enxYmrnBC6tVMoVOenMaBqRfsvBHB0cbpYHjdQEpSglpASDFEXVwplpcGR4CLEaisYAFcA==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/pretty-quick/-/pretty-quick-3.3.1.tgz", + "integrity": "sha512-3b36UXfYQ+IXXqex6mCca89jC8u0mYLqFAN5eTQKoXO6oCQYcIVYZEB/5AlBHI7JPYygReM2Vv6Vom/Gln7fBg==", "dev": true, "dependencies": { - "chalk": "^3.0.0", - "execa": "^4.0.0", + "execa": "^4.1.0", "find-up": "^4.1.0", - "ignore": "^5.1.4", - "mri": "^1.1.5", - "multimatch": "^4.0.0" + "ignore": "^5.3.0", + "mri": "^1.2.0", + "picocolors": "^1.0.0", + "picomatch": "^3.0.1", + "tslib": "^2.6.2" }, "bin": { - "pretty-quick": "bin/pretty-quick.js" + "pretty-quick": "dist/cli.js" }, "engines": { "node": ">=10.13" }, "peerDependencies": { - "prettier": ">=2.0.0" - } - }, - "node_modules/pretty-quick/node_modules/chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=8" + "prettier": "^2.0.0" } }, "node_modules/pretty-quick/node_modules/execa": { @@ -13352,6 +13455,18 @@ "node": ">=8" } }, + "node_modules/pretty-quick/node_modules/picomatch": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-3.0.1.tgz", + "integrity": "sha512-I3EurrIQMlRc9IaAZnqRR044Phh2DXY+55o7uJ0V+hYZAcQYSuFWsc9q5PvyDHUSCe1Qxn/iBz+78s86zWnGag==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, "node_modules/process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", @@ -13430,9 +13545,9 @@ "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==" }, "node_modules/pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.2.tgz", + "integrity": "sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==", "dev": true, "dependencies": { "end-of-stream": "^1.1.0", @@ -13457,11 +13572,11 @@ } }, "node_modules/qs": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", - "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", + "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", "dependencies": { - "side-channel": "^1.0.4" + "side-channel": "^1.0.6" }, "engines": { "node": ">=0.6" @@ -14240,9 +14355,9 @@ } }, "node_modules/react-select": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/react-select/-/react-select-5.8.0.tgz", - "integrity": "sha512-TfjLDo58XrhP6VG5M/Mi56Us0Yt8X7xD6cDybC7yoRMUNm7BGO7qk8J0TLQOua/prb8vUOtsfnXZwfm30HGsAA==", + "version": "5.8.2", + "resolved": "https://registry.npmjs.org/react-select/-/react-select-5.8.2.tgz", + "integrity": "sha512-a/LkOckoI62710gGPQSQqUp7A10fGbH/ya3/IR49qaq3XoBvwymgD5mJgtiHxBDsutyEQfdKNycWVh8Cg8UCjw==", "dependencies": { "@babel/runtime": "^7.12.0", "@emotion/cache": "^11.4.0", @@ -14810,9 +14925,9 @@ } }, "node_modules/rollup": { - "version": "2.67.2", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.67.2.tgz", - "integrity": "sha512-hoEiBWwZtf1QdK3jZIq59L0FJj4Fiv4RplCO4pvCRC86qsoFurWB4hKQIjoRf3WvJmk5UZ9b0y5ton+62fC7Tw==", + "version": "2.79.2", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.2.tgz", + "integrity": "sha512-fS6iqSPZDs3dr/y7Od6y5nha8dW1YnbgtsyotCVvoFGKbERG++CVRFv1meyGDE1SNItQA8BrnCw7ScdAhRJ3XQ==", "bin": { "rollup": "dist/bin/rollup" }, @@ -15015,9 +15130,9 @@ } }, "node_modules/send": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", - "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz", + "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==", "dependencies": { "debug": "2.6.9", "depd": "2.0.0", @@ -15058,6 +15173,14 @@ "node": ">= 0.8" } }, + "node_modules/send/node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "engines": { + "node": ">= 0.8" + } + }, "node_modules/send/node_modules/ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", @@ -15134,19 +15257,35 @@ "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==" }, "node_modules/serve-static": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", - "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "version": "1.16.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz", + "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==", "dependencies": { - "encodeurl": "~1.0.2", + "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "parseurl": "~1.3.3", - "send": "0.18.0" + "send": "0.19.0" }, "engines": { "node": ">= 0.8.0" } }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/setimmediate": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", @@ -15197,13 +15336,17 @@ } }, "node_modules/side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", "dependencies": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -16424,9 +16567,9 @@ } }, "node_modules/tslib": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", - "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.0.tgz", + "integrity": "sha512-jWVzBLplnCmoaTr13V9dYbiQ99wvZRd0vNWaDRg+aVYRcjDF3nDksxFDE/+fkXnKhpnUUkmx5pK/v8mCtLVqZA==" }, "node_modules/tsutils": { "version": "3.21.0", @@ -16767,6 +16910,17 @@ "requires-port": "^1.0.0" } }, + "node_modules/use-debounce": { + "version": "10.0.4", + "resolved": "https://registry.npmjs.org/use-debounce/-/use-debounce-10.0.4.tgz", + "integrity": "sha512-6Cf7Yr7Wk7Kdv77nnJMf6de4HuDE4dTxKij+RqE9rufDsI6zsbjyAxcH5y2ueJCQAnfgKbzXbZHYlkFwmBlWkw==", + "engines": { + "node": ">= 16.0.0" + }, + "peerDependencies": { + "react": "*" + } + }, "node_modules/use-isomorphic-layout-effect": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.1.2.tgz", @@ -16816,9 +16970,13 @@ } }, "node_modules/uuid": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz", - "integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==", + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-10.0.0.tgz", + "integrity": "sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], "bin": { "uuid": "dist/bin/uuid" } @@ -19234,15 +19392,15 @@ } }, "@emotion/babel-plugin": { - "version": "11.11.0", - "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.11.0.tgz", - "integrity": "sha512-m4HEDZleaaCH+XgDDsPF15Ht6wTLsgDTeR3WYj9Q/k76JtWhrJjcP4+/XlG8LGT/Rol9qUfOIztXeA84ATpqPQ==", + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.12.0.tgz", + "integrity": "sha512-y2WQb+oP8Jqvvclh8Q55gLUyb7UFvgv7eJfsj7td5TToBrIUtPay2kMrZi4xjq9qw2vD0ZR5fSho0yqoFgX7Rw==", "requires": { "@babel/helper-module-imports": "^7.16.7", "@babel/runtime": "^7.18.3", - "@emotion/hash": "^0.9.1", - "@emotion/memoize": "^0.8.1", - "@emotion/serialize": "^1.1.2", + "@emotion/hash": "^0.9.2", + "@emotion/memoize": "^0.9.0", + "@emotion/serialize": "^1.2.0", "babel-plugin-macros": "^3.1.0", "convert-source-map": "^1.5.0", "escape-string-regexp": "^4.0.0", @@ -19281,79 +19439,79 @@ } }, "@emotion/cache": { - "version": "11.11.0", - "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.11.0.tgz", - "integrity": "sha512-P34z9ssTCBi3e9EI1ZsWpNHcfY1r09ZO0rZbRO2ob3ZQMnFI35jB536qoXbkdesr5EUhYi22anuEJuyxifaqAQ==", - "requires": { - "@emotion/memoize": "^0.8.1", - "@emotion/sheet": "^1.2.2", - "@emotion/utils": "^1.2.1", - "@emotion/weak-memoize": "^0.3.1", + "version": "11.13.1", + "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.13.1.tgz", + "integrity": "sha512-iqouYkuEblRcXmylXIwwOodiEK5Ifl7JcX7o6V4jI3iW4mLXX3dmt5xwBtIkJiQEXFAI+pC8X0i67yiPkH9Ucw==", + "requires": { + "@emotion/memoize": "^0.9.0", + "@emotion/sheet": "^1.4.0", + "@emotion/utils": "^1.4.0", + "@emotion/weak-memoize": "^0.4.0", "stylis": "4.2.0" } }, "@emotion/hash": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.1.tgz", - "integrity": "sha512-gJB6HLm5rYwSLI6PQa+X1t5CFGrv1J1TWG+sOyMCeKz2ojaj6Fnl/rZEspogG+cvqbt4AE/2eIyD2QfLKTBNlQ==" + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.2.tgz", + "integrity": "sha512-MyqliTZGuOm3+5ZRSaaBGP3USLw6+EGykkwZns2EPC5g8jJ4z9OrdZY9apkl3+UP9+sdz76YYkwCKP5gh8iY3g==" }, "@emotion/memoize": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.8.1.tgz", - "integrity": "sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA==" + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.9.0.tgz", + "integrity": "sha512-30FAj7/EoJ5mwVPOWhAyCX+FPfMDrVecJAM+Iw9NRoSl4BBAQeqj4cApHHUXOVvIPgLVDsCFoz/hGD+5QQD1GQ==" }, "@emotion/react": { - "version": "11.11.3", - "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.11.3.tgz", - "integrity": "sha512-Cnn0kuq4DoONOMcnoVsTOR8E+AdnKFf//6kUWc4LCdnxj31pZWn7rIULd6Y7/Js1PiPHzn7SKCM9vB/jBni8eA==", + "version": "11.13.3", + "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.13.3.tgz", + "integrity": "sha512-lIsdU6JNrmYfJ5EbUCf4xW1ovy5wKQ2CkPRM4xogziOxH1nXxBSjpC9YqbFAP7circxMfYp+6x676BqWcEiixg==", "requires": { "@babel/runtime": "^7.18.3", - "@emotion/babel-plugin": "^11.11.0", - "@emotion/cache": "^11.11.0", - "@emotion/serialize": "^1.1.3", - "@emotion/use-insertion-effect-with-fallbacks": "^1.0.1", - "@emotion/utils": "^1.2.1", - "@emotion/weak-memoize": "^0.3.1", + "@emotion/babel-plugin": "^11.12.0", + "@emotion/cache": "^11.13.0", + "@emotion/serialize": "^1.3.1", + "@emotion/use-insertion-effect-with-fallbacks": "^1.1.0", + "@emotion/utils": "^1.4.0", + "@emotion/weak-memoize": "^0.4.0", "hoist-non-react-statics": "^3.3.1" } }, "@emotion/serialize": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.1.3.tgz", - "integrity": "sha512-iD4D6QVZFDhcbH0RAG1uVu1CwVLMWUkCvAqqlewO/rxf8+87yIBAlt4+AxMiiKPLs5hFc0owNk/sLLAOROw3cA==", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.3.2.tgz", + "integrity": "sha512-grVnMvVPK9yUVE6rkKfAJlYZgo0cu3l9iMC77V7DW6E1DUIrU68pSEXRmFZFOFB1QFo57TncmOcvcbMDWsL4yA==", "requires": { - "@emotion/hash": "^0.9.1", - "@emotion/memoize": "^0.8.1", - "@emotion/unitless": "^0.8.1", - "@emotion/utils": "^1.2.1", + "@emotion/hash": "^0.9.2", + "@emotion/memoize": "^0.9.0", + "@emotion/unitless": "^0.10.0", + "@emotion/utils": "^1.4.1", "csstype": "^3.0.2" } }, "@emotion/sheet": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.2.2.tgz", - "integrity": "sha512-0QBtGvaqtWi+nx6doRwDdBIzhNdZrXUppvTM4dtZZWEGTXL/XE/yJxLMGlDT1Gt+UHH5IX1n+jkXyytE/av7OA==" + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.4.0.tgz", + "integrity": "sha512-fTBW9/8r2w3dXWYM4HCB1Rdp8NLibOw2+XELH5m5+AkWiL/KqYX6dc0kKYlaYyKjrQ6ds33MCdMPEwgs2z1rqg==" }, "@emotion/unitless": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.8.1.tgz", - "integrity": "sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ==" + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.10.0.tgz", + "integrity": "sha512-dFoMUuQA20zvtVTuxZww6OHoJYgrzfKM1t52mVySDJnMSEa08ruEvdYQbhvyu6soU+NeLVd3yKfTfT0NeV6qGg==" }, "@emotion/use-insertion-effect-with-fallbacks": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.0.1.tgz", - "integrity": "sha512-jT/qyKZ9rzLErtrjGgdkMBn2OP8wl0G3sQlBb3YPryvKHsjvINUhVaPFfP+fpBcOkmrVOVEEHQFJ7nbj2TH2gw==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.1.0.tgz", + "integrity": "sha512-+wBOcIV5snwGgI2ya3u99D7/FJquOIniQT1IKyDsBmEgwvpxMNeS65Oib7OnE2d2aY+3BU4OiH+0Wchf8yk3Hw==", "requires": {} }, "@emotion/utils": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.2.1.tgz", - "integrity": "sha512-Y2tGf3I+XVnajdItskUCn6LX+VUDmP6lTL4fcqsXAv43dnlbZiuW4MWQW38rW/BVWSE7Q/7+XQocmpnRYILUmg==" + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.4.1.tgz", + "integrity": "sha512-BymCXzCG3r72VKJxaYVwOXATqXIZ85cuvg0YOUDxMGNrKc1DJRZk8MgV5wyXRyEayIMd4FuXJIUgTBXvDNW5cA==" }, "@emotion/weak-memoize": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.3.1.tgz", - "integrity": "sha512-EsBwpc7hBUJWAsNPBmJy4hxWx12v6bshQsldrVmjxJoc3isbxhOrF2IcCpaXxfvq03NwkI7sbsOLXbYuqF/8Ww==" + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.4.0.tgz", + "integrity": "sha512-snKqtPW01tN0ui7yu9rGv69aJXr/a/Ywvl11sUjNtEcRc+ng/mQriFL0wLXMef74iHa/EkftbDzU9F8iFbH+zg==" }, "@eslint/eslintrc": { "version": "1.0.5", @@ -19410,26 +19568,26 @@ "integrity": "sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==" }, "@floating-ui/core": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.6.0.tgz", - "integrity": "sha512-PcF++MykgmTj3CIyOQbKA/hDzOAiqI3mhuoN44WRCopIs1sgoDoU4oty4Jtqaj/y3oDU6fnVSm4QG0a3t5i0+g==", + "version": "1.6.8", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.6.8.tgz", + "integrity": "sha512-7XJ9cPU+yI2QeLS+FCSlqNFZJq8arvswefkZrYI1yQBbftw6FyrZOxYSh+9S7z7TpeWlRt9zJ5IhM1WIL334jA==", "requires": { - "@floating-ui/utils": "^0.2.1" + "@floating-ui/utils": "^0.2.8" } }, "@floating-ui/dom": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.6.3.tgz", - "integrity": "sha512-RnDthu3mzPlQ31Ss/BTwQ1zjzIhr3lk1gZB1OC56h/1vEtaXkESrOqL5fQVMfXpwGtRwX+YsZBdyHtJMQnkArw==", + "version": "1.6.12", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.6.12.tgz", + "integrity": "sha512-NP83c0HjokcGVEMeoStg317VD9W7eDlGK7457dMBANbKA6GJZdc7rjujdgqzTaz93jkGgc5P/jeWbaCHnMNc+w==", "requires": { - "@floating-ui/core": "^1.0.0", - "@floating-ui/utils": "^0.2.0" + "@floating-ui/core": "^1.6.0", + "@floating-ui/utils": "^0.2.8" } }, "@floating-ui/utils": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.1.tgz", - "integrity": "sha512-9TANp6GPoMtYzQdt54kfAyMmz1+osLlXdg2ENroU7zzrtflTLrrC/lgrIfaSe+Wu0b89GKccT7vxXA0MoAIO+Q==" + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.8.tgz", + "integrity": "sha512-kym7SodPp8/wloecOpcmSnWJsK7M0E5Wg8UcFA+uO4B9s5d0ywXOEro/8HM9x0rW+TljRzul/14UYz3TleT3ig==" }, "@formatjs/ecma402-abstract": { "version": "1.17.0", @@ -19510,29 +19668,85 @@ } }, "@formatjs/intl-pluralrules": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/@formatjs/intl-pluralrules/-/intl-pluralrules-5.2.4.tgz", - "integrity": "sha512-6meo376d8I4zikRFSUxATLnqzGwezmc57SmToP4z1/NQwTHXGe0yIG/ABPbO3QMx7IUkofH/ROP3A4DhtPTpnA==", + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/@formatjs/intl-pluralrules/-/intl-pluralrules-5.3.1.tgz", + "integrity": "sha512-KcBiwhjFyIDiWEG6OAaoA2DbEw4zgk0UlGpBrNpZI3LfogmC0tWfh5jKofokT3k7Gb57sA0REEIr60D0dqPN7g==", "requires": { - "@formatjs/ecma402-abstract": "1.17.0", - "@formatjs/intl-localematcher": "0.4.0", - "tslib": "^2.4.0" + "@formatjs/ecma402-abstract": "2.2.1", + "@formatjs/intl-localematcher": "0.5.6", + "tslib": "2" + }, + "dependencies": { + "@formatjs/ecma402-abstract": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-2.2.1.tgz", + "integrity": "sha512-O4ywpkdJybrjFc9zyL8qK5aklleIAi5O4nYhBVJaOFtCkNrnU+lKFeJOFC48zpsZQmR8Aok2V79hGpHnzbmFpg==", + "requires": { + "@formatjs/fast-memoize": "2.2.2", + "@formatjs/intl-localematcher": "0.5.6", + "tslib": "2" + } + }, + "@formatjs/fast-memoize": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@formatjs/fast-memoize/-/fast-memoize-2.2.2.tgz", + "integrity": "sha512-mzxZcS0g1pOzwZTslJOBTmLzDXseMLLvnh25ymRilCm8QLMObsQ7x/rj9GNrH0iUhZMlFisVOD6J1n6WQqpKPQ==", + "requires": { + "tslib": "2" + } + }, + "@formatjs/intl-localematcher": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/@formatjs/intl-localematcher/-/intl-localematcher-0.5.6.tgz", + "integrity": "sha512-roz1+Ba5e23AHX6KUAWmLEyTRZegM5YDuxuvkHCyK3RJddf/UXB2f+s7pOMm9ktfPGla0g+mQXOn5vsuYirnaA==", + "requires": { + "tslib": "2" + } + } } }, "@formatjs/intl-relativetimeformat": { - "version": "11.2.4", - "resolved": "https://registry.npmjs.org/@formatjs/intl-relativetimeformat/-/intl-relativetimeformat-11.2.4.tgz", - "integrity": "sha512-AJtPvpF7ub/nlu+PmysW9qho7Bev/v0qBNamY4Olh81P73ayf6JgFhxSxuLI2IxuHbXwqPb0iNBhvEXGBklCbQ==", + "version": "11.4.1", + "resolved": "https://registry.npmjs.org/@formatjs/intl-relativetimeformat/-/intl-relativetimeformat-11.4.1.tgz", + "integrity": "sha512-gYonywpv55uJ11RvfKzwt8S9FHUmlB+Tn1e8ppXmAwRBpQe5fRwk0zejFEJtKXIC42exoIrpxPaWgeg1uJe2hg==", "requires": { - "@formatjs/ecma402-abstract": "1.17.0", - "@formatjs/intl-localematcher": "0.4.0", - "tslib": "^2.4.0" + "@formatjs/ecma402-abstract": "2.2.1", + "@formatjs/intl-localematcher": "0.5.6", + "tslib": "2" + }, + "dependencies": { + "@formatjs/ecma402-abstract": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-2.2.1.tgz", + "integrity": "sha512-O4ywpkdJybrjFc9zyL8qK5aklleIAi5O4nYhBVJaOFtCkNrnU+lKFeJOFC48zpsZQmR8Aok2V79hGpHnzbmFpg==", + "requires": { + "@formatjs/fast-memoize": "2.2.2", + "@formatjs/intl-localematcher": "0.5.6", + "tslib": "2" + } + }, + "@formatjs/fast-memoize": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@formatjs/fast-memoize/-/fast-memoize-2.2.2.tgz", + "integrity": "sha512-mzxZcS0g1pOzwZTslJOBTmLzDXseMLLvnh25ymRilCm8QLMObsQ7x/rj9GNrH0iUhZMlFisVOD6J1n6WQqpKPQ==", + "requires": { + "tslib": "2" + } + }, + "@formatjs/intl-localematcher": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/@formatjs/intl-localematcher/-/intl-localematcher-0.5.6.tgz", + "integrity": "sha512-roz1+Ba5e23AHX6KUAWmLEyTRZegM5YDuxuvkHCyK3RJddf/UXB2f+s7pOMm9ktfPGla0g+mQXOn5vsuYirnaA==", + "requires": { + "tslib": "2" + } + } } }, "@fortawesome/fontawesome-free": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-free/-/fontawesome-free-6.4.0.tgz", - "integrity": "sha512-0NyytTlPJwB/BF5LtRV8rrABDbe3TdTXqNB3PdZ+UUUZAEIrdOJdmABqKjt4AXwIoJNaRVVZEXxpNrqvE1GAYQ==" + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-free/-/fontawesome-free-6.6.0.tgz", + "integrity": "sha512-60G28ke/sXdtS9KZCpZSHHkCbdsOGEhIUGlwq6yhY74UpTiToIh8np7A8yphhM4BWsvNFtIvLpi4co+h9Mr9Ow==" }, "@humanwhocodes/config-array": { "version": "0.9.3", @@ -20463,15 +20677,15 @@ "integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4=" }, "@types/lodash": { - "version": "4.14.195", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.195.tgz", - "integrity": "sha512-Hwx9EUgdwf2GLarOjQp5ZH8ZmblzcbTBC2wtQWNKARBSxM9ezRIAUpeDTgoQRAFB0+8CNWXVA9+MaSOzOF3nPg==", + "version": "4.17.10", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.10.tgz", + "integrity": "sha512-YpS0zzoduEhuOWjAotS6A5AVCva7X4lVlYLF0FYHAY9sdraBfnatttHItlWeZdGhuEkf+OzMNg2ZYAx8t+52uQ==", "dev": true }, "@types/luxon": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/@types/luxon/-/luxon-3.3.0.tgz", - "integrity": "sha512-uKRI5QORDnrGFYgcdAVnHvEIvEZ8noTpP/Bg+HeUzZghwinDlIS87DEenV5r1YoOF9G4x600YsUXLWZ19rmTmg==", + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/@types/luxon/-/luxon-3.4.2.tgz", + "integrity": "sha512-TifLZlFudklWlMBfhubvgqTXRzLDI5pCbGa4P8a3wPyUQSW+1xQ5eDsreP9DWHX3tjq1ke96uYG/nwundroWcA==", "dev": true }, "@types/marked": { @@ -20492,12 +20706,6 @@ "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==" }, - "@types/minimatch": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz", - "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==", - "dev": true - }, "@types/node": { "version": "18.11.17", "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.17.tgz", @@ -20609,20 +20817,28 @@ } }, "@types/react-transition-group": { - "version": "4.4.10", - "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.10.tgz", - "integrity": "sha512-hT/+s0VQs2ojCX823m60m5f0sL5idt9SO6Tj6Dg+rdphGPIeJbJ6CxvBYkgkGKrYeDjvIpKTR38UzmtHJOGW3Q==", + "version": "4.4.11", + "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.11.tgz", + "integrity": "sha512-RM05tAniPZ5DZPzzNFP+DmrcOdD0efDUxMy3145oljWSl3x9ZV5vhme98gTxFrj2lhXvmGNnUiuDyJgY9IKkNA==", "requires": { "@types/react": "*" } }, "@types/redux-logger": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/@types/redux-logger/-/redux-logger-3.0.9.tgz", - "integrity": "sha512-cwYhVbYNgH01aepeMwhd0ABX6fhVB2rcQ9m80u8Fl50ZODhsZ8RhQArnLTkE7/Zrfq4Sz/taNoF7DQy9pCZSKg==", + "version": "3.0.13", + "resolved": "https://registry.npmjs.org/@types/redux-logger/-/redux-logger-3.0.13.tgz", + "integrity": "sha512-jylqZXQfMxahkuPcO8J12AKSSCQngdEWQrw7UiLUJzMBcv1r4Qg77P6mjGLjM27e5gFQDPD8vwUMJ9AyVxFSsg==", "dev": true, "requires": { - "redux": "^4.0.0" + "redux": "^5.0.0" + }, + "dependencies": { + "redux": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/redux/-/redux-5.0.1.tgz", + "integrity": "sha512-M9/ELqF6fy8FwmkpnF0S3YKOqMyoWJ4+CS5Efg2ct3oY9daQvd/Pc71FpGZsVsbl3Cpb+IIcjBDUnnyBdQbq4w==", + "dev": true + } } }, "@types/redux-mock-store": { @@ -20711,9 +20927,9 @@ "integrity": "sha512-EwmlvuaxPNej9+T4v5AuBPJa2x2UOJVdjCtDHgcDqitUeOtjnJKJ+apYjVcAoBEMjKW1VVFGZLUb5+qqa09XFA==" }, "@types/uuid": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-9.0.2.tgz", - "integrity": "sha512-kNnC1GFBLuhImSnV7w4njQkUiJi0ZXUycu1rUaouPqiKlXkh77JKgdRnTAp1x5eBwcIwbtI+3otwzuIDEuDoxQ==", + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-10.0.0.tgz", + "integrity": "sha512-7gqG38EyHgyP1S+7+xomFtL+ZNHcKv6DwNaCZmJmo1vgMugyF3TCnXVg4t1uk89mLNwnLtnY3TpOpCOyp1/xHQ==", "dev": true }, "@types/whatwg-mimetype": { @@ -21049,6 +21265,11 @@ "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==" }, + "@yr/monotone-cubic-spline": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@yr/monotone-cubic-spline/-/monotone-cubic-spline-1.0.3.tgz", + "integrity": "sha512-FQXkOta0XBSUPHndIKON2Y9JeQz5ZeMqLYZVVK93FliNBFm7LNMIZmY6FrMEB9XPcDbE2bekMbZD6kzDkxwYjA==" + }, "abab": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.5.tgz", @@ -21207,10 +21428,11 @@ } }, "apexcharts": { - "version": "3.41.0", - "resolved": "https://registry.npmjs.org/apexcharts/-/apexcharts-3.41.0.tgz", - "integrity": "sha512-FJXA7NVjxs1q+ptR3b1I+pN8K/gWuXn+qLZjFz8EHvJOokdgcuwa/HSe5aC465HW/LWnrjWLSTsOQejQbQ42hQ==", + "version": "3.54.0", + "resolved": "https://registry.npmjs.org/apexcharts/-/apexcharts-3.54.0.tgz", + "integrity": "sha512-ZgI/seScffjLpwNRX/gAhIkAhpCNWiTNsdICv7qxnF0xisI23XSsaENUKIcMlyP1rbe8ECgvybDnp7plZld89A==", "requires": { + "@yr/monotone-cubic-spline": "^1.0.3", "svg.draggable.js": "^2.2.2", "svg.easing.js": "^2.0.0", "svg.filter.js": "^2.0.2", @@ -21241,12 +21463,6 @@ "@babel/runtime-corejs3": "^7.10.2" } }, - "array-differ": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-3.0.0.tgz", - "integrity": "sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg==", - "dev": true - }, "array-filter": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-1.0.0.tgz", @@ -21291,12 +21507,6 @@ "es-shim-unscopables": "^1.0.0" } }, - "arrify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", - "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==", - "dev": true - }, "asap": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", @@ -21368,9 +21578,9 @@ } }, "axios-mock-adapter": { - "version": "1.22.0", - "resolved": "https://registry.npmjs.org/axios-mock-adapter/-/axios-mock-adapter-1.22.0.tgz", - "integrity": "sha512-dmI0KbkyAhntUR05YY96qg2H6gg0XMl2+qTW0xmYg6Up+BFBAJYRLROMXRdDEL06/Wqwa0TJThAYvFtSFdRCZw==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/axios-mock-adapter/-/axios-mock-adapter-2.1.0.tgz", + "integrity": "sha512-AZUe4OjECGCNNssH8SOdtneiQELsqTsat3SQQCWLPjN436/H+L9AjWfV7bF+Zg/YL9cgbhrz5671hoh+Tbn98w==", "dev": true, "requires": { "fast-deep-equal": "^3.1.3", @@ -21640,9 +21850,9 @@ "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" }, "body-parser": { - "version": "1.20.2", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", - "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==", + "version": "1.20.3", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz", + "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==", "requires": { "bytes": "3.1.2", "content-type": "~1.0.5", @@ -21652,7 +21862,7 @@ "http-errors": "2.0.0", "iconv-lite": "0.4.24", "on-finished": "2.4.1", - "qs": "6.11.0", + "qs": "6.13.0", "raw-body": "2.5.2", "type-is": "~1.6.18", "unpipe": "1.0.0" @@ -21774,12 +21984,15 @@ "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=" }, "call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", "requires": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" } }, "callsites": { @@ -21959,9 +22172,9 @@ "integrity": "sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==" }, "classnames": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.3.2.tgz", - "integrity": "sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw==" + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.5.1.tgz", + "integrity": "sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==" }, "clean-css": { "version": "5.2.4", @@ -22672,6 +22885,16 @@ "execa": "^5.0.0" } }, + "define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "requires": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + } + }, "define-lazy-prop": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", @@ -22943,9 +23166,9 @@ "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==" }, "encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==" }, "end-of-stream": { "version": "1.4.4", @@ -23053,6 +23276,19 @@ "unbox-primitive": "^1.0.1" } }, + "es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "requires": { + "get-intrinsic": "^1.2.4" + } + }, + "es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==" + }, "es-module-lexer": { "version": "1.5.4", "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.5.4.tgz", @@ -23572,36 +23808,36 @@ } }, "express": { - "version": "4.19.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.19.2.tgz", - "integrity": "sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==", + "version": "4.21.0", + "resolved": "https://registry.npmjs.org/express/-/express-4.21.0.tgz", + "integrity": "sha512-VqcNGcj/Id5ZT1LZ/cfihi3ttTn+NJmkli2eZADigjq29qTlWi/hAQ43t/VLPq8+UX06FCEx3ByOYet6ZFblng==", "requires": { "accepts": "~1.3.8", "array-flatten": "1.1.1", - "body-parser": "1.20.2", + "body-parser": "1.20.3", "content-disposition": "0.5.4", "content-type": "~1.0.4", "cookie": "0.6.0", "cookie-signature": "1.0.6", "debug": "2.6.9", "depd": "2.0.0", - "encodeurl": "~1.0.2", + "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "etag": "~1.8.1", - "finalhandler": "1.2.0", + "finalhandler": "1.3.1", "fresh": "0.5.2", "http-errors": "2.0.0", - "merge-descriptors": "1.0.1", + "merge-descriptors": "1.0.3", "methods": "~1.1.2", "on-finished": "2.4.1", "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", + "path-to-regexp": "0.1.10", "proxy-addr": "~2.0.7", - "qs": "6.11.0", + "qs": "6.13.0", "range-parser": "~1.2.1", "safe-buffer": "5.2.1", - "send": "0.18.0", - "serve-static": "1.15.0", + "send": "0.19.0", + "serve-static": "1.16.2", "setprototypeof": "1.2.0", "statuses": "2.0.1", "type-is": "~1.6.18", @@ -23633,9 +23869,9 @@ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" }, "path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" + "version": "0.1.10", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.10.tgz", + "integrity": "sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w==" }, "safe-buffer": { "version": "5.2.1", @@ -23789,12 +24025,12 @@ } }, "finalhandler": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", - "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz", + "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==", "requires": { "debug": "2.6.9", - "encodeurl": "~1.0.2", + "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "on-finished": "2.4.1", "parseurl": "~1.3.3", @@ -23976,9 +24212,9 @@ "optional": true }, "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==" }, "function.prototype.name": { "version": "1.1.4", @@ -24019,13 +24255,15 @@ "integrity": "sha1-SCG85m8cJMsDMWAr5strEsTwHEs=" }, "get-intrinsic": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", - "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", "requires": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1" + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" } }, "get-own-enumerable-property-symbols": { @@ -24124,6 +24362,14 @@ "slash": "^3.0.0" } }, + "gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "requires": { + "get-intrinsic": "^1.1.3" + } + }, "graceful-fs": { "version": "4.2.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", @@ -24171,13 +24417,18 @@ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" }, "has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", "requires": { - "get-intrinsic": "^1.1.1" + "es-define-property": "^1.0.0" } }, + "has-proto": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==" + }, "has-symbols": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", @@ -24191,6 +24442,14 @@ "has-symbols": "^1.0.2" } }, + "hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "requires": { + "function-bind": "^1.1.2" + } + }, "he": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", @@ -24497,9 +24756,9 @@ } }, "ignore": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", - "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==" + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==" }, "immer": { "version": "9.0.12", @@ -24560,13 +24819,13 @@ "integrity": "sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==" }, "intelligent-tree-select": { - "version": "0.11.4", - "resolved": "https://registry.npmjs.org/intelligent-tree-select/-/intelligent-tree-select-0.11.4.tgz", - "integrity": "sha512-PJ0Z1t2+eahPW7bOzImL51RAzBgBRTTUoXton7Mc06CywGqvK73d50PPXXDyjVlOZ1KpOD023vI1rJoLrQfBFQ==", + "version": "0.11.8", + "resolved": "https://registry.npmjs.org/intelligent-tree-select/-/intelligent-tree-select-0.11.8.tgz", + "integrity": "sha512-uhhQEz1iFD/04giG0lga83vMQbRErtNV54hzozUGS1hI+e+bJnsOfPYT2hpvzrr+qbM9t9zu/ayFH9pG6K5CLw==", "requires": { - "classnames": "latest", + "classnames": "^2.5.1", "react-highlight-words": "^0.20.0", - "react-select": "^5.8.0", + "react-select": "^5.8.1", "react-window": "^1.8.10" } }, @@ -24905,9 +25164,9 @@ } }, "javascript-time-ago": { - "version": "2.5.9", - "resolved": "https://registry.npmjs.org/javascript-time-ago/-/javascript-time-ago-2.5.9.tgz", - "integrity": "sha512-pQ8mNco/9g9TqWXWWjP0EWl6i/lAQScOyEeXy5AB+f7MfLSdgyV9BJhiOD1zrIac/lrxPYOWNbyl/IW8CW5n0A==", + "version": "2.5.11", + "resolved": "https://registry.npmjs.org/javascript-time-ago/-/javascript-time-ago-2.5.11.tgz", + "integrity": "sha512-Zeyf5R7oM1fSMW9zsU3YgAYwE0bimEeF54Udn2ixGd8PUwu+z1Yc5t4Y8YScJDMHD6uCx6giLt3VJR5K4CMwbg==", "requires": { "relative-time-format": "^1.1.6" } @@ -25792,9 +26051,9 @@ } }, "luxon": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/luxon/-/luxon-3.3.0.tgz", - "integrity": "sha512-An0UCfG/rSiqtAIiBPO0Y9/zAnHUZxAMiCpTd5h2smgsj7GGmcenvrvww2cqNA8/4A5ZrD1gJpHN2mIHZQF+Mg==" + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/luxon/-/luxon-3.5.0.tgz", + "integrity": "sha512-rh+Zjr6DNfUYR3bPwJEnuwDdqMbxZW7LOQfUN4B54+Cl+0o5zaU9RJ6bcidfDtC1cWCZXQ+nvX8bf6bAji37QQ==" }, "magic-string": { "version": "0.25.7", @@ -25900,9 +26159,9 @@ "integrity": "sha512-QmpUu4KqDmX0plH4u+tf0riMc1KHE1+lw95cMrLlXQAFOx/xnBtwhZ52XJxd9X2O6kwKBqX32kmhbhlobD0cuw==" }, "merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", + "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==" }, "merge-stream": { "version": "2.0.0", @@ -26064,19 +26323,6 @@ "thunky": "^1.0.2" } }, - "multimatch": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/multimatch/-/multimatch-4.0.0.tgz", - "integrity": "sha512-lDmx79y1z6i7RNx0ZGCPq1bzJ6ZoDDKbvh7jxr9SJcWLkShMzXrHbYVpTdnhNM5MXpDUxCQ4DgqVttVXlBgiBQ==", - "dev": true, - "requires": { - "@types/minimatch": "^3.0.3", - "array-differ": "^3.0.0", - "array-union": "^2.1.0", - "arrify": "^2.0.1", - "minimatch": "^3.0.4" - } - }, "nanoid": { "version": "3.3.7", "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", @@ -26195,9 +26441,9 @@ "integrity": "sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw==" }, "object-inspect": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.0.tgz", - "integrity": "sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==" + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz", + "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==" }, "object-is": { "version": "1.1.5", @@ -26477,9 +26723,9 @@ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" }, "path-to-regexp": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz", - "integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.9.0.tgz", + "integrity": "sha512-xIp7/apCFJuUHdDLWe8O1HIkb0kQrOMb/0u6FXQjemHn/ii5LrIzU6bdECnsiTF/GjZkMEKg1xdiZwNqDYlZ6g==", "requires": { "isarray": "0.0.1" } @@ -27241,9 +27487,9 @@ "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==" }, "prettier": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.3.0.tgz", - "integrity": "sha512-kXtO4s0Lz/DW/IJ9QdWhAf7/NmPWQXkFr/r/WkR3vyI+0v8amTDxiaQSLzs8NBlytfLWX/7uQUMIW677yLKl4w==" + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", + "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==" }, "prettier-plugin-tailwindcss": { "version": "0.1.7", @@ -27288,29 +27534,20 @@ } }, "pretty-quick": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/pretty-quick/-/pretty-quick-3.1.3.tgz", - "integrity": "sha512-kOCi2FJabvuh1as9enxYmrnBC6tVMoVOenMaBqRfsvBHB0cbpYHjdQEpSglpASDFEXVwplpcGR4CLEaisYAFcA==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/pretty-quick/-/pretty-quick-3.3.1.tgz", + "integrity": "sha512-3b36UXfYQ+IXXqex6mCca89jC8u0mYLqFAN5eTQKoXO6oCQYcIVYZEB/5AlBHI7JPYygReM2Vv6Vom/Gln7fBg==", "dev": true, "requires": { - "chalk": "^3.0.0", - "execa": "^4.0.0", + "execa": "^4.1.0", "find-up": "^4.1.0", - "ignore": "^5.1.4", - "mri": "^1.1.5", - "multimatch": "^4.0.0" + "ignore": "^5.3.0", + "mri": "^1.2.0", + "picocolors": "^1.0.0", + "picomatch": "^3.0.1", + "tslib": "^2.6.2" }, "dependencies": { - "chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, "execa": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", @@ -27376,6 +27613,12 @@ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "dev": true + }, + "picomatch": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-3.0.1.tgz", + "integrity": "sha512-I3EurrIQMlRc9IaAZnqRR044Phh2DXY+55o7uJ0V+hYZAcQYSuFWsc9q5PvyDHUSCe1Qxn/iBz+78s86zWnGag==", + "dev": true } } }, @@ -27446,9 +27689,9 @@ "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==" }, "pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.2.tgz", + "integrity": "sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==", "dev": true, "requires": { "end-of-stream": "^1.1.0", @@ -27466,11 +27709,11 @@ "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=" }, "qs": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", - "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", + "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", "requires": { - "side-channel": "^1.0.4" + "side-channel": "^1.0.6" } }, "querystringify": { @@ -28009,9 +28252,9 @@ } }, "react-select": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/react-select/-/react-select-5.8.0.tgz", - "integrity": "sha512-TfjLDo58XrhP6VG5M/Mi56Us0Yt8X7xD6cDybC7yoRMUNm7BGO7qk8J0TLQOua/prb8vUOtsfnXZwfm30HGsAA==", + "version": "5.8.2", + "resolved": "https://registry.npmjs.org/react-select/-/react-select-5.8.2.tgz", + "integrity": "sha512-a/LkOckoI62710gGPQSQqUp7A10fGbH/ya3/IR49qaq3XoBvwymgD5mJgtiHxBDsutyEQfdKNycWVh8Cg8UCjw==", "requires": { "@babel/runtime": "^7.12.0", "@emotion/cache": "^11.4.0", @@ -28451,9 +28694,9 @@ } }, "rollup": { - "version": "2.67.2", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.67.2.tgz", - "integrity": "sha512-hoEiBWwZtf1QdK3jZIq59L0FJj4Fiv4RplCO4pvCRC86qsoFurWB4hKQIjoRf3WvJmk5UZ9b0y5ton+62fC7Tw==", + "version": "2.79.2", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.2.tgz", + "integrity": "sha512-fS6iqSPZDs3dr/y7Od6y5nha8dW1YnbgtsyotCVvoFGKbERG++CVRFv1meyGDE1SNItQA8BrnCw7ScdAhRJ3XQ==", "requires": { "fsevents": "~2.3.2" } @@ -28586,9 +28829,9 @@ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==" }, "send": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", - "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz", + "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==", "requires": { "debug": "2.6.9", "depd": "2.0.0", @@ -28625,6 +28868,11 @@ "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==" }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==" + }, "ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", @@ -28696,14 +28944,27 @@ } }, "serve-static": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", - "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "version": "1.16.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz", + "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==", "requires": { - "encodeurl": "~1.0.2", + "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "parseurl": "~1.3.3", - "send": "0.18.0" + "send": "0.19.0" + } + }, + "set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "requires": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" } }, "setimmediate": { @@ -28744,13 +29005,14 @@ "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==" }, "side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", "requires": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" } }, "signal-exit": { @@ -29669,9 +29931,9 @@ } }, "tslib": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", - "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.0.tgz", + "integrity": "sha512-jWVzBLplnCmoaTr13V9dYbiQ99wvZRd0vNWaDRg+aVYRcjDF3nDksxFDE/+fkXnKhpnUUkmx5pK/v8mCtLVqZA==" }, "tsutils": { "version": "3.21.0", @@ -29902,6 +30164,12 @@ "requires-port": "^1.0.0" } }, + "use-debounce": { + "version": "10.0.4", + "resolved": "https://registry.npmjs.org/use-debounce/-/use-debounce-10.0.4.tgz", + "integrity": "sha512-6Cf7Yr7Wk7Kdv77nnJMf6de4HuDE4dTxKij+RqE9rufDsI6zsbjyAxcH5y2ueJCQAnfgKbzXbZHYlkFwmBlWkw==", + "requires": {} + }, "use-isomorphic-layout-effect": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.1.2.tgz", @@ -29939,9 +30207,9 @@ "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" }, "uuid": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz", - "integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==" + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-10.0.0.tgz", + "integrity": "sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==" }, "v8-compile-cache": { "version": "2.3.0", diff --git a/package.json b/package.json index 602e01f19..95af1e05f 100644 --- a/package.json +++ b/package.json @@ -1,33 +1,33 @@ { "name": "termit-ui", - "version": "3.2.0", + "version": "3.3.0", "private": true, "homepage": ".", "license": "GPL-3.0-only", "dependencies": { - "@formatjs/intl-pluralrules": "^5.2.4", - "@formatjs/intl-relativetimeformat": "^11.2.4", - "@fortawesome/fontawesome-free": "^6.4.0", + "@formatjs/intl-pluralrules": "^5.3.1", + "@formatjs/intl-relativetimeformat": "^11.4.1", + "@fortawesome/fontawesome-free": "^6.6.0", "@opendata-mvcr/assembly-line-shared": "^0.3.2", - "apexcharts": "^3.41.0", - "axios": "^1.6.5", + "apexcharts": "^3.54.0", + "axios": "^1.7.7", "bootstrap": "4.6.2", "chart.js": "^3.9.1", - "classnames": "^2.3.2", + "classnames": "^2.5.1", "dom-serializer": "^1.3.2", "domhandler": "^4.3.1", "easymde": "2.18.0", "html-to-react": "1.5.0", "htmlparser2": "^4.1.0", - "intelligent-tree-select": "0.11.4", + "intelligent-tree-select": "0.11.8", "iso-639-1": "^2.1.15", - "javascript-time-ago": "2.5.9", + "javascript-time-ago": "2.5.11", "js-cookie": "^3.0.5", "jsonld": "8.3.2", "last": "^1.1.0", "ld-query": "^2.6.1", "lodash": "^4.17.21", - "luxon": "^3.3.0", + "luxon": "^3.5.0", "marked": "^9.1.6", "object-assign": "4.1.1", "oidc-client": "^1.11.5", @@ -59,7 +59,8 @@ "redux-thunk": "^2.4.2", "resolve": "1.22.2", "simple-xpath-position": "^2.0.2", - "uuid": "^9.0.0", + "use-debounce": "^10.0.4", + "uuid": "^10.0.0", "whatwg-fetch": "3.6.2", "whatwg-mimetype": "3.0.0" }, @@ -83,8 +84,8 @@ "@types/enzyme": "^3.10.13", "@types/jest": "^27.4.1", "@types/js-cookie": "^3.0.3", - "@types/lodash": "^4.14.195", - "@types/luxon": "^3.3.0", + "@types/lodash": "^4.17.10", + "@types/luxon": "^3.4.2", "@types/node": "^18.11.17", "@types/react": "^17.0.61", "@types/react-dom": "^17.0.20", @@ -92,12 +93,12 @@ "@types/react-highlight-words": "^0.16.4", "@types/react-router-dom": "^5.3.3", "@types/react-table": "^7.7.14", - "@types/redux-logger": "^3.0.9", + "@types/redux-logger": "^3.0.13", "@types/redux-mock-store": "^1.0.3", - "@types/uuid": "^9.0.2", + "@types/uuid": "^10.0.0", "@types/whatwg-mimetype": "^2.1.1", "@wojtekmaj/enzyme-adapter-react-17": "^0.8.0", - "axios-mock-adapter": "^1.22.0", + "axios-mock-adapter": "^2.1.0", "babel-plugin-macros": "2.8.0", "cross-env": "^7.0.3", "enzyme": "^3.11.0", @@ -106,8 +107,8 @@ "jest-localstorage-mock": "^2.4.26", "jest-react-hooks-shallow": "^1.5.1", "jest-watch-typeahead": "^0.6.5", - "prettier": "2.3.0", - "pretty-quick": "^3.1.3", + "prettier": "2.8.8", + "pretty-quick": "^3.3.1", "raw.macro": "0.6.2", "redux-mock-store": "^1.5.4", "sass": "^1.63.3", diff --git a/src/action/AsyncActions.ts b/src/action/AsyncActions.ts index 17623ddce..6db20ef65 100644 --- a/src/action/AsyncActions.ts +++ b/src/action/AsyncActions.ts @@ -1130,36 +1130,6 @@ export function loadLatestTextAnalysisRecord(resourceIri: IRI) { }; } -/** - * Downloads the content of a file with the specified IRI (assuming it is stored on the server). - * @param fileIri File identifier - * @param at Timestamp of the file version to download - */ -export function exportFileContent(fileIri: IRI, at?: string) { - const action = { - type: ActionType.EXPORT_FILE_CONTENT, - }; - return (dispatch: ThunkDispatch) => { - dispatch(asyncActionRequest(action)); - const url = - Constants.API_PREFIX + "/resources/" + fileIri.fragment + "/content"; - return Ajax.getRaw( - url, - param("namespace", fileIri.namespace) - .param("attachment", "true") - .param("at", at) - .responseType("arraybuffer") - ) - .then((resp: AxiosResponse) => { - const fileName = fileIri.fragment; - const mimeType = resp.headers["content-type"]; - Utils.fileDownload(resp.data, fileName, mimeType); - return dispatch(asyncActionSuccess(action)); - }) - .catch((error: ErrorData) => dispatch(asyncActionFailure(action, error))); - }; -} - export function loadHistory(asset: Asset) { const assetIri = VocabularyUtils.create(asset.iri); const historyConf = resolveHistoryLoadingParams(asset, assetIri); diff --git a/src/action/AsyncResourceActions.ts b/src/action/AsyncResourceActions.ts index b93b90bd4..dfacc0e27 100644 --- a/src/action/AsyncResourceActions.ts +++ b/src/action/AsyncResourceActions.ts @@ -12,6 +12,8 @@ import JsonLdUtils from "../util/JsonLdUtils"; import File, { FileData } from "../model/File"; import { CONTEXT as DOCUMENT_CONTEXT } from "../model/Document"; import { ErrorData } from "../model/ErrorInfo"; +import { AxiosResponse } from "axios"; +import Utils from "../util/Utils"; export function loadFileMetadata(fileIri: IRI) { const action = { type: ActionType.LOAD_FILE_METADATA }; @@ -37,3 +39,43 @@ export function loadFileMetadata(fileIri: IRI) { }); }; } + +/** + * Downloads the content of a file with the specified IRI (assuming it is stored on the server). + * @param fileIri File identifier + * @param options File export options + */ +export function exportFileContent( + fileIri: IRI, + options: { + at?: string; + withoutUnconfirmedOccurrences?: boolean; + } = {} +) { + const action = { + type: ActionType.EXPORT_FILE_CONTENT, + }; + return (dispatch: ThunkDispatch) => { + dispatch(asyncActionRequest(action)); + const url = + Constants.API_PREFIX + "/resources/" + fileIri.fragment + "/content"; + return Ajax.getRaw( + url, + param("namespace", fileIri.namespace) + .param("attachment", "true") + .param("at", options.at) + .param( + "withoutUnconfirmedOccurrences", + options.withoutUnconfirmedOccurrences?.toString() + ) + .responseType("arraybuffer") + ) + .then((resp: AxiosResponse) => { + const fileName = fileIri.fragment; + const mimeType = resp.headers["content-type"]; + Utils.fileDownload(resp.data, fileName, mimeType); + return dispatch(asyncActionSuccess(action)); + }) + .catch((error: ErrorData) => dispatch(asyncActionFailure(action, error))); + }; +} diff --git a/src/action/AsyncTermActions.ts b/src/action/AsyncTermActions.ts index 87af92deb..809ffe87e 100644 --- a/src/action/AsyncTermActions.ts +++ b/src/action/AsyncTermActions.ts @@ -4,7 +4,7 @@ * * This file contains asynchronous actions related to term management in the frontend. */ -import VocabularyUtils, { IRI } from "../util/VocabularyUtils"; +import VocabularyUtils, { IRI, IRIImpl } from "../util/VocabularyUtils"; import ActionType from "./ActionType"; import { GetStoreState, ThunkDispatch } from "../util/Types"; import * as SyncActions from "./SyncActions"; @@ -84,8 +84,14 @@ function resolveTermCreationUrl(term: Term, targetVocabularyIri: IRI) { let url = `${ENDPOINT}${targetVocabularyIri.fragment}/terms`; const parents = Utils.sanitizeArray(term.parentTerms); if (parents.length > 0) { - // Use one of the parents, it does not matter which one - url += `/${VocabularyUtils.create(parents[0].iri!).fragment}/subterms`; + const parentInThisVocabulary = parents.find( + (p) => p.vocabulary!.iri === IRIImpl.toString(targetVocabularyIri) + ); + if (parentInThisVocabulary) { + url += `/${ + VocabularyUtils.create(parentInThisVocabulary.iri!).fragment + }/subterms`; + } } return url; } diff --git a/src/action/AsyncVocabularyActions.ts b/src/action/AsyncVocabularyActions.ts index 7a620f40b..48e766d06 100644 --- a/src/action/AsyncVocabularyActions.ts +++ b/src/action/AsyncVocabularyActions.ts @@ -1,4 +1,4 @@ -import { GetStoreState, ThunkDispatch } from "../util/Types"; +import { GetStoreState, PageRequest, ThunkDispatch } from "../util/Types"; import * as SyncActions from "./SyncActions"; import { asyncActionFailure, @@ -27,6 +27,10 @@ import SnapshotData, { CONTEXT as SNAPSHOT_CONTEXT } from "../model/Snapshot"; import NotificationType from "../model/NotificationType"; import ExportConfig from "../model/local/ExportConfig"; import RDFStatement, { RDFSTATEMENT_CONTEXT } from "../model/RDFStatement"; +import ChangeRecord, { + CONTEXT as CHANGE_RECORD_CONTEXT, +} from "../model/changetracking/ChangeRecord"; +import AssetFactory from "../util/AssetFactory"; export function loadTermCount(vocabularyIri: IRI) { const action = { type: ActionType.LOAD_TERM_COUNT, vocabularyIri }; @@ -131,6 +135,39 @@ export function loadVocabularyContentChanges(vocabularyIri: IRI) { }; } +export function loadVocabularyContentDetailedChanges( + vocabularyIri: IRI, + pageReq: PageRequest +) { + const action = { + type: ActionType.LOAD_TERM_HISTORY, + }; + + return (dispatch: ThunkDispatch) => { + dispatch(asyncActionRequest(action, true)); + return Ajax.get( + `${Constants.API_PREFIX}/vocabularies/${vocabularyIri.fragment}/history-of-content/detail`, + param("namespace", vocabularyIri.namespace) + .param("page", pageReq.page?.toString()) + .param("size", pageReq.size?.toString()) + ) + .then((data) => + JsonLdUtils.compactAndResolveReferencesAsArray( + data, + CHANGE_RECORD_CONTEXT + ) + ) + .then((data: ChangeRecord[]) => { + dispatch(asyncActionSuccess(action)); + return data.map((r) => AssetFactory.createChangeRecord(r)); + }) + .catch((error: ErrorData) => { + dispatch(asyncActionFailure(action, error)); + return []; + }); + }; +} + export function loadRelatedVocabularies(vocabularyIri: IRI) { const action = { type: ActionType.LOAD_RELATED_VOCABULARIES, vocabularyIri }; return (dispatch: ThunkDispatch) => { diff --git a/src/action/SearchActions.ts b/src/action/SearchActions.ts index ccd14ceb0..ca661857b 100644 --- a/src/action/SearchActions.ts +++ b/src/action/SearchActions.ts @@ -56,7 +56,6 @@ export function removeSearchListener() { * Timer to delay search requests as user is still typing. */ let updateSearchTimer: ReturnType | null = null; -const updateSearchDelay = 400; // ms /** * Change the search criteria and trigger a new search. @@ -85,7 +84,7 @@ export function updateSearchFilter(searchString: string) { updateSearchTimer = setTimeout(() => { updateSearchTimer = null; dispatch(searchEverything()); - }, updateSearchDelay); + }, Constants.SEARCH_DEBOUNCE_DELAY); return Promise.resolve(); } }; diff --git a/src/action/__tests__/AsyncActions.test.ts b/src/action/__tests__/AsyncActions.test.ts index c62a062c5..dfe20b616 100644 --- a/src/action/__tests__/AsyncActions.test.ts +++ b/src/action/__tests__/AsyncActions.test.ts @@ -5,7 +5,6 @@ import { createProperty, createVocabulary, executeFileTextAnalysis, - exportFileContent, getContentType, getLabel, getProperties, @@ -56,7 +55,6 @@ import RdfsResource, { } from "../../model/RdfsResource"; import TermItState from "../../model/TermItState"; import Resource from "../../model/Resource"; -import Utils from "../../util/Utils"; import AsyncActionStatus from "../AsyncActionStatus"; import fileContent from "../../rest-mock/file"; import TermItFile from "../../model/File"; @@ -1556,61 +1554,6 @@ describe("Async actions", () => { }); }); - describe("exportFileContent", () => { - const fileName = "test-file.html"; - const fileIri = VocabularyUtils.create( - "http://onto.fel.cvut.cz/ontologies/termit/resources/" + fileName - ); - - it("sends request asking for content as attachment", () => { - Ajax.getRaw = jest.fn().mockImplementation(() => - Promise.resolve({ - data: "test", - headers: { - "content-type": "text/html", - "content-disposition": 'attachment; filename="' + fileName + '"', - }, - }) - ); - Utils.fileDownload = jest.fn(); - return Promise.resolve( - (store.dispatch as ThunkDispatch)(exportFileContent(fileIri)) - ).then(() => { - expect(Ajax.getRaw).toHaveBeenCalled(); - const url = (Ajax.getRaw as jest.Mock).mock.calls[0][0]; - expect(url).toEqual( - Constants.API_PREFIX + "/resources/" + fileName + "/content" - ); - const config = (Ajax.getRaw as jest.Mock).mock.calls[0][1]; - expect(config.getParams().attachment).toEqual("true"); - expect(config.getParams().namespace).toEqual(fileIri.namespace); - }); - }); - - it("stores response attachment", () => { - const data = 'test'; - Ajax.getRaw = jest.fn().mockImplementation(() => - Promise.resolve({ - data, - headers: { - "content-type": "text/html", - "content-disposition": 'attachment; filename="' + fileName + '"', - }, - }) - ); - Utils.fileDownload = jest.fn(); - return Promise.resolve( - (store.dispatch as ThunkDispatch)(exportFileContent(fileIri)) - ).then(() => { - expect(Utils.fileDownload).toHaveBeenCalled(); - const args = (Utils.fileDownload as jest.Mock).mock.calls[0]; - expect(args[0]).toEqual(data); - expect(args[1]).toEqual(fileName); - expect(args[2]).toEqual("text/html"); - }); - }); - }); - describe("loadImportedVocabularies", () => { it("loads imported vocabularies for the specified vocabulary IRI", () => { const imports = [Generator.generateUri(), Generator.generateUri()]; diff --git a/src/action/__tests__/AsyncResourceActions.test.ts b/src/action/__tests__/AsyncResourceActions.test.ts new file mode 100644 index 000000000..be30f2803 --- /dev/null +++ b/src/action/__tests__/AsyncResourceActions.test.ts @@ -0,0 +1,84 @@ +import configureMockStore, { MockStoreEnhanced } from "redux-mock-store"; +import TermItState from "../../model/TermItState"; +import thunk from "redux-thunk"; +import VocabularyUtils from "../../util/VocabularyUtils"; +import Utils from "../../util/Utils"; +import { ThunkDispatch } from "../../util/Types"; +import Constants from "../../util/Constants"; +import Ajax from "../../util/Ajax"; +import { exportFileContent } from "../AsyncResourceActions"; + +jest.mock("../../util/Routing"); +jest.mock("../../util/Ajax", () => { + const originalModule = jest.requireActual("../../util/Ajax"); + return { + ...originalModule, + default: jest.fn(), + }; +}); + +const mockStore = configureMockStore([thunk]); + +describe("AsyncResourceActions", () => { + let store: MockStoreEnhanced; + + beforeEach(() => { + jest.clearAllMocks(); + store = mockStore(new TermItState()); + }); + + describe("exportFileContent", () => { + const fileName = "test-file.html"; + const fileIri = VocabularyUtils.create( + "http://onto.fel.cvut.cz/ontologies/termit/resources/" + fileName + ); + + it("sends request asking for content as attachment", () => { + Ajax.getRaw = jest.fn().mockImplementation(() => + Promise.resolve({ + data: "test", + headers: { + "content-type": "text/html", + "content-disposition": 'attachment; filename="' + fileName + '"', + }, + }) + ); + Utils.fileDownload = jest.fn(); + return Promise.resolve( + (store.dispatch as ThunkDispatch)(exportFileContent(fileIri)) + ).then(() => { + expect(Ajax.getRaw).toHaveBeenCalled(); + const url = (Ajax.getRaw as jest.Mock).mock.calls[0][0]; + expect(url).toEqual( + Constants.API_PREFIX + "/resources/" + fileName + "/content" + ); + const config = (Ajax.getRaw as jest.Mock).mock.calls[0][1]; + expect(config.getParams().attachment).toEqual("true"); + expect(config.getParams().namespace).toEqual(fileIri.namespace); + }); + }); + + it("stores response attachment", () => { + const data = 'test'; + Ajax.getRaw = jest.fn().mockImplementation(() => + Promise.resolve({ + data, + headers: { + "content-type": "text/html", + "content-disposition": 'attachment; filename="' + fileName + '"', + }, + }) + ); + Utils.fileDownload = jest.fn(); + return Promise.resolve( + (store.dispatch as ThunkDispatch)(exportFileContent(fileIri)) + ).then(() => { + expect(Utils.fileDownload).toHaveBeenCalled(); + const args = (Utils.fileDownload as jest.Mock).mock.calls[0]; + expect(args[0]).toEqual(data); + expect(args[1]).toEqual(fileName); + expect(args[2]).toEqual("text/html"); + }); + }); + }); +}); diff --git a/src/action/__tests__/AsyncTermActions.test.ts b/src/action/__tests__/AsyncTermActions.test.ts index 125843a60..4c49cc9fe 100644 --- a/src/action/__tests__/AsyncTermActions.test.ts +++ b/src/action/__tests__/AsyncTermActions.test.ts @@ -168,6 +168,66 @@ describe("AsyncTermActions", () => { expect(data.vocabulary.iri).toEqual(vocabularyIri.toString()); }); }); + + it("adds term as root when parent is from different vocabulary", () => { + const term = new Term({ + label: langString("Test term 1"), + iri: vocabularyIri.toString() + "term/test-term-1", + parentTerms: [ + { + iri: Generator.generateUri(), + label: langString("Parent term from different vocabulary"), + vocabulary: { + iri: Generator.generateUri(), + }, + }, + ], + }); + const mock = jest.fn().mockImplementation(() => Promise.resolve()); + Ajax.post = mock; + return Promise.resolve( + (store.dispatch as ThunkDispatch)(createTerm(term, vocabularyIri)) + ).then(() => { + expect(Ajax.post).toHaveBeenCalled(); + expect(mock.mock.calls[0][0]).toEqual( + `${Constants.API_PREFIX}/vocabularies/${vocabularyIri.fragment}/terms` + ); + }); + }); + + it("uses parent term from current vocabulary when multiple parents are set", () => { + const parentIri = vocabularyIri.toString() + "/terms/parent-one"; + const term = new Term({ + label: langString("Test term 1"), + iri: vocabularyIri.toString() + "term/test-term-1", + parentTerms: [ + { + iri: parentIri, + label: langString("Parent term from this vocabulary"), + vocabulary: { + iri: vocabularyIri.toString(), + }, + }, + { + iri: Generator.generateUri(), + label: langString("Parent term from different vocabulary"), + vocabulary: { + iri: Generator.generateUri(), + }, + }, + ], + }); + const mock = jest.fn().mockImplementation(() => Promise.resolve()); + Ajax.post = mock; + return Promise.resolve( + (store.dispatch as ThunkDispatch)(createTerm(term, vocabularyIri)) + ).then(() => { + expect(Ajax.post).toHaveBeenCalled(); + expect(mock.mock.calls[0][0]).toEqual( + `${Constants.API_PREFIX}/vocabularies/${vocabularyIri.fragment}/terms/parent-one/subterms` + ); + }); + }); }); describe("setTermDefinitionSource", () => { diff --git a/src/component/administration/group/UserGroups.tsx b/src/component/administration/group/UserGroups.tsx index 7c3fa0f18..ce05ee5d7 100644 --- a/src/component/administration/group/UserGroups.tsx +++ b/src/component/administration/group/UserGroups.tsx @@ -20,8 +20,9 @@ const UserGroups: React.FC = () => { const { i18n } = useI18n(); const dispatch: ThunkDispatch = useDispatch(); const [groups, setGroups] = React.useState([]); - const [groupToDelete, setGroupToDelete] = - React.useState(null); + const [groupToDelete, setGroupToDelete] = React.useState( + null + ); React.useEffect(() => { trackPromise(dispatch(loadUserGroups()), "groups").then((data) => setGroups(data) diff --git a/src/component/annotator/Annotator.tsx b/src/component/annotator/Annotator.tsx index 2aae447f9..d4cfa4467 100644 --- a/src/component/annotator/Annotator.tsx +++ b/src/component/annotator/Annotator.tsx @@ -56,6 +56,7 @@ import { AnnotationClass, AnnotationOrigin, } from "../../model/AnnotatorLegendFilter"; +import AnnotatorDownloadActions from "./AnnotatorDownloadActions"; interface AnnotatorProps extends HasI18n { fileIri: IRI; @@ -657,6 +658,10 @@ export class Annotator extends React.Component { )} /> , + , , ]} /> diff --git a/src/component/annotator/AnnotatorDownloadActions.tsx b/src/component/annotator/AnnotatorDownloadActions.tsx new file mode 100644 index 000000000..4c0c25422 --- /dev/null +++ b/src/component/annotator/AnnotatorDownloadActions.tsx @@ -0,0 +1,78 @@ +import React from "react"; +import { IRI } from "../../util/VocabularyUtils"; +import { useI18n } from "../hook/useI18n"; +import { + DropdownItem, + DropdownMenu, + DropdownToggle, + UncontrolledButtonDropdown, +} from "reactstrap"; +import { FaCloudDownloadAlt } from "react-icons/fa"; +import { useDispatch } from "react-redux"; +import { ThunkDispatch } from "../../util/Types"; +import { trackPromise } from "react-promise-tracker"; +import { DateTime } from "luxon"; +import Constants from "../../util/Constants"; +import { exportFileContent } from "../../action/AsyncResourceActions"; + +const AnnotatorDownloadActions: React.FC<{ fileIri: IRI }> = ({ fileIri }) => { + const { i18n } = useI18n(); + const dispatch: ThunkDispatch = useDispatch(); + + const downloadCurrentFile = () => { + trackPromise(dispatch(exportFileContent(fileIri)), "annotator"); + }; + const downloadOriginalFile = () => { + const timestamp = DateTime.fromMillis(0).toFormat( + Constants.TIMESTAMP_PARAM_FORMAT + ); + trackPromise( + dispatch(exportFileContent(fileIri, { at: timestamp })), + "annotator" + ); + }; + const downloadWithoutUnconfirmed = () => { + trackPromise( + dispatch( + exportFileContent(fileIri, { withoutUnconfirmedOccurrences: true }) + ), + "annotator" + ); + }; + + return ( + + + + + {i18n("resource.metadata.file.content.download")} + + + + + {i18n("annotator.download.thisFile")} + + + {i18n("annotator.download.original")} + + + {i18n("annotator.download.withoutUnconfirmed")} + + + + ); +}; + +export default AnnotatorDownloadActions; diff --git a/src/component/annotator/HighlightTermOccurrencesButton.tsx b/src/component/annotator/HighlightTermOccurrencesButton.tsx index 37b5ed01c..c6e774799 100644 --- a/src/component/annotator/HighlightTermOccurrencesButton.tsx +++ b/src/component/annotator/HighlightTermOccurrencesButton.tsx @@ -22,92 +22,93 @@ interface HighlightTermOccurrencesButtonProps { onHighlightIndexChange: (change: number) => void; } -const HighlightTermOccurrencesButton: React.FC = - ({ term, highlightIndex, onChange, onHighlightIndexChange }) => { - const { i18n, formatMessage, locale } = useI18n(); - const [showPopup, setShowPopup] = React.useState(false); - const onSelect = (t: TermData | null) => { - onChange(t); - }; - const count = term !== null ? getTermOccurrences(term.iri!).length : -1; +const HighlightTermOccurrencesButton: React.FC< + HighlightTermOccurrencesButtonProps +> = ({ term, highlightIndex, onChange, onHighlightIndexChange }) => { + const { i18n, formatMessage, locale } = useI18n(); + const [showPopup, setShowPopup] = React.useState(false); + const onSelect = (t: TermData | null) => { + onChange(t); + }; + const count = term !== null ? getTermOccurrences(term.iri!).length : -1; - return ( - <> - setShowPopup(false)} - fade={false} - className="annotator-highlight-occurrences-popup" - > - - {i18n("annotator.highlight.selector.title")} - - - - -
-
- -
+ return ( + <> + setShowPopup(false)} + fade={false} + className="annotator-highlight-occurrences-popup" + > + + {i18n("annotator.highlight.selector.title")} + + + + +
+
+
- - - {term !== null && ( - <> - - -
- {highlightIndex + 1} / {count} -
- -
- - )} - - - - - ); - }; +
+ +
+ {term !== null && ( + <> + + +
+ {highlightIndex + 1} / {count} +
+ +
+ + )} +
+
+ + + ); +}; export default HighlightTermOccurrencesButton; diff --git a/src/component/annotator/TermDefinitionAnnotation.tsx b/src/component/annotator/TermDefinitionAnnotation.tsx index a4bd69470..4a175f201 100644 --- a/src/component/annotator/TermDefinitionAnnotation.tsx +++ b/src/component/annotator/TermDefinitionAnnotation.tsx @@ -89,56 +89,57 @@ function createActionButtons( return actions; } -export const TermDefinitionAnnotation: React.FC = - (props) => { - const { i18n } = useI18n(); - const term = props.term !== undefined ? props.term : null; - const [editing, setEditing] = React.useState(term === null); - React.useEffect(() => { - if (term) { - setEditing(false); - } - }, [term]); - const dispatch: ThunkDispatch = useDispatch(); - const onRemove = () => { - props.onRemove(); - if (term) { - dispatch(removeTermDefinitionSource(term)); - } - }; - const bodyContent = editing ? ( - - ) : ( - - ); - - return ( - setEditing(!editing), - onRemove, - }, - props.accessLevel - )} - title={i18n("annotation.definition.title")} - /> - ); +export const TermDefinitionAnnotation: React.FC< + TermDefinitionAnnotationProps +> = (props) => { + const { i18n } = useI18n(); + const term = props.term !== undefined ? props.term : null; + const [editing, setEditing] = React.useState(term === null); + React.useEffect(() => { + if (term) { + setEditing(false); + } + }, [term]); + const dispatch: ThunkDispatch = useDispatch(); + const onRemove = () => { + props.onRemove(); + if (term) { + dispatch(removeTermDefinitionSource(term)); + } }; + const bodyContent = editing ? ( + + ) : ( + + ); + + return ( + setEditing(!editing), + onRemove, + }, + props.accessLevel + )} + title={i18n("annotation.definition.title")} + /> + ); +}; export default TermDefinitionAnnotation; diff --git a/src/component/annotator/TermDefinitionAnnotationView.tsx b/src/component/annotator/TermDefinitionAnnotationView.tsx index b8ffd9b27..67347f74f 100644 --- a/src/component/annotator/TermDefinitionAnnotationView.tsx +++ b/src/component/annotator/TermDefinitionAnnotationView.tsx @@ -9,36 +9,37 @@ interface TermDefinitionAnnotationViewProps { textContent: string; } -const TermDefinitionAnnotationView: React.FC = - (props) => { - const { i18n } = useI18n(); - if (props.term) { - return ( - - - - - - - -
{i18n("annotation.definition.term")} - -
- ); - } else { - return ( - - - - - - - -
- {i18n("annotation.definition.definition")} - {props.textContent}
- ); - } - }; +const TermDefinitionAnnotationView: React.FC< + TermDefinitionAnnotationViewProps +> = (props) => { + const { i18n } = useI18n(); + if (props.term) { + return ( + + + + + + + +
{i18n("annotation.definition.term")} + +
+ ); + } else { + return ( + + + + + + + +
+ {i18n("annotation.definition.definition")} + {props.textContent}
+ ); + } +}; export default TermDefinitionAnnotationView; diff --git a/src/component/annotator/TermOccurrenceAnnotation.tsx b/src/component/annotator/TermOccurrenceAnnotation.tsx index 3e31f807e..e95594d22 100644 --- a/src/component/annotator/TermOccurrenceAnnotation.tsx +++ b/src/component/annotator/TermOccurrenceAnnotation.tsx @@ -102,54 +102,55 @@ function createActionButtons( return actions; } -export const TermOccurrenceAnnotation: React.FC = - (props) => { - const { i18n } = useI18n(); - const term = props.term !== undefined ? props.term : null; - const [editing, setEditing] = React.useState(term === null); - React.useEffect(() => { - if (term) { - setEditing(false); - } - }, [term]); - const onClose = () => { +export const TermOccurrenceAnnotation: React.FC< + TermOccurrenceAnnotationProps +> = (props) => { + const { i18n } = useI18n(); + const term = props.term !== undefined ? props.term : null; + const [editing, setEditing] = React.useState(term === null); + React.useEffect(() => { + if (term) { setEditing(false); - props.onClose(); - }; - const popupBody = editing ? ( - - ) : ( - - ); - - return ( - setEditing(!editing), - props.accessLevel - )} - title={i18n("annotation.occurrence.title")} - /> - ); + } + }, [term]); + const onClose = () => { + setEditing(false); + props.onClose(); }; + const popupBody = editing ? ( + + ) : ( + + ); + + return ( + setEditing(!editing), + props.accessLevel + )} + title={i18n("annotation.occurrence.title")} + /> + ); +}; export default TermOccurrenceAnnotation; diff --git a/src/component/annotator/TermOccurrenceAnnotationView.tsx b/src/component/annotator/TermOccurrenceAnnotationView.tsx index e4a7a07e4..235c31d28 100644 --- a/src/component/annotator/TermOccurrenceAnnotationView.tsx +++ b/src/component/annotator/TermOccurrenceAnnotationView.tsx @@ -11,41 +11,42 @@ interface TermOccurrenceAnnotationViewProps { annotationClass: string; } -const TermOccurrenceAnnotationView: React.FC = - (props) => { - const { i18n, formatMessage } = useI18n(); - switch (props.annotationClass) { - case AnnotationClass.ASSIGNED_OCCURRENCE: - return ( - - - - - - - -
- {i18n("annotation.term.assigned-occurrence.termLabel")} - - -
- ); - case AnnotationClass.SUGGESTED_OCCURRENCE: - return ( - - {i18n("annotation.form.suggested-occurrence.message")} - - ); - case AnnotationClass.INVALID: - return ( - - {formatMessage("annotation.form.invalid-occurrence.message", { - term: props.term ? props.term.iri : props.resource, - })} - - ); - } - return
; - }; +const TermOccurrenceAnnotationView: React.FC< + TermOccurrenceAnnotationViewProps +> = (props) => { + const { i18n, formatMessage } = useI18n(); + switch (props.annotationClass) { + case AnnotationClass.ASSIGNED_OCCURRENCE: + return ( + + + + + + + +
+ {i18n("annotation.term.assigned-occurrence.termLabel")} + + +
+ ); + case AnnotationClass.SUGGESTED_OCCURRENCE: + return ( + + {i18n("annotation.form.suggested-occurrence.message")} + + ); + case AnnotationClass.INVALID: + return ( + + {formatMessage("annotation.form.invalid-occurrence.message", { + term: props.term ? props.term.iri : props.resource, + })} + + ); + } + return
; +}; export default TermOccurrenceAnnotationView; diff --git a/src/component/changetracking/PersistRow.tsx b/src/component/changetracking/PersistRow.tsx index 122121ab8..af9650026 100644 --- a/src/component/changetracking/PersistRow.tsx +++ b/src/component/changetracking/PersistRow.tsx @@ -4,7 +4,7 @@ import PersistRecord from "../../model/changetracking/PersistRecord"; import { Badge } from "reactstrap"; import { useI18n } from "../hook/useI18n"; -interface PersistRowProps { +export interface PersistRowProps { record: PersistRecord; } diff --git a/src/component/changetracking/UpdateRow.tsx b/src/component/changetracking/UpdateRow.tsx index a284bfb06..8968b09e7 100644 --- a/src/component/changetracking/UpdateRow.tsx +++ b/src/component/changetracking/UpdateRow.tsx @@ -9,7 +9,7 @@ import OutgoingLink from "../misc/OutgoingLink"; import { Badge, Label } from "reactstrap"; import { useI18n } from "../hook/useI18n"; -interface UpdateRowProps { +export interface UpdateRowProps { record: UpdateRecord; } diff --git a/src/component/changetracking/VocabularyContentPersistRow.tsx b/src/component/changetracking/VocabularyContentPersistRow.tsx new file mode 100644 index 000000000..6009cac55 --- /dev/null +++ b/src/component/changetracking/VocabularyContentPersistRow.tsx @@ -0,0 +1,35 @@ +import * as React from "react"; +import { FormattedDate, FormattedTime } from "react-intl"; +import { Badge } from "reactstrap"; +import { useI18n } from "../hook/useI18n"; +import { PersistRowProps } from "./PersistRow"; +import TermIriLink from "../term/TermIriLink"; + +export const VocabularyContentPersistRow: React.FC = ( + props +) => { + const { i18n } = useI18n(); + const record = props.record; + const created = new Date(Date.parse(record.timestamp)); + return ( + + +
+ +
+
+ {record.author.fullName} +
+ + + + + + {i18n(record.typeLabel)} + + + + ); +}; + +export default VocabularyContentPersistRow; diff --git a/src/component/changetracking/VocabularyContentUpdateRow.tsx b/src/component/changetracking/VocabularyContentUpdateRow.tsx new file mode 100644 index 000000000..85890e71f --- /dev/null +++ b/src/component/changetracking/VocabularyContentUpdateRow.tsx @@ -0,0 +1,36 @@ +import * as React from "react"; +import { FormattedDate, FormattedTime } from "react-intl"; +import AssetLabel from "../misc/AssetLabel"; +import { Badge } from "reactstrap"; +import { useI18n } from "../hook/useI18n"; +import { UpdateRowProps } from "./UpdateRow"; +import TermIriLink from "../term/TermIriLink"; + +export const VocabularyContentUpdateRow: React.FC = (props) => { + const { i18n } = useI18n(); + const record = props.record; + const created = new Date(Date.parse(record.timestamp)); + return ( + + +
+ +
+
+ {record.author.fullName} +
+ + + + + + {i18n(record.typeLabel)} + + + + + + ); +}; + +export default VocabularyContentUpdateRow; diff --git a/src/component/comment/CommentList.tsx b/src/component/comment/CommentList.tsx index 820a70cb1..7b595387a 100644 --- a/src/component/comment/CommentList.tsx +++ b/src/component/comment/CommentList.tsx @@ -22,8 +22,9 @@ const CommentList: React.FC = (props) => { removeComment, } = props; - const [editedComment, setEditedComment] = - React.useState(null); + const [editedComment, setEditedComment] = React.useState( + null + ); if (comments.length === 0) { return {props.i18n("comments.list.empty")}; } diff --git a/src/component/dashboard/widget/lastcommented/CommonLastCommentedAssets.tsx b/src/component/dashboard/widget/lastcommented/CommonLastCommentedAssets.tsx index c81b3f254..9b7dc6f42 100644 --- a/src/component/dashboard/widget/lastcommented/CommonLastCommentedAssets.tsx +++ b/src/component/dashboard/widget/lastcommented/CommonLastCommentedAssets.tsx @@ -21,8 +21,9 @@ const CommonLastCommentedAssets: React.FC = ( ) => { const { loadAssets } = props; const [page, setPage] = useState(0); - const [lastCommentedAssets, setLastCommentedAssets] = - React.useState(null); + const [lastCommentedAssets, setLastCommentedAssets] = React.useState< + RecentlyCommentedAsset[] | null + >(null); const dispatch: ThunkDispatch = useDispatch(); React.useEffect(() => { trackPromise( diff --git a/src/component/dashboard/widget/lastedited/AssetList.tsx b/src/component/dashboard/widget/lastedited/AssetList.tsx index d6eae03bd..69002fb95 100644 --- a/src/component/dashboard/widget/lastedited/AssetList.tsx +++ b/src/component/dashboard/widget/lastedited/AssetList.tsx @@ -30,85 +30,86 @@ function renderLink( return AssetLinkFactory.createAssetLink(AssetFactory.createAsset(item)); } -export const AssetList: React.FC<{ assets: RecentlyModifiedAsset[] | null }> = - ({ assets }) => { - const user = useSelector((state: TermItState) => state.user); - const lastSeen = user.lastSeen ? Date.parse(user.lastSeen) : Date.now(); - const { i18n, formatMessage, locale } = useI18n(); +export const AssetList: React.FC<{ + assets: RecentlyModifiedAsset[] | null; +}> = ({ assets }) => { + const user = useSelector((state: TermItState) => state.user); + const lastSeen = user.lastSeen ? Date.parse(user.lastSeen) : Date.now(); + const { i18n, formatMessage, locale } = useI18n(); - if (!assets) { - return null; - } - - const renderNonEmptyContent = () => { - const formatter = new TimeAgo(locale); - return ( - - - {assets.map((asset) => { - const modifiedTimestamp = Date.parse(asset.modified!); - return ( - - - - - - - - ); - })} - -
-
- {shouldHighlight(lastSeen, user.iri, asset) && ( - - )} - - - - {renderLink(asset, i18n)} -
- -
- ); - }; + if (!assets) { + return null; + } + const renderNonEmptyContent = () => { + const formatter = new TimeAgo(locale); return ( - <> - {assets.length > 0 ? ( - renderNonEmptyContent() - ) : ( -
- {i18n("dashboard.widget.assetList.empty")} -
- )} - + + + {assets.map((asset) => { + const modifiedTimestamp = Date.parse(asset.modified!); + return ( + + + + + + + + ); + })} + +
+
+ {shouldHighlight(lastSeen, user.iri, asset) && ( + + )} + + + + {renderLink(asset, i18n)} +
+ +
); }; + return ( + <> + {assets.length > 0 ? ( + renderNonEmptyContent() + ) : ( +
+ {i18n("dashboard.widget.assetList.empty")} +
+ )} + + ); +}; + export default AssetList; diff --git a/src/component/dashboard/widget/lastedited/CommonLastEditedAssets.tsx b/src/component/dashboard/widget/lastedited/CommonLastEditedAssets.tsx index 358c25846..5f35f4ded 100644 --- a/src/component/dashboard/widget/lastedited/CommonLastEditedAssets.tsx +++ b/src/component/dashboard/widget/lastedited/CommonLastEditedAssets.tsx @@ -20,8 +20,9 @@ const CommonLastEditedAssets: React.FC = ( ) => { const { loadAssets } = props; const [page, setPage] = useState(0); - const [lastEditedAssets, setLastEditedAssets] = - React.useState(null); + const [lastEditedAssets, setLastEditedAssets] = React.useState< + RecentlyModifiedAsset[] | null + >(null); const dispatch: ThunkDispatch = useDispatch(); React.useEffect(() => { trackPromise( diff --git a/src/component/layout/AttributeSectionContainer.tsx b/src/component/layout/AttributeSectionContainer.tsx index 89620740b..bc8ac8037 100644 --- a/src/component/layout/AttributeSectionContainer.tsx +++ b/src/component/layout/AttributeSectionContainer.tsx @@ -8,16 +8,17 @@ interface AttributeSectionContainerProps { /** * Visual container for grouping asset attributes. */ -export const AttributeSectionContainer: React.FC = - (props) => { - const { label, children } = props; - return ( -
-

{label}

-
- {children} -
- ); - }; +export const AttributeSectionContainer: React.FC< + AttributeSectionContainerProps +> = (props) => { + const { label, children } = props; + return ( +
+

{label}

+
+ {children} +
+ ); +}; export default AttributeSectionContainer; diff --git a/src/component/misc/ConfirmCancelDialog.tsx b/src/component/misc/ConfirmCancelDialog.tsx index 64923aa9a..547323196 100644 --- a/src/component/misc/ConfirmCancelDialog.tsx +++ b/src/component/misc/ConfirmCancelDialog.tsx @@ -22,7 +22,8 @@ interface ConfirmCancelDialogProps { confirmDisabled?: boolean; cancelKey?: string; cancelColor?: string; - size?: string; + size?: "lg" | "sm"; + className?: string; } /** @@ -37,6 +38,7 @@ const ConfirmCancelDialog: React.FC = (props) => { isOpen={props.show} toggle={props.onClose} size={props.size} + className={props.className} > {props.title} {props.children} diff --git a/src/component/misc/MarkdownEditor.tsx b/src/component/misc/MarkdownEditor.tsx index 4a1f0eb79..312cfe670 100644 --- a/src/component/misc/MarkdownEditor.tsx +++ b/src/component/misc/MarkdownEditor.tsx @@ -188,8 +188,9 @@ const MarkdownEditor: React.FC = (props) => { setMdeInstance(easyMde); }, []); - const [codemirrorInstance, setCodemirrorInstance] = - useState(null); + const [codemirrorInstance, setCodemirrorInstance] = useState( + null + ); const getCmInstanceCallback = useCallback((editor: Editor) => { setCodemirrorInstance(editor); }, []); diff --git a/src/component/resource/document/DocumentFiles.tsx b/src/component/resource/document/DocumentFiles.tsx index 8b6cf76bc..8da3c5a07 100644 --- a/src/component/resource/document/DocumentFiles.tsx +++ b/src/component/resource/document/DocumentFiles.tsx @@ -4,11 +4,11 @@ import { ThunkDispatch } from "../../../util/Types"; import { useDispatch } from "react-redux"; import { createFileInDocument, - exportFileContent, removeFileFromDocument, updateResource, uploadFileContent, } from "../../../action/AsyncActions"; +import { exportFileContent } from "../../../action/AsyncResourceActions"; import VocabularyUtils from "../../../util/VocabularyUtils"; import Files from "./Files"; import NotificationType from "../../../model/NotificationType"; @@ -71,7 +71,9 @@ export const DocumentFiles = (props: DocumentFilesProps) => { Constants.TIMESTAMP_PARAM_FORMAT ); dispatch( - exportFileContent(VocabularyUtils.create(termitFile.iri), timestamp) + exportFileContent(VocabularyUtils.create(termitFile.iri), { + at: timestamp, + }) ); }; diff --git a/src/component/search/facet/FacetedSearch.tsx b/src/component/search/facet/FacetedSearch.tsx index a87eb96fb..6c29aaa9f 100644 --- a/src/component/search/facet/FacetedSearch.tsx +++ b/src/component/search/facet/FacetedSearch.tsx @@ -19,6 +19,7 @@ import VocabularyFacet from "./VocabularyFacet"; import SimplePagination from "../../dashboard/widget/lastcommented/SimplePagination"; import Constants from "../../../util/Constants"; import TermStateFacet from "./TermStateFacet"; +import { useDebouncedCallback } from "use-debounce"; function aggregateSearchParams(params: { [key: string]: SearchParam }) { return Object.entries(params) @@ -36,6 +37,11 @@ INITIAL_STATE[VocabularyUtils.SKOS_NOTATION] = { value: [""], matchType: MatchType.EXACT_MATCH, }; +INITIAL_STATE[VocabularyUtils.SKOS_EXAMPLE] = { + property: VocabularyUtils.SKOS_EXAMPLE, + value: [""], + matchType: MatchType.SUBSTRING, +}; INITIAL_STATE[VocabularyUtils.RDF_TYPE] = { property: VocabularyUtils.RDF_TYPE, value: [], @@ -57,19 +63,36 @@ const FacetedSearch: React.FC = () => { const dispatch: ThunkDispatch = useDispatch(); const [page, setPage] = useState(0); const [params, setParams] = useState(INITIAL_STATE); + const [results, setResults] = React.useState( + null + ); + const onChange = (value: SearchParam) => { const change = {}; change[value.property] = value; setParams({ ...params, ...change }); setPage(0); + if (value.matchType === MatchType.IRI || value.value[0].length === 0) { + runSearch({ ...params, ...change }, page); + } else { + debouncedSearch({ ...params, ...change }, page); + } + }; + const onPageChange = (page: number) => { + setPage(page); + runSearch(params, page); }; - const [results, setResults] = - React.useState(null); const runSearch = React.useCallback( - (params: SearchParam[]) => { + (params: {}, page: number) => { + const sp = aggregateSearchParams(params); + if (sp.length === 0) { + setPage(0); + setResults(null); + return; + } trackPromise( dispatch( - executeFacetedTermSearch(params, { + executeFacetedTermSearch(sp, { page, size: Constants.DEFAULT_PAGE_SIZE, }) @@ -77,17 +100,11 @@ const FacetedSearch: React.FC = () => { "faceted-search" ).then((res) => setResults(res)); }, - [page, dispatch, setResults] + [dispatch, setPage, setResults] ); - React.useEffect(() => { - const sp = aggregateSearchParams(params); - if (sp.length === 0) { - setPage(0); - setResults(null); - return; - } - runSearch(sp); - }, [params, runSearch]); + const debouncedSearch = useDebouncedCallback((params: {}, page: number) => { + runSearch(params, page); + }, Constants.SEARCH_DEBOUNCE_DELAY); return (