From cc32b6fba7b34defbb72190456b348fee2431a49 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 8 Oct 2024 00:15:20 -0500 Subject: [PATCH 01/17] Bump sanitize-html from 2.13.0 to 2.13.1 (#7312) Bumps [sanitize-html](https://github.com/apostrophecms/sanitize-html) from 2.13.0 to 2.13.1. - [Changelog](https://github.com/apostrophecms/sanitize-html/blob/main/CHANGELOG.md) - [Commits](https://github.com/apostrophecms/sanitize-html/compare/2.13.0...2.13.1) --- updated-dependencies: - dependency-name: sanitize-html dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Mercy --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 2333312f1b..c30c6a535c 100644 --- a/package.json +++ b/package.json @@ -226,7 +226,7 @@ "rsmq": "^0.12.4", "rtlcss": "^4.3.0", "sanitize-filename": "^1.6.3", - "sanitize-html": "^2.13.0", + "sanitize-html": "^2.13.1", "serialize-javascript": "^6.0.1", "sift": "^17.1.3", "socket.io": "4.8.0", diff --git a/yarn.lock b/yarn.lock index 9503c8927f..8fac05ab51 100644 --- a/yarn.lock +++ b/yarn.lock @@ -15589,10 +15589,10 @@ sanitize-filename@^1.6.1, sanitize-filename@^1.6.3: dependencies: truncate-utf8-bytes "^1.0.0" -sanitize-html@^2.13.0: - version "2.13.0" - resolved "https://registry.yarnpkg.com/sanitize-html/-/sanitize-html-2.13.0.tgz#71aedcdb777897985a4ea1877bf4f895a1170dae" - integrity sha512-Xff91Z+4Mz5QiNSLdLWwjgBDm5b1RU6xBT0+12rapjiaR7SwfRdjw8f+6Rir2MXKLrDicRFHdb51hGOAxmsUIA== +sanitize-html@^2.13.1: + version "2.13.1" + resolved "https://registry.yarnpkg.com/sanitize-html/-/sanitize-html-2.13.1.tgz#b4639b0a09574ab62b1b353cb99b1b87af742834" + integrity sha512-ZXtKq89oue4RP7abL9wp/9URJcqQNABB5GGJ2acW1sdO8JTVl92f4ygD7Yc9Ze09VAZhnt2zegeU0tbNsdcLYg== dependencies: deepmerge "^4.2.2" escape-string-regexp "^4.0.0" From 3932391b489e45628d1b640061ef48ba00e45b65 Mon Sep 17 00:00:00 2001 From: Alberto Casado Torres Date: Tue, 8 Oct 2024 15:34:49 +0200 Subject: [PATCH 02/17] Entity titles in suggestions table are now links to the entity (#7253) * Entity titles in suggestions table are now links to the entity * updated global.css * removed unnecesary import * package bump * fixed e2e * updated lock after bump --- app/react/Entities/components/EntityViewer.js | 1 + .../V2/Routes/Settings/IX/components/TableElements.tsx | 6 ++++-- cypress/e2e/settings/information-extraction.cy.ts | 3 ++- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/app/react/Entities/components/EntityViewer.js b/app/react/Entities/components/EntityViewer.js index 4dd3f956aa..c2ec8b20c3 100644 --- a/app/react/Entities/components/EntityViewer.js +++ b/app/react/Entities/components/EntityViewer.js @@ -440,6 +440,7 @@ const mapStateToProps = state => { formState: state.entityView.entityFormState, entityState: state.entityView.entityForm, // Is this used at all? + // ¯\_(ツ)_/¯ library: state.library, // relationships v2 newRelationshipsEnabled: state.settings?.collection?.get('features')?.get('newRelationships'), diff --git a/app/react/V2/Routes/Settings/IX/components/TableElements.tsx b/app/react/V2/Routes/Settings/IX/components/TableElements.tsx index 8f5e0aeee9..8cf3714660 100644 --- a/app/react/V2/Routes/Settings/IX/components/TableElements.tsx +++ b/app/react/V2/Routes/Settings/IX/components/TableElements.tsx @@ -201,8 +201,10 @@ const OpenPDFButton = ({ }; const TitleCell = ({ cell, row }: CellContext) => ( -
- {cell.getValue()} ({row.original.language}) + ); diff --git a/cypress/e2e/settings/information-extraction.cy.ts b/cypress/e2e/settings/information-extraction.cy.ts index a6564c4b7d..c5b10395b8 100644 --- a/cypress/e2e/settings/information-extraction.cy.ts +++ b/cypress/e2e/settings/information-extraction.cy.ts @@ -336,7 +336,7 @@ describe('Information Extraction', () => { }); it('should click to fill with a new text', () => { - cy.contains('The Spectacular Spider-Man').parent().siblings().last().click(); + cy.contains('The Spectacular Spider-Man').parent().parent().siblings().last().click(); cy.get('aside').within(() => { cy.get('input').clear(); }); @@ -384,6 +384,7 @@ describe('Information Extraction', () => { cy.contains('a', 'Metadata Extraction').eq(0).click(); cy.contains('Fechas from relevant templates').siblings().last().click(); cy.contains('Apitz Barbera y otros. Resolución de la Presidenta de 18 de diciembre de 2009') + .parent() .parent() .siblings() .last() From ccc086c6bcbeb07a3b60f70d1e6f92bf565e737e Mon Sep 17 00:00:00 2001 From: Txau Date: Tue, 8 Oct 2024 08:24:56 -0600 Subject: [PATCH 03/17] Dependa (#7324) * Bump monaco-editor from 0.51.0 to 0.52.0 Bumps [monaco-editor](https://github.com/microsoft/monaco-editor) from 0.51.0 to 0.52.0. - [Release notes](https://github.com/microsoft/monaco-editor/releases) - [Changelog](https://github.com/microsoft/monaco-editor/blob/main/CHANGELOG.md) - [Commits](https://github.com/microsoft/monaco-editor/compare/v0.51.0...v0.52.0) --- updated-dependencies: - dependency-name: monaco-editor dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] * Bump @googlemaps/js-api-loader from 1.16.6 to 1.16.8 Bumps [@googlemaps/js-api-loader](https://github.com/googlemaps/js-api-loader) from 1.16.6 to 1.16.8. - [Release notes](https://github.com/googlemaps/js-api-loader/releases) - [Changelog](https://github.com/googlemaps/js-api-loader/blob/main/CHANGELOG.md) - [Commits](https://github.com/googlemaps/js-api-loader/compare/v1.16.6...v1.16.8) --- updated-dependencies: - dependency-name: "@googlemaps/js-api-loader" dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] * Bump react-datepicker from 7.3.0 to 7.4.0 Bumps [react-datepicker](https://github.com/Hacker0x01/react-datepicker) from 7.3.0 to 7.4.0. - [Release notes](https://github.com/Hacker0x01/react-datepicker/releases) - [Commits](https://github.com/Hacker0x01/react-datepicker/compare/v7.3.0...v7.4.0) --- updated-dependencies: - dependency-name: react-datepicker dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] * Bump postcss from 8.4.45 to 8.4.47 Bumps [postcss](https://github.com/postcss/postcss) from 8.4.45 to 8.4.47. - [Release notes](https://github.com/postcss/postcss/releases) - [Changelog](https://github.com/postcss/postcss/blob/main/CHANGELOG.md) - [Commits](https://github.com/postcss/postcss/compare/8.4.45...8.4.47) --- updated-dependencies: - dependency-name: postcss dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: txau --- package.json | 8 ++-- yarn.lock | 101 +++++++++++++++++++++++++++++---------------------- 2 files changed, 61 insertions(+), 48 deletions(-) diff --git a/package.json b/package.json index ec6c1101de..659aba1717 100644 --- a/package.json +++ b/package.json @@ -96,7 +96,7 @@ "@fortawesome/free-regular-svg-icons": "^6.6.0", "@fortawesome/free-solid-svg-icons": "^5.15.4", "@fortawesome/react-fontawesome": "^0.2.2", - "@googlemaps/js-api-loader": "^1.16.6", + "@googlemaps/js-api-loader": "^1.16.8", "@headlessui/react": "1.7.17", "@heroicons/react": "^2.1.5", "@hookform/error-message": "^2.0.1", @@ -172,7 +172,7 @@ "mime-types": "^2.1.35", "moment": "^2.30.1", "moment-timezone": "0.5.45", - "monaco-editor": "^0.51.0", + "monaco-editor": "^0.52.0", "monaco-editor-webpack-plugin": "^7.1.0", "mongodb": "6.3.0", "mongoose": "8.1.2", @@ -192,7 +192,7 @@ "qs": "^6.13.0", "react": "^18.3.1", "react-color": "^2.19.3", - "react-datepicker": "7.3.0", + "react-datepicker": "7.4.0", "react-device-detect": "^2.2.3", "react-dnd": "^16.0.1", "react-dnd-html5-backend": "^16.0.1", @@ -369,7 +369,7 @@ "node-polyfill-webpack-plugin": "^4.0.0", "nodemon": "^3.1.7", "plop": "^4.0.1", - "postcss": "8.4.45", + "postcss": "8.4.47", "prettier": "3.3.3", "puppeteer": "^13.5.2", "react-dnd-test-backend": "15.1.1", diff --git a/yarn.lock b/yarn.lock index 8fac05ab51..09fe2dfe9e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2201,7 +2201,14 @@ dependencies: "@floating-ui/dom" "^1.0.0" -"@floating-ui/react@0.26.17", "@floating-ui/react@^0.26.2": +"@floating-ui/react-dom@^2.1.2": + version "2.1.2" + resolved "https://registry.yarnpkg.com/@floating-ui/react-dom/-/react-dom-2.1.2.tgz#a1349bbf6a0e5cb5ded55d023766f20a4d439a31" + integrity sha512-06okr5cgPzMNBy+Ycse2A6udMi4bqwW/zgBF/rwjcNqWkyr82Mcg8b0vjX8OJpZFy/FKjJmw6wV7t44kK6kW7A== + dependencies: + "@floating-ui/dom" "^1.0.0" + +"@floating-ui/react@0.26.17": version "0.26.17" resolved "https://registry.yarnpkg.com/@floating-ui/react/-/react-0.26.17.tgz#efa2e1a0dea3d9d308965c5ccd49756bb64a883d" integrity sha512-ESD+jYWwqwVzaIgIhExrArdsCL1rOAzryG/Sjlu8yaD3Mtqi3uVyhbE2V7jD58Mo52qbzKz2eUY/Xgh5I86FCQ== @@ -2210,11 +2217,25 @@ "@floating-ui/utils" "^0.2.0" tabbable "^6.0.0" +"@floating-ui/react@^0.26.23": + version "0.26.24" + resolved "https://registry.yarnpkg.com/@floating-ui/react/-/react-0.26.24.tgz#072b9dfeca4e79ef4e3000ef1c28e0ffc86f4ed4" + integrity sha512-2ly0pCkZIGEQUq5H8bBK0XJmc1xIK/RM3tvVzY3GBER7IOD1UgmC2Y2tjj4AuS+TC+vTE1KJv2053290jua0Sw== + dependencies: + "@floating-ui/react-dom" "^2.1.2" + "@floating-ui/utils" "^0.2.8" + tabbable "^6.0.0" + "@floating-ui/utils@^0.2.0": version "0.2.2" resolved "https://registry.yarnpkg.com/@floating-ui/utils/-/utils-0.2.2.tgz#d8bae93ac8b815b2bd7a98078cf91e2724ef11e5" integrity sha512-J4yDIIthosAsRZ5CPYP/jQvUAQtlZTTD/4suA08/FEnlxqW3sKS9iAhgsa9VYLZ6vDHn/ixJgIqRQPotoBjxIw== +"@floating-ui/utils@^0.2.8": + version "0.2.8" + resolved "https://registry.yarnpkg.com/@floating-ui/utils/-/utils-0.2.8.tgz#21a907684723bbbaa5f0974cf7730bd797eb8e62" + integrity sha512-kym7SodPp8/wloecOpcmSnWJsK7M0E5Wg8UcFA+uO4B9s5d0ywXOEro/8HM9x0rW+TljRzul/14UYz3TleT3ig== + "@fortawesome/fontawesome-common-types@6.6.0": version "6.6.0" resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-6.6.0.tgz#31ab07ca6a06358c5de4d295d4711b675006163f" @@ -2253,12 +2274,10 @@ dependencies: prop-types "^15.8.1" -"@googlemaps/js-api-loader@^1.16.6": - version "1.16.6" - resolved "https://registry.yarnpkg.com/@googlemaps/js-api-loader/-/js-api-loader-1.16.6.tgz#c89970c94b55796d51746c092f0e52953994a171" - integrity sha512-V8p5W9DbPQx74jWUmyYJOerhiB4C+MHekaO0ZRmc6lrOYrvY7+syLhzOWpp55kqSPeNb+qbC2h8i69aLIX6krQ== - dependencies: - fast-deep-equal "^3.1.3" +"@googlemaps/js-api-loader@^1.16.8": + version "1.16.8" + resolved "https://registry.yarnpkg.com/@googlemaps/js-api-loader/-/js-api-loader-1.16.8.tgz#1595a2af80ca07e551fc961d921a2437d1cb3643" + integrity sha512-CROqqwfKotdO6EBjZO/gQGVTbeDps5V7Mt9+8+5Q+jTg5CRMi3Ii/L9PmV3USROrt2uWxtGzJHORmByxyo9pSQ== "@hapi/hoek@^9.0.0": version "9.3.0" @@ -7066,10 +7085,10 @@ clone@^1.0.2: version "1.0.4" resolved "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz" -clsx@^2.0.0, clsx@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/clsx/-/clsx-2.1.0.tgz#e851283bcb5c80ee7608db18487433f7b23f77cb" - integrity sha512-m3iNNWpd9rl3jvvcBnu70ylMdrXt8Vlq4HYadnU5fwcOtvkSQWPmj7amUcDT2qYI7risszBjI5AUIUox9D16pg== +clsx@^2.0.0, clsx@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/clsx/-/clsx-2.1.1.tgz#eed397c9fd8bd882bfb18deab7102049a2f32999" + integrity sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA== co@^4.6.0: version "4.6.0" @@ -7926,7 +7945,7 @@ date-arithmetic@^3.1.0: version "3.1.0" resolved "https://registry.npmjs.org/date-arithmetic/-/date-arithmetic-3.1.0.tgz" -date-fns@^3.3.1, date-fns@^3.6.0: +date-fns@^3.6.0: version "3.6.0" resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-3.6.0.tgz#f20ca4fe94f8b754951b24240676e8618c0206bf" integrity sha512-fRHTG8g/Gif+kSh50gaGEdToemgfj74aRX3swtiouboip5JDLAyDE9F11nHMIcvOaXeOC6D7SpNhi7uFyB7Uww== @@ -13002,10 +13021,10 @@ monaco-editor-webpack-plugin@^7.1.0: dependencies: loader-utils "^2.0.2" -monaco-editor@^0.51.0: - version "0.51.0" - resolved "https://registry.yarnpkg.com/monaco-editor/-/monaco-editor-0.51.0.tgz#922a6103f6742b5a62fbb097276c5a6619d879db" - integrity sha512-xaGwVV1fq343cM7aOYB6lVE4Ugf0UyimdD/x5PWcWBMKENwectaEu77FAN7c5sFiyumqeJdX1RPTh1ocioyDjw== +monaco-editor@^0.52.0: + version "0.52.0" + resolved "https://registry.yarnpkg.com/monaco-editor/-/monaco-editor-0.52.0.tgz#d47c02b191eae208d68878d679b3ee7456031be7" + integrity sha512-OeWhNpABLCeTqubfqLMXGsqf6OmPU6pHM85kF3dhy6kq5hnhuVS1p3VrEW/XhWHc71P2tHyS5JFySD8mgs1crw== mongodb-connection-string-url@^3.0.0: version "3.0.0" @@ -13922,10 +13941,10 @@ phin@^2.9.1: resolved "https://registry.yarnpkg.com/phin/-/phin-2.9.3.tgz#f9b6ac10a035636fb65dfc576aaaa17b8743125c" integrity sha512-CzFr90qM24ju5f88quFC/6qohjC144rehe5n6DH900lgXmUe86+xCKc10ev56gRKC4/BkHUoG4uSiQgBiIXwDA== -picocolors@^1.0.0, picocolors@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.1.tgz#a8ad579b571952f0e5d25892de5445bcfe25aaa1" - integrity sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew== +picocolors@^1.0.0, picocolors@^1.0.1, picocolors@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.0.tgz#5358b76a78cde483ba5cef6a9dc9671440b27d59" + integrity sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw== picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3, picomatch@^2.3.0, picomatch@^2.3.1: version "2.3.1" @@ -14325,14 +14344,14 @@ postcss-value-parser@^4.0.0, postcss-value-parser@^4.1.0, postcss-value-parser@^ resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== -postcss@8.4.45, postcss@^8.3.11, postcss@^8.4.21, postcss@^8.4.23, postcss@^8.4.33, postcss@^8.4.38: - version "8.4.45" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.45.tgz#538d13d89a16ef71edbf75d895284ae06b79e603" - integrity sha512-7KTLTdzdZZYscUc65XmjFiB73vBhBfbPztCYdUNvlaso9PrzjzcmjqBPR0lNGkcVlcO4BjiO5rK/qNz+XAen1Q== +postcss@8.4.47, postcss@^8.3.11, postcss@^8.4.21, postcss@^8.4.23, postcss@^8.4.33, postcss@^8.4.38: + version "8.4.47" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.47.tgz#5bf6c9a010f3e724c503bf03ef7947dcb0fea365" + integrity sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ== dependencies: nanoid "^3.3.7" - picocolors "^1.0.1" - source-map-js "^1.2.0" + picocolors "^1.1.0" + source-map-js "^1.2.1" prelude-ls@^1.2.1: version "1.2.1" @@ -14664,16 +14683,15 @@ react-confetti@^6.1.0: dependencies: tween-functions "^1.2.0" -react-datepicker@7.3.0: - version "7.3.0" - resolved "https://registry.yarnpkg.com/react-datepicker/-/react-datepicker-7.3.0.tgz#666664a609d4b57b095083fe29d080943fa7b3ed" - integrity sha512-EqRKLAtLZUTztiq6a+tjSjQX9ES0Xd229JPckAtyZZ4GoY3rtvNWAzkYZnQUf6zTWT50Ki0+t+W9VRQIkSJLfg== +react-datepicker@7.4.0: + version "7.4.0" + resolved "https://registry.yarnpkg.com/react-datepicker/-/react-datepicker-7.4.0.tgz#127a9c3ce24260f6e21cf4211c910f3eb6d83383" + integrity sha512-vSSok4DTZ9/Os8O4HjZLxh4SZVFU6dQvoCX6mfbNdBqMsBBdzftrvMz0Nb4UUVVbgj9o8PfX84K3/31oPrTqmg== dependencies: - "@floating-ui/react" "^0.26.2" - clsx "^2.1.0" - date-fns "^3.3.1" - prop-types "^15.7.2" - react-onclickoutside "^6.13.0" + "@floating-ui/react" "^0.26.23" + clsx "^2.1.1" + date-fns "^3.6.0" + prop-types "^15.8.1" react-device-detect@^2.2.3: version "2.2.3" @@ -14842,11 +14860,6 @@ react-native-segmented-control-tab@^3.2.1: resolved "https://registry.npmjs.org/react-native-segmented-control-tab/-/react-native-segmented-control-tab-3.4.1.tgz" integrity sha512-BNPdlE9Unr0Xabewn8W+FhBMLjssXy9Ey7S7AY0hXlrKrEKFdC9z0yT+eEWd5dLam4T6T4IuGL8b7ZF4uGyWNw== -react-onclickoutside@^6.13.0: - version "6.13.0" - resolved "https://registry.yarnpkg.com/react-onclickoutside/-/react-onclickoutside-6.13.0.tgz#e165ea4e5157f3da94f4376a3ab3e22a565f4ffc" - integrity sha512-ty8So6tcUpIb+ZE+1HAhbLROvAIJYyJe/1vRrrcmW+jLsaM+/powDRqxzo6hSh9CuRZGSL1Q8mvcF5WRD93a0A== - react-player@^2.13.0: version "2.13.0" resolved "https://registry.yarnpkg.com/react-player/-/react-player-2.13.0.tgz#b6fb252bf70574608ac711f6c83d7057c8fb0c14" @@ -16000,10 +16013,10 @@ socket.io@^2.2.0: socket.io-client "2.5.0" socket.io-parser "~3.4.0" -"source-map-js@>=0.6.2 <2.0.0", source-map-js@^1.0.1, source-map-js@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.0.tgz#16b809c162517b5b8c3e7dcd315a2a5c2612b2af" - integrity sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg== +"source-map-js@>=0.6.2 <2.0.0", source-map-js@^1.0.1, source-map-js@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.1.tgz#1ce5650fddd87abc099eda37dcff024c2667ae46" + integrity sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA== source-map-support@0.5.13: version "0.5.13" From 586e4c0b3f76dcb01c0f4238944ea349e3ac0cd8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rafael=20P=C3=B3lit?= Date: Wed, 9 Oct 2024 09:03:55 -0500 Subject: [PATCH 04/17] 7318 translation pending (#7320) * Removed unnecessary eslint exception * Renamed spec file to match the tested file * Renamed describe to match test * Prepared test, removed eslint exceptions * Prepared fixture abstraction * Created SaveEntityTranslationPending use case * Prepared RequestEntityTranslation to use saveEntityTranslationPending. * Changed implementation to work with array of languages * Added logic to save AI Translation pending to Request Entity Translation. * Renamed file to plural * Removed standalone use case and included it in Request --- app/api/common.v2/database/MongoResultSet.ts | 2 +- .../AutomaticTranslationFactory.ts | 4 +- .../RequestEntityTranslation.ts | 30 ++++++- .../SaveEntityTranslations.ts | 1 - ...ec.ts => ATEntityCreationListener.spec.ts} | 0 .../specs/RequestEntityTranslation.spec.ts | 89 ++++++++++++------- .../specs/SaveEntityTranslations.spec.ts | 30 +------ .../specs/fixtures/SaveEntity.fixtures.ts | 37 ++++++++ app/api/utils/fixturesFactory.ts | 1 + 9 files changed, 129 insertions(+), 65 deletions(-) rename app/api/externalIntegrations.v2/automaticTranslation/adapters/driving/specs/{ATEntityCreatedListener.spec.ts => ATEntityCreationListener.spec.ts} (100%) create mode 100644 app/api/externalIntegrations.v2/automaticTranslation/specs/fixtures/SaveEntity.fixtures.ts diff --git a/app/api/common.v2/database/MongoResultSet.ts b/app/api/common.v2/database/MongoResultSet.ts index cd19ce32b7..4d44da5281 100644 --- a/app/api/common.v2/database/MongoResultSet.ts +++ b/app/api/common.v2/database/MongoResultSet.ts @@ -1,7 +1,7 @@ /* eslint-disable no-await-in-loop */ import { AggregationCursor, FindCursor } from 'mongodb'; -import { BreakLoopSignal, ResultSet } from '../contracts/ResultSet'; import { objectIndex } from 'shared/data_utils/objectIndex'; +import { BreakLoopSignal, ResultSet } from '../contracts/ResultSet'; interface MapperFunc { (elem: T): U | Promise; diff --git a/app/api/externalIntegrations.v2/automaticTranslation/AutomaticTranslationFactory.ts b/app/api/externalIntegrations.v2/automaticTranslation/AutomaticTranslationFactory.ts index 94337c65b8..31c2f1d632 100644 --- a/app/api/externalIntegrations.v2/automaticTranslation/AutomaticTranslationFactory.ts +++ b/app/api/externalIntegrations.v2/automaticTranslation/AutomaticTranslationFactory.ts @@ -53,11 +53,13 @@ const AutomaticTranslationFactory = { }, defaultRequestEntityTranslation() { + const transactionManager = DefaultTransactionManager(); return new RequestEntityTranslation( new TaskManager({ serviceName: RequestEntityTranslation.SERVICE_NAME, }), - AutomaticTranslationFactory.defaultATConfigDataSource(DefaultTransactionManager()), + AutomaticTranslationFactory.defaultATConfigDataSource(transactionManager), + DefaultEntitiesDataSource(transactionManager), new Validator(entityInputDataSchema), DefaultLogger() ); diff --git a/app/api/externalIntegrations.v2/automaticTranslation/RequestEntityTranslation.ts b/app/api/externalIntegrations.v2/automaticTranslation/RequestEntityTranslation.ts index 0d7a3fe58a..62f04ffbdd 100644 --- a/app/api/externalIntegrations.v2/automaticTranslation/RequestEntityTranslation.ts +++ b/app/api/externalIntegrations.v2/automaticTranslation/RequestEntityTranslation.ts @@ -3,6 +3,8 @@ import { Entity } from 'api/entities.v2/model/Entity'; import { EntityInputModel } from 'api/entities.v2/types/EntityInputDataType'; import { Logger } from 'api/log.v2/contracts/Logger'; import { TaskManager } from 'api/services/tasksmanager/TaskManager'; +import { EntitiesDataSource } from 'api/entities.v2/contracts/EntitiesDataSource'; +import { LanguageISO6391 } from 'shared/types/commonTypes'; import { ATConfigDataSource } from './contracts/ATConfigDataSource'; import { Validator } from './infrastructure/Validator'; @@ -16,22 +18,29 @@ export type ATTaskMessage = { export class RequestEntityTranslation { static SERVICE_NAME = 'translations'; - private logger: Logger; + static AITranslationPendingText = '(AI translation pending)'; private taskManager: TaskManager; private ATConfigDS: ATConfigDataSource; + private entitiesDS: EntitiesDataSource; + private inputValidator: Validator; + private logger: Logger; + + // eslint-disable-next-line max-params constructor( taskManager: TaskManager, ATConfigDS: ATConfigDataSource, + entitiesDS: EntitiesDataSource, inputValidator: Validator, logger: Logger ) { this.taskManager = taskManager; this.ATConfigDS = ATConfigDS; + this.entitiesDS = entitiesDS; this.inputValidator = inputValidator; this.logger = logger; } @@ -58,10 +67,25 @@ export class RequestEntityTranslation { const entity = Entity.fromInputModel(entityInputModel); - atTemplateConfig?.properties.forEach(async property => { + await atTemplateConfig?.properties.reduce(async (prev, property) => { + await prev; const propertyValue = entity.getPropertyValue(property); if (propertyValue) { + const entities = this.entitiesDS.getByIds([entity.sharedId]); + const pendingText = `${RequestEntityTranslation.AITranslationPendingText} ${propertyValue}`; + + await entities.forEach(async fetchedEntity => { + if (languagesTo.includes(fetchedEntity.language as LanguageISO6391)) { + await this.entitiesDS.updateEntity( + fetchedEntity.changePropertyValue(property, pendingText) + ); + this.logger.info( + `[AT] - Pending translation saved on DB - ${property.name}: ${pendingText}` + ); + } + }); + await this.taskManager.startTask({ key: [getTenant().name, entity.sharedId, property.id], text: propertyValue, @@ -78,6 +102,6 @@ export class RequestEntityTranslation { })}` ); } - }); + }, Promise.resolve()); } } diff --git a/app/api/externalIntegrations.v2/automaticTranslation/SaveEntityTranslations.ts b/app/api/externalIntegrations.v2/automaticTranslation/SaveEntityTranslations.ts index e83d5f3361..5876c6e566 100644 --- a/app/api/externalIntegrations.v2/automaticTranslation/SaveEntityTranslations.ts +++ b/app/api/externalIntegrations.v2/automaticTranslation/SaveEntityTranslations.ts @@ -57,7 +57,6 @@ export class SaveEntityTranslations { }); } - // eslint-disable-next-line max-statements private async getProperty(entitySharedId: string, propertyId: string) { const entity = await this.entitiesDS.getByIds([entitySharedId]).first(); if (!entity) { diff --git a/app/api/externalIntegrations.v2/automaticTranslation/adapters/driving/specs/ATEntityCreatedListener.spec.ts b/app/api/externalIntegrations.v2/automaticTranslation/adapters/driving/specs/ATEntityCreationListener.spec.ts similarity index 100% rename from app/api/externalIntegrations.v2/automaticTranslation/adapters/driving/specs/ATEntityCreatedListener.spec.ts rename to app/api/externalIntegrations.v2/automaticTranslation/adapters/driving/specs/ATEntityCreationListener.spec.ts diff --git a/app/api/externalIntegrations.v2/automaticTranslation/specs/RequestEntityTranslation.spec.ts b/app/api/externalIntegrations.v2/automaticTranslation/specs/RequestEntityTranslation.spec.ts index da6e200e55..263112c455 100644 --- a/app/api/externalIntegrations.v2/automaticTranslation/specs/RequestEntityTranslation.spec.ts +++ b/app/api/externalIntegrations.v2/automaticTranslation/specs/RequestEntityTranslation.spec.ts @@ -1,3 +1,4 @@ +/* eslint-disable max-classes-per-file */ import { DefaultTransactionManager } from 'api/common.v2/database/data_source_defaults'; import { entityInputDataSchema } from 'api/entities.v2/types/EntityInputDataSchema'; import { EntityInputModel } from 'api/entities.v2/types/EntityInputDataType'; @@ -5,10 +6,11 @@ import { Logger } from 'api/log.v2/contracts/Logger'; import { createMockLogger } from 'api/log.v2/infrastructure/MockLogger'; import { TaskManager } from 'api/services/tasksmanager/TaskManager'; import { getFixturesFactory } from 'api/utils/fixturesFactory'; -import { DBFixture } from 'api/utils/testing_db'; +import testingDB, { DBFixture } from 'api/utils/testing_db'; import { testingEnvironment } from 'api/utils/testingEnvironment'; import { LanguageISO6391 } from 'shared/types/commonTypes'; import { EntitySchema } from 'shared/types/entityType'; +import { DefaultEntitiesDataSource } from 'api/entities.v2/database/data_source_defaults'; import { AutomaticTranslationFactory } from '../AutomaticTranslationFactory'; import { ValidationError, Validator } from '../infrastructure/Validator'; import { ATTaskMessage, RequestEntityTranslation } from '../RequestEntityTranslation'; @@ -19,7 +21,7 @@ const fixtures: DBFixture = { factory.template('template1', [factory.property('text1'), factory.property('empty_text')]), ], entities: [ - ...factory.entityInMultipleLanguages(['en', 'es'], 'entity1', 'template1', { + ...factory.entityInMultipleLanguages(['en', 'es', 'pt'], 'entity1', 'template1', { text1: [{ value: 'original text1' }], empty_text: [{ value: '' }], }), @@ -29,6 +31,7 @@ const fixtures: DBFixture = { languages: [ { label: 'en', key: 'en' as LanguageISO6391, default: true }, { label: 'es', key: 'es' as LanguageISO6391 }, + { label: 'pt', key: 'pt' as LanguageISO6391 }, ], features: { automaticTranslation: { @@ -58,9 +61,13 @@ beforeEach(async () => { serviceName: RequestEntityTranslation.SERVICE_NAME, }); jest.spyOn(taskManager, 'startTask').mockImplementation(async () => ''); + + const transactionManager = DefaultTransactionManager(); + requestEntityTranslation = new RequestEntityTranslation( taskManager, - AutomaticTranslationFactory.defaultATConfigDataSource(DefaultTransactionManager()), + AutomaticTranslationFactory.defaultATConfigDataSource(transactionManager), + DefaultEntitiesDataSource(transactionManager), new Validator(entityInputDataSchema), mockLogger ); @@ -71,27 +78,55 @@ afterAll(async () => { }); describe('RequestEntityTranslation', () => { - it('should send a task in the automatic translation service queue', async () => { - const languageFromEntity = fixtures.entities?.find(e => e.language === 'en') as EntitySchema; - languageFromEntity._id = languageFromEntity?._id?.toString(); - languageFromEntity.template = languageFromEntity?.template?.toString(); - - await requestEntityTranslation.execute(languageFromEntity!); - - expect(taskManager.startTask).toHaveBeenCalledTimes(2); + describe('on requests that should be processed', () => { + beforeEach(async () => { + const languageFromEntity = { + ...fixtures.entities?.find(e => e.language === 'en'), + } as EntitySchema; + languageFromEntity._id = languageFromEntity?._id?.toString(); + languageFromEntity.template = languageFromEntity?.template?.toString(); + + await requestEntityTranslation.execute(languageFromEntity!); + }); - expect(taskManager.startTask).toHaveBeenCalledWith({ - key: ['tenant', 'entity1', factory.commonPropertiesTitleId('template1').toString()], - text: 'entity1', - language_from: 'en', - languages_to: ['es'], + it('should call save entities with pending translation', async () => { + const entities = + (await testingDB.mongodb?.collection('entities').find({ sharedId: 'entity1' }).toArray()) || + []; + expect(entities.find(e => e.language === 'es')).toMatchObject({ + title: `${RequestEntityTranslation.AITranslationPendingText} entity1`, + metadata: { + text1: [{ value: `${RequestEntityTranslation.AITranslationPendingText} original text1` }], + }, + }); + expect(entities.find(e => e.language === 'pt')).toMatchObject({ + title: `${RequestEntityTranslation.AITranslationPendingText} entity1`, + metadata: { + text1: [{ value: `${RequestEntityTranslation.AITranslationPendingText} original text1` }], + }, + }); + expect(entities.find(e => e.language === 'en')).toMatchObject({ + title: 'entity1', + metadata: { text1: [{ value: 'original text1' }] }, + }); }); - expect(taskManager.startTask).toHaveBeenCalledWith({ - key: ['tenant', 'entity1', factory.property('text1')._id?.toString()], - text: 'original text1', - language_from: 'en', - languages_to: ['es'], + it('should send a task to the automatic translation service queue', () => { + expect(taskManager.startTask).toHaveBeenCalledTimes(2); + + expect(taskManager.startTask).toHaveBeenCalledWith({ + key: ['tenant', 'entity1', factory.commonPropertiesTitleId('template1').toString()], + text: 'entity1', + language_from: 'en', + languages_to: ['es', 'pt'], + }); + + expect(taskManager.startTask).toHaveBeenCalledWith({ + key: ['tenant', 'entity1', factory.property('text1')._id?.toString()], + text: 'original text1', + language_from: 'en', + languages_to: ['es', 'pt'], + }); }); }); @@ -100,7 +135,7 @@ describe('RequestEntityTranslation', () => { 'entity2', 'template1', {}, - { language: 'pt' } + { language: 'kg' } ); entityWithNotSupportedLanguage._id = entityWithNotSupportedLanguage?._id?.toString(); entityWithNotSupportedLanguage.template = entityWithNotSupportedLanguage?.template?.toString(); @@ -116,16 +151,6 @@ describe('RequestEntityTranslation', () => { ); }); - it('should call Logger.info two times', async () => { - const languageFromEntity = fixtures.entities?.find(e => e.language === 'en') as EntitySchema; - languageFromEntity._id = languageFromEntity?._id?.toString(); - languageFromEntity.template = languageFromEntity?.template?.toString(); - - await requestEntityTranslation.execute(languageFromEntity!); - - expect(mockLogger.info).toHaveBeenCalledTimes(2); - }); - it('should NOT send any task if there is no other language to translate', async () => { await testingEnvironment.setFixtures({ ...fixtures, diff --git a/app/api/externalIntegrations.v2/automaticTranslation/specs/SaveEntityTranslations.spec.ts b/app/api/externalIntegrations.v2/automaticTranslation/specs/SaveEntityTranslations.spec.ts index 4febc3379a..d2142b1514 100644 --- a/app/api/externalIntegrations.v2/automaticTranslation/specs/SaveEntityTranslations.spec.ts +++ b/app/api/externalIntegrations.v2/automaticTranslation/specs/SaveEntityTranslations.spec.ts @@ -10,36 +10,12 @@ import { Logger } from 'api/log.v2/contracts/Logger'; import { SaveEntityTranslations } from '../SaveEntityTranslations'; import { TranslationResult, translationResultSchema } from '../types/TranslationResult'; import { ValidationError, Validator } from '../infrastructure/Validator'; +import { saveEntityFixtures } from './fixtures/SaveEntity.fixtures'; const factory = getFixturesFactory(); beforeEach(async () => { - const fixtures = { - templates: [ - factory.template('template1', [ - { - _id: factory.id('propertyName'), - name: 'propertyName', - type: 'text', - label: 'Prop 1', - }, - ]), - ], - entities: [ - ...factory.entityInMultipleLanguages(['en', 'pt', 'es'], 'entity', 'template1', { - propertyName: [{ value: 'original text' }], - }), - ], - settings: [ - { - languages: [ - { label: 'en', key: 'en' as LanguageISO6391, default: true }, - { label: 'pt', key: 'pt' as LanguageISO6391 }, - { label: 'es', key: 'es' as LanguageISO6391 }, - ], - }, - ], - }; + const fixtures = saveEntityFixtures(factory); await testingEnvironment.setUp(fixtures); }); @@ -47,7 +23,7 @@ afterAll(async () => { await testingEnvironment.tearDown(); }); -describe('GenerateAutomaticTranslationConfig', () => { +describe('SaveEntityTranslations', () => { let saveEntityTranslations: SaveEntityTranslations; let mockLogger: Logger; diff --git a/app/api/externalIntegrations.v2/automaticTranslation/specs/fixtures/SaveEntity.fixtures.ts b/app/api/externalIntegrations.v2/automaticTranslation/specs/fixtures/SaveEntity.fixtures.ts new file mode 100644 index 0000000000..abd75c15a2 --- /dev/null +++ b/app/api/externalIntegrations.v2/automaticTranslation/specs/fixtures/SaveEntity.fixtures.ts @@ -0,0 +1,37 @@ +import { getFixturesFactory } from 'api/utils/fixturesFactory'; +import { LanguageISO6391 } from 'shared/types/commonTypes'; + +export const saveEntityFixtures = (factory: ReturnType) => ({ + templates: [ + factory.template('template1', [ + { + _id: factory.id('propertyName'), + name: 'propertyName', + type: 'text', + label: 'Prop 1', + }, + ]), + ], + entities: [ + ...factory.entityInMultipleLanguages(['en', 'pt', 'es'], 'entity', 'template1', { + propertyName: [{ value: 'original text' }], + }), + ...factory.entityInMultipleLanguages( + ['en', 'pt', 'es'], + 'entity_with_wrong_template', + 'wrong_template', + { + propertyName: [{ value: 'original text' }], + } + ), + ], + settings: [ + { + languages: [ + { label: 'en', key: 'en' as LanguageISO6391, default: true }, + { label: 'pt', key: 'pt' as LanguageISO6391 }, + { label: 'es', key: 'es' as LanguageISO6391 }, + ], + }, + ], +}); diff --git a/app/api/utils/fixturesFactory.ts b/app/api/utils/fixturesFactory.ts index e6c2c3e4d3..a9495886c2 100644 --- a/app/api/utils/fixturesFactory.ts +++ b/app/api/utils/fixturesFactory.ts @@ -121,6 +121,7 @@ function getFixturesFactory() { }; }, + // eslint-disable-next-line max-params entityInMultipleLanguages( languages: string[], id: string, From 6215dfa2cb5b77796013aae564f5f7d0e22db074 Mon Sep 17 00:00:00 2001 From: RafaPolit Date: Wed, 9 Oct 2024 09:04:56 -0500 Subject: [PATCH 05/17] Upped version --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 659aba1717..6016900ffa 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "uwazi", - "version": "1.188.0-rc7", + "version": "1.188.0-rc8", "description": "Uwazi is a free, open-source solution for organising, analysing and publishing your documents.", "keywords": [ "react" From 30450831b802ee27c3dd88f8ca3c17468b7735a3 Mon Sep 17 00:00:00 2001 From: Txau Date: Thu, 10 Oct 2024 07:57:57 -0600 Subject: [PATCH 06/17] Dependa (#7332) * Bump @storybook/addon-essentials from 8.1.11 to 8.3.4 Bumps [@storybook/addon-essentials](https://github.com/storybookjs/storybook/tree/HEAD/code/addons/essentials) from 8.1.11 to 8.3.4. - [Release notes](https://github.com/storybookjs/storybook/releases) - [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md) - [Commits](https://github.com/storybookjs/storybook/commits/v8.3.4/code/addons/essentials) --- updated-dependencies: - dependency-name: "@storybook/addon-essentials" dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] * Bump eslint-plugin-react from 7.36.1 to 7.37.1 Bumps [eslint-plugin-react](https://github.com/jsx-eslint/eslint-plugin-react) from 7.36.1 to 7.37.1. - [Release notes](https://github.com/jsx-eslint/eslint-plugin-react/releases) - [Changelog](https://github.com/jsx-eslint/eslint-plugin-react/blob/master/CHANGELOG.md) - [Commits](https://github.com/jsx-eslint/eslint-plugin-react/compare/v7.36.1...v7.37.1) --- updated-dependencies: - dependency-name: eslint-plugin-react dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] * Bump json-schema-to-typescript from 13.1.2 to 15.0.2 Bumps [json-schema-to-typescript](https://github.com/bcherny/json-schema-to-typescript) from 13.1.2 to 15.0.2. - [Changelog](https://github.com/bcherny/json-schema-to-typescript/blob/master/CHANGELOG.md) - [Commits](https://github.com/bcherny/json-schema-to-typescript/commits) --- updated-dependencies: - dependency-name: json-schema-to-typescript dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] * Bump postcss-prefix-selector from 1.16.0 to 2.0.0 Bumps [postcss-prefix-selector](https://github.com/RadValentin/postcss-prefix-selector) from 1.16.0 to 2.0.0. - [Release notes](https://github.com/RadValentin/postcss-prefix-selector/releases) - [Commits](https://github.com/RadValentin/postcss-prefix-selector/compare/v1.16.0...v2.0.0) --- updated-dependencies: - dependency-name: postcss-prefix-selector dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] * Bump jotai from 2.9.3 to 2.10.0 Bumps [jotai](https://github.com/pmndrs/jotai) from 2.9.3 to 2.10.0. - [Release notes](https://github.com/pmndrs/jotai/releases) - [Commits](https://github.com/pmndrs/jotai/compare/v2.9.3...v2.10.0) --- updated-dependencies: - dependency-name: jotai dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: txau --- package.json | 10 +- yarn.lock | 714 +++++++++++---------------------------------------- 2 files changed, 151 insertions(+), 573 deletions(-) diff --git a/package.json b/package.json index 6016900ffa..3d2e19f9af 100644 --- a/package.json +++ b/package.json @@ -157,9 +157,9 @@ "immutable": "^3.7.6", "is-reachable": "^5.2.1", "isomorphic-fetch": "3.0.0", - "jotai": "2.9.3", + "jotai": "2.10.0", "json-schema": "^0.4.0", - "json-schema-to-typescript": "^13.1.2", + "json-schema-to-typescript": "^15.0.2", "jvent": "1.0.2", "leaflet": "^1.9.4", "leaflet.gridlayer.googlemutant": "^0.14.1", @@ -185,7 +185,7 @@ "passport-local": "^1.0.0", "pdfjs-dist": "4.6.82", "postcss-loader": "^8.1.1", - "postcss-prefix-selector": "^1.16.0", + "postcss-prefix-selector": "^2.0.0", "prom-client": "^15.1.3", "prop-types": "^15.8.1", "qrcode.react": "^4.0.1", @@ -271,7 +271,7 @@ "@chromatic-com/storybook": "^2.0.2", "@cypress/react18": "^2.0.1", "@storybook/addon-actions": "^8.1.11", - "@storybook/addon-essentials": "^8.1.11", + "@storybook/addon-essentials": "^8.3.4", "@storybook/addon-interactions": "^8.1.11", "@storybook/addon-links": "^8.1.11", "@storybook/addon-viewport": "^8.1.11", @@ -351,7 +351,7 @@ "eslint-plugin-jsx-a11y": "6.10.0", "eslint-plugin-node": "^11.1.0", "eslint-plugin-prettier": "5.1.3", - "eslint-plugin-react": "v7.36.1", + "eslint-plugin-react": "v7.37.1", "eslint-plugin-react-hooks": "^4.6.2", "eslint-plugin-storybook": "^0.8.0", "fetch-mock": "^9.11.0", diff --git a/yarn.lock b/yarn.lock index 09fe2dfe9e..a7bff6126b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -30,6 +30,15 @@ "@jridgewell/gen-mapping" "^0.3.0" "@jridgewell/trace-mapping" "^0.3.9" +"@apidevtools/json-schema-ref-parser@^11.5.5": + version "11.7.0" + resolved "https://registry.yarnpkg.com/@apidevtools/json-schema-ref-parser/-/json-schema-ref-parser-11.7.0.tgz#228d72018a0e7cbee744b677eaa01a8968f302d9" + integrity sha512-pRrmXMCwnmrkS3MLgAIW5dXRzeTv6GLjkjb4HmxNnvAKXN1Nfzp4KmGADBQvlVUcqi+a5D+hfGDLLnd5NnYxog== + dependencies: + "@jsdevtools/ono" "^7.1.3" + "@types/json-schema" "^7.0.15" + js-yaml "^4.1.0" + "@aws-crypto/crc32@5.2.0": version "5.2.0" resolved "https://registry.yarnpkg.com/@aws-crypto/crc32/-/crc32-5.2.0.tgz#cfcc22570949c98c6689cfcbd2d693d36cdae2e1" @@ -651,7 +660,7 @@ resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.25.7.tgz#b8479fe0018ef0ac87b6b7a5c6916fcd67ae2c9c" integrity sha512-9ickoLz+hcXCeh7jrcin+/SLWm+GkxE2kTvoYyp38p4WkdFXfQJxDFGWp/YHjiKLPx06z2A7W8XKuqbReXDzsw== -"@babel/core@7.25.7", "@babel/core@^7.0.0", "@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.18.9", "@babel/core@^7.23.7", "@babel/core@^7.23.9", "@babel/core@^7.24.4": +"@babel/core@7.25.7", "@babel/core@^7.0.0", "@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.18.9", "@babel/core@^7.23.7", "@babel/core@^7.23.9": version "7.25.7" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.25.7.tgz#1b3d144157575daf132a3bc80b2b18e6e3ca6ece" integrity sha512-yJ474Zv3cwiSOO9nXJuqzvwEeM+chDuQ8GJirw+pZ91sCGCyOZ3dJkVE09fTV0VEVzXyLWhh3G/AolYTPX7Mow== @@ -1756,16 +1765,6 @@ resolved "https://registry.yarnpkg.com/@base2/pretty-print-object/-/pretty-print-object-1.0.1.tgz#371ba8be66d556812dc7fb169ebc3c08378f69d4" integrity sha512-4iri8i1AqYHJE2DstZYkyEprg6Pq6sKx3xn5FpySk9sNhH7qN2LLlHJCfDTZRILNwQNPD7mATWM0TBui7uC1pA== -"@bcherny/json-schema-ref-parser@10.0.5-fork": - version "10.0.5-fork" - resolved "https://registry.yarnpkg.com/@bcherny/json-schema-ref-parser/-/json-schema-ref-parser-10.0.5-fork.tgz#9b5e1e7e07964ea61840174098e634edbe8197bc" - integrity sha512-E/jKbPoca1tfUPj3iSbitDZTGnq6FUFjkH6L8U2oDwSuwK1WhnnVtCG7oFOTg/DDnyoXbQYUiUiGOibHqaGVnw== - dependencies: - "@jsdevtools/ono" "^7.1.3" - "@types/json-schema" "^7.0.6" - call-me-maybe "^1.0.1" - js-yaml "^4.1.0" - "@bcoe/v8-coverage@^0.2.3": version "0.2.3" resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" @@ -1896,11 +1895,6 @@ ms "^2.1.3" secure-json-parse "^2.4.0" -"@emotion/use-insertion-effect-with-fallbacks@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.0.1.tgz#08de79f54eb3406f9daaf77c76e35313da963963" - integrity sha512-jT/qyKZ9rzLErtrjGgdkMBn2OP8wl0G3sQlBb3YPryvKHsjvINUhVaPFfP+fpBcOkmrVOVEEHQFJ7nbj2TH2gw== - "@esbuild/aix-ppc64@0.20.2": version "0.20.2" resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.20.2.tgz#a70f4ac11c6a1dfc18b8bbb13284155d933b9537" @@ -3065,127 +3059,6 @@ resolved "https://registry.yarnpkg.com/@popperjs/core/-/core-2.11.8.tgz#6b79032e760a0899cd4204710beede972a3a185f" integrity sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A== -"@radix-ui/primitive@1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@radix-ui/primitive/-/primitive-1.1.0.tgz#42ef83b3b56dccad5d703ae8c42919a68798bbe2" - integrity sha512-4Z8dn6Upk0qk4P74xBhZ6Hd/w0mPEzOOLxy4xiPXOXqjF7jZS0VAKk7/x/H6FyY2zCkYJqePf1G5KmkmNJ4RBA== - -"@radix-ui/react-compose-refs@1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@radix-ui/react-compose-refs/-/react-compose-refs-1.1.0.tgz#656432461fc8283d7b591dcf0d79152fae9ecc74" - integrity sha512-b4inOtiaOnYf9KWyO3jAeeCG6FeyfY6ldiEPanbUjWd+xIk5wZeHa8yVwmrJ2vderhu/BQvzCrJI0lHd+wIiqw== - -"@radix-ui/react-context@1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@radix-ui/react-context/-/react-context-1.1.0.tgz#6df8d983546cfd1999c8512f3a8ad85a6e7fcee8" - integrity sha512-OKrckBy+sMEgYM/sMmqmErVn0kZqrHPJze+Ql3DzYsDDp0hl0L62nx/2122/Bvps1qz645jlcu2tD9lrRSdf8A== - -"@radix-ui/react-dialog@^1.0.5": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@radix-ui/react-dialog/-/react-dialog-1.1.1.tgz#4906507f7b4ad31e22d7dad69d9330c87c431d44" - integrity sha512-zysS+iU4YP3STKNS6USvFVqI4qqx8EpiwmT5TuCApVEBca+eRCbONi4EgzfNSuVnOXvC5UPHHMjs8RXO6DH9Bg== - dependencies: - "@radix-ui/primitive" "1.1.0" - "@radix-ui/react-compose-refs" "1.1.0" - "@radix-ui/react-context" "1.1.0" - "@radix-ui/react-dismissable-layer" "1.1.0" - "@radix-ui/react-focus-guards" "1.1.0" - "@radix-ui/react-focus-scope" "1.1.0" - "@radix-ui/react-id" "1.1.0" - "@radix-ui/react-portal" "1.1.1" - "@radix-ui/react-presence" "1.1.0" - "@radix-ui/react-primitive" "2.0.0" - "@radix-ui/react-slot" "1.1.0" - "@radix-ui/react-use-controllable-state" "1.1.0" - aria-hidden "^1.1.1" - react-remove-scroll "2.5.7" - -"@radix-ui/react-dismissable-layer@1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.1.0.tgz#2cd0a49a732372513733754e6032d3fb7988834e" - integrity sha512-/UovfmmXGptwGcBQawLzvn2jOfM0t4z3/uKffoBlj724+n3FvBbZ7M0aaBOmkp6pqFYpO4yx8tSVJjx3Fl2jig== - dependencies: - "@radix-ui/primitive" "1.1.0" - "@radix-ui/react-compose-refs" "1.1.0" - "@radix-ui/react-primitive" "2.0.0" - "@radix-ui/react-use-callback-ref" "1.1.0" - "@radix-ui/react-use-escape-keydown" "1.1.0" - -"@radix-ui/react-focus-guards@1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@radix-ui/react-focus-guards/-/react-focus-guards-1.1.0.tgz#8e9abb472a9a394f59a1b45f3dd26cfe3fc6da13" - integrity sha512-w6XZNUPVv6xCpZUqb/yN9DL6auvpGX3C/ee6Hdi16v2UUy25HV2Q5bcflsiDyT/g5RwbPQ/GIT1vLkeRb+ITBw== - -"@radix-ui/react-focus-scope@1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@radix-ui/react-focus-scope/-/react-focus-scope-1.1.0.tgz#ebe2891a298e0a33ad34daab2aad8dea31caf0b2" - integrity sha512-200UD8zylvEyL8Bx+z76RJnASR2gRMuxlgFCPAe/Q/679a/r0eK3MBVYMb7vZODZcffZBdob1EGnky78xmVvcA== - dependencies: - "@radix-ui/react-compose-refs" "1.1.0" - "@radix-ui/react-primitive" "2.0.0" - "@radix-ui/react-use-callback-ref" "1.1.0" - -"@radix-ui/react-id@1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@radix-ui/react-id/-/react-id-1.1.0.tgz#de47339656594ad722eb87f94a6b25f9cffae0ed" - integrity sha512-EJUrI8yYh7WOjNOqpoJaf1jlFIH2LvtgAl+YcFqNCa+4hj64ZXmPkAKOFs/ukjz3byN6bdb/AVUqHkI8/uWWMA== - dependencies: - "@radix-ui/react-use-layout-effect" "1.1.0" - -"@radix-ui/react-portal@1.1.1": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@radix-ui/react-portal/-/react-portal-1.1.1.tgz#1957f1eb2e1aedfb4a5475bd6867d67b50b1d15f" - integrity sha512-A3UtLk85UtqhzFqtoC8Q0KvR2GbXF3mtPgACSazajqq6A41mEQgo53iPzY4i6BwDxlIFqWIhiQ2G729n+2aw/g== - dependencies: - "@radix-ui/react-primitive" "2.0.0" - "@radix-ui/react-use-layout-effect" "1.1.0" - -"@radix-ui/react-presence@1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@radix-ui/react-presence/-/react-presence-1.1.0.tgz#227d84d20ca6bfe7da97104b1a8b48a833bfb478" - integrity sha512-Gq6wuRN/asf9H/E/VzdKoUtT8GC9PQc9z40/vEr0VCJ4u5XvvhWIrSsCB6vD2/cH7ugTdSfYq9fLJCcM00acrQ== - dependencies: - "@radix-ui/react-compose-refs" "1.1.0" - "@radix-ui/react-use-layout-effect" "1.1.0" - -"@radix-ui/react-primitive@2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@radix-ui/react-primitive/-/react-primitive-2.0.0.tgz#fe05715faa9203a223ccc0be15dc44b9f9822884" - integrity sha512-ZSpFm0/uHa8zTvKBDjLFWLo8dkr4MBsiDLz0g3gMUwqgLHz9rTaRRGYDgvZPtBJgYCBKXkS9fzmoySgr8CO6Cw== - dependencies: - "@radix-ui/react-slot" "1.1.0" - -"@radix-ui/react-slot@1.1.0", "@radix-ui/react-slot@^1.0.2": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@radix-ui/react-slot/-/react-slot-1.1.0.tgz#7c5e48c36ef5496d97b08f1357bb26ed7c714b84" - integrity sha512-FUCf5XMfmW4dtYl69pdS4DbxKy8nj4M7SafBgPllysxmdachynNflAdp/gCsnYWNDnge6tI9onzMp5ARYc1KNw== - dependencies: - "@radix-ui/react-compose-refs" "1.1.0" - -"@radix-ui/react-use-callback-ref@1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.1.0.tgz#bce938ca413675bc937944b0d01ef6f4a6dc5bf1" - integrity sha512-CasTfvsy+frcFkbXtSJ2Zu9JHpN8TYKxkgJGWbjiZhFivxaeW7rMeZt7QELGVLaYVfFMsKHjb7Ak0nMEe+2Vfw== - -"@radix-ui/react-use-controllable-state@1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.1.0.tgz#1321446857bb786917df54c0d4d084877aab04b0" - integrity sha512-MtfMVJiSr2NjzS0Aa90NPTnvTSg6C/JLCV7ma0W6+OMV78vd8OyRpID+Ng9LxzsPbLeuBnWBA1Nq30AtBIDChw== - dependencies: - "@radix-ui/react-use-callback-ref" "1.1.0" - -"@radix-ui/react-use-escape-keydown@1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-1.1.0.tgz#31a5b87c3b726504b74e05dac1edce7437b98754" - integrity sha512-L7vwWlR1kTTQ3oh7g1O0CBF3YCyyTj8NmhLR+phShpyA50HCfBFKVJTpshm9PzLiKmehsrQzTYTpX9HvmC9rhw== - dependencies: - "@radix-ui/react-use-callback-ref" "1.1.0" - -"@radix-ui/react-use-layout-effect@1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.1.0.tgz#3c2c8ce04827b26a39e442ff4888d9212268bd27" - integrity sha512-+FPE0rOdziWSrH9athwI1R0HDVbWlEhd+FR+aSDk4uWGmSJ9Z54sdZVDQPZAinJhJXwfT+qnj969mCsT2gfm5w== - "@react-dnd/asap@4.0.0": version "4.0.0" resolved "https://registry.npmjs.org/@react-dnd/asap/-/asap-4.0.0.tgz" @@ -3916,55 +3789,46 @@ notepack.io "~3.0.1" socket.io-parser "~4.2.1" -"@storybook/addon-actions@8.1.11", "@storybook/addon-actions@^8.1.11": - version "8.1.11" - resolved "https://registry.yarnpkg.com/@storybook/addon-actions/-/addon-actions-8.1.11.tgz#dafa4e84e01924372feda003c449e827347e4afd" - integrity sha512-jqYXgBgOVInStOCk//AA+dGkrfN8R7rDXA4lyu82zM59kvICtG9iqgmkSRDn0Z3zUkM+lIHZGoz0aLVQ8pxsgw== +"@storybook/addon-actions@8.3.4", "@storybook/addon-actions@^8.1.11": + version "8.3.4" + resolved "https://registry.yarnpkg.com/@storybook/addon-actions/-/addon-actions-8.3.4.tgz#236333853ab656215907fef153042d09b18f314a" + integrity sha512-1y0yD3upKcyzNwwA6loAGW2cRDqExwl4oAT7GJQA4tmabI+fNwmANSgU/ezLvvSUf4Qo0eJHg2Zcn8y+Apq2eA== dependencies: - "@storybook/core-events" "8.1.11" "@storybook/global" "^5.0.0" "@types/uuid" "^9.0.1" dequal "^2.0.2" polished "^4.2.2" uuid "^9.0.0" -"@storybook/addon-backgrounds@8.1.11": - version "8.1.11" - resolved "https://registry.yarnpkg.com/@storybook/addon-backgrounds/-/addon-backgrounds-8.1.11.tgz#83d361abee4ca6e4e8a2bd5de37f1006d705aa19" - integrity sha512-naGf1ovmsU2pSWb270yRO1IidnO+0YCZ5Tcb8I4rPhZ0vsdXNURYKS1LPSk1OZkvaUXdeB4Im9HhHfUBJOW9oQ== +"@storybook/addon-backgrounds@8.3.4": + version "8.3.4" + resolved "https://registry.yarnpkg.com/@storybook/addon-backgrounds/-/addon-backgrounds-8.3.4.tgz#2c367ca27c3148d8bb300363a3b77b1e71810726" + integrity sha512-o3nl7cN3x8erJNxLEv8YptanEQAnbqnaseOAsvSC6/nnSAcRYBSs3BvekKvo4CcpS2mxn7F5NJTBFYnCXzy8EA== dependencies: "@storybook/global" "^5.0.0" memoizerific "^1.11.3" ts-dedent "^2.0.0" -"@storybook/addon-controls@8.1.11": - version "8.1.11" - resolved "https://registry.yarnpkg.com/@storybook/addon-controls/-/addon-controls-8.1.11.tgz#9bcd96e7cd3262cba03e6cf5509a8eefca7ab097" - integrity sha512-q/Vt4meNVlFlBWIMCJhx6r+bqiiYocCta2RoUK5nyIZUiLzHncKHX6JnCU36EmJzRyah9zkwjfCb2G1r9cjnoQ== +"@storybook/addon-controls@8.3.4": + version "8.3.4" + resolved "https://registry.yarnpkg.com/@storybook/addon-controls/-/addon-controls-8.3.4.tgz#fb4c5974beb576f7bada6859f67827c756e0c46c" + integrity sha512-qQcaK6dczsb6wXkzGZKOjUYNA7FfKBewRv6NvoVKYY6LfhllGOkmUAtYpdtQG8adsZWTSoZaAOJS2vP2uM67lw== dependencies: - "@storybook/blocks" "8.1.11" + "@storybook/global" "^5.0.0" dequal "^2.0.2" lodash "^4.17.21" ts-dedent "^2.0.0" -"@storybook/addon-docs@8.1.11": - version "8.1.11" - resolved "https://registry.yarnpkg.com/@storybook/addon-docs/-/addon-docs-8.1.11.tgz#7b43d7b5a4b387b14362a367f277f6c84eb5b2c1" - integrity sha512-69dv+CE4R5wFU7xnJmhuyEbLN2PEVDV3N/BbgJqeucIYPmm6zDV83Q66teCHKYtRln3BFUqPH5mxsjiHobxfJQ== +"@storybook/addon-docs@8.3.4": + version "8.3.4" + resolved "https://registry.yarnpkg.com/@storybook/addon-docs/-/addon-docs-8.3.4.tgz#9dc6c9d873b50848346e5a3c807a907918561c8a" + integrity sha512-TWauhqF/gJgfwPuWeM6KM3LwC+ErCOM+K2z16w3vgao9s67sij8lnrdAoQ0hjA+kw2/KAdCakFS6FyciG81qog== dependencies: - "@babel/core" "^7.24.4" "@mdx-js/react" "^3.0.0" - "@storybook/blocks" "8.1.11" - "@storybook/client-logger" "8.1.11" - "@storybook/components" "8.1.11" - "@storybook/csf-plugin" "8.1.11" - "@storybook/csf-tools" "8.1.11" + "@storybook/blocks" "8.3.4" + "@storybook/csf-plugin" "8.3.4" "@storybook/global" "^5.0.0" - "@storybook/node-logger" "8.1.11" - "@storybook/preview-api" "8.1.11" - "@storybook/react-dom-shim" "8.1.11" - "@storybook/theming" "8.1.11" - "@storybook/types" "8.1.11" + "@storybook/react-dom-shim" "8.3.4" "@types/react" "^16.8.0 || ^17.0.0 || ^18.0.0" fs-extra "^11.1.0" react "^16.8.0 || ^17.0.0 || ^18.0.0" @@ -3973,30 +3837,26 @@ rehype-slug "^6.0.0" ts-dedent "^2.0.0" -"@storybook/addon-essentials@^8.1.11": - version "8.1.11" - resolved "https://registry.yarnpkg.com/@storybook/addon-essentials/-/addon-essentials-8.1.11.tgz#a32817c71f3ee1836b9b4bc03284f3931a6818ca" - integrity sha512-uRTpcIZQnflML8H+2onicUNIIssKfuviW8Lyrs/KFwSZ1rMcYzhwzCNbGlIbAv04tgHe5NqEyNhb+DVQcZQBzg== - dependencies: - "@storybook/addon-actions" "8.1.11" - "@storybook/addon-backgrounds" "8.1.11" - "@storybook/addon-controls" "8.1.11" - "@storybook/addon-docs" "8.1.11" - "@storybook/addon-highlight" "8.1.11" - "@storybook/addon-measure" "8.1.11" - "@storybook/addon-outline" "8.1.11" - "@storybook/addon-toolbars" "8.1.11" - "@storybook/addon-viewport" "8.1.11" - "@storybook/core-common" "8.1.11" - "@storybook/manager-api" "8.1.11" - "@storybook/node-logger" "8.1.11" - "@storybook/preview-api" "8.1.11" +"@storybook/addon-essentials@^8.3.4": + version "8.3.4" + resolved "https://registry.yarnpkg.com/@storybook/addon-essentials/-/addon-essentials-8.3.4.tgz#2260cc927b6f5aa2cfc89ec233f918e158d95df5" + integrity sha512-C3+3hpmSn/8zdx5sXEP0eE6zMzxgRosHVZYfe9nBcMiEDp6UKVUyHVetWxEULOEgN46ysjcpllZ0bUkRYxi2IQ== + dependencies: + "@storybook/addon-actions" "8.3.4" + "@storybook/addon-backgrounds" "8.3.4" + "@storybook/addon-controls" "8.3.4" + "@storybook/addon-docs" "8.3.4" + "@storybook/addon-highlight" "8.3.4" + "@storybook/addon-measure" "8.3.4" + "@storybook/addon-outline" "8.3.4" + "@storybook/addon-toolbars" "8.3.4" + "@storybook/addon-viewport" "8.3.4" ts-dedent "^2.0.0" -"@storybook/addon-highlight@8.1.11": - version "8.1.11" - resolved "https://registry.yarnpkg.com/@storybook/addon-highlight/-/addon-highlight-8.1.11.tgz#c4e7af700d3ede709472831b6afb026a0208b388" - integrity sha512-Iu8FCAd4ETsB6QF4xDE/OLLZY3HOFopuLM5KE0f58jnccF5zAVGr1Rj/54p6TeK0PEou0tLRPFuZs+LPlEzrSw== +"@storybook/addon-highlight@8.3.4": + version "8.3.4" + resolved "https://registry.yarnpkg.com/@storybook/addon-highlight/-/addon-highlight-8.3.4.tgz#77d6f2793e371723f9184900f4ceb6aef0a24f46" + integrity sha512-rxZTeuZyZ7RnU+xmRhS01COFLbGnVEmlUNxBw8ArsrTEZKW5PbKpIxNLTj9F0zdH8H0MfryJGP+Aadcm0oHWlw== dependencies: "@storybook/global" "^5.0.0" @@ -4021,31 +3881,31 @@ "@storybook/global" "^5.0.0" ts-dedent "^2.0.0" -"@storybook/addon-measure@8.1.11": - version "8.1.11" - resolved "https://registry.yarnpkg.com/@storybook/addon-measure/-/addon-measure-8.1.11.tgz#d72fdacb8c248b4fc3d1325143517011aa01c960" - integrity sha512-LkQD3SiLWaWt53aLB3EnmhD9Im8EOO+HKSUE+XGnIJRUcHHRqHfvDkN9KX7T1DCWbfRE5WzMHF5o23b3UiAANw== +"@storybook/addon-measure@8.3.4": + version "8.3.4" + resolved "https://registry.yarnpkg.com/@storybook/addon-measure/-/addon-measure-8.3.4.tgz#a6f9965f4ee84d2330af65ad443893b2dc821c51" + integrity sha512-IJ6WKEbqmG+r7sukFjo+bVmPB2Zry04sylGx/OGyOh7zIhhqAqpwOwMHP0uQrc3tLNnUM6qB/o83UyYX79ql+A== dependencies: "@storybook/global" "^5.0.0" tiny-invariant "^1.3.1" -"@storybook/addon-outline@8.1.11": - version "8.1.11" - resolved "https://registry.yarnpkg.com/@storybook/addon-outline/-/addon-outline-8.1.11.tgz#3bfa20824967e2c744aac852b01f57c2b2273174" - integrity sha512-vco3RLVjkcS25dNtj1lxmjq4fC0Nq08KNLMS5cbNPVJWNTuSUi/2EthSTQQCdpfMV/p6u+D5uF20A9Pl0xJFXw== +"@storybook/addon-outline@8.3.4": + version "8.3.4" + resolved "https://registry.yarnpkg.com/@storybook/addon-outline/-/addon-outline-8.3.4.tgz#57c66665dd771a039f29098adb3a251cd108f961" + integrity sha512-kRRJTTLKM8gMfeh/e83djN5XLlc0hFtr9zKWxuZxaXt9Hmr+9tH/PRFtVK/S4SgqnBDoXk49Wgv6raiwj5/e3A== dependencies: "@storybook/global" "^5.0.0" ts-dedent "^2.0.0" -"@storybook/addon-toolbars@8.1.11": - version "8.1.11" - resolved "https://registry.yarnpkg.com/@storybook/addon-toolbars/-/addon-toolbars-8.1.11.tgz#176a9b12880b5919e7ab12c448f32fe561feeaa7" - integrity sha512-reIKB0+JTiP+GNzynlDcRf4xmv9+j/DQ94qiXl2ZG5+ufKilH8DiRZpVA/i0x+4+TxdGdOJr1/pOf8tAmhNEoQ== +"@storybook/addon-toolbars@8.3.4": + version "8.3.4" + resolved "https://registry.yarnpkg.com/@storybook/addon-toolbars/-/addon-toolbars-8.3.4.tgz#4662b80984f011025eddb143856f923291e68938" + integrity sha512-Km1YciVIxqluDbd1xmHjANNFyMonEOtnA6e4MrnBnC9XkPXSigeFlj0JvxyI/zjBsLBoFRmQiwq55W6l3hQ9sA== -"@storybook/addon-viewport@8.1.11", "@storybook/addon-viewport@^8.1.11": - version "8.1.11" - resolved "https://registry.yarnpkg.com/@storybook/addon-viewport/-/addon-viewport-8.1.11.tgz#7985ace7cbb66ef160a79e4040e3491048715f4e" - integrity sha512-qk4IcGnAgiAUQxt8l5PIQ293Za+w6wxlJQIpxr7+QM8OVkADPzXY0MmQfYWU9EQplrxAC2MSx3/C1gZeq+MDOQ== +"@storybook/addon-viewport@8.3.4", "@storybook/addon-viewport@^8.1.11": + version "8.3.4" + resolved "https://registry.yarnpkg.com/@storybook/addon-viewport/-/addon-viewport-8.3.4.tgz#f30404c6badfa8a5da17a99b900871580d9eb6ef" + integrity sha512-fU4LdXSSqIOLbCEh2leq/tZUYlFliXZBWr/+igQHdUoU7HY8RIImXqVUaR9wlCaTb48WezAWT60vJtwNijyIiQ== dependencies: memoizerific "^1.11.3" @@ -4057,33 +3917,23 @@ "@babel/core" "^7.23.7" babel-loader "^9.1.3" -"@storybook/blocks@8.1.11": - version "8.1.11" - resolved "https://registry.yarnpkg.com/@storybook/blocks/-/blocks-8.1.11.tgz#a6315f787d11f10ac7198a1c5209c1945f4d07cc" - integrity sha512-eMed7PpL/hAVM6tBS7h70bEAyzbiSU9I/kye4jZ7DkCbAsrX6OKmC7pcHSDn712WTcf3vVqxy5jOKUmOXpc0eg== +"@storybook/blocks@8.3.4": + version "8.3.4" + resolved "https://registry.yarnpkg.com/@storybook/blocks/-/blocks-8.3.4.tgz#2fed433f6fa1bce01a750b8d3b02167a32d506ec" + integrity sha512-1g4aCrd5CcN+pVhF2ATu9ZRVvAIgBMb2yF9KkCuTpdvqKDuDNK3sGb0CxjS7jp3LOvyjJr9laTOQsz8v8MQc5A== dependencies: - "@storybook/channels" "8.1.11" - "@storybook/client-logger" "8.1.11" - "@storybook/components" "8.1.11" - "@storybook/core-events" "8.1.11" - "@storybook/csf" "^0.1.7" - "@storybook/docs-tools" "8.1.11" + "@storybook/csf" "^0.1.11" "@storybook/global" "^5.0.0" - "@storybook/icons" "^1.2.5" - "@storybook/manager-api" "8.1.11" - "@storybook/preview-api" "8.1.11" - "@storybook/theming" "8.1.11" - "@storybook/types" "8.1.11" + "@storybook/icons" "^1.2.10" "@types/lodash" "^4.14.167" color-convert "^2.0.1" dequal "^2.0.2" lodash "^4.17.21" - markdown-to-jsx "7.3.2" + markdown-to-jsx "^7.4.5" memoizerific "^1.11.3" polished "^4.2.2" react-colorful "^5.1.2" telejson "^7.2.0" - tocbot "^4.20.1" ts-dedent "^2.0.0" util-deprecate "^1.0.2" @@ -4145,22 +3995,6 @@ dependencies: "@storybook/global" "^5.0.0" -"@storybook/components@8.1.11": - version "8.1.11" - resolved "https://registry.yarnpkg.com/@storybook/components/-/components-8.1.11.tgz#2b51a55118371cb639dd0f6a1c2520a235c928b6" - integrity sha512-iXKsNu7VmrLBtjMfPj7S4yJ6T13GU6joKcVcrcw8wfrQJGlPFp4YaURPBUEDxvCt1XWi5JkaqJBvb48kIrROEQ== - dependencies: - "@radix-ui/react-dialog" "^1.0.5" - "@radix-ui/react-slot" "^1.0.2" - "@storybook/client-logger" "8.1.11" - "@storybook/csf" "^0.1.7" - "@storybook/global" "^5.0.0" - "@storybook/icons" "^1.2.5" - "@storybook/theming" "8.1.11" - "@storybook/types" "8.1.11" - memoizerific "^1.11.3" - util-deprecate "^1.0.2" - "@storybook/core-common@8.1.11": version "8.1.11" resolved "https://registry.yarnpkg.com/@storybook/core-common/-/core-common-8.1.11.tgz#02600936b5285ebefbfe9d6caf653aab5e213257" @@ -4234,12 +4068,11 @@ util "^0.12.5" ws "^8.2.3" -"@storybook/csf-plugin@8.1.11": - version "8.1.11" - resolved "https://registry.yarnpkg.com/@storybook/csf-plugin/-/csf-plugin-8.1.11.tgz#d09e5b3297c93da513d6760fe81d63649c0be8b2" - integrity sha512-hkA8gjFtSN/tabG0cuvmEqanMXtxPr3qTkp4UNSt1R6jBEgFHRG2y/KYLl367kDwOSFTT987ZgRfJJruU66Fvw== +"@storybook/csf-plugin@8.3.4": + version "8.3.4" + resolved "https://registry.yarnpkg.com/@storybook/csf-plugin/-/csf-plugin-8.3.4.tgz#e9294c5f67245486d2b257a8a6105d72e079ce00" + integrity sha512-ZMFWYxeTN4GxCn8dyIH4roECyLDy29yv/QKM+pHM3AC5Ny2HWI35SohWao4fGBAFxPQFbR5hPN8xa6ofHPSSTg== dependencies: - "@storybook/csf-tools" "8.1.11" unplugin "^1.3.1" "@storybook/csf-tools@8.1.11": @@ -4290,10 +4123,10 @@ resolved "https://registry.yarnpkg.com/@storybook/global/-/global-5.0.0.tgz#b793d34b94f572c1d7d9e0f44fac4e0dbc9572ed" integrity sha512-FcOqPAXACP0I3oJ/ws6/rrPT9WGhu915Cg8D02a9YxLo0DE9zI+a9A5gRGvmQ09fiWPukqI8ZAEoQEdWUKMQdQ== -"@storybook/icons@^1.2.5": - version "1.2.9" - resolved "https://registry.yarnpkg.com/@storybook/icons/-/icons-1.2.9.tgz#bb4a51a79e186b62e2dd0e04928b8617ac573838" - integrity sha512-cOmylsz25SYXaJL/gvTk/dl3pyk7yBFRfeXTsHvTA3dfhoU/LWSq0NKL9nM7WBasJyn6XPSGnLS4RtKXLw5EUg== +"@storybook/icons@^1.2.10": + version "1.2.12" + resolved "https://registry.yarnpkg.com/@storybook/icons/-/icons-1.2.12.tgz#3e4c939113b67df7ab17b78f805dbb57f4acf0db" + integrity sha512-UxgyK5W3/UV4VrI3dl6ajGfHM4aOqMAkFLWe2KibeQudLf6NJpDrDMSHwZj+3iKC4jFU7dkKbbtH2h/al4sW3Q== "@storybook/instrumenter@8.1.11": version "8.1.11" @@ -4308,27 +4141,6 @@ "@vitest/utils" "^1.3.1" util "^0.12.4" -"@storybook/manager-api@8.1.11": - version "8.1.11" - resolved "https://registry.yarnpkg.com/@storybook/manager-api/-/manager-api-8.1.11.tgz#f1a00215512a75026733d7e4eb8212b35d2cfd86" - integrity sha512-QSgwKfAw01K9YvvZj30iGBMgQ4YaCT3vojmttuqdH5ukyXkiO7pENLJj4Y+alwUeSi0g+SJeadCI3PXySBHOGg== - dependencies: - "@storybook/channels" "8.1.11" - "@storybook/client-logger" "8.1.11" - "@storybook/core-events" "8.1.11" - "@storybook/csf" "^0.1.7" - "@storybook/global" "^5.0.0" - "@storybook/icons" "^1.2.5" - "@storybook/router" "8.1.11" - "@storybook/theming" "8.1.11" - "@storybook/types" "8.1.11" - dequal "^2.0.2" - lodash "^4.17.21" - memoizerific "^1.11.3" - store2 "^2.14.2" - telejson "^7.2.0" - ts-dedent "^2.0.0" - "@storybook/node-logger@8.1.11": version "8.1.11" resolved "https://registry.yarnpkg.com/@storybook/node-logger/-/node-logger-8.1.11.tgz#451750347869cf128a02acfee8232d9952f99953" @@ -4398,6 +4210,11 @@ resolved "https://registry.yarnpkg.com/@storybook/react-dom-shim/-/react-dom-shim-8.1.11.tgz#d4cc6222eb1f169d10c5403dbb580e4c3e29c142" integrity sha512-KVDSuipqkFjpGfldoRM5xR/N1/RNmbr+sVXqMmelr0zV2jGnexEZnoa7wRHk7IuXuivLWe8BxMxzvQWqjIa4GA== +"@storybook/react-dom-shim@8.3.4": + version "8.3.4" + resolved "https://registry.yarnpkg.com/@storybook/react-dom-shim/-/react-dom-shim-8.3.4.tgz#493a89cd859206bfbbf50d4024410dd6bd62d35c" + integrity sha512-L4llDvjaAzqPx6h4ddZMh36wPr75PrI2S8bXy+flLqAeVRYnRt4WNKGuxqH0t0U6MwId9+vlCZ13JBfFuY7eQQ== + "@storybook/react-webpack5@^8.1.11": version "8.1.11" resolved "https://registry.yarnpkg.com/@storybook/react-webpack5/-/react-webpack5-8.1.11.tgz#ebf7647a2e71c6c0107e11edc88b38c856c73fc3" @@ -4436,15 +4253,6 @@ type-fest "~2.19" util-deprecate "^1.0.2" -"@storybook/router@8.1.11": - version "8.1.11" - resolved "https://registry.yarnpkg.com/@storybook/router/-/router-8.1.11.tgz#7e4d04d854f4935586fe298611f572e6a3ccb551" - integrity sha512-nU5lsBvy0L8wBYOkjagh29ztZicDATpZNYrHuavlhQ2jznmmHdJvXKYk+VrMAbthjQ6ZBqfeeMNPR1UlnqR5Rw== - dependencies: - "@storybook/client-logger" "8.1.11" - memoizerific "^1.11.3" - qs "^6.10.0" - "@storybook/test@8.1.11", "@storybook/test@^8.1.11": version "8.1.11" resolved "https://registry.yarnpkg.com/@storybook/test/-/test-8.1.11.tgz#f95f6c63c5488ba79e3f2dc3460ae7d475cc0fd0" @@ -4461,16 +4269,6 @@ "@vitest/spy" "1.6.0" util "^0.12.4" -"@storybook/theming@8.1.11": - version "8.1.11" - resolved "https://registry.yarnpkg.com/@storybook/theming/-/theming-8.1.11.tgz#a1ca5e1c00cdbd100c8abf5e28180072aff50519" - integrity sha512-Chn/opjO6Rl1isNobutYqAH2PjKNkj09YBw/8noomk6gElSa3JbUTyaG/+JCHA6OG/9kUsqoKDb5cZmAKNq/jA== - dependencies: - "@emotion/use-insertion-effect-with-fallbacks" "^1.0.1" - "@storybook/client-logger" "8.1.11" - "@storybook/global" "^5.0.0" - memoizerific "^1.11.3" - "@storybook/types@8.1.11": version "8.1.11" resolved "https://registry.yarnpkg.com/@storybook/types/-/types-8.1.11.tgz#c6e89fb6d543ebd4d3445a465af6aa27fbbe6aaa" @@ -4861,7 +4659,7 @@ resolved "https://registry.yarnpkg.com/@types/geojson/-/geojson-7946.0.8.tgz#30744afdb385e2945e22f3b033f897f76b1f12ca" integrity sha512-1rkryxURpr6aWP7R786/UQOkJ3PcpQiWkAXBmdWc7ryFWqN6a4xfK7BtjXvFBKO9LjQ+MWQSWxYeZX1OApnArA== -"@types/glob@^7.1.1", "@types/glob@^7.1.3": +"@types/glob@^7.1.1": version "7.2.0" resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.2.0.tgz#bc1b5bf3aa92f25bd5dd39f35c57361bdce5b2eb" integrity sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA== @@ -4980,7 +4778,7 @@ resolved "https://registry.yarnpkg.com/@types/json-buffer/-/json-buffer-3.0.0.tgz#85c1ff0f0948fc159810d4b5be35bf8c20875f64" integrity sha512-3YP80IxxFJB4b5tYC2SUPwkg0XQLiu0nWvhRgEatgjf+29IcWO9X1k8xRv5DGssJ/lCrjYTjQPcobJr2yWIVuQ== -"@types/json-schema@^7.0.11", "@types/json-schema@^7.0.6", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9": +"@types/json-schema@^7.0.15", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9": version "7.0.15" resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== @@ -5033,10 +4831,10 @@ dependencies: "@types/react" "*" -"@types/lodash@^4.14.167", "@types/lodash@^4.14.170", "@types/lodash@^4.14.182": - version "4.14.191" - resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.191.tgz#09511e7f7cba275acd8b419ddac8da9a6a79e2fa" - integrity sha512-BdZ5BCCvho3EIXw6wUCXHe7rS53AIDPLE+JzwgT+OsJk53oBfbSmZZ7CX4VaRoN78N+TJpFi9QPlfIVNmJYWxQ== +"@types/lodash@^4.14.167", "@types/lodash@^4.14.170", "@types/lodash@^4.17.7": + version "4.17.10" + resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.17.10.tgz#64f3edf656af2fe59e7278b73d3e62404144a6e6" + integrity sha512-YpS0zzoduEhuOWjAotS6A5AVCva7X4lVlYLF0FYHAY9sdraBfnatttHItlWeZdGhuEkf+OzMNg2ZYAx8t+52uQ== "@types/luxon@^3.4.2": version "3.4.2" @@ -5120,11 +4918,6 @@ dependencies: "@types/node" "*" -"@types/prettier@^2.6.1": - version "2.6.3" - resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.6.3.tgz#68ada76827b0010d0db071f739314fa429943d0a" - integrity sha512-ymZk3LEC/fsut+/Q5qejp6R9O1rMxz3XaRHDV6kX8MrGAhOSPqVARbDi+EZvInBpw+BnCX3TD240byVkOfQsHg== - "@types/prop-types@*", "@types/prop-types@^15.7.3": version "15.7.5" resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.5.tgz#5f19d2b85a98e9558036f6a3cacc8819420f05cf" @@ -5975,13 +5768,6 @@ argparse@^2.0.1: resolved "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz" integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== -aria-hidden@^1.1.1: - version "1.2.4" - resolved "https://registry.yarnpkg.com/aria-hidden/-/aria-hidden-1.2.4.tgz#b78e383fdbc04d05762c78b4a25a501e736c4522" - integrity sha512-y+CcFFwelSXpLZk/7fMB2mUbGtX9lKycf1MWJ7CaTIERyitVlyQx6C+sxcROU2BAJ24OiZyK+8wj2i8AlBoS3A== - dependencies: - tslib "^2.0.0" - aria-query@5.3.0, aria-query@^5.0.0: version "5.3.0" resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-5.3.0.tgz#650c569e41ad90b51b3d7df5e5eed1c7549c103e" @@ -6712,10 +6498,6 @@ call-bind@^1.0.0, call-bind@^1.0.2, call-bind@^1.0.5, call-bind@^1.0.6, call-bin get-intrinsic "^1.2.4" set-function-length "^1.2.1" -call-me-maybe@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz" - callsites@^3.0.0: version "3.1.0" resolved "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz" @@ -6988,17 +6770,6 @@ clean-webpack-plugin@4.0.0: dependencies: del "^4.1.1" -cli-color@^2.0.2: - version "2.0.3" - resolved "https://registry.yarnpkg.com/cli-color/-/cli-color-2.0.3.tgz#73769ba969080629670f3f2ef69a4bf4e7cc1879" - integrity sha512-OkoZnxyC4ERN3zLzZaY9Emb7f/MhBOIpePv0Ycok0fJYT+Ouo00UBEIwsVsr0yoow++n5YWlSUgST9GKhNHiRQ== - dependencies: - d "^1.0.1" - es5-ext "^0.10.61" - es6-iterator "^2.0.3" - memoizee "^0.4.15" - timers-ext "^0.1.7" - cli-cursor@^3.1.0: version "3.1.0" resolved "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz" @@ -7885,14 +7656,6 @@ d3-timer@^3.0.1: resolved "https://registry.yarnpkg.com/d3-timer/-/d3-timer-3.0.1.tgz#6284d2a2708285b1abb7e201eda4380af35e63b0" integrity sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA== -d@1, d@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/d/-/d-1.0.1.tgz#8698095372d58dbee346ffd0c7093f99f8f9eb5a" - integrity sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA== - dependencies: - es5-ext "^0.10.50" - type "^1.0.1" - damerau-levenshtein@^1.0.8: version "1.0.8" resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz#b43d286ccbd36bc5b2f7ed41caf2d0aba1f8a6e7" @@ -8185,11 +7948,6 @@ detect-newline@^3.0.0: resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== -detect-node-es@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/detect-node-es/-/detect-node-es-1.1.0.tgz#163acdf643330caa0b4cd7c21e7ee7755d6fa493" - integrity sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ== - devtools-protocol@0.0.969999: version "0.0.969999" resolved "https://registry.yarnpkg.com/devtools-protocol/-/devtools-protocol-0.0.969999.tgz#3d6be0a126b3607bb399ae2719b471dda71f3478" @@ -8864,47 +8622,10 @@ es-to-primitive@^1.2.1: is-date-object "^1.0.1" is-symbol "^1.0.2" -es5-ext@^0.10.35, es5-ext@^0.10.46, es5-ext@^0.10.50, es5-ext@^0.10.53, es5-ext@^0.10.61, es5-ext@^0.10.62, es5-ext@~0.10.14, es5-ext@~0.10.2, es5-ext@~0.10.46: - version "0.10.64" - resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.64.tgz#12e4ffb48f1ba2ea777f1fcdd1918ef73ea21714" - integrity sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg== - dependencies: - es6-iterator "^2.0.3" - es6-symbol "^3.1.3" - esniff "^2.0.1" - next-tick "^1.1.0" - -es6-iterator@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7" - integrity sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g== - dependencies: - d "1" - es5-ext "^0.10.35" - es6-symbol "^3.1.1" - es6-promise@^4.1.1: version "4.2.4" resolved "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.4.tgz" -es6-symbol@^3.1.1, es6-symbol@^3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.3.tgz#bad5d3c1bcdac28269f4cb331e431c78ac705d18" - integrity sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA== - dependencies: - d "^1.0.1" - ext "^1.1.2" - -es6-weak-map@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/es6-weak-map/-/es6-weak-map-2.0.3.tgz#b6da1f16cc2cc0d9be43e6bdbfc5e7dfcdf31d53" - integrity sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA== - dependencies: - d "1" - es5-ext "^0.10.46" - es6-iterator "^2.0.3" - es6-symbol "^3.1.1" - esbuild-register@^3.5.0: version "3.5.0" resolved "https://registry.yarnpkg.com/esbuild-register/-/esbuild-register-3.5.0.tgz#449613fb29ab94325c722f560f800dd946dc8ea8" @@ -9143,10 +8864,10 @@ eslint-plugin-react-hooks@^4.6.2: resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.2.tgz#c829eb06c0e6f484b3fbb85a97e57784f328c596" integrity sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ== -eslint-plugin-react@v7.36.1: - version "7.36.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.36.1.tgz#f1dabbb11f3d4ebe8b0cf4e54aff4aee81144ee5" - integrity sha512-/qwbqNXZoq+VP30s1d4Nc1C5GTxjJQjk4Jzs4Wq2qzxFM7dSmuG2UkIjg2USMLh3A/aVcUNrK7v0J5U1XEGGwA== +eslint-plugin-react@v7.37.1: + version "7.37.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.37.1.tgz#56493d7d69174d0d828bc83afeffe96903fdadbd" + integrity sha512-xwTnwDqzbDRA8uJ7BMxPs/EXRB3i8ZfnOIp8BsxEQkT0nHPp+WWceqGgo6rKb9ctNi8GJLDT4Go5HAWELa/WMg== dependencies: array-includes "^3.1.8" array.prototype.findlast "^1.2.5" @@ -9259,16 +8980,6 @@ eslint@v8.57.0: strip-ansi "^6.0.1" text-table "^0.2.0" -esniff@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/esniff/-/esniff-2.0.1.tgz#a4d4b43a5c71c7ec51c51098c1d8a29081f9b308" - integrity sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg== - dependencies: - d "^1.0.1" - es5-ext "^0.10.62" - event-emitter "^0.3.5" - type "^2.7.2" - espree@^9.6.0, espree@^9.6.1: version "9.6.1" resolved "https://registry.yarnpkg.com/espree/-/espree-9.6.1.tgz#a2a17b8e434690a5432f2f8018ce71d331a48c6f" @@ -9321,14 +9032,6 @@ etag@~1.8.1: version "1.8.1" resolved "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz" -event-emitter@^0.3.5: - version "0.3.5" - resolved "https://registry.yarnpkg.com/event-emitter/-/event-emitter-0.3.5.tgz#df8c69eef1647923c7157b9ce83840610b02cc39" - integrity sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA== - dependencies: - d "1" - es5-ext "~0.10.14" - event-target-shim@^5.0.0: version "5.0.1" resolved "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789" @@ -9506,13 +9209,6 @@ express@^4.17.3, express@^4.18.2, express@^4.19.2, express@^4.21.0: utils-merge "1.0.1" vary "~1.1.2" -ext@^1.1.2: - version "1.6.0" - resolved "https://registry.yarnpkg.com/ext/-/ext-1.6.0.tgz#3871d50641e874cc172e2b53f919842d19db4c52" - integrity sha512-sdBImtzkq2HpkdRLtlLWDa6w4DX22ijZLKx8BMPUuKe1c5lbN6xwQDQCxSfxBQnHZ13ls/FH0MQZx/q/gr6FQg== - dependencies: - type "^2.5.0" - extend@^3.0.2, extend@~3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" @@ -10127,11 +9823,6 @@ get-intrinsic@^1.1.1, get-intrinsic@^1.1.3, get-intrinsic@^1.2.1, get-intrinsic@ has-symbols "^1.0.3" hasown "^2.0.0" -get-nonce@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/get-nonce/-/get-nonce-1.0.1.tgz#fdf3f0278073820d2ce9426c18f07481b1e0cdf3" - integrity sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q== - get-package-type@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" @@ -10142,11 +9833,6 @@ get-stdin@^5.0.1: resolved "https://registry.npmjs.org/get-stdin/-/get-stdin-5.0.1.tgz" integrity sha1-Ei4WFZHiH/TFJTAwVpPyDmOTo5g= -get-stdin@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-8.0.0.tgz#cbad6a73feb75f6eeb22ba9e01f89aa28aa97a53" - integrity sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg== - get-stream@^5.0.0, get-stream@^5.1.0: version "5.2.0" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" @@ -10208,13 +9894,6 @@ glob-parent@^6.0.1, glob-parent@^6.0.2: dependencies: is-glob "^4.0.3" -glob-promise@^4.2.2: - version "4.2.2" - resolved "https://registry.yarnpkg.com/glob-promise/-/glob-promise-4.2.2.tgz#15f44bcba0e14219cd93af36da6bb905ff007877" - integrity sha512-xcUzJ8NWN5bktoTIX7eOclO1Npxd/dyVqUJxlLIDasT4C7KZyqlPIwkdJ0Ypiy3p2ZKahTjK4M9uC3sNSfNMzw== - dependencies: - "@types/glob" "^7.1.3" - glob-to-regexp@^0.4.0, glob-to-regexp@^0.4.1: version "0.4.1" resolved "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz" @@ -10231,18 +9910,19 @@ glob@7.1.6: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^10.0.0: - version "10.3.4" - resolved "https://registry.yarnpkg.com/glob/-/glob-10.3.4.tgz#c85c9c7ab98669102b6defda76d35c5b1ef9766f" - integrity sha512-6LFElP3A+i/Q8XQKEvZjkEWEOTgAIALR9AO2rwT8bgPhDd1anmqDJDZ6lLddI4ehxxxR1S5RIqKe1uapMQfYaQ== +glob@^10.0.0, glob@^10.3.12: + version "10.4.5" + resolved "https://registry.yarnpkg.com/glob/-/glob-10.4.5.tgz#f4d9f0b90ffdbab09c9d77f5f29b4262517b0956" + integrity sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg== dependencies: foreground-child "^3.1.0" - jackspeak "^2.0.3" - minimatch "^9.0.1" - minipass "^5.0.0 || ^6.0.2 || ^7.0.0" - path-scurry "^1.10.1" + jackspeak "^3.1.2" + minimatch "^9.0.4" + minipass "^7.1.2" + package-json-from-dist "^1.0.0" + path-scurry "^1.11.1" -glob@^7.0.3, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6, glob@^7.2.0: +glob@^7.0.3, glob@^7.1.3, glob@^7.1.4, glob@^7.2.0: version "7.2.3" resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== @@ -11216,11 +10896,6 @@ is-potential-custom-element-name@^1.0.1: resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz#171ed6f19e3ac554394edf78caa05784a45bebb5" integrity sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ== -is-promise@^2.2.2: - version "2.2.2" - resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.2.2.tgz#39ab959ccbf9a774cf079f7b40c7a26f763135f1" - integrity sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ== - is-reachable@^5.2.1: version "5.2.1" resolved "https://registry.yarnpkg.com/is-reachable/-/is-reachable-5.2.1.tgz#4bba5ba32f60723404d5f95b7ecd895644c776f3" @@ -11472,10 +11147,10 @@ iterator.prototype@^1.1.2: reflect.getprototypeof "^1.0.4" set-function-name "^2.0.1" -jackspeak@^2.0.3: - version "2.3.1" - resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-2.3.1.tgz#ce2effa4c458e053640e61938865a5b5fae98456" - integrity sha512-4iSY3Bh1Htv+kLhiiZunUhQ+OYXIn0ze3ulq8JeWrFKmhPAJSySV2+kdtRh2pGcCeF0s6oR8Oc+pYZynJj4t8A== +jackspeak@^3.1.2: + version "3.4.3" + resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-3.4.3.tgz#8833a9d89ab4acde6188942bd1c53b6390ed5a8a" + integrity sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw== dependencies: "@isaacs/cliui" "^8.0.2" optionalDependencies: @@ -12014,10 +11689,10 @@ joi@^17.6.0: "@sideway/formula" "^3.0.0" "@sideway/pinpoint" "^2.0.0" -jotai@2.9.3: - version "2.9.3" - resolved "https://registry.yarnpkg.com/jotai/-/jotai-2.9.3.tgz#abcae49a737cd50e3144a6c9eb39840db077c727" - integrity sha512-IqMWKoXuEzWSShjd9UhalNsRGbdju5G2FrqNLQJT+Ih6p41VNYe2sav5hnwQx4HJr25jq9wRqvGSWGviGG6Gjw== +jotai@2.10.0: + version "2.10.0" + resolved "https://registry.yarnpkg.com/jotai/-/jotai-2.10.0.tgz#7483b81ab21ba28778f04b29368728f25efe4e89" + integrity sha512-8W4u0aRlOIwGlLQ0sqfl/c6+eExl5D8lZgAUolirZLktyaj4WnxO/8a0HEPmtriQAB6X5LMhXzZVmw02X0P0qQ== jpeg-js@^0.3.4: version "0.3.7" @@ -12115,25 +11790,20 @@ json-parse-even-better-errors@^2.3.0, json-parse-even-better-errors@^2.3.1: resolved "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz" integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== -json-schema-to-typescript@^13.1.2: - version "13.1.2" - resolved "https://registry.yarnpkg.com/json-schema-to-typescript/-/json-schema-to-typescript-13.1.2.tgz#d8794faba3464c763c4fbff1318f3d4c4a08492a" - integrity sha512-17G+mjx4nunvOpkPvcz7fdwUwYCEwyH8vR3Ym3rFiQ8uzAL3go+c1306Kk7iGRk8HuXBXqy+JJJmpYl0cvOllw== - dependencies: - "@bcherny/json-schema-ref-parser" "10.0.5-fork" - "@types/json-schema" "^7.0.11" - "@types/lodash" "^4.14.182" - "@types/prettier" "^2.6.1" - cli-color "^2.0.2" - get-stdin "^8.0.0" - glob "^7.1.6" - glob-promise "^4.2.2" +json-schema-to-typescript@^15.0.2: + version "15.0.2" + resolved "https://registry.yarnpkg.com/json-schema-to-typescript/-/json-schema-to-typescript-15.0.2.tgz#afd87ba8d3140bc8c1822fcbd1f94dc10c1bd034" + integrity sha512-+cRBw+bBJ3k783mZroDIgz1pLNPB4hvj6nnbHTWwEVl0dkW8qdZ+M9jWhBb+Y0FAdHvNsXACga3lewGO8lktrw== + dependencies: + "@apidevtools/json-schema-ref-parser" "^11.5.5" + "@types/json-schema" "^7.0.15" + "@types/lodash" "^4.17.7" + glob "^10.3.12" is-glob "^4.0.3" + js-yaml "^4.1.0" lodash "^4.17.21" - minimist "^1.2.6" - mkdirp "^1.0.4" - mz "^2.7.0" - prettier "^2.6.2" + minimist "^1.2.8" + prettier "^3.2.5" json-schema-traverse@^0.4.1: version "0.4.1" @@ -12616,13 +12286,6 @@ lru-cache@^5.1.1: dependencies: yallist "^3.0.2" -lru-queue@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/lru-queue/-/lru-queue-0.1.0.tgz#2738bd9f0d3cf4f84490c5736c48699ac632cda3" - integrity sha512-BpdYkt9EvGl8OfWHDQPISVpcl5xZthb+XPsbELj5AQXxIC8IriDZIQYjBJPEm5rS420sjZ0TLEzRcq5KdBhYrQ== - dependencies: - es5-ext "~0.10.2" - luxon@3.5.0: version "3.5.0" resolved "https://registry.yarnpkg.com/luxon/-/luxon-3.5.0.tgz#6b6f65c5cd1d61d1fd19dbf07ee87a50bf4b8e20" @@ -12705,10 +12368,10 @@ markdown-it@14.1.0: punycode.js "^2.3.1" uc.micro "^2.1.0" -markdown-to-jsx@7.3.2: - version "7.3.2" - resolved "https://registry.yarnpkg.com/markdown-to-jsx/-/markdown-to-jsx-7.3.2.tgz#f286b4d112dad3028acc1e77dfe1f653b347e131" - integrity sha512-B+28F5ucp83aQm+OxNrPkS8z0tMKaeHiy0lHJs3LqCyDQFtWuenaIrkaVTgAm1pf1AU85LXltva86hlaT17i8Q== +markdown-to-jsx@^7.4.5: + version "7.5.0" + resolved "https://registry.yarnpkg.com/markdown-to-jsx/-/markdown-to-jsx-7.5.0.tgz#42ece0c71e842560a7d8bd9f81e7a34515c72150" + integrity sha512-RrBNcMHiFPcz/iqIj0n3wclzHXjwS7mzjBNWecKKVhNTIxQepIix6Il/wZCn2Cg5Y1ow2Qi84+eJrryFRWBEWw== material-colors@^1.2.1: version "1.2.6" @@ -12760,20 +12423,6 @@ memoize-one@^5.1.1: resolved "https://registry.yarnpkg.com/memoize-one/-/memoize-one-5.2.1.tgz#8337aa3c4335581839ec01c3d594090cebe8f00e" integrity sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q== -memoizee@^0.4.15: - version "0.4.15" - resolved "https://registry.yarnpkg.com/memoizee/-/memoizee-0.4.15.tgz#e6f3d2da863f318d02225391829a6c5956555b72" - integrity sha512-UBWmJpLZd5STPm7PMUlOw/TSy972M+z8gcyQ5veOnSDRREz/0bmpyTfKt3/51DhEBqCZQn1udM/5flcSPYhkdQ== - dependencies: - d "^1.0.1" - es5-ext "^0.10.53" - es6-weak-map "^2.0.3" - event-emitter "^0.3.5" - is-promise "^2.2.2" - lru-queue "^0.1.0" - next-tick "^1.1.0" - timers-ext "^0.1.7" - memoizerific@^1.11.3: version "1.11.3" resolved "https://registry.yarnpkg.com/memoizerific/-/memoizerific-1.11.3.tgz#7c87a4646444c32d75438570905f2dbd1b1a805a" @@ -12925,7 +12574,7 @@ minimatch@^8.0.2: dependencies: brace-expansion "^2.0.1" -minimatch@^9.0.1, minimatch@^9.0.4: +minimatch@^9.0.4: version "9.0.4" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.4.tgz#8e49c731d1749cbec05050ee5145147b32496a51" integrity sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw== @@ -12959,6 +12608,11 @@ minipass@^5.0.0: resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.0.3.tgz#05ea638da44e475037ed94d1c7efcc76a25e1974" integrity sha512-LhbbwCfz3vsb12j/WkWQPZfKTsgqIe1Nf/ti1pKjYESGLHIVjWU96G9/ljLH4F9mWNVhlQOm0VySdAWzf05dpg== +minipass@^7.1.2: + version "7.1.2" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.1.2.tgz#93a9626ce5e5e66bd4db86849e7515e92340a707" + integrity sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw== + minizlib@^2.1.1: version "2.1.2" resolved "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz" @@ -12992,7 +12646,7 @@ mkdirp@^0.5.1, mkdirp@^0.5.4: dependencies: minimist "^1.2.6" -mkdirp@^1.0.3, mkdirp@^1.0.4: +mkdirp@^1.0.3: version "1.0.4" resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz" integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== @@ -13162,11 +12816,6 @@ neo-async@^2.6.2: resolved "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz" integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== -next-tick@1, next-tick@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.1.0.tgz#1836ee30ad56d67ef281b22bd199f709449b35eb" - integrity sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ== - no-case@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/no-case/-/no-case-3.0.4.tgz#d361fd5c9800f558551a8369fc0dcd4662b6124d" @@ -13677,6 +13326,11 @@ p-try@^2.0.0: resolved "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz" integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== +package-json-from-dist@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz#4f1471a010827a86f94cfd9b0727e36d267de505" + integrity sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw== + pako@^1.0.5, pako@~1.0.5: version "1.0.11" resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" @@ -13871,7 +13525,7 @@ path-root@^0.1.1: dependencies: path-root-regex "^0.1.0" -path-scurry@^1.10.1, path-scurry@^1.6.1: +path-scurry@^1.11.1, path-scurry@^1.6.1: version "1.11.1" resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-1.11.1.tgz#7960a668888594a0720b12a911d1a742ab9f11d2" integrity sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA== @@ -14296,10 +13950,10 @@ postcss-ordered-values@^7.0.0: cssnano-utils "^5.0.0" postcss-value-parser "^4.2.0" -postcss-prefix-selector@^1.16.0: - version "1.16.0" - resolved "https://registry.yarnpkg.com/postcss-prefix-selector/-/postcss-prefix-selector-1.16.0.tgz#ad5b56f9a73a2c090ca7161049632c9d89bcb404" - integrity sha512-rdVMIi7Q4B0XbXqNUEI+Z4E+pueiu/CS5E6vRCQommzdQ/sgsS4dK42U7GX8oJR+TJOtT+Qv3GkNo6iijUMp3Q== +postcss-prefix-selector@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/postcss-prefix-selector/-/postcss-prefix-selector-2.0.0.tgz#5255989388dc90f6f3667c6dc8834f02ad998276" + integrity sha512-t8172nkNyEASE5VXn+rtHG/WJNa/0qnWP8UpiUdQ4ZWd4EgpRFSLX/YAYGSVLXG2iD+T8Q7Ewr7EP7oEWJos8A== postcss-reduce-initial@^7.0.0: version "7.0.0" @@ -14375,7 +14029,7 @@ prettier-linter-helpers@^1.0.0: dependencies: fast-diff "^1.1.2" -prettier@3.3.3: +prettier@3.3.3, prettier@^3.2.5: version "3.3.3" resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.3.3.tgz#30c54fe0be0d8d12e6ae61dbb10109ea00d53105" integrity sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew== @@ -14385,11 +14039,6 @@ prettier@^1.16.4: resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.19.1.tgz#f7d7f5ff8a9cd872a7be4ca142095956a60797cb" integrity sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew== -prettier@^2.6.2: - version "2.8.8" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.8.tgz#e8c5d7e98a4305ffe3de2e1fc4aca1a71c28b1da" - integrity sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q== - pretty-bytes@^5.6.0: version "5.6.0" resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.6.0.tgz#356256f643804773c82f64723fe78c92c62beaeb" @@ -14904,25 +14553,6 @@ react-redux@5.0.6: loose-envify "^1.1.0" prop-types "^15.5.10" -react-remove-scroll-bar@^2.3.4: - version "2.3.6" - resolved "https://registry.yarnpkg.com/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.6.tgz#3e585e9d163be84a010180b18721e851ac81a29c" - integrity sha512-DtSYaao4mBmX+HDo5YWYdBWQwYIQQshUV/dVxFxK+KM26Wjwp1gZ6rv6OC3oujI6Bfu6Xyg3TwK533AQutsn/g== - dependencies: - react-style-singleton "^2.2.1" - tslib "^2.0.0" - -react-remove-scroll@2.5.7: - version "2.5.7" - resolved "https://registry.yarnpkg.com/react-remove-scroll/-/react-remove-scroll-2.5.7.tgz#15a1fd038e8497f65a695bf26a4a57970cac1ccb" - integrity sha512-FnrTWO4L7/Bhhf3CYBNArEG/yROV0tKmTv7/3h9QCFvH6sndeFf1wPqOcbFVu5VAulS5dV1wGT3GZZ/1GawqiA== - dependencies: - react-remove-scroll-bar "^2.3.4" - react-style-singleton "^2.2.1" - tslib "^2.1.0" - use-callback-ref "^1.3.0" - use-sidecar "^1.1.2" - react-render-if-visible@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/react-render-if-visible/-/react-render-if-visible-2.1.1.tgz#b67d8a6d230d8e1e8986212a1d4098425a26810b" @@ -14965,15 +14595,6 @@ react-smooth@^4.0.0: prop-types "^15.8.1" react-transition-group "^4.4.5" -react-style-singleton@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/react-style-singleton/-/react-style-singleton-2.2.1.tgz#f99e420492b2d8f34d38308ff660b60d0b1205b4" - integrity sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g== - dependencies: - get-nonce "^1.0.0" - invariant "^2.2.4" - tslib "^2.0.0" - react-table-sticky@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/react-table-sticky/-/react-table-sticky-1.1.3.tgz#af27c0afb2c4a32c292d486b21d9a896d354ba70" @@ -16117,11 +15738,6 @@ stopword@3.1.1: resolved "https://registry.yarnpkg.com/stopword/-/stopword-3.1.1.tgz#ce3cf748cafd962904902dd050f6f16ca42d3ec0" integrity sha512-TzJdIuzqJNo6IaFvrF3fYqu08uJ/0VMsdABl6d6+dt6daD7QeHJnMt9sPqhVIxEmNaaeE8+eandVPJv9RhAL5Q== -store2@^2.14.2: - version "2.14.2" - resolved "https://registry.yarnpkg.com/store2/-/store2-2.14.2.tgz#56138d200f9fe5f582ad63bc2704dbc0e4a45068" - integrity sha512-siT1RiqlfQnGqgT/YzXVUNsom9S0H1OX+dpdGN1xkyYATo4I6sep5NmsRD/40s3IIOvlCq6akxkqG82urIZW1w== - store@^2.0.12: version "2.0.12" resolved "https://registry.yarnpkg.com/store/-/store-2.0.12.tgz#8c534e2a0b831f72b75fc5f1119857c44ef5d593" @@ -16664,14 +16280,6 @@ timers-browserify@^2.0.12: dependencies: setimmediate "^1.0.4" -timers-ext@^0.1.7: - version "0.1.7" - resolved "https://registry.yarnpkg.com/timers-ext/-/timers-ext-0.1.7.tgz#6f57ad8578e07a3fb9f91d9387d65647555e25c6" - integrity sha512-b85NUNzTSdodShTIbky6ZF02e8STtVVfD+fu4aXXShEELpozH+bCpJLYMPZbsABN2wDH7fJpqIoXxJpzbf0NqQ== - dependencies: - es5-ext "~0.10.46" - next-tick "1" - timm@^1.6.1: version "1.7.1" resolved "https://registry.yarnpkg.com/timm/-/timm-1.7.1.tgz#96bab60c7d45b5a10a8a4d0f0117c6b7e5aff76f" @@ -16740,11 +16348,6 @@ to-regex-range@^5.0.1: dependencies: is-number "^7.0.0" -tocbot@^4.20.1: - version "4.21.1" - resolved "https://registry.yarnpkg.com/tocbot/-/tocbot-4.21.1.tgz#7b667bef1c3ea1a07e4f400b742aa71e7e7e5ba0" - integrity sha512-IfajhBTeg0HlMXu1f+VMbPef05QpDTsZ9X2Yn1+8npdaXsXg/+wrm9Ze1WG5OS1UDC3qJ5EQN/XOZ3gfXjPFCw== - toidentifier@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" @@ -16967,16 +16570,6 @@ type-is@^1.6.4, type-is@~1.6.18: media-typer "0.3.0" mime-types "~2.1.24" -type@^1.0.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/type/-/type-1.2.0.tgz#848dd7698dafa3e54a6c479e759c4bc3f18847a0" - integrity sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg== - -type@^2.5.0, type@^2.7.2: - version "2.7.2" - resolved "https://registry.yarnpkg.com/type/-/type-2.7.2.tgz#2376a15a3a28b1efa0f5350dcf72d24df6ef98d0" - integrity sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw== - typed-array-buffer@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz#1867c5d83b20fcb5ccf32649e5e2fc7424474ff3" @@ -17265,21 +16858,6 @@ url@^0.11.0, url@^0.11.3: punycode "^1.4.1" qs "^6.11.2" -use-callback-ref@^1.3.0: - version "1.3.2" - resolved "https://registry.yarnpkg.com/use-callback-ref/-/use-callback-ref-1.3.2.tgz#6134c7f6ff76e2be0b56c809b17a650c942b1693" - integrity sha512-elOQwe6Q8gqZgDA8mrh44qRTQqpIHDcZ3hXTLjBe1i4ph8XpNJnO+aQf3NaG+lriLopI4HMx9VjQLfPQ6vhnoA== - dependencies: - tslib "^2.0.0" - -use-sidecar@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/use-sidecar/-/use-sidecar-1.1.2.tgz#2f43126ba2d7d7e117aa5855e5d8f0276dfe73c2" - integrity sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw== - dependencies: - detect-node-es "^1.1.0" - tslib "^2.0.0" - utf8-byte-length@^1.0.1: version "1.0.4" resolved "https://registry.npmjs.org/utf8-byte-length/-/utf8-byte-length-1.0.4.tgz" From 9af191de66a45a00d4463077c99d9c9ebc32bda9 Mon Sep 17 00:00:00 2001 From: Alberto Casado Torres Date: Thu, 10 Oct 2024 17:49:58 +0200 Subject: [PATCH 07/17] migrated deprecated sass functions (#7338) * migrated deprecated sass functions * importing prebuilt styles to avoid sass warning --- app/react/App/scss/config/_colors.scss | 38 ++++++++++--------- app/react/App/scss/config/_materials.scss | 4 +- app/react/App/scss/elements/_item.scss | 12 +++--- app/react/App/scss/elements/_tooltip.scss | 4 +- app/react/App/scss/layout/_header.scss | 8 ++-- app/react/App/scss/layout/_hero.scss | 6 ++- app/react/App/scss/layout/_sidepanel.scss | 6 ++- app/react/App/scss/modules/_ContextMenu.scss | 6 ++- app/react/App/scss/modules/_document.scss | 12 +++--- .../App/scss/modules/_relationships.scss | 4 +- app/react/App/scss/modules/_search.scss | 12 +++--- .../App/scss/modules/_settings-languages.scss | 4 +- app/react/Markdown/components/Slideshow.js | 2 +- app/react/Timeline/scss/_timeline.scss | 4 +- 14 files changed, 74 insertions(+), 48 deletions(-) diff --git a/app/react/App/scss/config/_colors.scss b/app/react/App/scss/config/_colors.scss index d5e1e80bfa..b3b3af0732 100644 --- a/app/react/App/scss/config/_colors.scss +++ b/app/react/App/scss/config/_colors.scss @@ -1,3 +1,5 @@ +@use "sass:color"; + $theme: dark; $hero: dark; $c-theme: #60748b; @@ -10,10 +12,10 @@ $c-theme: #60748b; } $c-grey: #aeaeb8; -$c-white: lighten($c-grey, 100%); -$c-grey-lighten: lighten($c-grey, 25%); -$c-grey-light: lighten($c-grey, 15%); -$c-grey-dark: darken($c-grey, 25%); +$c-white: color.adjust($c-grey, $lightness: 100%, $space: hsl); +$c-grey-lighten: color.adjust($c-grey, $lightness: 25%, $space: hsl); +$c-grey-light: color.adjust($c-grey, $lightness: 15%, $space: hsl); +$c-grey-dark: color.adjust($c-grey, $lightness: -25%, $space: hsl); $c-active-feature: orange; $c-black: #444444; $c-type-0: #c03b22; @@ -40,25 +42,25 @@ $c-type-19: #449d44; $c-background: #fcfcfc; $c-primary: #2b56c1; -$c-primary-lighten: lighten($c-primary, 50%); -$c-primary-light: lighten($c-primary, 40%); -$c-primary-dark: darken($c-primary, 10%); +$c-primary-lighten: color.adjust($c-primary, $lightness: 50%, $space: hsl); +$c-primary-light: color.adjust($c-primary, $lightness: 40%, $space: hsl); +$c-primary-dark: color.adjust($c-primary, $lightness: -10%, $space: hsl); $c-info: $c-type-7; -$c-info-light: lighten($c-info, 40%); -$c-info-dark: darken($c-info, 10%); +$c-info-light: color.adjust($c-info, $lightness: 40%, $space: hsl); +$c-info-dark: color.adjust($c-info, $lightness: -10%, $space: hsl); $c-success: $c-type-9; -$c-success-light: lighten($c-type-10, 30%); -$c-success-dark: darken($c-type-10, 15%); +$c-success-light: color.adjust($c-type-10, $lightness: 30%, $space: hsl); +$c-success-dark: color.adjust($c-type-10, $lightness: -15%, $space: hsl); $c-danger: $c-type-1; -$c-danger-light: lighten($c-type-1, 30%); -$c-danger-dark: darken($c-type-1, 10%); +$c-danger-light: color.adjust($c-type-1, $lightness: 30%, $space: hsl); +$c-danger-dark: color.adjust($c-type-1, $lightness: -10%, $space: hsl); $c-warning: $c-type-13; -$c-warning-light: lighten($c-type-14, 30%); -$c-warning-dark: darken($c-type-14, 10%); +$c-warning-light: color.adjust($c-type-14, $lightness: 30%, $space: hsl); +$c-warning-dark: color.adjust($c-type-14, $lightness: -10%, $space: hsl); -$c-shadow: transparentize($c-black, 0.9); -$c-shadow-dark: transparentize($c-black, 0.8); -$c-shadow-darker: transparentize($c-black, 0.5); +$c-shadow: color.adjust($c-black, $alpha: -0.9); +$c-shadow-dark: color.adjust($c-black, $alpha: -0.8); +$c-shadow-darker: color.adjust($c-black, $alpha: -0.5); $c-card-highlight: #dee7ff4d; $c-language-highlight: #cff0cf; diff --git a/app/react/App/scss/config/_materials.scss b/app/react/App/scss/config/_materials.scss index b82d9afede..ecc64a731f 100644 --- a/app/react/App/scss/config/_materials.scss +++ b/app/react/App/scss/config/_materials.scss @@ -1,4 +1,6 @@ -$box-shadow: 0px 5px 10px -5px transparentize($c-grey-dark, .9); +@use "sass:color"; + +$box-shadow: 0px 5px 10px -5px color.adjust($c-grey-dark, $alpha: -.9); $box-shadow-danger: 0px 5px 10px -5px $c-danger; $header-height: 50px; diff --git a/app/react/App/scss/elements/_item.scss b/app/react/App/scss/elements/_item.scss index b90840b7f6..4beb31bdfe 100644 --- a/app/react/App/scss/elements/_item.scss +++ b/app/react/App/scss/elements/_item.scss @@ -1,3 +1,5 @@ +@use "sass:color"; + .item-group { display: flex; flex-wrap: wrap; @@ -35,7 +37,7 @@ &.is-active, &.is-selected { border-color: $c-primary; - box-shadow: inset 0 1px 2px $c-grey-lighten, 0 0 0 3px transparentize($c-primary, 0.7); + box-shadow: inset 0 1px 2px $c-grey-lighten, 0 0 0 3px color.adjust($c-primary, $alpha: -0.7); } &-source-document { @@ -135,7 +137,7 @@ $item-padding: 15px; height: 18px; line-height: 20px; text-align: center; - background-color: transparentize($c-grey-dark, 0.85); + background-color: color.adjust($c-grey-dark, $alpha: -0.85); color: $c-grey-dark; border-radius: 50%; } @@ -342,8 +344,8 @@ $item-padding: 15px; b { font-weight: normal; color: #333300; - background-color: transparentize(yellow, 0.8); - box-shadow: -2px 0 0 0 transparentize(yellow, 0.4), 2px 0 0 0 transparentize(yellow, 0.4); + background-color: color.adjust(yellow, $alpha: -0.8); + box-shadow: -2px 0 0 0 color.adjust(yellow, $alpha: -0.4), 2px 0 0 0 color.adjust(yellow, $alpha: -0.4); } } @@ -637,7 +639,7 @@ $item-padding: 15px; .item-danger { border-color: $c-danger-light; - background-color: lighten($c-danger-light, 10%); + background-color: color.adjust($c-danger-light, $lightness: 10%, $space: hsl); &:hover, &.is-active { border-color: $c-danger; diff --git a/app/react/App/scss/elements/_tooltip.scss b/app/react/App/scss/elements/_tooltip.scss index dd70f0a900..4a91ef2343 100644 --- a/app/react/App/scss/elements/_tooltip.scss +++ b/app/react/App/scss/elements/_tooltip.scss @@ -1,3 +1,5 @@ +@use "sass:color"; + @mixin tooltip ($direction) { display: none; position: absolute; @@ -11,7 +13,7 @@ font-weight: normal; font-style: normal; -webkit-font-smoothing: initial; - background-color: transparentize(#FFF7E2, .10); + background-color: color.adjust(#FFF7E2, $alpha: -.10); color: $c-black; border-radius: 4px; border: 1px solid rgba(0, 0, 0, 0.2); diff --git a/app/react/App/scss/layout/_header.scss b/app/react/App/scss/layout/_header.scss index 0bc26c87ad..ca0943a5e3 100644 --- a/app/react/App/scss/layout/_header.scss +++ b/app/react/App/scss/layout/_header.scss @@ -1,3 +1,5 @@ +@use "sass:color"; + @import '../config/colors'; @import '../elements/tooltip'; @@ -83,7 +85,7 @@ header { height: calc(100% - 50px); background-color: var(--c-bg-menu-mobile); color: var(--c-text-menu-mobile); - border-top: 1px solid transparentize($c-black, 0.6); + border-top: 1px solid color.adjust($c-black, $alpha: -0.6); overflow: auto; transition: all 225ms; flex-direction: column; @@ -171,8 +173,8 @@ header { @media (min-width: 1024px) { float: left; border-top: 0; - border-right: 1px solid transparentize($c-black, 0.6); - border-left: 1px solid transparentize($c-black, 0.6); + border-right: 1px solid color.adjust($c-black, $alpha: -0.6); + border-left: 1px solid color.adjust($c-black, $alpha: -0.6); } @media (max-width: 1023px) { diff --git a/app/react/App/scss/layout/_hero.scss b/app/react/App/scss/layout/_hero.scss index a056d275f0..a863577b7f 100644 --- a/app/react/App/scss/layout/_hero.scss +++ b/app/react/App/scss/layout/_hero.scss @@ -1,3 +1,5 @@ +@use "sass:color"; + .hero { text-align: center; margin: -15px -15px 30px; @@ -50,10 +52,10 @@ width: 100%; border-top: 3px solid $c-white; padding: 60px 0; - background: transparentize($c-black, .6); + background: color.adjust($c-black, $alpha: -.6); &:hover { - background: transparentize($c-black, .5); + background: color.adjust($c-black, $alpha: -.5); cursor: pointer; text-decoration: none; diff --git a/app/react/App/scss/layout/_sidepanel.scss b/app/react/App/scss/layout/_sidepanel.scss index 0b601155c7..bfcd31c25c 100644 --- a/app/react/App/scss/layout/_sidepanel.scss +++ b/app/react/App/scss/layout/_sidepanel.scss @@ -1,9 +1,11 @@ +@use "sass:color"; + @import '../../scss/config/_colors.scss'; @import '../../scss/config/_materials.scss'; @import '../../scss/config/_typography.scss'; @import '../../scss/elements/_tooltip.scss'; -$c-sidebar: darken($c-background, 0%); +$c-sidebar: color.adjust($c-background, $lightness: -0%, $space: hsl); $c-sidebar: $c-white; .side-panel { @@ -192,7 +194,7 @@ $c-sidebar: $c-white; &.relationship-active { box-shadow: inset 0 0 0 1px $c-primary, - inset 0 0 0 4px transparentize($c-primary, 0.7); + inset 0 0 0 4px color.adjust($c-primary, $alpha: -0.7); } } diff --git a/app/react/App/scss/modules/_ContextMenu.scss b/app/react/App/scss/modules/_ContextMenu.scss index 6900353691..b0569fc213 100644 --- a/app/react/App/scss/modules/_ContextMenu.scss +++ b/app/react/App/scss/modules/_ContextMenu.scss @@ -1,3 +1,5 @@ +@use "sass:color"; + .ContextMenu { position: fixed; z-index: 1; @@ -63,7 +65,7 @@ left: 50%; transform: translateX(-50%) translateY(-10px); padding: 5px; - background-color: transparentize($c-black, 0.25); + background-color: color.adjust($c-black, $alpha: -0.25); color: $c-white; border-radius: $border-radius; text-align: center; @@ -73,7 +75,7 @@ content: ''; border-left: 5px solid transparent; border-right: 5px solid transparent; - border-top: 5px solid transparentize($c-black, 0.25); + border-top: 5px solid color.adjust($c-black, $alpha: -0.25); position: absolute; top: 100%; left: 50%; diff --git a/app/react/App/scss/modules/_document.scss b/app/react/App/scss/modules/_document.scss index feb89b07e9..9782a08063 100644 --- a/app/react/App/scss/modules/_document.scss +++ b/app/react/App/scss/modules/_document.scss @@ -1,3 +1,5 @@ +@use "sass:color"; + .document-viewer { width: 100%; height: 100%; @@ -115,7 +117,7 @@ mark, .mark { color: transparent !important; - background-color: transparentize($c-primary, 0.8) !important; + background-color: color.adjust($c-primary, $alpha: -0.8) !important; padding: 0 !important; mark, @@ -125,7 +127,7 @@ mark, } mark.searchTerm { - background-color: transparentize(yellow, 0.6) !important; + background-color: color.adjust(yellow, $alpha: -0.6) !important; mark.searchTerm { background-color: transparent !important; @@ -273,13 +275,13 @@ mark.searchTerm { margin-bottom: 0; &:hover { - background-color: transparentize($c-primary-light, 0.7); + background-color: color.adjust($c-primary-light, $alpha: -0.7); } &:active, &.is-selected { - box-shadow: inset 0 0 0 1px transparentize($c-primary, 0.7); - background-color: transparentize($c-primary-light, 0.7); + box-shadow: inset 0 0 0 1px color.adjust($c-primary, $alpha: -0.7); + background-color: color.adjust($c-primary-light, $alpha: -0.7); } .item-name { diff --git a/app/react/App/scss/modules/_relationships.scss b/app/react/App/scss/modules/_relationships.scss index 91689bfe7e..873acc1a5d 100644 --- a/app/react/App/scss/modules/_relationships.scss +++ b/app/react/App/scss/modules/_relationships.scss @@ -1,3 +1,5 @@ +@use "sass:color"; + $breakpoint: 768px; $c-background: #fcfcfc; @@ -868,6 +870,6 @@ $relationship-type-height: 32px; color: $c-black; box-shadow: inset 0 1px 2px $c-grey-lighten, - 0 0 0 3px transparentize($c-primary, 0.7); + 0 0 0 3px color.adjust($c-primary, $alpha: -0.7); } } diff --git a/app/react/App/scss/modules/_search.scss b/app/react/App/scss/modules/_search.scss index 22d97d5ec7..82f220c136 100644 --- a/app/react/App/scss/modules/_search.scss +++ b/app/react/App/scss/modules/_search.scss @@ -1,3 +1,5 @@ +@use "sass:color"; + .library-filters { z-index: 6; top: $header-height; @@ -202,10 +204,10 @@ } b { - background-color: transparentize(yellow, 0.4); + background-color: color.adjust(yellow, $alpha: -0.4); box-shadow: - -2px 0 0 0 transparentize(yellow, 0.4), - 2px 0 0 0 transparentize(yellow, 0.4); + -2px 0 0 0 color.adjust(yellow, $alpha: -0.4), + 2px 0 0 0 color.adjust(yellow, $alpha: -0.4); } .fa { @@ -489,7 +491,7 @@ width: 20px; height: $switcher-height; margin: 0 3px; - background-color: lighten($c-primary, 10%); + background-color: color.adjust($c-primary, $lightness: 10%, $space: hsl); border-radius: calc($switcher-height / 2); border: 1px solid $c-primary; cursor: pointer; @@ -1090,6 +1092,6 @@ b { font-weight: normal; color: #333300; - background-color: transparentize(yellow, 0.8); + background-color: color.adjust(yellow, $alpha: -0.8); } } diff --git a/app/react/App/scss/modules/_settings-languages.scss b/app/react/App/scss/modules/_settings-languages.scss index accd8acf28..7ac794f286 100644 --- a/app/react/App/scss/modules/_settings-languages.scss +++ b/app/react/App/scss/modules/_settings-languages.scss @@ -1,3 +1,5 @@ +@use "sass:color"; + .installed-languages { margin-bottom: 3em; } @@ -27,7 +29,7 @@ } .translation-available { - background-color: transparentize($c-grey-dark, 0.85); + background-color: color.adjust($c-grey-dark, $alpha: -0.85); border-radius: 3px; padding: 0 4px; height: 17px; diff --git a/app/react/Markdown/components/Slideshow.js b/app/react/Markdown/components/Slideshow.js index d297296af3..d3d08a7f21 100644 --- a/app/react/Markdown/components/Slideshow.js +++ b/app/react/Markdown/components/Slideshow.js @@ -1,5 +1,5 @@ import ImageGallery from 'react-image-gallery'; -import 'react-image-gallery/styles/scss/image-gallery.scss'; +import 'react-image-gallery/styles/css/image-gallery.css'; import PropTypes from 'prop-types'; import React from 'react'; diff --git a/app/react/Timeline/scss/_timeline.scss b/app/react/Timeline/scss/_timeline.scss index 356d806b50..c6b36c990d 100644 --- a/app/react/Timeline/scss/_timeline.scss +++ b/app/react/Timeline/scss/_timeline.scss @@ -1,3 +1,5 @@ +@use "sass:color"; + $timeline-item-size: 18px; .timeline { padding: 0 50px 10px; @@ -24,7 +26,7 @@ $timeline-item-size: 18px; border-left: 1px solid $c-grey-light; } &-track:not(:last-of-type) &-year.nth5 { - background: lighten($c-grey, 16%); + background: color.adjust($c-grey, $lightness: 16%, $space: hsl); } &-year-active { From 9454fa0e72a573e312ee0af8b8727ddebda3c064 Mon Sep 17 00:00:00 2001 From: josh-huridocs Date: Fri, 11 Oct 2024 11:38:53 +0200 Subject: [PATCH 08/17] 6841 create/update paragraph extractor modal (#7342) * multiselectlist blank state property * create/update modal for paragraph extractor * filter templateTo from templatesFrom list * update csv translations for paragraph extractor feature, fix type errors * fix lint errors * update translations * update translations * remove escaped quotes --- app/react/App/styles/globals.css | 12 ++ .../V2/Components/Forms/MultiselectList.tsx | 11 ++ .../Forms/specs/MultiselectList.cy.tsx | 43 +++++ .../ParagraphExtraction.tsx | 53 ++++-- .../components/ExtractorModal.tsx | 165 ++++++++++++++++++ .../ParagraphExtraction/components/List.tsx | 5 +- .../components/NoQualifiedTemplate.tsx | 15 ++ .../components/TableElements.tsx | 19 +- .../Settings/ParagraphExtraction/types.ts | 11 +- .../V2/api/paragraphExtractor/extractors.ts | 48 ++--- .../stories/Forms/MultiselectList.stories.tsx | 13 +- contents/ui-translations/ar.csv | 9 + contents/ui-translations/en.csv | 9 + contents/ui-translations/es.csv | 9 + contents/ui-translations/fr.csv | 9 + contents/ui-translations/ko.csv | 9 + contents/ui-translations/my.csv | 9 + contents/ui-translations/ru.csv | 9 + contents/ui-translations/th.csv | 9 + contents/ui-translations/tr.csv | 9 + 20 files changed, 425 insertions(+), 51 deletions(-) create mode 100644 app/react/V2/Routes/Settings/ParagraphExtraction/components/ExtractorModal.tsx create mode 100644 app/react/V2/Routes/Settings/ParagraphExtraction/components/NoQualifiedTemplate.tsx diff --git a/app/react/App/styles/globals.css b/app/react/App/styles/globals.css index 503dc0a90c..960970b326 100644 --- a/app/react/App/styles/globals.css +++ b/app/react/App/styles/globals.css @@ -1824,6 +1824,10 @@ input[type="range"]::-ms-fill-lower { margin-top: 1rem; } +.mt-5 { + margin-top: 1.25rem; +} + .mt-6 { margin-top: 1.5rem; } @@ -1981,6 +1985,14 @@ input[type="range"]::-ms-fill-lower { max-height: 100svh; } +.min-h-\[300px\] { + min-height: 300px; +} + +.min-h-\[327px\] { + min-height: 327px; +} + .min-h-fit { min-height: -moz-fit-content; min-height: fit-content; diff --git a/app/react/V2/Components/Forms/MultiselectList.tsx b/app/react/V2/Components/Forms/MultiselectList.tsx index 2fa881d010..d444924cc7 100644 --- a/app/react/V2/Components/Forms/MultiselectList.tsx +++ b/app/react/V2/Components/Forms/MultiselectList.tsx @@ -5,6 +5,7 @@ import React, { useEffect, useState, useRef } from 'react'; import { Translate } from 'app/I18N'; import { ChevronDownIcon, ChevronUpIcon } from '@heroicons/react/24/outline'; +import { isString } from 'lodash'; import { InputField, RadioSelect } from '.'; import { Pill } from '../UI/Pill'; import { Label } from './Label'; @@ -31,8 +32,12 @@ interface MultiselectListProps { startOnSelected?: boolean; search?: string; suggestions?: boolean; + blankState?: string | React.ReactNode; } +const renderChild = (child: string | React.ReactNode) => + isString(child) ? {child} : child; + const MultiselectList = ({ items, onChange, @@ -47,6 +52,7 @@ const MultiselectList = ({ startOnSelected = false, search = '', suggestions = false, + blankState = No items available, }: MultiselectListProps) => { const [selectedItems, setSelectedItems] = useState(value || []); const [showAll, setShowAll] = useState(!(startOnSelected && selectedItems.length)); @@ -345,6 +351,11 @@ const MultiselectList = ({
+ {items.length === 0 && ( +
+ {renderChild(blankState)} +
+ )}
    {filteredItems.map(renderItem)}
diff --git a/app/react/V2/Components/Forms/specs/MultiselectList.cy.tsx b/app/react/V2/Components/Forms/specs/MultiselectList.cy.tsx index 30473fa02f..05071b64d7 100644 --- a/app/react/V2/Components/Forms/specs/MultiselectList.cy.tsx +++ b/app/react/V2/Components/Forms/specs/MultiselectList.cy.tsx @@ -223,4 +223,47 @@ describe('MultiselectList.cy.tsx', () => { cy.contains('Pepperoni').should('be.visible'); }); }); + + // add blank state test + describe('blank state property', () => { + it('should show blank state property if there is no items passed to the component', () => { + cy.viewport(450, 650); + mount( + +
+ {}} items={[]} /> +
+
+ ); + cy.contains('No items available').should('be.visible'); + }); + + it('should accept a blank state string', () => { + cy.viewport(450, 650); + mount( + +
+ {}} items={[]} blankState="nada" /> +
+
+ ); + cy.contains('nada').should('be.visible'); + }); + + it('should accept a blank state component', () => { + cy.viewport(450, 650); + mount( + +
+ {}} + items={[]} + blankState={
no items string
} + /> +
+
+ ); + cy.contains('no items string').should('be.visible'); + }); + }); }); diff --git a/app/react/V2/Routes/Settings/ParagraphExtraction/ParagraphExtraction.tsx b/app/react/V2/Routes/Settings/ParagraphExtraction/ParagraphExtraction.tsx index b7a2b434ed..053d6302a0 100644 --- a/app/react/V2/Routes/Settings/ParagraphExtraction/ParagraphExtraction.tsx +++ b/app/react/V2/Routes/Settings/ParagraphExtraction/ParagraphExtraction.tsx @@ -11,8 +11,9 @@ import { Translate } from 'app/I18N'; import { useSetAtom } from 'jotai'; import { notificationAtom } from 'V2/atoms'; import { extractorsTableColumns } from './components/TableElements'; -import { TableExtractor, Extractor } from './types'; +import { TableParagraphExtractor, ParagraphExtractorApiResponse } from './types'; import { List } from './components/List'; +import { ExtractorModal } from './components/ExtractorModal'; const getTemplateName = (templates: ClientTemplateSchema[], targetId: string) => { const foundTemplate = templates.find(template => template._id === targetId); @@ -20,27 +21,34 @@ const getTemplateName = (templates: ClientTemplateSchema[], targetId: string) => }; const formatExtractors = ( - extractors: Extractor[], + extractors: ParagraphExtractorApiResponse[], templates: ClientTemplateSchema[] -): TableExtractor[] => - (extractors || []).map(extractor => { +): TableParagraphExtractor[] => + extractors.map(extractor => { const targetTemplateName = getTemplateName(templates, extractor.templateTo); - const originTemplateNames = extractor.templateFrom.map(templateFrom => + const originTemplateNames = (extractor.templatesFrom || []).map(templateFrom => getTemplateName(templates, templateFrom) ); - return { ...extractor, rowId: extractor._id, originTemplateNames, targetTemplateName }; + return { + ...extractor, + rowId: extractor._id || '', + originTemplateNames, + targetTemplateName, + }; }); const ParagraphExtractorDashboard = () => { const { extractors = [], templates } = useLoaderData() as { - extractors: TableExtractor[]; + extractors: ParagraphExtractorApiResponse[]; templates: ClientTemplateSchema[]; }; - const [isSaving, setIsSaving] = useState(false); + const revalidator = useRevalidator(); - const [selected, setSelected] = useState([]); + const [isSaving, setIsSaving] = useState(false); + const [selected, setSelected] = useState([]); const [confirmModal, setConfirmModal] = useState(false); + const [extractorModal, setExtractorModal] = useState(false); const setNotifications = useSetAtom(notificationAtom); const deleteExtractors = async () => { @@ -64,7 +72,15 @@ const ParagraphExtractorDashboard = () => { setIsSaving(false); } }; - // const handleSave = async (extractor: IXExtractorInfo) => {}; + + const handleSave = async () => { + revalidator.revalidate(); + setNotifications({ + type: 'success', + text: Paragraph Extractor added, + }); + }; + const paragraphExtractorData = useMemo( () => formatExtractors(extractors, templates), [extractors, templates] @@ -73,14 +89,13 @@ const ParagraphExtractorDashboard = () => { return (
- {/* should create a component for empty data? */} { {selected?.length === 1 ? ( - ) : undefined} @@ -115,7 +130,7 @@ const ParagraphExtractorDashboard = () => { Delete ) : ( - )} @@ -136,6 +151,16 @@ const ParagraphExtractorDashboard = () => { dangerStyle /> )} + + {extractorModal && ( + setExtractorModal(false)} + onAccept={handleSave} + templates={templates} + extractor={selected?.length ? selected[0] : undefined} + /> + )} ); }; diff --git a/app/react/V2/Routes/Settings/ParagraphExtraction/components/ExtractorModal.tsx b/app/react/V2/Routes/Settings/ParagraphExtraction/components/ExtractorModal.tsx new file mode 100644 index 0000000000..d52d8bd24d --- /dev/null +++ b/app/react/V2/Routes/Settings/ParagraphExtraction/components/ExtractorModal.tsx @@ -0,0 +1,165 @@ +/* eslint-disable max-lines */ +/* eslint-disable max-statements */ +import React, { useEffect, useState } from 'react'; +import * as extractorsAPI from 'app/V2/api/paragraphExtractor/extractors'; +import { ArrowRightIcon } from '@heroicons/react/20/solid'; +import { Modal, Button, MultiselectList } from 'V2/Components/UI'; +import { Translate } from 'app/I18N'; +import { ClientTemplateSchema } from 'app/istore'; +import { ParagraphExtractorApiPayload } from '../types'; +import { NoQualifiedTemplatesMessage } from './NoQualifiedTemplate'; + +interface ExtractorModalProps { + setShowModal: React.Dispatch>; + onClose: () => void; + onAccept: () => void; + templates: ClientTemplateSchema[]; + extractor?: ParagraphExtractorApiPayload; +} + +const formatOptions = (templates: ClientTemplateSchema[]) => + templates.map(template => { + const option = { + label: template.name, + id: template._id, + searchLabel: template.name, + value: template._id, + properties: template.properties, + }; + return option; + }); + +const templatesWithParagraph = (template: ClientTemplateSchema) => + template.properties.some(({ name }) => name === 'rich_text'); + +const isActiveStepClassName = (isActive: boolean) => (isActive ? 'bg-indigo-700' : 'bg-gray-200'); + +const ExtractorModal = ({ + setShowModal, + onClose, + onAccept, + templates, + extractor, +}: ExtractorModalProps) => { + const [step, setStep] = useState(1); + const [templatesFrom, setTemplatesFrom] = useState(extractor?.templatesFrom || []); + const [templateTo, setTemplateTo] = useState(extractor?.templateTo ?? ''); + + const [templateToOptions] = useState(formatOptions(templates.filter(templatesWithParagraph))); + const [templateFromOptions, setTemplateFromOptions] = useState( + formatOptions(templates.filter(template => template._id !== templateTo)) + ); + + useEffect(() => { + setTemplateFromOptions( + formatOptions(templates.filter(template => template._id !== templateTo)) + ); + }, [templateTo, templates]); + + const handleClose = () => { + onClose(); + }; + + const handleSubmit = async () => { + try { + const values = { + ...extractor, + templatesFrom, + templateTo, + }; + await extractorsAPI.save(values); + handleClose(); + onAccept(); + } catch (e) { + console.error('Error saving extractor:', e); + } + }; + + return ( + + +

+ {extractor ? ( + Edit Extractor + ) : ( + (step === 1 && Target template) || + (step === 2 && Paragraph extractor) + )} +

+ setShowModal(false)} /> +
+ + +
+ { + setTemplateTo(selected[0]); + }} + singleSelect + startOnSelected={!!templateTo} + className="min-h-[327px]" + blankState={} + /> +
+
+
+ 0} + startOnSelected={templatesFrom.length > 0} + className="min-h-[327px]" + /> +
+
+ +
+
+ {/* duplicate structure, can be a function */} +
+
+
+ {templateToOptions.length !== 0 && step === 1 && ( + + Templates meeting required criteria + + )} +
+ + + +
+
+ {step === 1 ? ( + <> + + + + ) : ( + <> + + + + )} +
+
+
+ + ); +}; + +export { ExtractorModal, formatOptions }; diff --git a/app/react/V2/Routes/Settings/ParagraphExtraction/components/List.tsx b/app/react/V2/Routes/Settings/ParagraphExtraction/components/List.tsx index 550e16ed69..f81526ba0b 100644 --- a/app/react/V2/Routes/Settings/ParagraphExtraction/components/List.tsx +++ b/app/react/V2/Routes/Settings/ParagraphExtraction/components/List.tsx @@ -1,10 +1,9 @@ import React from 'react'; import { Translate } from 'app/I18N'; -import { TableExtractor } from '../types'; +import { TableParagraphExtractor } from '../types'; -const List = ({ items }: { items: TableExtractor[] }) => ( +const List = ({ items }: { items: TableParagraphExtractor[] }) => (
    - {/* what should be displayed on the confirm modal? */} {items.map(item => (
  • Templates: diff --git a/app/react/V2/Routes/Settings/ParagraphExtraction/components/NoQualifiedTemplate.tsx b/app/react/V2/Routes/Settings/ParagraphExtraction/components/NoQualifiedTemplate.tsx new file mode 100644 index 0000000000..35f1d927c8 --- /dev/null +++ b/app/react/V2/Routes/Settings/ParagraphExtraction/components/NoQualifiedTemplate.tsx @@ -0,0 +1,15 @@ +import { Translate } from 'app/I18N'; +import React from 'react'; + +const NoQualifiedTemplatesMessage = () => ( +
    +

    + No valid target template available +

    +

    + Qualified templates should have Rich Text property +

    +
    +); + +export { NoQualifiedTemplatesMessage }; diff --git a/app/react/V2/Routes/Settings/ParagraphExtraction/components/TableElements.tsx b/app/react/V2/Routes/Settings/ParagraphExtraction/components/TableElements.tsx index 0014e25255..1a1df4d762 100644 --- a/app/react/V2/Routes/Settings/ParagraphExtraction/components/TableElements.tsx +++ b/app/react/V2/Routes/Settings/ParagraphExtraction/components/TableElements.tsx @@ -5,9 +5,9 @@ import { CellContext, createColumnHelper } from '@tanstack/react-table'; import { Link } from 'react-router-dom'; import { Translate } from 'app/I18N'; import { Button, Pill } from 'V2/Components/UI'; -import { TableExtractor } from '../types'; +import { TableParagraphExtractor } from '../types'; -const extractorColumnHelper = createColumnHelper(); +const extractorColumnHelper = createColumnHelper(); const TemplateFromHeader = () => Template; const TemplateToHeader = () => Target Template; @@ -18,11 +18,13 @@ const ActionHeader = () => Action; const NumericCell = ({ cell, }: CellContext< - TableExtractor, - TableExtractor['documents'] | TableExtractor['generatedEntities'] + TableParagraphExtractor, + TableParagraphExtractor['documents'] | TableParagraphExtractor['generatedEntities'] >) => {cell.getValue()}; -const TemplatesCell = ({ cell }: CellContext) => ( +const TemplatesCell = ({ + cell, +}: CellContext) => (
    {cell.getValue()} @@ -32,7 +34,7 @@ const TemplatesCell = ({ cell }: CellContext) => ( +}: CellContext) => (
    {cell.getValue().map(value => (
    @@ -42,7 +44,9 @@ const TemplateFromCell = ({
    ); -const LinkButton = ({ cell }: CellContext) => ( +const LinkButton = ({ + cell, +}: CellContext) => (