From 73d90891879eda45d65d0ac4ff3fec6e0fd23c2b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pedro=20Andr=C3=A9s=20Chaparro=20Quintero?= <62714297+PedroChaparro@users.noreply.github.com> Date: Sat, 2 Mar 2024 07:52:02 -0500 Subject: [PATCH] fix: Laboratory view de-sync (#298) * fix: Use global laboratory state as the source of truth * chore(deps): Bump dependencies --- package.json | 34 +- pnpm-lock.yaml | 754 +++++++++--------- .../edit-laboratory/EditLaboratory.tsx | 23 +- .../components/LaboratoryDetails.tsx | 35 +- .../markdown-block/MarkdownBlockDropDown.tsx | 88 +- .../test-block/EditableTestBlockForm.tsx | 37 +- .../test-block/TestBlockDropDown.tsx | 55 +- .../dialogs/CreateTestBlockForm.tsx | 32 +- .../dialogs/DeleteBlockDialog.tsx | 25 +- 9 files changed, 527 insertions(+), 556 deletions(-) diff --git a/package.json b/package.json index 8f034244..59c1b2b8 100644 --- a/package.json +++ b/package.json @@ -27,45 +27,45 @@ "@radix-ui/react-separator": "1.0.3", "@radix-ui/react-slot": "1.0.2", "@radix-ui/react-tabs": "1.0.4", - "@tanstack/react-query": "5.20.5", - "@tanstack/react-query-devtools": "5.20.5", - "@tanstack/react-table": "8.12.0", + "@tanstack/react-query": "5.24.1", + "@tanstack/react-query-devtools": "5.24.1", + "@tanstack/react-table": "8.13.2", "@uiw/react-markdown-preview": "5.0.7", "@uiw/react-md-editor": "4.0.3", "axios": "1.6.7", - "chart.js": "4.4.1", + "chart.js": "4.4.2", "class-variance-authority": "0.7.0", "clsx": "2.1.0", "dayjs": "1.11.10", - "lucide-react": "0.331.0", + "lucide-react": "0.344.0", "luxon": "3.4.4", "react": "18.2.0", "react-chartjs-2": "5.2.0", "react-dom": "18.2.0", - "react-hook-form": "7.50.1", + "react-hook-form": "7.51.0", "react-lazily": "0.9.2", - "react-router-dom": "6.22.0", + "react-router-dom": "6.22.2", "rehype-external-links": "3.0.0", "rehype-sanitize": "6.0.0", - "sonner": "1.4.0", + "sonner": "1.4.3", "tailwind-merge": "2.2.1", "tailwindcss-animate": "1.0.7", "zod": "3.22.4", - "zustand": "4.5.0" + "zustand": "4.5.2" }, "devDependencies": { "@faker-js/faker": "8.4.1", - "@playwright/test": "1.41.2", + "@playwright/test": "1.42.1", "@trivago/prettier-plugin-sort-imports": "4.3.0", "@types/luxon": "3.4.2", - "@types/node": "20.11.19", - "@types/react": "18.2.55", + "@types/node": "20.11.24", + "@types/react": "18.2.61", "@types/react-dom": "18.2.19", - "@typescript-eslint/eslint-plugin": "7.0.1", - "@typescript-eslint/parser": "7.0.1", + "@typescript-eslint/eslint-plugin": "7.1.0", + "@typescript-eslint/parser": "7.1.0", "@vitejs/plugin-react-swc": "3.6.0", - "autoprefixer": "10.4.17", - "eslint": "8.56.0", + "autoprefixer": "10.4.18", + "eslint": "8.57.0", "eslint-config-prettier": "9.1.0", "eslint-plugin-react-hooks": "4.6.0", "eslint-plugin-react-refresh": "0.4.5", @@ -74,6 +74,6 @@ "prettier-plugin-tailwindcss": "0.5.11", "tailwindcss": "3.4.1", "typescript": "5.3.3", - "vite": "5.1.3" + "vite": "5.1.4" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 2d72aef1..fec6b3d9 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -7,58 +7,58 @@ settings: dependencies: '@hookform/resolvers': specifier: 3.3.4 - version: 3.3.4(react-hook-form@7.50.1) + version: 3.3.4(react-hook-form@7.51.0) '@radix-ui/react-alert-dialog': specifier: 1.0.5 - version: 1.0.5(@types/react-dom@18.2.19)(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0) + version: 1.0.5(@types/react-dom@18.2.19)(@types/react@18.2.61)(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-checkbox': specifier: ^1.0.4 - version: 1.0.4(@types/react-dom@18.2.19)(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0) + version: 1.0.4(@types/react-dom@18.2.19)(@types/react@18.2.61)(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-dialog': specifier: 1.0.5 - version: 1.0.5(@types/react-dom@18.2.19)(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0) + version: 1.0.5(@types/react-dom@18.2.19)(@types/react@18.2.61)(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-dropdown-menu': specifier: 2.0.6 - version: 2.0.6(@types/react-dom@18.2.19)(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0) + version: 2.0.6(@types/react-dom@18.2.19)(@types/react@18.2.61)(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-label': specifier: 2.0.2 - version: 2.0.2(@types/react-dom@18.2.19)(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0) + version: 2.0.2(@types/react-dom@18.2.19)(@types/react@18.2.61)(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-scroll-area': specifier: 1.0.5 - version: 1.0.5(@types/react-dom@18.2.19)(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0) + version: 1.0.5(@types/react-dom@18.2.19)(@types/react@18.2.61)(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-select': specifier: 2.0.0 - version: 2.0.0(@types/react-dom@18.2.19)(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0) + version: 2.0.0(@types/react-dom@18.2.19)(@types/react@18.2.61)(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-separator': specifier: 1.0.3 - version: 1.0.3(@types/react-dom@18.2.19)(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0) + version: 1.0.3(@types/react-dom@18.2.19)(@types/react@18.2.61)(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-slot': specifier: 1.0.2 - version: 1.0.2(@types/react@18.2.55)(react@18.2.0) + version: 1.0.2(@types/react@18.2.61)(react@18.2.0) '@radix-ui/react-tabs': specifier: 1.0.4 - version: 1.0.4(@types/react-dom@18.2.19)(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0) + version: 1.0.4(@types/react-dom@18.2.19)(@types/react@18.2.61)(react-dom@18.2.0)(react@18.2.0) '@tanstack/react-query': - specifier: 5.20.5 - version: 5.20.5(react@18.2.0) + specifier: 5.24.1 + version: 5.24.1(react@18.2.0) '@tanstack/react-query-devtools': - specifier: 5.20.5 - version: 5.20.5(@tanstack/react-query@5.20.5)(react@18.2.0) + specifier: 5.24.1 + version: 5.24.1(@tanstack/react-query@5.24.1)(react@18.2.0) '@tanstack/react-table': - specifier: 8.12.0 - version: 8.12.0(react-dom@18.2.0)(react@18.2.0) + specifier: 8.13.2 + version: 8.13.2(react-dom@18.2.0)(react@18.2.0) '@uiw/react-markdown-preview': specifier: 5.0.7 - version: 5.0.7(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0) + version: 5.0.7(@types/react@18.2.61)(react-dom@18.2.0)(react@18.2.0) '@uiw/react-md-editor': specifier: 4.0.3 - version: 4.0.3(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0) + version: 4.0.3(@types/react@18.2.61)(react-dom@18.2.0)(react@18.2.0) axios: specifier: 1.6.7 version: 1.6.7 chart.js: - specifier: 4.4.1 - version: 4.4.1 + specifier: 4.4.2 + version: 4.4.2 class-variance-authority: specifier: 0.7.0 version: 0.7.0 @@ -69,8 +69,8 @@ dependencies: specifier: 1.11.10 version: 1.11.10 lucide-react: - specifier: 0.331.0 - version: 0.331.0(react@18.2.0) + specifier: 0.344.0 + version: 0.344.0(react@18.2.0) luxon: specifier: 3.4.4 version: 3.4.4 @@ -79,19 +79,19 @@ dependencies: version: 18.2.0 react-chartjs-2: specifier: 5.2.0 - version: 5.2.0(chart.js@4.4.1)(react@18.2.0) + version: 5.2.0(chart.js@4.4.2)(react@18.2.0) react-dom: specifier: 18.2.0 version: 18.2.0(react@18.2.0) react-hook-form: - specifier: 7.50.1 - version: 7.50.1(react@18.2.0) + specifier: 7.51.0 + version: 7.51.0(react@18.2.0) react-lazily: specifier: 0.9.2 version: 0.9.2(react-dom@18.2.0)(react@18.2.0) react-router-dom: - specifier: 6.22.0 - version: 6.22.0(react-dom@18.2.0)(react@18.2.0) + specifier: 6.22.2 + version: 6.22.2(react-dom@18.2.0)(react@18.2.0) rehype-external-links: specifier: 3.0.0 version: 3.0.0 @@ -99,8 +99,8 @@ dependencies: specifier: 6.0.0 version: 6.0.0 sonner: - specifier: 1.4.0 - version: 1.4.0(react-dom@18.2.0)(react@18.2.0) + specifier: 1.4.3 + version: 1.4.3(react-dom@18.2.0)(react@18.2.0) tailwind-merge: specifier: 2.2.1 version: 2.2.1 @@ -111,16 +111,16 @@ dependencies: specifier: 3.22.4 version: 3.22.4 zustand: - specifier: 4.5.0 - version: 4.5.0(@types/react@18.2.55)(react@18.2.0) + specifier: 4.5.2 + version: 4.5.2(@types/react@18.2.61)(react@18.2.0) devDependencies: '@faker-js/faker': specifier: 8.4.1 version: 8.4.1 '@playwright/test': - specifier: 1.41.2 - version: 1.41.2 + specifier: 1.42.1 + version: 1.42.1 '@trivago/prettier-plugin-sort-imports': specifier: 4.3.0 version: 4.3.0(prettier@3.2.5) @@ -128,38 +128,38 @@ devDependencies: specifier: 3.4.2 version: 3.4.2 '@types/node': - specifier: 20.11.19 - version: 20.11.19 + specifier: 20.11.24 + version: 20.11.24 '@types/react': - specifier: 18.2.55 - version: 18.2.55 + specifier: 18.2.61 + version: 18.2.61 '@types/react-dom': specifier: 18.2.19 version: 18.2.19 '@typescript-eslint/eslint-plugin': - specifier: 7.0.1 - version: 7.0.1(@typescript-eslint/parser@7.0.1)(eslint@8.56.0)(typescript@5.3.3) + specifier: 7.1.0 + version: 7.1.0(@typescript-eslint/parser@7.1.0)(eslint@8.57.0)(typescript@5.3.3) '@typescript-eslint/parser': - specifier: 7.0.1 - version: 7.0.1(eslint@8.56.0)(typescript@5.3.3) + specifier: 7.1.0 + version: 7.1.0(eslint@8.57.0)(typescript@5.3.3) '@vitejs/plugin-react-swc': specifier: 3.6.0 - version: 3.6.0(vite@5.1.3) + version: 3.6.0(vite@5.1.4) autoprefixer: - specifier: 10.4.17 - version: 10.4.17(postcss@8.4.35) + specifier: 10.4.18 + version: 10.4.18(postcss@8.4.35) eslint: - specifier: 8.56.0 - version: 8.56.0 + specifier: 8.57.0 + version: 8.57.0 eslint-config-prettier: specifier: 9.1.0 - version: 9.1.0(eslint@8.56.0) + version: 9.1.0(eslint@8.57.0) eslint-plugin-react-hooks: specifier: 4.6.0 - version: 4.6.0(eslint@8.56.0) + version: 4.6.0(eslint@8.57.0) eslint-plugin-react-refresh: specifier: 0.4.5 - version: 0.4.5(eslint@8.56.0) + version: 0.4.5(eslint@8.57.0) postcss: specifier: 8.4.35 version: 8.4.35 @@ -176,8 +176,8 @@ devDependencies: specifier: 5.3.3 version: 5.3.3 vite: - specifier: 5.1.3 - version: 5.1.3(@types/node@20.11.19) + specifier: 5.1.4 + version: 5.1.4(@types/node@20.11.24) packages: @@ -529,13 +529,13 @@ packages: dev: true optional: true - /@eslint-community/eslint-utils@4.4.0(eslint@8.56.0): + /@eslint-community/eslint-utils@4.4.0(eslint@8.57.0): resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 dependencies: - eslint: 8.56.0 + eslint: 8.57.0 eslint-visitor-keys: 3.4.3 dev: true @@ -561,8 +561,8 @@ packages: - supports-color dev: true - /@eslint/js@8.56.0: - resolution: {integrity: sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A==} + /@eslint/js@8.57.0: + resolution: {integrity: sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true @@ -599,12 +599,12 @@ packages: resolution: {integrity: sha512-9TANp6GPoMtYzQdt54kfAyMmz1+osLlXdg2ENroU7zzrtflTLrrC/lgrIfaSe+Wu0b89GKccT7vxXA0MoAIO+Q==} dev: false - /@hookform/resolvers@3.3.4(react-hook-form@7.50.1): + /@hookform/resolvers@3.3.4(react-hook-form@7.51.0): resolution: {integrity: sha512-o5cgpGOuJYrd+iMKvkttOclgwRW86EsWJZZRC23prf0uU2i48Htq4PuT73AVb9ionFyZrwYEITuOFGF+BydEtQ==} peerDependencies: react-hook-form: ^7.0.0 dependencies: - react-hook-form: 7.50.1(react@18.2.0) + react-hook-form: 7.51.0(react@18.2.0) dev: false /@humanwhocodes/config-array@0.11.14: @@ -691,12 +691,12 @@ packages: requiresBuild: true optional: true - /@playwright/test@1.41.2: - resolution: {integrity: sha512-qQB9h7KbibJzrDpkXkYvsmiDJK14FULCCZgEcoe2AvFAS64oCirWTwzTlAYEbKaRxWs5TFesE1Na6izMv3HfGg==} + /@playwright/test@1.42.1: + resolution: {integrity: sha512-Gq9rmS54mjBL/7/MvBaNOBwbfnh7beHvS6oS4srqXFcQHpQCV1+c8JXWE8VLPyRDhgS3H8x8A7hztqI9VnwrAQ==} engines: {node: '>=16'} hasBin: true dependencies: - playwright: 1.41.2 + playwright: 1.42.1 dev: true /@radix-ui/number@1.0.1: @@ -711,7 +711,7 @@ packages: '@babel/runtime': 7.23.9 dev: false - /@radix-ui/react-alert-dialog@1.0.5(@types/react-dom@18.2.19)(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-alert-dialog@1.0.5(@types/react-dom@18.2.19)(@types/react@18.2.61)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-OrVIOcZL0tl6xibeuGt5/+UxoT2N27KCFOPjFyfXMnchxSHZ/OW7cCX2nGlIYJrbHK/fczPcFzAwvNBB6XBNMA==} peerDependencies: '@types/react': '*' @@ -726,18 +726,18 @@ packages: dependencies: '@babel/runtime': 7.23.9 '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.55)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.2.55)(react@18.2.0) - '@radix-ui/react-dialog': 1.0.5(@types/react-dom@18.2.19)(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.19)(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-slot': 1.0.2(@types/react@18.2.55)(react@18.2.0) - '@types/react': 18.2.55 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.61)(react@18.2.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.2.61)(react@18.2.0) + '@radix-ui/react-dialog': 1.0.5(@types/react-dom@18.2.19)(@types/react@18.2.61)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.19)(@types/react@18.2.61)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-slot': 1.0.2(@types/react@18.2.61)(react@18.2.0) + '@types/react': 18.2.61 '@types/react-dom': 18.2.19 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false - /@radix-ui/react-arrow@1.0.3(@types/react-dom@18.2.19)(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-arrow@1.0.3(@types/react-dom@18.2.19)(@types/react@18.2.61)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-wSP+pHsB/jQRaL6voubsQ/ZlrGBHHrOjmBnr19hxYgtS0WvAFwZhK2WP/YY5yF9uKECCEEDGxuLxq1NBK51wFA==} peerDependencies: '@types/react': '*' @@ -751,14 +751,14 @@ packages: optional: true dependencies: '@babel/runtime': 7.23.9 - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.19)(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0) - '@types/react': 18.2.55 + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.19)(@types/react@18.2.61)(react-dom@18.2.0)(react@18.2.0) + '@types/react': 18.2.61 '@types/react-dom': 18.2.19 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false - /@radix-ui/react-checkbox@1.0.4(@types/react-dom@18.2.19)(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-checkbox@1.0.4(@types/react-dom@18.2.19)(@types/react@18.2.61)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-CBuGQa52aAYnADZVt/KBQzXrwx6TqnlwtcIPGtVt5JkkzQwMOLJjPukimhfKEr4GQNd43C+djUh5Ikopj8pSLg==} peerDependencies: '@types/react': '*' @@ -773,20 +773,20 @@ packages: dependencies: '@babel/runtime': 7.23.9 '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.55)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.2.55)(react@18.2.0) - '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.19)(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.19)(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.55)(react@18.2.0) - '@radix-ui/react-use-previous': 1.0.1(@types/react@18.2.55)(react@18.2.0) - '@radix-ui/react-use-size': 1.0.1(@types/react@18.2.55)(react@18.2.0) - '@types/react': 18.2.55 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.61)(react@18.2.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.2.61)(react@18.2.0) + '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.19)(@types/react@18.2.61)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.19)(@types/react@18.2.61)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.61)(react@18.2.0) + '@radix-ui/react-use-previous': 1.0.1(@types/react@18.2.61)(react@18.2.0) + '@radix-ui/react-use-size': 1.0.1(@types/react@18.2.61)(react@18.2.0) + '@types/react': 18.2.61 '@types/react-dom': 18.2.19 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false - /@radix-ui/react-collection@1.0.3(@types/react-dom@18.2.19)(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-collection@1.0.3(@types/react-dom@18.2.19)(@types/react@18.2.61)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-3SzW+0PW7yBBoQlT8wNcGtaxaD0XSu0uLUFgrtHY08Acx05TaHaOmVLR73c0j/cqpDy53KBMO7s0dx2wmOIDIA==} peerDependencies: '@types/react': '*' @@ -800,17 +800,17 @@ packages: optional: true dependencies: '@babel/runtime': 7.23.9 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.55)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.2.55)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.19)(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-slot': 1.0.2(@types/react@18.2.55)(react@18.2.0) - '@types/react': 18.2.55 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.61)(react@18.2.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.2.61)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.19)(@types/react@18.2.61)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-slot': 1.0.2(@types/react@18.2.61)(react@18.2.0) + '@types/react': 18.2.61 '@types/react-dom': 18.2.19 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false - /@radix-ui/react-compose-refs@1.0.1(@types/react@18.2.55)(react@18.2.0): + /@radix-ui/react-compose-refs@1.0.1(@types/react@18.2.61)(react@18.2.0): resolution: {integrity: sha512-fDSBgd44FKHa1FRMU59qBMPFcl2PZE+2nmqunj+BWFyYYjnhIDWL2ItDs3rrbJDQOtzt5nIebLCQc4QRfz6LJw==} peerDependencies: '@types/react': '*' @@ -820,11 +820,11 @@ packages: optional: true dependencies: '@babel/runtime': 7.23.9 - '@types/react': 18.2.55 + '@types/react': 18.2.61 react: 18.2.0 dev: false - /@radix-ui/react-context@1.0.1(@types/react@18.2.55)(react@18.2.0): + /@radix-ui/react-context@1.0.1(@types/react@18.2.61)(react@18.2.0): resolution: {integrity: sha512-ebbrdFoYTcuZ0v4wG5tedGnp9tzcV8awzsxYph7gXUyvnNLuTIcCk1q17JEbnVhXAKG9oX3KtchwiMIAYp9NLg==} peerDependencies: '@types/react': '*' @@ -834,11 +834,11 @@ packages: optional: true dependencies: '@babel/runtime': 7.23.9 - '@types/react': 18.2.55 + '@types/react': 18.2.61 react: 18.2.0 dev: false - /@radix-ui/react-dialog@1.0.5(@types/react-dom@18.2.19)(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-dialog@1.0.5(@types/react-dom@18.2.19)(@types/react@18.2.61)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-GjWJX/AUpB703eEBanuBnIWdIXg6NvJFCXcNlSZk4xdszCdhrJgBoUd1cGk67vFO+WdA2pfI/plOpqz/5GUP6Q==} peerDependencies: '@types/react': '*' @@ -853,26 +853,26 @@ packages: dependencies: '@babel/runtime': 7.23.9 '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.55)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.2.55)(react@18.2.0) - '@radix-ui/react-dismissable-layer': 1.0.5(@types/react-dom@18.2.19)(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-focus-guards': 1.0.1(@types/react@18.2.55)(react@18.2.0) - '@radix-ui/react-focus-scope': 1.0.4(@types/react-dom@18.2.19)(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-id': 1.0.1(@types/react@18.2.55)(react@18.2.0) - '@radix-ui/react-portal': 1.0.4(@types/react-dom@18.2.19)(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.19)(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.19)(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-slot': 1.0.2(@types/react@18.2.55)(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.55)(react@18.2.0) - '@types/react': 18.2.55 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.61)(react@18.2.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.2.61)(react@18.2.0) + '@radix-ui/react-dismissable-layer': 1.0.5(@types/react-dom@18.2.19)(@types/react@18.2.61)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-focus-guards': 1.0.1(@types/react@18.2.61)(react@18.2.0) + '@radix-ui/react-focus-scope': 1.0.4(@types/react-dom@18.2.19)(@types/react@18.2.61)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-id': 1.0.1(@types/react@18.2.61)(react@18.2.0) + '@radix-ui/react-portal': 1.0.4(@types/react-dom@18.2.19)(@types/react@18.2.61)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.19)(@types/react@18.2.61)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.19)(@types/react@18.2.61)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-slot': 1.0.2(@types/react@18.2.61)(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.61)(react@18.2.0) + '@types/react': 18.2.61 '@types/react-dom': 18.2.19 aria-hidden: 1.2.3 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - react-remove-scroll: 2.5.5(@types/react@18.2.55)(react@18.2.0) + react-remove-scroll: 2.5.5(@types/react@18.2.61)(react@18.2.0) dev: false - /@radix-ui/react-direction@1.0.1(@types/react@18.2.55)(react@18.2.0): + /@radix-ui/react-direction@1.0.1(@types/react@18.2.61)(react@18.2.0): resolution: {integrity: sha512-RXcvnXgyvYvBEOhCBuddKecVkoMiI10Jcm5cTI7abJRAHYfFxeu+FBQs/DvdxSYucxR5mna0dNsL6QFlds5TMA==} peerDependencies: '@types/react': '*' @@ -882,11 +882,11 @@ packages: optional: true dependencies: '@babel/runtime': 7.23.9 - '@types/react': 18.2.55 + '@types/react': 18.2.61 react: 18.2.0 dev: false - /@radix-ui/react-dismissable-layer@1.0.5(@types/react-dom@18.2.19)(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-dismissable-layer@1.0.5(@types/react-dom@18.2.19)(@types/react@18.2.61)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-aJeDjQhywg9LBu2t/At58hCvr7pEm0o2Ke1x33B+MhjNmmZ17sy4KImo0KPLgsnc/zN7GPdce8Cnn0SWvwZO7g==} peerDependencies: '@types/react': '*' @@ -901,17 +901,17 @@ packages: dependencies: '@babel/runtime': 7.23.9 '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.55)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.19)(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.55)(react@18.2.0) - '@radix-ui/react-use-escape-keydown': 1.0.3(@types/react@18.2.55)(react@18.2.0) - '@types/react': 18.2.55 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.61)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.19)(@types/react@18.2.61)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.61)(react@18.2.0) + '@radix-ui/react-use-escape-keydown': 1.0.3(@types/react@18.2.61)(react@18.2.0) + '@types/react': 18.2.61 '@types/react-dom': 18.2.19 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false - /@radix-ui/react-dropdown-menu@2.0.6(@types/react-dom@18.2.19)(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-dropdown-menu@2.0.6(@types/react-dom@18.2.19)(@types/react@18.2.61)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-i6TuFOoWmLWq+M/eCLGd/bQ2HfAX1RJgvrBQ6AQLmzfvsLdefxbWu8G9zczcPFfcSPehz9GcpF6K9QYreFV8hA==} peerDependencies: '@types/react': '*' @@ -926,19 +926,19 @@ packages: dependencies: '@babel/runtime': 7.23.9 '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.55)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.2.55)(react@18.2.0) - '@radix-ui/react-id': 1.0.1(@types/react@18.2.55)(react@18.2.0) - '@radix-ui/react-menu': 2.0.6(@types/react-dom@18.2.19)(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.19)(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.55)(react@18.2.0) - '@types/react': 18.2.55 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.61)(react@18.2.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.2.61)(react@18.2.0) + '@radix-ui/react-id': 1.0.1(@types/react@18.2.61)(react@18.2.0) + '@radix-ui/react-menu': 2.0.6(@types/react-dom@18.2.19)(@types/react@18.2.61)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.19)(@types/react@18.2.61)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.61)(react@18.2.0) + '@types/react': 18.2.61 '@types/react-dom': 18.2.19 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false - /@radix-ui/react-focus-guards@1.0.1(@types/react@18.2.55)(react@18.2.0): + /@radix-ui/react-focus-guards@1.0.1(@types/react@18.2.61)(react@18.2.0): resolution: {integrity: sha512-Rect2dWbQ8waGzhMavsIbmSVCgYxkXLxxR3ZvCX79JOglzdEy4JXMb98lq4hPxUbLr77nP0UOGf4rcMU+s1pUA==} peerDependencies: '@types/react': '*' @@ -948,11 +948,11 @@ packages: optional: true dependencies: '@babel/runtime': 7.23.9 - '@types/react': 18.2.55 + '@types/react': 18.2.61 react: 18.2.0 dev: false - /@radix-ui/react-focus-scope@1.0.4(@types/react-dom@18.2.19)(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-focus-scope@1.0.4(@types/react-dom@18.2.19)(@types/react@18.2.61)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-sL04Mgvf+FmyvZeYfNu1EPAaaxD+aw7cYeIB9L9Fvq8+urhltTRaEo5ysKOpHuKPclsZcSUMKlN05x4u+CINpA==} peerDependencies: '@types/react': '*' @@ -966,16 +966,16 @@ packages: optional: true dependencies: '@babel/runtime': 7.23.9 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.55)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.19)(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.55)(react@18.2.0) - '@types/react': 18.2.55 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.61)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.19)(@types/react@18.2.61)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.61)(react@18.2.0) + '@types/react': 18.2.61 '@types/react-dom': 18.2.19 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false - /@radix-ui/react-id@1.0.1(@types/react@18.2.55)(react@18.2.0): + /@radix-ui/react-id@1.0.1(@types/react@18.2.61)(react@18.2.0): resolution: {integrity: sha512-tI7sT/kqYp8p96yGWY1OAnLHrqDgzHefRBKQ2YAkBS5ja7QLcZ9Z/uY7bEjPUatf8RomoXM8/1sMj1IJaE5UzQ==} peerDependencies: '@types/react': '*' @@ -985,12 +985,12 @@ packages: optional: true dependencies: '@babel/runtime': 7.23.9 - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.55)(react@18.2.0) - '@types/react': 18.2.55 + '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.61)(react@18.2.0) + '@types/react': 18.2.61 react: 18.2.0 dev: false - /@radix-ui/react-label@2.0.2(@types/react-dom@18.2.19)(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-label@2.0.2(@types/react-dom@18.2.19)(@types/react@18.2.61)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-N5ehvlM7qoTLx7nWPodsPYPgMzA5WM8zZChQg8nyFJKnDO5WHdba1vv5/H6IO5LtJMfD2Q3wh1qHFGNtK0w3bQ==} peerDependencies: '@types/react': '*' @@ -1004,14 +1004,14 @@ packages: optional: true dependencies: '@babel/runtime': 7.23.9 - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.19)(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0) - '@types/react': 18.2.55 + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.19)(@types/react@18.2.61)(react-dom@18.2.0)(react@18.2.0) + '@types/react': 18.2.61 '@types/react-dom': 18.2.19 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false - /@radix-ui/react-menu@2.0.6(@types/react-dom@18.2.19)(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-menu@2.0.6(@types/react-dom@18.2.19)(@types/react@18.2.61)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-BVkFLS+bUC8HcImkRKPSiVumA1VPOOEC5WBMiT+QAVsPzW1FJzI9KnqgGxVDPBcql5xXrHkD3JOVoXWEXD8SYA==} peerDependencies: '@types/react': '*' @@ -1026,30 +1026,30 @@ packages: dependencies: '@babel/runtime': 7.23.9 '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.2.19)(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.55)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.2.55)(react@18.2.0) - '@radix-ui/react-direction': 1.0.1(@types/react@18.2.55)(react@18.2.0) - '@radix-ui/react-dismissable-layer': 1.0.5(@types/react-dom@18.2.19)(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-focus-guards': 1.0.1(@types/react@18.2.55)(react@18.2.0) - '@radix-ui/react-focus-scope': 1.0.4(@types/react-dom@18.2.19)(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-id': 1.0.1(@types/react@18.2.55)(react@18.2.0) - '@radix-ui/react-popper': 1.1.3(@types/react-dom@18.2.19)(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-portal': 1.0.4(@types/react-dom@18.2.19)(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.19)(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.19)(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-roving-focus': 1.0.4(@types/react-dom@18.2.19)(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-slot': 1.0.2(@types/react@18.2.55)(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.55)(react@18.2.0) - '@types/react': 18.2.55 + '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.2.19)(@types/react@18.2.61)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.61)(react@18.2.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.2.61)(react@18.2.0) + '@radix-ui/react-direction': 1.0.1(@types/react@18.2.61)(react@18.2.0) + '@radix-ui/react-dismissable-layer': 1.0.5(@types/react-dom@18.2.19)(@types/react@18.2.61)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-focus-guards': 1.0.1(@types/react@18.2.61)(react@18.2.0) + '@radix-ui/react-focus-scope': 1.0.4(@types/react-dom@18.2.19)(@types/react@18.2.61)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-id': 1.0.1(@types/react@18.2.61)(react@18.2.0) + '@radix-ui/react-popper': 1.1.3(@types/react-dom@18.2.19)(@types/react@18.2.61)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-portal': 1.0.4(@types/react-dom@18.2.19)(@types/react@18.2.61)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.19)(@types/react@18.2.61)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.19)(@types/react@18.2.61)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-roving-focus': 1.0.4(@types/react-dom@18.2.19)(@types/react@18.2.61)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-slot': 1.0.2(@types/react@18.2.61)(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.61)(react@18.2.0) + '@types/react': 18.2.61 '@types/react-dom': 18.2.19 aria-hidden: 1.2.3 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - react-remove-scroll: 2.5.5(@types/react@18.2.55)(react@18.2.0) + react-remove-scroll: 2.5.5(@types/react@18.2.61)(react@18.2.0) dev: false - /@radix-ui/react-popper@1.1.3(@types/react-dom@18.2.19)(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-popper@1.1.3(@types/react-dom@18.2.19)(@types/react@18.2.61)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-cKpopj/5RHZWjrbF2846jBNacjQVwkP068DfmgrNJXpvVWrOvlAmE9xSiy5OqeE+Gi8D9fP+oDhUnPqNMY8/5w==} peerDependencies: '@types/react': '*' @@ -1064,22 +1064,22 @@ packages: dependencies: '@babel/runtime': 7.23.9 '@floating-ui/react-dom': 2.0.8(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-arrow': 1.0.3(@types/react-dom@18.2.19)(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.55)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.2.55)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.19)(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.55)(react@18.2.0) - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.55)(react@18.2.0) - '@radix-ui/react-use-rect': 1.0.1(@types/react@18.2.55)(react@18.2.0) - '@radix-ui/react-use-size': 1.0.1(@types/react@18.2.55)(react@18.2.0) + '@radix-ui/react-arrow': 1.0.3(@types/react-dom@18.2.19)(@types/react@18.2.61)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.61)(react@18.2.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.2.61)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.19)(@types/react@18.2.61)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.61)(react@18.2.0) + '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.61)(react@18.2.0) + '@radix-ui/react-use-rect': 1.0.1(@types/react@18.2.61)(react@18.2.0) + '@radix-ui/react-use-size': 1.0.1(@types/react@18.2.61)(react@18.2.0) '@radix-ui/rect': 1.0.1 - '@types/react': 18.2.55 + '@types/react': 18.2.61 '@types/react-dom': 18.2.19 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false - /@radix-ui/react-portal@1.0.4(@types/react-dom@18.2.19)(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-portal@1.0.4(@types/react-dom@18.2.19)(@types/react@18.2.61)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-Qki+C/EuGUVCQTOTD5vzJzJuMUlewbzuKyUy+/iHM2uwGiru9gZeBJtHAPKAEkB5KWGi9mP/CHKcY0wt1aW45Q==} peerDependencies: '@types/react': '*' @@ -1093,14 +1093,14 @@ packages: optional: true dependencies: '@babel/runtime': 7.23.9 - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.19)(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0) - '@types/react': 18.2.55 + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.19)(@types/react@18.2.61)(react-dom@18.2.0)(react@18.2.0) + '@types/react': 18.2.61 '@types/react-dom': 18.2.19 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false - /@radix-ui/react-presence@1.0.1(@types/react-dom@18.2.19)(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-presence@1.0.1(@types/react-dom@18.2.19)(@types/react@18.2.61)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-UXLW4UAbIY5ZjcvzjfRFo5gxva8QirC9hF7wRE4U5gz+TP0DbRk+//qyuAQ1McDxBt1xNMBTaciFGvEmJvAZCg==} peerDependencies: '@types/react': '*' @@ -1114,15 +1114,15 @@ packages: optional: true dependencies: '@babel/runtime': 7.23.9 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.55)(react@18.2.0) - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.55)(react@18.2.0) - '@types/react': 18.2.55 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.61)(react@18.2.0) + '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.61)(react@18.2.0) + '@types/react': 18.2.61 '@types/react-dom': 18.2.19 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false - /@radix-ui/react-primitive@1.0.3(@types/react-dom@18.2.19)(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-primitive@1.0.3(@types/react-dom@18.2.19)(@types/react@18.2.61)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-yi58uVyoAcK/Nq1inRY56ZSjKypBNKTa/1mcL8qdl6oJeEaDbOldlzrGn7P6Q3Id5d+SYNGc5AJgc4vGhjs5+g==} peerDependencies: '@types/react': '*' @@ -1136,14 +1136,14 @@ packages: optional: true dependencies: '@babel/runtime': 7.23.9 - '@radix-ui/react-slot': 1.0.2(@types/react@18.2.55)(react@18.2.0) - '@types/react': 18.2.55 + '@radix-ui/react-slot': 1.0.2(@types/react@18.2.61)(react@18.2.0) + '@types/react': 18.2.61 '@types/react-dom': 18.2.19 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false - /@radix-ui/react-roving-focus@1.0.4(@types/react-dom@18.2.19)(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-roving-focus@1.0.4(@types/react-dom@18.2.19)(@types/react@18.2.61)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-2mUg5Mgcu001VkGy+FfzZyzbmuUWzgWkj3rvv4yu+mLw03+mTzbxZHvfcGyFp2b8EkQeMkpRQ5FiA2Vr2O6TeQ==} peerDependencies: '@types/react': '*' @@ -1158,21 +1158,21 @@ packages: dependencies: '@babel/runtime': 7.23.9 '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.2.19)(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.55)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.2.55)(react@18.2.0) - '@radix-ui/react-direction': 1.0.1(@types/react@18.2.55)(react@18.2.0) - '@radix-ui/react-id': 1.0.1(@types/react@18.2.55)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.19)(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.55)(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.55)(react@18.2.0) - '@types/react': 18.2.55 + '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.2.19)(@types/react@18.2.61)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.61)(react@18.2.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.2.61)(react@18.2.0) + '@radix-ui/react-direction': 1.0.1(@types/react@18.2.61)(react@18.2.0) + '@radix-ui/react-id': 1.0.1(@types/react@18.2.61)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.19)(@types/react@18.2.61)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.61)(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.61)(react@18.2.0) + '@types/react': 18.2.61 '@types/react-dom': 18.2.19 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false - /@radix-ui/react-scroll-area@1.0.5(@types/react-dom@18.2.19)(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-scroll-area@1.0.5(@types/react-dom@18.2.19)(@types/react@18.2.61)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-b6PAgH4GQf9QEn8zbT2XUHpW5z8BzqEc7Kl11TwDrvuTrxlkcjTD5qa/bxgKr+nmuXKu4L/W5UZ4mlP/VG/5Gw==} peerDependencies: '@types/react': '*' @@ -1188,20 +1188,20 @@ packages: '@babel/runtime': 7.23.9 '@radix-ui/number': 1.0.1 '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.55)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.2.55)(react@18.2.0) - '@radix-ui/react-direction': 1.0.1(@types/react@18.2.55)(react@18.2.0) - '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.19)(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.19)(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.55)(react@18.2.0) - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.55)(react@18.2.0) - '@types/react': 18.2.55 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.61)(react@18.2.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.2.61)(react@18.2.0) + '@radix-ui/react-direction': 1.0.1(@types/react@18.2.61)(react@18.2.0) + '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.19)(@types/react@18.2.61)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.19)(@types/react@18.2.61)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.61)(react@18.2.0) + '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.61)(react@18.2.0) + '@types/react': 18.2.61 '@types/react-dom': 18.2.19 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false - /@radix-ui/react-select@2.0.0(@types/react-dom@18.2.19)(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-select@2.0.0(@types/react-dom@18.2.19)(@types/react@18.2.61)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-RH5b7af4oHtkcHS7pG6Sgv5rk5Wxa7XI8W5gvB1N/yiuDGZxko1ynvOiVhFM7Cis2A8zxF9bTOUVbRDzPepe6w==} peerDependencies: '@types/react': '*' @@ -1217,32 +1217,32 @@ packages: '@babel/runtime': 7.23.9 '@radix-ui/number': 1.0.1 '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.2.19)(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.55)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.2.55)(react@18.2.0) - '@radix-ui/react-direction': 1.0.1(@types/react@18.2.55)(react@18.2.0) - '@radix-ui/react-dismissable-layer': 1.0.5(@types/react-dom@18.2.19)(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-focus-guards': 1.0.1(@types/react@18.2.55)(react@18.2.0) - '@radix-ui/react-focus-scope': 1.0.4(@types/react-dom@18.2.19)(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-id': 1.0.1(@types/react@18.2.55)(react@18.2.0) - '@radix-ui/react-popper': 1.1.3(@types/react-dom@18.2.19)(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-portal': 1.0.4(@types/react-dom@18.2.19)(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.19)(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-slot': 1.0.2(@types/react@18.2.55)(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.55)(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.55)(react@18.2.0) - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.55)(react@18.2.0) - '@radix-ui/react-use-previous': 1.0.1(@types/react@18.2.55)(react@18.2.0) - '@radix-ui/react-visually-hidden': 1.0.3(@types/react-dom@18.2.19)(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0) - '@types/react': 18.2.55 + '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.2.19)(@types/react@18.2.61)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.61)(react@18.2.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.2.61)(react@18.2.0) + '@radix-ui/react-direction': 1.0.1(@types/react@18.2.61)(react@18.2.0) + '@radix-ui/react-dismissable-layer': 1.0.5(@types/react-dom@18.2.19)(@types/react@18.2.61)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-focus-guards': 1.0.1(@types/react@18.2.61)(react@18.2.0) + '@radix-ui/react-focus-scope': 1.0.4(@types/react-dom@18.2.19)(@types/react@18.2.61)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-id': 1.0.1(@types/react@18.2.61)(react@18.2.0) + '@radix-ui/react-popper': 1.1.3(@types/react-dom@18.2.19)(@types/react@18.2.61)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-portal': 1.0.4(@types/react-dom@18.2.19)(@types/react@18.2.61)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.19)(@types/react@18.2.61)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-slot': 1.0.2(@types/react@18.2.61)(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.61)(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.61)(react@18.2.0) + '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.61)(react@18.2.0) + '@radix-ui/react-use-previous': 1.0.1(@types/react@18.2.61)(react@18.2.0) + '@radix-ui/react-visually-hidden': 1.0.3(@types/react-dom@18.2.19)(@types/react@18.2.61)(react-dom@18.2.0)(react@18.2.0) + '@types/react': 18.2.61 '@types/react-dom': 18.2.19 aria-hidden: 1.2.3 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - react-remove-scroll: 2.5.5(@types/react@18.2.55)(react@18.2.0) + react-remove-scroll: 2.5.5(@types/react@18.2.61)(react@18.2.0) dev: false - /@radix-ui/react-separator@1.0.3(@types/react-dom@18.2.19)(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-separator@1.0.3(@types/react-dom@18.2.19)(@types/react@18.2.61)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-itYmTy/kokS21aiV5+Z56MZB54KrhPgn6eHDKkFeOLR34HMN2s8PaN47qZZAGnvupcjxHaFZnW4pQEh0BvvVuw==} peerDependencies: '@types/react': '*' @@ -1256,14 +1256,14 @@ packages: optional: true dependencies: '@babel/runtime': 7.23.9 - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.19)(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0) - '@types/react': 18.2.55 + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.19)(@types/react@18.2.61)(react-dom@18.2.0)(react@18.2.0) + '@types/react': 18.2.61 '@types/react-dom': 18.2.19 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false - /@radix-ui/react-slot@1.0.2(@types/react@18.2.55)(react@18.2.0): + /@radix-ui/react-slot@1.0.2(@types/react@18.2.61)(react@18.2.0): resolution: {integrity: sha512-YeTpuq4deV+6DusvVUW4ivBgnkHwECUu0BiN43L5UCDFgdhsRUWAghhTF5MbvNTPzmiFOx90asDSUjWuCNapwg==} peerDependencies: '@types/react': '*' @@ -1273,12 +1273,12 @@ packages: optional: true dependencies: '@babel/runtime': 7.23.9 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.55)(react@18.2.0) - '@types/react': 18.2.55 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.61)(react@18.2.0) + '@types/react': 18.2.61 react: 18.2.0 dev: false - /@radix-ui/react-tabs@1.0.4(@types/react-dom@18.2.19)(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-tabs@1.0.4(@types/react-dom@18.2.19)(@types/react@18.2.61)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-egZfYY/+wRNCflXNHx+dePvnz9FbmssDTJBtgRfDY7e8SE5oIo3Py2eCB1ckAbh1Q7cQ/6yJZThJ++sgbxibog==} peerDependencies: '@types/react': '*' @@ -1293,20 +1293,20 @@ packages: dependencies: '@babel/runtime': 7.23.9 '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-context': 1.0.1(@types/react@18.2.55)(react@18.2.0) - '@radix-ui/react-direction': 1.0.1(@types/react@18.2.55)(react@18.2.0) - '@radix-ui/react-id': 1.0.1(@types/react@18.2.55)(react@18.2.0) - '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.19)(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.19)(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-roving-focus': 1.0.4(@types/react-dom@18.2.19)(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.55)(react@18.2.0) - '@types/react': 18.2.55 + '@radix-ui/react-context': 1.0.1(@types/react@18.2.61)(react@18.2.0) + '@radix-ui/react-direction': 1.0.1(@types/react@18.2.61)(react@18.2.0) + '@radix-ui/react-id': 1.0.1(@types/react@18.2.61)(react@18.2.0) + '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.19)(@types/react@18.2.61)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.19)(@types/react@18.2.61)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-roving-focus': 1.0.4(@types/react-dom@18.2.19)(@types/react@18.2.61)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.61)(react@18.2.0) + '@types/react': 18.2.61 '@types/react-dom': 18.2.19 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false - /@radix-ui/react-use-callback-ref@1.0.1(@types/react@18.2.55)(react@18.2.0): + /@radix-ui/react-use-callback-ref@1.0.1(@types/react@18.2.61)(react@18.2.0): resolution: {integrity: sha512-D94LjX4Sp0xJFVaoQOd3OO9k7tpBYNOXdVhkltUbGv2Qb9OXdrg/CpsjlZv7ia14Sylv398LswWBVVu5nqKzAQ==} peerDependencies: '@types/react': '*' @@ -1316,11 +1316,11 @@ packages: optional: true dependencies: '@babel/runtime': 7.23.9 - '@types/react': 18.2.55 + '@types/react': 18.2.61 react: 18.2.0 dev: false - /@radix-ui/react-use-controllable-state@1.0.1(@types/react@18.2.55)(react@18.2.0): + /@radix-ui/react-use-controllable-state@1.0.1(@types/react@18.2.61)(react@18.2.0): resolution: {integrity: sha512-Svl5GY5FQeN758fWKrjM6Qb7asvXeiZltlT4U2gVfl8Gx5UAv2sMR0LWo8yhsIZh2oQ0eFdZ59aoOOMV7b47VA==} peerDependencies: '@types/react': '*' @@ -1330,12 +1330,12 @@ packages: optional: true dependencies: '@babel/runtime': 7.23.9 - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.55)(react@18.2.0) - '@types/react': 18.2.55 + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.61)(react@18.2.0) + '@types/react': 18.2.61 react: 18.2.0 dev: false - /@radix-ui/react-use-escape-keydown@1.0.3(@types/react@18.2.55)(react@18.2.0): + /@radix-ui/react-use-escape-keydown@1.0.3(@types/react@18.2.61)(react@18.2.0): resolution: {integrity: sha512-vyL82j40hcFicA+M4Ex7hVkB9vHgSse1ZWomAqV2Je3RleKGO5iM8KMOEtfoSB0PnIelMd2lATjTGMYqN5ylTg==} peerDependencies: '@types/react': '*' @@ -1345,12 +1345,12 @@ packages: optional: true dependencies: '@babel/runtime': 7.23.9 - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.55)(react@18.2.0) - '@types/react': 18.2.55 + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.61)(react@18.2.0) + '@types/react': 18.2.61 react: 18.2.0 dev: false - /@radix-ui/react-use-layout-effect@1.0.1(@types/react@18.2.55)(react@18.2.0): + /@radix-ui/react-use-layout-effect@1.0.1(@types/react@18.2.61)(react@18.2.0): resolution: {integrity: sha512-v/5RegiJWYdoCvMnITBkNNx6bCj20fiaJnWtRkU18yITptraXjffz5Qbn05uOiQnOvi+dbkznkoaMltz1GnszQ==} peerDependencies: '@types/react': '*' @@ -1360,11 +1360,11 @@ packages: optional: true dependencies: '@babel/runtime': 7.23.9 - '@types/react': 18.2.55 + '@types/react': 18.2.61 react: 18.2.0 dev: false - /@radix-ui/react-use-previous@1.0.1(@types/react@18.2.55)(react@18.2.0): + /@radix-ui/react-use-previous@1.0.1(@types/react@18.2.61)(react@18.2.0): resolution: {integrity: sha512-cV5La9DPwiQ7S0gf/0qiD6YgNqM5Fk97Kdrlc5yBcrF3jyEZQwm7vYFqMo4IfeHgJXsRaMvLABFtd0OVEmZhDw==} peerDependencies: '@types/react': '*' @@ -1374,11 +1374,11 @@ packages: optional: true dependencies: '@babel/runtime': 7.23.9 - '@types/react': 18.2.55 + '@types/react': 18.2.61 react: 18.2.0 dev: false - /@radix-ui/react-use-rect@1.0.1(@types/react@18.2.55)(react@18.2.0): + /@radix-ui/react-use-rect@1.0.1(@types/react@18.2.61)(react@18.2.0): resolution: {integrity: sha512-Cq5DLuSiuYVKNU8orzJMbl15TXilTnJKUCltMVQg53BQOF1/C5toAaGrowkgksdBQ9H+SRL23g0HDmg9tvmxXw==} peerDependencies: '@types/react': '*' @@ -1389,11 +1389,11 @@ packages: dependencies: '@babel/runtime': 7.23.9 '@radix-ui/rect': 1.0.1 - '@types/react': 18.2.55 + '@types/react': 18.2.61 react: 18.2.0 dev: false - /@radix-ui/react-use-size@1.0.1(@types/react@18.2.55)(react@18.2.0): + /@radix-ui/react-use-size@1.0.1(@types/react@18.2.61)(react@18.2.0): resolution: {integrity: sha512-ibay+VqrgcaI6veAojjofPATwledXiSmX+C0KrBk/xgpX9rBzPV3OsfwlhQdUOFbh+LKQorLYT+xTXW9V8yd0g==} peerDependencies: '@types/react': '*' @@ -1403,12 +1403,12 @@ packages: optional: true dependencies: '@babel/runtime': 7.23.9 - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.55)(react@18.2.0) - '@types/react': 18.2.55 + '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.61)(react@18.2.0) + '@types/react': 18.2.61 react: 18.2.0 dev: false - /@radix-ui/react-visually-hidden@1.0.3(@types/react-dom@18.2.19)(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-visually-hidden@1.0.3(@types/react-dom@18.2.19)(@types/react@18.2.61)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-D4w41yN5YRKtu464TLnByKzMDG/JlMPHtfZgQAu9v6mNakUqGUI9vUrfQKz8NK41VMm/xbZbh76NUTVtIYqOMA==} peerDependencies: '@types/react': '*' @@ -1422,8 +1422,8 @@ packages: optional: true dependencies: '@babel/runtime': 7.23.9 - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.19)(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0) - '@types/react': 18.2.55 + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.19)(@types/react@18.2.61)(react-dom@18.2.0)(react@18.2.0) + '@types/react': 18.2.61 '@types/react-dom': 18.2.19 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) @@ -1435,8 +1435,8 @@ packages: '@babel/runtime': 7.23.9 dev: false - /@remix-run/router@1.15.0: - resolution: {integrity: sha512-HOil5aFtme37dVQTB6M34G95kPM3MMuqSmIRVCC52eKV+Y/tGSqw9P3rWhlAx6A+mz+MoX+XxsGsNJbaI5qCgQ==} + /@remix-run/router@1.15.2: + resolution: {integrity: sha512-+Rnav+CaoTE5QJc4Jcwh5toUpnVLKYbpU6Ys0zqbakqbaLQHeglLVHPfxOiQqdNmUy5C2lXz5dwC6tQNX2JW2Q==} engines: {node: '>=14.0.0'} dev: false @@ -1667,48 +1667,48 @@ packages: resolution: {integrity: sha512-myfUej5naTBWnqOCc/MdVOLVjXUXtIA+NpDrDBKJtLLg2shUjBu3cZmB/85RyitKc55+lUUyl7oRfLOvkr2hsw==} dev: true - /@tanstack/query-core@5.20.5: - resolution: {integrity: sha512-T1W28gGgWn0A++tH3lxj3ZuUVZZorsiKcv+R50RwmPYz62YoDEkG4/aXHZELGkRp4DfrW07dyq2K5dvJ4Wl1aA==} + /@tanstack/query-core@5.24.1: + resolution: {integrity: sha512-DZ6Nx9p7BhjkG50ayJ+MKPgff+lMeol7QYXkvuU5jr2ryW/4ok5eanaS9W5eooA4xN0A/GPHdLGOZGzArgf5Cg==} dev: false - /@tanstack/query-devtools@5.20.2: - resolution: {integrity: sha512-BZfSjhk/NGPbqte5E3Vc1Zbj28uWt///4I0DgzAdWrOtMVvdl0WlUXK23K2daLsbcyfoDR4jRI4f2Z5z/mMzuw==} + /@tanstack/query-devtools@5.24.0: + resolution: {integrity: sha512-pThim455t69zrZaQKa7IRkEIK8UBTS+gHVAdNfhO72Xh4rWpMc63ovRje5/n6iw63+d6QiJzVadsJVdPoodSeQ==} dev: false - /@tanstack/react-query-devtools@5.20.5(@tanstack/react-query@5.20.5)(react@18.2.0): - resolution: {integrity: sha512-Wl7IzNuKCb4h41a5iH/YXNwalHItqJPCAr4r8+0iUYOLHNOf3E9P0G4kzZ9sqDoWKxY04qst6Vrij9bwPzLQRQ==} + /@tanstack/react-query-devtools@5.24.1(@tanstack/react-query@5.24.1)(react@18.2.0): + resolution: {integrity: sha512-qa4SEugN+EF8JJXcpsM9Lu05HfUv5cvHvLuB0uw/81eJZyNHFdtHFBi5RLCgpBrOyVMDfH8UQ3VBMqXzFKV68A==} peerDependencies: - '@tanstack/react-query': ^5.20.5 + '@tanstack/react-query': ^5.24.1 react: ^18.0.0 dependencies: - '@tanstack/query-devtools': 5.20.2 - '@tanstack/react-query': 5.20.5(react@18.2.0) + '@tanstack/query-devtools': 5.24.0 + '@tanstack/react-query': 5.24.1(react@18.2.0) react: 18.2.0 dev: false - /@tanstack/react-query@5.20.5(react@18.2.0): - resolution: {integrity: sha512-6MHwJ8G9cnOC/XKrwt56QMc91vN7hLlAQNUA0ubP7h9Jj3a/CmkUwT6ALdFbnVP+PsYdhW3WONa8WQ4VcTaSLQ==} + /@tanstack/react-query@5.24.1(react@18.2.0): + resolution: {integrity: sha512-4+09JEdO4d6+Gc8Y/g2M/MuxDK5IY0QV8+2wL2304wPKJgJ54cBbULd3nciJ5uvh/as8rrxx6s0mtIwpRuGd1g==} peerDependencies: react: ^18.0.0 dependencies: - '@tanstack/query-core': 5.20.5 + '@tanstack/query-core': 5.24.1 react: 18.2.0 dev: false - /@tanstack/react-table@8.12.0(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-LlEQ1Gpz4bfpiET+qmle4BhKDgKN3Y/sssc+O/wLqX8HRtjV+nhusYbllZlutZfMR8oeef83whKTj/VhaV8EeA==} + /@tanstack/react-table@8.13.2(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-b6mR3mYkjRtJ443QZh9sc7CvGTce81J35F/XMr0OoWbx0KIM7TTTdyNP2XKObvkLpYnLpCrYDwI3CZnLezWvpg==} engines: {node: '>=12'} peerDependencies: react: '>=16' react-dom: '>=16' dependencies: - '@tanstack/table-core': 8.12.0 + '@tanstack/table-core': 8.13.2 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false - /@tanstack/table-core@8.12.0: - resolution: {integrity: sha512-cq/ylWVrOwixmwNXQjgZaQw1Izf7+nPxjczum7paAnMtwPg1S2qRAJU+Jb8rEBUWm69voC/zcChmePlk2hc6ug==} + /@tanstack/table-core@8.13.2: + resolution: {integrity: sha512-/2saD1lWBUV6/uNAwrsg2tw58uvMJ07bO2F1IWMxjFRkJiXKQRuc3Oq2aufeobD3873+4oIM/DRySIw7+QsPPw==} engines: {node: '>=12'} dev: false @@ -1777,8 +1777,8 @@ packages: resolution: {integrity: sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==} dev: false - /@types/node@20.11.19: - resolution: {integrity: sha512-7xMnVEcZFu0DikYjWOlRq7NTPETrm7teqUT2WkQjrTIkEgUyyGdWsj/Zg8bEJt5TNklzbPD1X3fqfsHw3SpapQ==} + /@types/node@20.11.24: + resolution: {integrity: sha512-Kza43ewS3xoLgCEpQrsT+xRo/EJej1y0kVYGiLFE1NEODXGzTfwiC6tXTLMQskn1X4/Rjlh0MQUvx9W+L9long==} dependencies: undici-types: 5.26.5 dev: true @@ -1793,10 +1793,10 @@ packages: /@types/react-dom@18.2.19: resolution: {integrity: sha512-aZvQL6uUbIJpjZk4U8JZGbau9KDeAwMfmhyWorxgBkqDIEf6ROjRozcmPIicqsUwPUjbkDfHKgGee1Lq65APcA==} dependencies: - '@types/react': 18.2.55 + '@types/react': 18.2.61 - /@types/react@18.2.55: - resolution: {integrity: sha512-Y2Tz5P4yz23brwm2d7jNon39qoAtMMmalOQv6+fEFt1mT+FcM3D841wDpoUvFXhaYenuROCy3FZYqdTjM7qVyA==} + /@types/react@18.2.61: + resolution: {integrity: sha512-NURTN0qNnJa7O/k4XUkEW2yfygA+NxS0V5h1+kp9jPwhzZy95q3ADoGMP0+JypMhrZBTTgjKAUlTctde1zzeQA==} dependencies: '@types/prop-types': 15.7.11 '@types/scheduler': 0.16.8 @@ -1817,8 +1817,8 @@ packages: resolution: {integrity: sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==} dev: false - /@typescript-eslint/eslint-plugin@7.0.1(@typescript-eslint/parser@7.0.1)(eslint@8.56.0)(typescript@5.3.3): - resolution: {integrity: sha512-OLvgeBv3vXlnnJGIAgCLYKjgMEU+wBGj07MQ/nxAaON+3mLzX7mJbhRYrVGiVvFiXtwFlkcBa/TtmglHy0UbzQ==} + /@typescript-eslint/eslint-plugin@7.1.0(@typescript-eslint/parser@7.1.0)(eslint@8.57.0)(typescript@5.3.3): + resolution: {integrity: sha512-j6vT/kCulhG5wBmGtstKeiVr1rdXE4nk+DT1k6trYkwlrvW9eOF5ZbgKnd/YR6PcM4uTEXa0h6Fcvf6X7Dxl0w==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: '@typescript-eslint/parser': ^7.0.0 @@ -1829,13 +1829,13 @@ packages: optional: true dependencies: '@eslint-community/regexpp': 4.10.0 - '@typescript-eslint/parser': 7.0.1(eslint@8.56.0)(typescript@5.3.3) - '@typescript-eslint/scope-manager': 7.0.1 - '@typescript-eslint/type-utils': 7.0.1(eslint@8.56.0)(typescript@5.3.3) - '@typescript-eslint/utils': 7.0.1(eslint@8.56.0)(typescript@5.3.3) - '@typescript-eslint/visitor-keys': 7.0.1 + '@typescript-eslint/parser': 7.1.0(eslint@8.57.0)(typescript@5.3.3) + '@typescript-eslint/scope-manager': 7.1.0 + '@typescript-eslint/type-utils': 7.1.0(eslint@8.57.0)(typescript@5.3.3) + '@typescript-eslint/utils': 7.1.0(eslint@8.57.0)(typescript@5.3.3) + '@typescript-eslint/visitor-keys': 7.1.0 debug: 4.3.4 - eslint: 8.56.0 + eslint: 8.57.0 graphemer: 1.4.0 ignore: 5.3.1 natural-compare: 1.4.0 @@ -1846,8 +1846,8 @@ packages: - supports-color dev: true - /@typescript-eslint/parser@7.0.1(eslint@8.56.0)(typescript@5.3.3): - resolution: {integrity: sha512-8GcRRZNzaHxKzBPU3tKtFNing571/GwPBeCvmAUw0yBtfE2XVd0zFKJIMSWkHJcPQi0ekxjIts6L/rrZq5cxGQ==} + /@typescript-eslint/parser@7.1.0(eslint@8.57.0)(typescript@5.3.3): + resolution: {integrity: sha512-V1EknKUubZ1gWFjiOZhDSNToOjs63/9O0puCgGS8aDOgpZY326fzFu15QAUjwaXzRZjf/qdsdBrckYdv9YxB8w==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^8.56.0 @@ -1856,27 +1856,27 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 7.0.1 - '@typescript-eslint/types': 7.0.1 - '@typescript-eslint/typescript-estree': 7.0.1(typescript@5.3.3) - '@typescript-eslint/visitor-keys': 7.0.1 + '@typescript-eslint/scope-manager': 7.1.0 + '@typescript-eslint/types': 7.1.0 + '@typescript-eslint/typescript-estree': 7.1.0(typescript@5.3.3) + '@typescript-eslint/visitor-keys': 7.1.0 debug: 4.3.4 - eslint: 8.56.0 + eslint: 8.57.0 typescript: 5.3.3 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/scope-manager@7.0.1: - resolution: {integrity: sha512-v7/T7As10g3bcWOOPAcbnMDuvctHzCFYCG/8R4bK4iYzdFqsZTbXGln0cZNVcwQcwewsYU2BJLay8j0/4zOk4w==} + /@typescript-eslint/scope-manager@7.1.0: + resolution: {integrity: sha512-6TmN4OJiohHfoOdGZ3huuLhpiUgOGTpgXNUPJgeZOZR3DnIpdSgtt83RS35OYNNXxM4TScVlpVKC9jyQSETR1A==} engines: {node: ^16.0.0 || >=18.0.0} dependencies: - '@typescript-eslint/types': 7.0.1 - '@typescript-eslint/visitor-keys': 7.0.1 + '@typescript-eslint/types': 7.1.0 + '@typescript-eslint/visitor-keys': 7.1.0 dev: true - /@typescript-eslint/type-utils@7.0.1(eslint@8.56.0)(typescript@5.3.3): - resolution: {integrity: sha512-YtT9UcstTG5Yqy4xtLiClm1ZpM/pWVGFnkAa90UfdkkZsR1eP2mR/1jbHeYp8Ay1l1JHPyGvoUYR6o3On5Nhmw==} + /@typescript-eslint/type-utils@7.1.0(eslint@8.57.0)(typescript@5.3.3): + resolution: {integrity: sha512-UZIhv8G+5b5skkcuhgvxYWHjk7FW7/JP5lPASMEUoliAPwIH/rxoUSQPia2cuOj9AmDZmwUl1usKm85t5VUMew==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^8.56.0 @@ -1885,23 +1885,23 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 7.0.1(typescript@5.3.3) - '@typescript-eslint/utils': 7.0.1(eslint@8.56.0)(typescript@5.3.3) + '@typescript-eslint/typescript-estree': 7.1.0(typescript@5.3.3) + '@typescript-eslint/utils': 7.1.0(eslint@8.57.0)(typescript@5.3.3) debug: 4.3.4 - eslint: 8.56.0 + eslint: 8.57.0 ts-api-utils: 1.2.1(typescript@5.3.3) typescript: 5.3.3 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/types@7.0.1: - resolution: {integrity: sha512-uJDfmirz4FHib6ENju/7cz9SdMSkeVvJDK3VcMFvf/hAShg8C74FW+06MaQPODHfDJp/z/zHfgawIJRjlu0RLg==} + /@typescript-eslint/types@7.1.0: + resolution: {integrity: sha512-qTWjWieJ1tRJkxgZYXx6WUYtWlBc48YRxgY2JN1aGeVpkhmnopq+SUC8UEVGNXIvWH7XyuTjwALfG6bFEgCkQA==} engines: {node: ^16.0.0 || >=18.0.0} dev: true - /@typescript-eslint/typescript-estree@7.0.1(typescript@5.3.3): - resolution: {integrity: sha512-SO9wHb6ph0/FN5OJxH4MiPscGah5wjOd0RRpaLvuBv9g8565Fgu0uMySFEPqwPHiQU90yzJ2FjRYKGrAhS1xig==} + /@typescript-eslint/typescript-estree@7.1.0(typescript@5.3.3): + resolution: {integrity: sha512-k7MyrbD6E463CBbSpcOnwa8oXRdHzH1WiVzOipK3L5KSML92ZKgUBrTlehdi7PEIMT8k0bQixHUGXggPAlKnOQ==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: typescript: '*' @@ -1909,8 +1909,8 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/types': 7.0.1 - '@typescript-eslint/visitor-keys': 7.0.1 + '@typescript-eslint/types': 7.1.0 + '@typescript-eslint/visitor-keys': 7.1.0 debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 @@ -1922,30 +1922,30 @@ packages: - supports-color dev: true - /@typescript-eslint/utils@7.0.1(eslint@8.56.0)(typescript@5.3.3): - resolution: {integrity: sha512-oe4his30JgPbnv+9Vef1h48jm0S6ft4mNwi9wj7bX10joGn07QRfqIqFHoMiajrtoU88cIhXf8ahwgrcbNLgPA==} + /@typescript-eslint/utils@7.1.0(eslint@8.57.0)(typescript@5.3.3): + resolution: {integrity: sha512-WUFba6PZC5OCGEmbweGpnNJytJiLG7ZvDBJJoUcX4qZYf1mGZ97mO2Mps6O2efxJcJdRNpqweCistDbZMwIVHw==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^8.56.0 dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) '@types/json-schema': 7.0.15 '@types/semver': 7.5.7 - '@typescript-eslint/scope-manager': 7.0.1 - '@typescript-eslint/types': 7.0.1 - '@typescript-eslint/typescript-estree': 7.0.1(typescript@5.3.3) - eslint: 8.56.0 + '@typescript-eslint/scope-manager': 7.1.0 + '@typescript-eslint/types': 7.1.0 + '@typescript-eslint/typescript-estree': 7.1.0(typescript@5.3.3) + eslint: 8.57.0 semver: 7.6.0 transitivePeerDependencies: - supports-color - typescript dev: true - /@typescript-eslint/visitor-keys@7.0.1: - resolution: {integrity: sha512-hwAgrOyk++RTXrP4KzCg7zB2U0xt7RUU0ZdMSCsqF3eKUwkdXUMyTb0qdCuji7VIbcpG62kKTU9M1J1c9UpFBw==} + /@typescript-eslint/visitor-keys@7.1.0: + resolution: {integrity: sha512-FhUqNWluiGNzlvnDZiXad4mZRhtghdoKW6e98GoEOYSu5cND+E39rG5KwJMUzeENwm1ztYBRqof8wMLP+wNPIA==} engines: {node: ^16.0.0 || >=18.0.0} dependencies: - '@typescript-eslint/types': 7.0.1 + '@typescript-eslint/types': 7.1.0 eslint-visitor-keys: 3.4.3 dev: true @@ -1953,7 +1953,7 @@ packages: resolution: {integrity: sha512-IXR+N363nLTR3ilklmM+B0nk774jVE/muOrBYt4Rdww/Pf3uP9XHyv2x6YZrbDh29F7w9BkzQyB8QF6WDShmJA==} dev: false - /@uiw/react-markdown-preview@5.0.7(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0): + /@uiw/react-markdown-preview@5.0.7(@types/react@18.2.61)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-EmNI3LPM5Ff5ikcHJHcoZW268gpeAUPISfIwQaPjjHf/ET4aHNyo8sFBGV0+ycAaS52fXl2cvF+k/JweuMVVeQ==} peerDependencies: react: '>=16.8.0' @@ -1963,7 +1963,7 @@ packages: '@uiw/copy-to-clipboard': 1.0.16 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - react-markdown: 9.0.1(@types/react@18.2.55)(react@18.2.0) + react-markdown: 9.0.1(@types/react@18.2.61)(react@18.2.0) rehype-attr: 3.0.3 rehype-autolink-headings: 7.1.0 rehype-ignore: 2.0.2 @@ -1978,14 +1978,14 @@ packages: - supports-color dev: false - /@uiw/react-md-editor@4.0.3(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0): + /@uiw/react-md-editor@4.0.3(@types/react@18.2.61)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-TvChXxUBUS21Rk0cVC0aeJoWcFZ/G0xN/Hc4Lv9FGFK8wPOHESd7Bcq4jNRHJ6lEzE/+d4Wh00lEVNKj+rQyBw==} peerDependencies: react: '>=16.8.0' react-dom: '>=16.8.0' dependencies: '@babel/runtime': 7.23.9 - '@uiw/react-markdown-preview': 5.0.7(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0) + '@uiw/react-markdown-preview': 5.0.7(@types/react@18.2.61)(react-dom@18.2.0)(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) rehype: 13.0.1 @@ -1998,13 +1998,13 @@ packages: /@ungap/structured-clone@1.2.0: resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} - /@vitejs/plugin-react-swc@3.6.0(vite@5.1.3): + /@vitejs/plugin-react-swc@3.6.0(vite@5.1.4): resolution: {integrity: sha512-XFRbsGgpGxGzEV5i5+vRiro1bwcIaZDIdBRP16qwm+jP68ue/S8FJTBEgOeojtVDYrbSua3XFp71kC8VJE6v+g==} peerDependencies: vite: ^4 || ^5 dependencies: '@swc/core': 1.4.1 - vite: 5.1.3(@types/node@20.11.19) + vite: 5.1.4(@types/node@20.11.24) transitivePeerDependencies: - '@swc/helpers' dev: true @@ -2090,15 +2090,15 @@ packages: resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} dev: false - /autoprefixer@10.4.17(postcss@8.4.35): - resolution: {integrity: sha512-/cpVNRLSfhOtcGflT13P2794gVSgmPgTR+erw5ifnMLZb0UnSlkK4tquLmkd3BhA+nLo5tX8Cu0upUsGKvKbmg==} + /autoprefixer@10.4.18(postcss@8.4.35): + resolution: {integrity: sha512-1DKbDfsr6KUElM6wg+0zRNkB/Q7WcKYAaK+pzXn+Xqmszm/5Xa9coeNdtP88Vi+dPzZnMjhge8GIV49ZQkDa+g==} engines: {node: ^10 || ^12 || >=14} hasBin: true peerDependencies: postcss: ^8.1.0 dependencies: browserslist: 4.23.0 - caniuse-lite: 1.0.30001587 + caniuse-lite: 1.0.30001591 fraction.js: 4.3.7 normalize-range: 0.1.2 picocolors: 1.0.0 @@ -2158,7 +2158,7 @@ packages: engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true dependencies: - caniuse-lite: 1.0.30001587 + caniuse-lite: 1.0.30001591 electron-to-chromium: 1.4.671 node-releases: 2.0.14 update-browserslist-db: 1.0.13(browserslist@4.23.0) @@ -2173,8 +2173,8 @@ packages: resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} engines: {node: '>= 6'} - /caniuse-lite@1.0.30001587: - resolution: {integrity: sha512-HMFNotUmLXn71BQxg8cijvqxnIAofforZOwGsxyXJ0qugTdspUF4sPSJ2vhgprHCB996tIDzEq1ubumPDV8ULA==} + /caniuse-lite@1.0.30001591: + resolution: {integrity: sha512-PCzRMei/vXjJyL5mJtzNiUCKP59dm8Apqc3PH8gJkMnMXZGox93RbE76jHsmLwmIo6/3nsYIpJtx0O7u5PqFuQ==} dev: true /ccount@2.0.1: @@ -2214,9 +2214,9 @@ packages: resolution: {integrity: sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==} dev: false - /chart.js@4.4.1: - resolution: {integrity: sha512-C74QN1bxwV1v2PEujhmKjOZ7iUM4w6BWs23Md/6aOZZSlwMzeCIDGuZay++rBgChYru7/+QFeoQW0fQoP534Dg==} - engines: {pnpm: '>=7'} + /chart.js@4.4.2: + resolution: {integrity: sha512-6GD7iKwFpP5kbSD4MeRRRlTnQvxfQREy36uEtm1hzHzcOqwWx0YEHuspuoNlslu+nciLIB7fjjsHkUv/FzFcOg==} + engines: {pnpm: '>=8'} dependencies: '@kurkle/color': 0.3.2 dev: false @@ -2448,30 +2448,30 @@ packages: engines: {node: '>=12'} dev: false - /eslint-config-prettier@9.1.0(eslint@8.56.0): + /eslint-config-prettier@9.1.0(eslint@8.57.0): resolution: {integrity: sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==} hasBin: true peerDependencies: eslint: '>=7.0.0' dependencies: - eslint: 8.56.0 + eslint: 8.57.0 dev: true - /eslint-plugin-react-hooks@4.6.0(eslint@8.56.0): + /eslint-plugin-react-hooks@4.6.0(eslint@8.57.0): resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==} engines: {node: '>=10'} peerDependencies: eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 dependencies: - eslint: 8.56.0 + eslint: 8.57.0 dev: true - /eslint-plugin-react-refresh@0.4.5(eslint@8.56.0): + /eslint-plugin-react-refresh@0.4.5(eslint@8.57.0): resolution: {integrity: sha512-D53FYKJa+fDmZMtriODxvhwrO+IOqrxoEo21gMA0sjHdU6dPVH4OhyFip9ypl8HOF5RV5KdTo+rBQLvnY2cO8w==} peerDependencies: eslint: '>=7' dependencies: - eslint: 8.56.0 + eslint: 8.57.0 dev: true /eslint-scope@7.2.2: @@ -2487,15 +2487,15 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /eslint@8.56.0: - resolution: {integrity: sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ==} + /eslint@8.57.0: + resolution: {integrity: sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} hasBin: true dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) '@eslint-community/regexpp': 4.10.0 '@eslint/eslintrc': 2.1.4 - '@eslint/js': 8.56.0 + '@eslint/js': 8.57.0 '@humanwhocodes/config-array': 0.11.14 '@humanwhocodes/module-importer': 1.0.1 '@nodelib/fs.walk': 1.2.8 @@ -3178,8 +3178,8 @@ packages: yallist: 4.0.0 dev: true - /lucide-react@0.331.0(react@18.2.0): - resolution: {integrity: sha512-CHFJ0ve9vaZ7bB2VRAl27SlX1ELh6pfNC0jS96qGpPEEzLkLDGq4pDBFU8RhOoRMqsjXqTzLm9U6bZ1OcIHq7Q==} + /lucide-react@0.344.0(react@18.2.0): + resolution: {integrity: sha512-6YyBnn91GB45VuVT96bYCOKElbJzUHqp65vX8cDcu55MQL9T969v4dhGClpljamuI/+KMO9P6w9Acq1CVQGvIQ==} peerDependencies: react: ^16.5.1 || ^17.0.0 || ^18.0.0 dependencies: @@ -3820,18 +3820,18 @@ packages: resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} engines: {node: '>= 6'} - /playwright-core@1.41.2: - resolution: {integrity: sha512-VaTvwCA4Y8kxEe+kfm2+uUUw5Lubf38RxF7FpBxLPmGe5sdNkSg5e3ChEigaGrX7qdqT3pt2m/98LiyvU2x6CA==} + /playwright-core@1.42.1: + resolution: {integrity: sha512-mxz6zclokgrke9p1vtdy/COWBH+eOZgYUVVU34C73M+4j4HLlQJHtfcqiqqxpP0o8HhMkflvfbquLX5dg6wlfA==} engines: {node: '>=16'} hasBin: true dev: true - /playwright@1.41.2: - resolution: {integrity: sha512-v0bOa6H2GJChDL8pAeLa/LZC4feoAMbSQm1/jF/ySsWWoaNItvrMP7GEkvEEFyCTUYKMxjQKaTSg5up7nR6/8A==} + /playwright@1.42.1: + resolution: {integrity: sha512-PgwB03s2DZBcNRoW+1w9E+VkLBxweib6KTXM0M3tkiT4jVxKSi6PmVJ591J+0u10LUrgxB7dLRbiJqO5s2QPMg==} engines: {node: '>=16'} hasBin: true dependencies: - playwright-core: 1.41.2 + playwright-core: 1.42.1 optionalDependencies: fsevents: 2.3.2 dev: true @@ -3979,13 +3979,13 @@ packages: /queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} - /react-chartjs-2@5.2.0(chart.js@4.4.1)(react@18.2.0): + /react-chartjs-2@5.2.0(chart.js@4.4.2)(react@18.2.0): resolution: {integrity: sha512-98iN5aguJyVSxp5U3CblRLH67J8gkfyGNbiK3c+l1QI/G4irHMPQw44aEPmjVag+YKTyQ260NcF82GTQ3bdscA==} peerDependencies: chart.js: ^4.1.1 react: ^16.8.0 || ^17.0.0 || ^18.0.0 dependencies: - chart.js: 4.4.1 + chart.js: 4.4.2 react: 18.2.0 dev: false @@ -3999,8 +3999,8 @@ packages: scheduler: 0.23.0 dev: false - /react-hook-form@7.50.1(react@18.2.0): - resolution: {integrity: sha512-3PCY82oE0WgeOgUtIr3nYNNtNvqtJ7BZjsbxh6TnYNbXButaD5WpjOmTjdxZfheuHKR68qfeFnEDVYoSSFPMTQ==} + /react-hook-form@7.51.0(react@18.2.0): + resolution: {integrity: sha512-BggOy5j58RdhdMzzRUHGOYhSz1oeylFAv6jUSG86OvCIvlAvS7KvnRY7yoAf2pfEiPN7BesnR0xx73nEk3qIiw==} engines: {node: '>=12.22.0'} peerDependencies: react: ^16.8.0 || ^17 || ^18 @@ -4024,14 +4024,14 @@ packages: react-dom: 18.2.0(react@18.2.0) dev: false - /react-markdown@9.0.1(@types/react@18.2.55)(react@18.2.0): + /react-markdown@9.0.1(@types/react@18.2.61)(react@18.2.0): resolution: {integrity: sha512-186Gw/vF1uRkydbsOIkcGXw7aHq0sZOCRFFjGrr7b9+nVZg4UfA4enXCaxm4fUzecU38sWfrNDitGhshuU7rdg==} peerDependencies: '@types/react': '>=18' react: '>=18' dependencies: '@types/hast': 3.0.4 - '@types/react': 18.2.55 + '@types/react': 18.2.61 devlop: 1.1.0 hast-util-to-jsx-runtime: 2.3.0 html-url-attributes: 3.0.0 @@ -4046,7 +4046,7 @@ packages: - supports-color dev: false - /react-remove-scroll-bar@2.3.4(@types/react@18.2.55)(react@18.2.0): + /react-remove-scroll-bar@2.3.4(@types/react@18.2.61)(react@18.2.0): resolution: {integrity: sha512-63C4YQBUt0m6ALadE9XV56hV8BgJWDmmTPY758iIJjfQKt2nYwoUrPk0LXRXcB/yIj82T1/Ixfdpdk68LwIB0A==} engines: {node: '>=10'} peerDependencies: @@ -4056,13 +4056,13 @@ packages: '@types/react': optional: true dependencies: - '@types/react': 18.2.55 + '@types/react': 18.2.61 react: 18.2.0 - react-style-singleton: 2.2.1(@types/react@18.2.55)(react@18.2.0) + react-style-singleton: 2.2.1(@types/react@18.2.61)(react@18.2.0) tslib: 2.6.2 dev: false - /react-remove-scroll@2.5.5(@types/react@18.2.55)(react@18.2.0): + /react-remove-scroll@2.5.5(@types/react@18.2.61)(react@18.2.0): resolution: {integrity: sha512-ImKhrzJJsyXJfBZ4bzu8Bwpka14c/fQt0k+cyFp/PBhTfyDnU5hjOtM4AG/0AMyy8oKzOTR0lDgJIM7pYXI0kw==} engines: {node: '>=10'} peerDependencies: @@ -4072,39 +4072,39 @@ packages: '@types/react': optional: true dependencies: - '@types/react': 18.2.55 + '@types/react': 18.2.61 react: 18.2.0 - react-remove-scroll-bar: 2.3.4(@types/react@18.2.55)(react@18.2.0) - react-style-singleton: 2.2.1(@types/react@18.2.55)(react@18.2.0) + react-remove-scroll-bar: 2.3.4(@types/react@18.2.61)(react@18.2.0) + react-style-singleton: 2.2.1(@types/react@18.2.61)(react@18.2.0) tslib: 2.6.2 - use-callback-ref: 1.3.1(@types/react@18.2.55)(react@18.2.0) - use-sidecar: 1.1.2(@types/react@18.2.55)(react@18.2.0) + use-callback-ref: 1.3.1(@types/react@18.2.61)(react@18.2.0) + use-sidecar: 1.1.2(@types/react@18.2.61)(react@18.2.0) dev: false - /react-router-dom@6.22.0(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-z2w+M4tH5wlcLmH3BMMOMdrtrJ9T3oJJNsAlBJbwk+8Syxd5WFJ7J5dxMEW0/GEXD1BBis4uXRrNIz3mORr0ag==} + /react-router-dom@6.22.2(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-WgqxD2qySEIBPZ3w0sHH+PUAiamDeszls9tzqMPBDA1YYVucTBXLU7+gtRfcSnhe92A3glPnvSxK2dhNoAVOIQ==} engines: {node: '>=14.0.0'} peerDependencies: react: '>=16.8' react-dom: '>=16.8' dependencies: - '@remix-run/router': 1.15.0 + '@remix-run/router': 1.15.2 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - react-router: 6.22.0(react@18.2.0) + react-router: 6.22.2(react@18.2.0) dev: false - /react-router@6.22.0(react@18.2.0): - resolution: {integrity: sha512-q2yemJeg6gw/YixRlRnVx6IRJWZD6fonnfZhN1JIOhV2iJCPeRNSH3V1ISwHf+JWcESzLC3BOLD1T07tmO5dmg==} + /react-router@6.22.2(react@18.2.0): + resolution: {integrity: sha512-YD3Dzprzpcq+tBMHBS822tCjnWD3iIZbTeSXMY9LPSG541EfoBGyZ3bS25KEnaZjLcmQpw2AVLkFyfgXY8uvcw==} engines: {node: '>=14.0.0'} peerDependencies: react: '>=16.8' dependencies: - '@remix-run/router': 1.15.0 + '@remix-run/router': 1.15.2 react: 18.2.0 dev: false - /react-style-singleton@2.2.1(@types/react@18.2.55)(react@18.2.0): + /react-style-singleton@2.2.1(@types/react@18.2.61)(react@18.2.0): resolution: {integrity: sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==} engines: {node: '>=10'} peerDependencies: @@ -4114,7 +4114,7 @@ packages: '@types/react': optional: true dependencies: - '@types/react': 18.2.55 + '@types/react': 18.2.61 get-nonce: 1.0.1 invariant: 2.2.4 react: 18.2.0 @@ -4388,8 +4388,8 @@ packages: engines: {node: '>=8'} dev: true - /sonner@1.4.0(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-nvkTsIuOmi9e5Wz5If8ldasJjZNVfwiXYijBi2dbijvTQnQppvMcXTFNxL/NUFWlI2yJ1JX7TREDsg+gYm9WyA==} + /sonner@1.4.3(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-SArYlHbkjqRuLiR0iGY2ZSr09oOrxw081ZZkQPfXrs8aZQLIBOLOdzTYxGJB5yIZ7qL56UEPmrX1YqbODwG0Lw==} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 @@ -4681,7 +4681,7 @@ packages: punycode: 2.3.1 dev: true - /use-callback-ref@1.3.1(@types/react@18.2.55)(react@18.2.0): + /use-callback-ref@1.3.1(@types/react@18.2.61)(react@18.2.0): resolution: {integrity: sha512-Lg4Vx1XZQauB42Hw3kK7JM6yjVjgFmFC5/Ab797s79aARomD2nEErc4mCgM8EZrARLmmbWpi5DGCadmK50DcAQ==} engines: {node: '>=10'} peerDependencies: @@ -4691,12 +4691,12 @@ packages: '@types/react': optional: true dependencies: - '@types/react': 18.2.55 + '@types/react': 18.2.61 react: 18.2.0 tslib: 2.6.2 dev: false - /use-sidecar@1.1.2(@types/react@18.2.55)(react@18.2.0): + /use-sidecar@1.1.2(@types/react@18.2.61)(react@18.2.0): resolution: {integrity: sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==} engines: {node: '>=10'} peerDependencies: @@ -4706,7 +4706,7 @@ packages: '@types/react': optional: true dependencies: - '@types/react': 18.2.55 + '@types/react': 18.2.61 detect-node-es: 1.1.0 react: 18.2.0 tslib: 2.6.2 @@ -4745,8 +4745,8 @@ packages: vfile-message: 4.0.2 dev: false - /vite@5.1.3(@types/node@20.11.19): - resolution: {integrity: sha512-UfmUD36DKkqhi/F75RrxvPpry+9+tTkrXfMNZD+SboZqBCMsxKtO52XeGzzuh7ioz+Eo/SYDBbdb0Z7vgcDJew==} + /vite@5.1.4(@types/node@20.11.24): + resolution: {integrity: sha512-n+MPqzq+d9nMVTKyewqw6kSt+R3CkvF9QAKY8obiQn8g1fwTscKxyfaYnC632HtBXAQGc1Yjomphwn1dtwGAHg==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: @@ -4773,7 +4773,7 @@ packages: terser: optional: true dependencies: - '@types/node': 20.11.19 + '@types/node': 20.11.24 esbuild: 0.19.12 postcss: 8.4.35 rollup: 4.11.0 @@ -4829,8 +4829,8 @@ packages: resolution: {integrity: sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==} dev: false - /zustand@4.5.0(@types/react@18.2.55)(react@18.2.0): - resolution: {integrity: sha512-zlVFqS5TQ21nwijjhJlx4f9iGrXSL0o/+Dpy4txAP22miJ8Ti6c1Ol1RLNN98BMib83lmDH/2KmLwaNXpjrO1A==} + /zustand@4.5.2(@types/react@18.2.61)(react@18.2.0): + resolution: {integrity: sha512-2cN1tPkDVkwCy5ickKrI7vijSjPksFRfqS6237NzT0vqSsztTNnQdHw9mmN7uBdk3gceVXU0a+21jFzFzAc9+g==} engines: {node: '>=12.7.0'} peerDependencies: '@types/react': '>=16.8' @@ -4844,7 +4844,7 @@ packages: react: optional: true dependencies: - '@types/react': 18.2.55 + '@types/react': 18.2.61 react: 18.2.0 use-sync-external-store: 1.2.0(react@18.2.0) dev: false diff --git a/src/screens/edit-laboratory/EditLaboratory.tsx b/src/screens/edit-laboratory/EditLaboratory.tsx index 4e08dce3..32934e18 100644 --- a/src/screens/edit-laboratory/EditLaboratory.tsx +++ b/src/screens/edit-laboratory/EditLaboratory.tsx @@ -5,10 +5,7 @@ import { EditLaboratoryContext } from "@/context/laboratories/EditLaboratoryCont import { EditLaboratoryActionType } from "@/hooks/laboratories/editLaboratoryTypes"; import { EditLaboratoryPageSkeleton } from "@/screens/edit-laboratory/skeletons/EditLaboratoryPageSkeleton"; import { createMarkdownBlockService } from "@/services/laboratories/add-markdown-block.service"; -import { - Laboratory, - MarkdownBlock -} from "@/types/entities/laboratory-entities"; +import { MarkdownBlock } from "@/types/entities/laboratory-entities"; import { useMutation, useQueryClient } from "@tanstack/react-query"; import { TextCursor } from "lucide-react"; import { useContext } from "react"; @@ -60,15 +57,15 @@ export const EditLaboratory = () => { blockType: "markdown" }; - queryClient.setQueryData( - ["laboratory", laboratoryUUID], - (oldData: Laboratory) => { - return { - ...oldData, - blocks: [...oldData.blocks, newMarkdownBlock] - }; - } - ); + queryClient.setQueryData(["laboratory", laboratoryUUID], () => { + return { + ...laboratory!, + /** Here we add the new markdown block to the blocks array from the global + * laboratory state instead of the old data from the query to avoid + * loosing unsaved changes in the global state */ + blocks: laboratory!.blocks.concat(newMarkdownBlock) + }; + }); // Show success message toast.success("The new markdown block has been created successfully"); diff --git a/src/screens/edit-laboratory/components/LaboratoryDetails.tsx b/src/screens/edit-laboratory/components/LaboratoryDetails.tsx index 5427ccd7..405826a7 100644 --- a/src/screens/edit-laboratory/components/LaboratoryDetails.tsx +++ b/src/screens/edit-laboratory/components/LaboratoryDetails.tsx @@ -2,10 +2,7 @@ import { EditLaboratoryContext } from "@/context/laboratories/EditLaboratoryCont import { EditLaboratoryActionType } from "@/hooks/laboratories/editLaboratoryTypes"; import { updateLaboratoryDetailsService } from "@/services/laboratories/update-laboratory-details.service"; import { getTeacherRubricsService } from "@/services/rubrics/get-teacher-rubrics.service"; -import { - Laboratory, - LaboratoryBaseInfo -} from "@/types/entities/laboratory-entities"; +import { LaboratoryBaseInfo } from "@/types/entities/laboratory-entities"; import { removeTimeZoneFromIsoDate } from "@/utils/utils"; import { zodResolver } from "@hookform/resolvers/zod"; import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query"; @@ -90,7 +87,10 @@ export const LaboratoryDetails = ({ const dueDateWithNoTimeZone = removeTimeZoneFromIsoDate(dueDate!); // Global laboratory state - const { laboratoryStateDispatcher } = useContext(EditLaboratoryContext); + const { + laboratoryStateDispatcher, + laboratoryState: { laboratory } + } = useContext(EditLaboratoryContext); // Form state const [isUpdating, setIsUpdating] = useState(false); @@ -141,19 +141,18 @@ export const LaboratoryDetails = ({ toast.success("Laboratory details updated successfully"); // Update laboratory query - queryClient.setQueryData( - ["laboratory", laboratoryDetails.uuid], - (oldData: Laboratory) => { - return { - // Keep the UUID and blocks - ...oldData, - name, - opening_date: openingDateWithDefaultTZ, - due_date: dueDateWithDefaultTZ, - rubric_uuid - }; - } - ); + queryClient.setQueryData(["laboratory", laboratoryDetails.uuid], () => { + return { + /** Here we update the laboratory data with the new data from the + * global state instead of the old data from the query to avoid + * loosing unsaved changes in the global state */ + ...laboratory, + name, + opening_date: openingDateWithDefaultTZ, + due_date: dueDateWithDefaultTZ, + rubric_uuid + }; + }); }, onSettled: () => { setIsUpdating(false); diff --git a/src/screens/edit-laboratory/components/markdown-block/MarkdownBlockDropDown.tsx b/src/screens/edit-laboratory/components/markdown-block/MarkdownBlockDropDown.tsx index 0312414a..71f31944 100644 --- a/src/screens/edit-laboratory/components/markdown-block/MarkdownBlockDropDown.tsx +++ b/src/screens/edit-laboratory/components/markdown-block/MarkdownBlockDropDown.tsx @@ -2,10 +2,7 @@ import { EditLaboratoryContext } from "@/context/laboratories/EditLaboratoryCont import { EditLaboratoryActionType } from "@/hooks/laboratories/editLaboratoryTypes"; import { swapBlocksIndexService } from "@/services/blocks/swap-blocks-index.service"; import { updateMarkdownBlockContentService } from "@/services/blocks/update-markdown-block-content.service"; -import { - Laboratory, - MarkdownBlock -} from "@/types/entities/laboratory-entities"; +import { MarkdownBlock } from "@/types/entities/laboratory-entities"; import { useMutation, useQueryClient } from "@tanstack/react-query"; import { ArrowDown, ArrowUp, MoreVertical, Save, Trash2 } from "lucide-react"; import { useContext, useState } from "react"; @@ -31,10 +28,10 @@ export const MarkdownBlockDropDown = ({ blockIndex }: MarkdownBlockDropDown) => { // Global laboratory state - const { laboratoryState, laboratoryStateDispatcher } = useContext( - EditLaboratoryContext - ); - const { laboratory } = laboratoryState; + const { + laboratoryState: { laboratory }, + laboratoryStateDispatcher + } = useContext(EditLaboratoryContext); const block = laboratory?.blocks.find( (b) => b.uuid === blockUUID @@ -52,22 +49,19 @@ export const MarkdownBlockDropDown = ({ }, onSuccess: () => { // Update the laboratory query - queryClient.setQueryData( - ["laboratory", laboratory!.uuid], - (oldData: Laboratory) => { - return { - ...oldData, - blocks: oldData.blocks.map((b) => { - if (b.uuid !== blockUUID) return b; - - return { - ...block, - content: block.content - }; - }) - }; - } - ); + queryClient.setQueryData(["laboratory", laboratory!.uuid], () => { + return { + ...laboratory, + blocks: laboratory!.blocks.map((b) => { + if (b.uuid !== blockUUID) return b; + + return { + ...block, + content: block.content + }; + }) + }; + }); // Show a success message toast.success("The markdown block has been updated successfully"); @@ -94,19 +88,16 @@ export const MarkdownBlockDropDown = ({ }); // Update the laboratory query - queryClient.setQueryData( - ["laboratory", laboratory!.uuid], - (oldData: Laboratory) => { - return { - ...oldData, - blocks: oldData.blocks.map((b) => { - if (b.uuid === thisBlock.uuid) return prevBlock; - if (b.uuid === prevBlock.uuid) return thisBlock; - return b; - }) - }; - } - ); + queryClient.setQueryData(["laboratory", laboratory!.uuid], () => { + return { + ...laboratory, + blocks: laboratory!.blocks.map((b) => { + if (b.uuid === thisBlock.uuid) return prevBlock; + if (b.uuid === prevBlock.uuid) return thisBlock; + return b; + }) + }; + }); // Show success message toast.success("The markdown block has been moved up successfully"); @@ -133,19 +124,16 @@ export const MarkdownBlockDropDown = ({ }); // Update the laboratory query - queryClient.setQueryData( - ["laboratory", laboratory!.uuid], - (oldData: Laboratory) => { - return { - ...oldData, - blocks: oldData.blocks.map((b) => { - if (b.uuid === thisBlock.uuid) return nextBlock; - if (b.uuid === nextBlock.uuid) return thisBlock; - return b; - }) - }; - } - ); + queryClient.setQueryData(["laboratory", laboratory!.uuid], () => { + return { + ...laboratory, + blocks: laboratory!.blocks.map((b) => { + if (b.uuid === thisBlock.uuid) return nextBlock; + if (b.uuid === nextBlock.uuid) return thisBlock; + return b; + }) + }; + }); // Show success message toast.success("The markdown block has been moved down successfully"); diff --git a/src/screens/edit-laboratory/components/test-block/EditableTestBlockForm.tsx b/src/screens/edit-laboratory/components/test-block/EditableTestBlockForm.tsx index ccefc686..47256704 100644 --- a/src/screens/edit-laboratory/components/test-block/EditableTestBlockForm.tsx +++ b/src/screens/edit-laboratory/components/test-block/EditableTestBlockForm.tsx @@ -22,7 +22,7 @@ import { downloadTestsArchiveService } from "@/services/blocks/download-tests-ar import { updateTestBlockService } from "@/services/blocks/update-test-block.service"; import { getSupportedLanguagesService } from "@/services/languages/get-supported-languages.service"; import { useSupportedLanguagesStore } from "@/stores/supported-languages-store"; -import { Laboratory, TestBlock } from "@/types/entities/laboratory-entities"; +import { TestBlock } from "@/types/entities/laboratory-entities"; import { downloadBlob, downloadLanguageTemplate } from "@/utils/utils"; import { zodResolver } from "@hookform/resolvers/zod"; import { useMutation, useQueryClient } from "@tanstack/react-query"; @@ -52,7 +52,7 @@ const EditableTestBlockFormScheme = z.object({ "You must select a file" ) .refine((files) => files.length === 1, "You must select a file") - .transform((files) => files[0] as File) + .transform((files) => files[0]) .refine( (file) => file.size <= CONSTANTS.MAX_ARCHIVE_SIZE, "The file should be less than 150KB" @@ -126,7 +126,7 @@ export const EditableTestBlockForm = ({ onError: (error) => { toast.error(error.message); }, - onSuccess: (_, { blockUUID, blockName, blockLanguageUUID }) => { + onSuccess: (_, { blockName, blockLanguageUUID }) => { // Update the global laboratory state laboratoryStateDispatcher({ type: EditLaboratoryActionType.UPDATE_TEST_BLOCK, @@ -141,23 +141,22 @@ export const EditableTestBlockForm = ({ toast.success("The test block has been updated successfully"); // Update the laboratory query - queryClient.setQueryData( - ["laboratory", laboratory!.uuid], - (oldData: Laboratory) => { - return { - ...oldData, - blocks: oldData.blocks.map((b) => { - if (b.uuid !== blockUUID) return b; + queryClient.setQueryData(["laboratory", laboratory!.uuid], () => { + const updatedBlock = { + ...laboratory!.blocks[blockIndex], + name: blockName, + languageUUID: blockLanguageUUID + }; - return { - ...b, - name: blockName, - languageUUID: blockLanguageUUID - }; - }) - }; - } - ); + return { + ...laboratory!, + blocks: [ + ...laboratory!.blocks.slice(0, blockIndex), + updatedBlock, + ...laboratory!.blocks.slice(blockIndex + 1) + ] + }; + }); } }); diff --git a/src/screens/edit-laboratory/components/test-block/TestBlockDropDown.tsx b/src/screens/edit-laboratory/components/test-block/TestBlockDropDown.tsx index 28d2ecb7..6a9ff000 100644 --- a/src/screens/edit-laboratory/components/test-block/TestBlockDropDown.tsx +++ b/src/screens/edit-laboratory/components/test-block/TestBlockDropDown.tsx @@ -9,7 +9,6 @@ import { import { EditLaboratoryContext } from "@/context/laboratories/EditLaboratoryContext"; import { EditLaboratoryActionType } from "@/hooks/laboratories/editLaboratoryTypes"; import { swapBlocksIndexService } from "@/services/blocks/swap-blocks-index.service"; -import { Laboratory } from "@/types/entities/laboratory-entities"; import { useMutation, useQueryClient } from "@tanstack/react-query"; import { ArrowDown, ArrowUp, MoreVertical, Save, Trash2 } from "lucide-react"; import { RefObject, useContext, useState } from "react"; @@ -29,10 +28,10 @@ export const TestBlockDropDown = ({ formRef }: TestBlockDropdown) => { // Global laboratory state - const { laboratoryStateDispatcher, laboratoryState } = useContext( - EditLaboratoryContext - ); - const { laboratory } = laboratoryState; + const { + laboratoryStateDispatcher, + laboratoryState: { laboratory } + } = useContext(EditLaboratoryContext); const handleSaveTestBlock = async () => { formRef.current?.dispatchEvent( @@ -67,19 +66,16 @@ export const TestBlockDropDown = ({ }); // Update the laboratory query - queryClient.setQueryData( - ["laboratory", laboratory!.uuid], - (oldData: Laboratory) => { - return { - ...oldData, - blocks: oldData.blocks.map((b) => { - if (b.uuid === thisBlock.uuid) return prevBlock; - if (b.uuid === prevBlock.uuid) return thisBlock; - return b; - }) - }; - } - ); + queryClient.setQueryData(["laboratory", laboratory!.uuid], () => { + return { + ...laboratory!, + blocks: laboratory!.blocks.map((b) => { + if (b.uuid === thisBlock.uuid) return prevBlock; + if (b.uuid === prevBlock.uuid) return thisBlock; + return b; + }) + }; + }); // Show success message toast.success("The test block has been moved up successfully"); @@ -106,19 +102,16 @@ export const TestBlockDropDown = ({ }); // Update the laboratory query - queryClient.setQueryData( - ["laboratory", laboratory!.uuid], - (oldData: Laboratory) => { - return { - ...oldData, - blocks: oldData.blocks.map((b) => { - if (b.uuid === thisBlock.uuid) return nextBlock; - if (b.uuid === nextBlock.uuid) return thisBlock; - return b; - }) - }; - } - ); + queryClient.setQueryData(["laboratory", laboratory!.uuid], () => { + return { + ...laboratory, + blocks: laboratory!.blocks.map((b) => { + if (b.uuid === thisBlock.uuid) return nextBlock; + if (b.uuid === nextBlock.uuid) return thisBlock; + return b; + }) + }; + }); // Show success message toast.success("The test block has been moved down successfully"); diff --git a/src/screens/edit-laboratory/dialogs/CreateTestBlockForm.tsx b/src/screens/edit-laboratory/dialogs/CreateTestBlockForm.tsx index 91f956c1..796ce600 100644 --- a/src/screens/edit-laboratory/dialogs/CreateTestBlockForm.tsx +++ b/src/screens/edit-laboratory/dialogs/CreateTestBlockForm.tsx @@ -22,7 +22,7 @@ import { EditLaboratoryActionType } from "@/hooks/laboratories/editLaboratoryTyp import { createTestBlockService } from "@/services/laboratories/add-test-block.service"; import { getSupportedLanguagesService } from "@/services/languages/get-supported-languages.service"; import { useSupportedLanguagesStore } from "@/stores/supported-languages-store"; -import { Laboratory, TestBlock } from "@/types/entities/laboratory-entities"; +import { TestBlock } from "@/types/entities/laboratory-entities"; import { downloadLanguageTemplate } from "@/utils/utils"; import { zodResolver } from "@hookform/resolvers/zod"; import { useMutation, useQueryClient } from "@tanstack/react-query"; @@ -45,7 +45,7 @@ const CreateTestBlockSchema = z.object({ "You must select a file" ) .refine((files) => files.length === 1, "You must select a file") - .transform((files) => files[0] as File) + .transform((files) => files[0]) .refine( (file) => file.size <= CONSTANTS.MAX_ARCHIVE_SIZE, "The file should be less than 150KB" @@ -66,9 +66,10 @@ export const CreateTestBlockForm = ({ }>(); // Global laboratory state - const { laboratoryStateDispatcher, laboratoryState } = useContext( - EditLaboratoryContext - ); + const { + laboratoryStateDispatcher, + laboratoryState: { laboratory } + } = useContext(EditLaboratoryContext); // Global language state const { supportedLanguages, setSupportedLanguages, getLanguageNameByUUID } = @@ -122,7 +123,7 @@ export const CreateTestBlockForm = ({ uuid: createdTestBlockUUID, name: blockName, languageUUID: blockLanguageUUID, - index: laboratoryState.laboratory!.blocks.length, + index: laboratory!.blocks.length, blockType: "test" }; @@ -136,17 +137,14 @@ export const CreateTestBlockForm = ({ toast.success("The new test block has been created successfully"); // Update laboratory query - queryClient.setQueryData( - ["laboratory", laboratoryUUID], - (oldData: Laboratory) => { - return { - // Keep the UUID - ...oldData, - // Append the new block - blocks: [...oldData.blocks, newTestBlok] - }; - } - ); + queryClient.setQueryData(["laboratory", laboratoryUUID], () => { + return { + // Keep the UUID + ...laboratory, + // Append the new block + blocks: [...laboratory!.blocks, newTestBlok] + }; + }); // Close the dialog closeDialogCallback(); diff --git a/src/screens/edit-laboratory/dialogs/DeleteBlockDialog.tsx b/src/screens/edit-laboratory/dialogs/DeleteBlockDialog.tsx index d700305a..aea7d6d8 100644 --- a/src/screens/edit-laboratory/dialogs/DeleteBlockDialog.tsx +++ b/src/screens/edit-laboratory/dialogs/DeleteBlockDialog.tsx @@ -12,7 +12,7 @@ import { EditLaboratoryContext } from "@/context/laboratories/EditLaboratoryCont import { EditLaboratoryActionType } from "@/hooks/laboratories/editLaboratoryTypes"; import { deleteMarkdownBlockService } from "@/services/blocks/delete-markdown-block.service"; import { deleteTestBlockService } from "@/services/blocks/delete-test-block.service"; -import { BlockType, Laboratory } from "@/types/entities/laboratory-entities"; +import { BlockType } from "@/types/entities/laboratory-entities"; import { useMutation, useQueryClient } from "@tanstack/react-query"; import { useContext } from "react"; import { toast } from "sonner"; @@ -46,10 +46,10 @@ export const DeleteBlockDialog = ({ console.log({ blockUUID }); // Global laboratory state - const { laboratoryStateDispatcher, laboratoryState } = useContext( - EditLaboratoryContext - ); - const { laboratory } = laboratoryState; + const { + laboratoryStateDispatcher, + laboratoryState: { laboratory } + } = useContext(EditLaboratoryContext); // Delete block mutation const queryClient = useQueryClient(); @@ -74,15 +74,12 @@ export const DeleteBlockDialog = ({ toast.success(`The ${blockType} block has been deleted successfully`); // Update the laboratory query - queryClient.setQueryData( - ["laboratory", laboratory!.uuid], - (oldData: Laboratory) => { - return { - ...oldData, - blocks: oldData.blocks.filter((b) => b.uuid !== blockUUID) - }; - } - ); + queryClient.setQueryData(["laboratory", laboratory!.uuid], () => { + return { + ...laboratory, + blocks: laboratory!.blocks.filter((b) => b.uuid !== blockUUID) + }; + }); } });