diff --git a/.env b/.env index ebc0ebd5be3..b5db3d0088f 100644 --- a/.env +++ b/.env @@ -14,4 +14,4 @@ ESLINT_NO_DEV_ERRORS=true CARE_CDN_URL="https://egov-s3-facility-10bedicu.s3.amazonaws.com https://egov-s3-patient-data-10bedicu.s3.amazonaws.com http://localhost:4566" REACT_ALLOWED_LOCALES="en,hi,ta,ml,mr,kn" -REACT_ENABLED_APPS="ohcnetwork/care_livekit_fe@main" +REACT_ENABLED_APPS="" diff --git a/.envrc b/.envrc deleted file mode 100644 index c729eb59836..00000000000 --- a/.envrc +++ /dev/null @@ -1,2 +0,0 @@ -dotenv -test -f .env.local && dotenv .env.local \ No newline at end of file diff --git a/.prettierrc.json b/.prettierrc.json index ba722afdd73..22765ca5aa1 100644 --- a/.prettierrc.json +++ b/.prettierrc.json @@ -6,5 +6,8 @@ "jsxSingleQuote": false, "arrowParens": "always", "tailwindFunctions": ["classNames"], - "plugins": ["prettier-plugin-tailwindcss"] -} + "importOrder": ["", "^@/lib/(.*)$", "^@/CAREUI/(.*)$", "^@/components/ui/(.*)$", "^@/components/(.*)$", "^@/hooks/(.*)$", "^@/common/(.*)$", "^@/(.*)$", "^[./]"], + "importOrderSeparation": true, + "importOrderSortSpecifiers": true, + "plugins": ["prettier-plugin-tailwindcss", "@trivago/prettier-plugin-sort-imports"] +} \ No newline at end of file diff --git a/cypress.config.ts b/cypress.config.ts index 0c939ce50b3..b6e8fadd462 100644 --- a/cypress.config.ts +++ b/cypress.config.ts @@ -1,6 +1,6 @@ import { defineConfig } from "cypress"; -import fs from "fs"; import cypressSplit from "cypress-split"; +import fs from "fs"; export default defineConfig({ projectId: "wf7d2m", @@ -30,7 +30,6 @@ export default defineConfig({ baseUrl: "http://localhost:4000", retries: 2, requestTimeout: 15000, - excludeSpecPattern: "**/*roles.cy.ts", }, env: { API_URL: process.env.REACT_CARE_API_URL ?? "http://localhost:9000", diff --git a/cypress/e2e/assets_spec/AssetHomepage.cy.ts b/cypress/e2e/assets_spec/AssetHomepage.cy.ts index bf608cdab9f..bda4abdfae3 100644 --- a/cypress/e2e/assets_spec/AssetHomepage.cy.ts +++ b/cypress/e2e/assets_spec/AssetHomepage.cy.ts @@ -18,7 +18,7 @@ describe("Asset Tab", () => { const serialNumber = Math.floor(Math.random() * 10 ** 10).toString(); before(() => { - loginPage.loginAsDisctrictAdmin(); + loginPage.loginAsDistrictAdmin(); cy.saveLocalStorage(); }); diff --git a/cypress/e2e/assets_spec/AssetsCreation.cy.ts b/cypress/e2e/assets_spec/AssetsCreation.cy.ts index 6d94108b362..16a4fd050fb 100644 --- a/cypress/e2e/assets_spec/AssetsCreation.cy.ts +++ b/cypress/e2e/assets_spec/AssetsCreation.cy.ts @@ -11,7 +11,7 @@ describe("Asset", () => { const serialNumber = Math.floor(Math.random() * 10 ** 10).toString(); before(() => { - loginPage.loginAsDisctrictAdmin(); + loginPage.loginAsDistrictAdmin(); cy.saveLocalStorage(); }); diff --git a/cypress/e2e/assets_spec/AssetsManage.cy.ts b/cypress/e2e/assets_spec/AssetsManage.cy.ts index 983a82be07b..756d3b261a6 100644 --- a/cypress/e2e/assets_spec/AssetsManage.cy.ts +++ b/cypress/e2e/assets_spec/AssetsManage.cy.ts @@ -22,7 +22,7 @@ describe("Asset", () => { const initiallocationName = "Camera Location"; before(() => { - loginPage.loginAsDisctrictAdmin(); + loginPage.loginAsDistrictAdmin(); cy.saveLocalStorage(); }); diff --git a/cypress/e2e/auth_spec/roles.cy.ts b/cypress/e2e/auth_spec/roles.cy.ts deleted file mode 100644 index c84679de943..00000000000 --- a/cypress/e2e/auth_spec/roles.cy.ts +++ /dev/null @@ -1,19 +0,0 @@ -import * as users from "../../fixtures/users.json"; - -describe("authentication", () => { - users.forEach((user) => { - it("Login as " + user.username + " - " + user.rolename, () => { - cy.loginByApi(user.username, "passwordR0FL"); - cy.awaitUrl("/user/profile"); - cy.get("dd").should("contain", user.username); - cy.get("dd").should("contain", user.rolename); - }); - }); - afterEach(() => { - cy.log("Logging out"); - cy.get("#sign-out-button").contains("Sign Out").click(); - cy.getLocalStorage("care_access_token").should("be.null"); - cy.getLocalStorage("care_refresh_token").should("be.null"); - cy.url().should("include", "/"); - }); -}); diff --git a/cypress/e2e/facility_spec/FacilityCreation.cy.ts b/cypress/e2e/facility_spec/FacilityCreation.cy.ts index 918e926d107..4961ae4a4cb 100644 --- a/cypress/e2e/facility_spec/FacilityCreation.cy.ts +++ b/cypress/e2e/facility_spec/FacilityCreation.cy.ts @@ -59,7 +59,7 @@ describe("Facility Creation", () => { const triageErrorMessage = ["This field is required"]; before(() => { - loginPage.loginAsDisctrictAdmin(); + loginPage.loginAsDistrictAdmin(); cy.saveLocalStorage(); }); diff --git a/cypress/e2e/facility_spec/FacilityHomepage.cy.ts b/cypress/e2e/facility_spec/FacilityHomepage.cy.ts index b8fb0afd9d9..e6caf645f7a 100644 --- a/cypress/e2e/facility_spec/FacilityHomepage.cy.ts +++ b/cypress/e2e/facility_spec/FacilityHomepage.cy.ts @@ -25,7 +25,7 @@ describe("Facility Homepage Function", () => { const facilityType = "Private Hospital"; before(() => { - loginPage.loginAsDisctrictAdmin(); + loginPage.loginAsDistrictAdmin(); cy.saveLocalStorage(); }); diff --git a/cypress/e2e/facility_spec/FacilityInventory.cy.ts b/cypress/e2e/facility_spec/FacilityInventory.cy.ts index 78e7af88cea..cdada75ee06 100644 --- a/cypress/e2e/facility_spec/FacilityInventory.cy.ts +++ b/cypress/e2e/facility_spec/FacilityInventory.cy.ts @@ -9,7 +9,7 @@ describe("Inventory Management Section", () => { const inventoryName = "PPE"; before(() => { - loginPage.loginAsDisctrictAdmin(); + loginPage.loginAsDistrictAdmin(); cy.saveLocalStorage(); }); diff --git a/cypress/e2e/facility_spec/FacilityManage.cy.ts b/cypress/e2e/facility_spec/FacilityManage.cy.ts index c53943733e9..1f0d2b66108 100644 --- a/cypress/e2e/facility_spec/FacilityManage.cy.ts +++ b/cypress/e2e/facility_spec/FacilityManage.cy.ts @@ -26,7 +26,7 @@ describe("Facility Manage Functions", () => { const currentUpdatedOccupied = "100"; before(() => { - loginPage.loginAsDisctrictAdmin(); + loginPage.loginAsDistrictAdmin(); cy.saveLocalStorage(); }); diff --git a/cypress/e2e/patient_spec/PatientBedManagement.cy.ts b/cypress/e2e/patient_spec/PatientBedManagement.cy.ts index 1964f913a03..84ef2f4800e 100644 --- a/cypress/e2e/patient_spec/PatientBedManagement.cy.ts +++ b/cypress/e2e/patient_spec/PatientBedManagement.cy.ts @@ -15,7 +15,7 @@ describe("Patient swtich bed functionality", () => { const switchPatientTwo = "Dummy Patient 7"; before(() => { - loginPage.loginAsDisctrictAdmin(); + loginPage.loginAsDistrictAdmin(); cy.saveLocalStorage(); }); diff --git a/cypress/e2e/patient_spec/PatientConsultationCreation.cy.ts b/cypress/e2e/patient_spec/PatientConsultationCreation.cy.ts index 9911090eba0..ee38b24d746 100644 --- a/cypress/e2e/patient_spec/PatientConsultationCreation.cy.ts +++ b/cypress/e2e/patient_spec/PatientConsultationCreation.cy.ts @@ -38,7 +38,7 @@ describe("Patient Consultation in multiple combination", () => { const patientIpNumber = `${Math.floor(Math.random() * 90 + 10)}/${Math.floor(Math.random() * 9000 + 1000)}`; before(() => { - loginPage.loginAsDisctrictAdmin(); + loginPage.loginAsDistrictAdmin(); cy.saveLocalStorage(); }); diff --git a/cypress/e2e/patient_spec/PatientConsultationDischarge.cy.ts b/cypress/e2e/patient_spec/PatientConsultationDischarge.cy.ts index be9b06303cb..e2403fd56bd 100644 --- a/cypress/e2e/patient_spec/PatientConsultationDischarge.cy.ts +++ b/cypress/e2e/patient_spec/PatientConsultationDischarge.cy.ts @@ -20,7 +20,7 @@ describe("Patient Discharge based on multiple reason", () => { const doctorName = "Custom Doctor"; before(() => { - loginPage.loginAsDisctrictAdmin(); + loginPage.loginAsDistrictAdmin(); cy.saveLocalStorage(); }); diff --git a/cypress/e2e/patient_spec/PatientDoctorConnect.cy.ts b/cypress/e2e/patient_spec/PatientDoctorConnect.cy.ts index c1362c328c0..9197cac2d90 100644 --- a/cypress/e2e/patient_spec/PatientDoctorConnect.cy.ts +++ b/cypress/e2e/patient_spec/PatientDoctorConnect.cy.ts @@ -12,7 +12,7 @@ describe("Patient Doctor Connect in consultation page", () => { const teleIcuUser = "Dev Doctor Two"; before(() => { - loginPage.loginAsDisctrictAdmin(); + loginPage.loginAsDistrictAdmin(); cy.saveLocalStorage(); }); diff --git a/cypress/e2e/patient_spec/PatientDoctorNotes.cy.ts b/cypress/e2e/patient_spec/PatientDoctorNotes.cy.ts index 9a21eaea51f..e35d3eb8961 100644 --- a/cypress/e2e/patient_spec/PatientDoctorNotes.cy.ts +++ b/cypress/e2e/patient_spec/PatientDoctorNotes.cy.ts @@ -14,7 +14,7 @@ describe("Patient Discussion notes in the consultation page", () => { const discussionNotesSuccessMessage = "Note added successfully"; before(() => { - loginPage.loginAsDisctrictAdmin(); + loginPage.loginAsDistrictAdmin(); cy.saveLocalStorage(); }); diff --git a/cypress/e2e/patient_spec/PatientFileUpload.ts b/cypress/e2e/patient_spec/PatientFileUpload.ts index 7e5a3073179..cc94943fd6f 100644 --- a/cypress/e2e/patient_spec/PatientFileUpload.ts +++ b/cypress/e2e/patient_spec/PatientFileUpload.ts @@ -17,7 +17,7 @@ function runTests( const patientNameTwo = "Dummy Patient 4"; const patientNameThree = "Dummy Patient 5"; before(() => { - loginPage.loginAsDisctrictAdmin(); + loginPage.loginAsDistrictAdmin(); cy.saveLocalStorage(); }); @@ -90,7 +90,7 @@ function runTests( patientFileUpload.verifyUploadFilePresence(newFileName); patientFileUpload.verifyFileRenameOption(false); // Login as District Admin - loginPage.loginAsDisctrictAdmin(); + loginPage.loginAsDistrictAdmin(); cy.reload(); // Verify the file edit option is available patientFileUpload.verifyUploadFilePresence(newFileName); diff --git a/cypress/e2e/patient_spec/PatientHomepage.cy.ts b/cypress/e2e/patient_spec/PatientHomepage.cy.ts index 188b6bc9457..32d869b8f50 100644 --- a/cypress/e2e/patient_spec/PatientHomepage.cy.ts +++ b/cypress/e2e/patient_spec/PatientHomepage.cy.ts @@ -24,7 +24,7 @@ describe("Patient Homepage present functionalities", () => { const patientToDateBadge = "2023-12-07"; before(() => { - loginPage.loginAsDisctrictAdmin(); + loginPage.loginAsDistrictAdmin(); cy.saveLocalStorage(); }); diff --git a/cypress/e2e/patient_spec/PatientLogUpdate.cy.ts b/cypress/e2e/patient_spec/PatientLogUpdate.cy.ts index 835e53459eb..b32990872e2 100644 --- a/cypress/e2e/patient_spec/PatientLogUpdate.cy.ts +++ b/cypress/e2e/patient_spec/PatientLogUpdate.cy.ts @@ -41,7 +41,7 @@ describe("Patient Log Update in Normal, Critical and TeleIcu", () => { const domicilaryPatient = "Dummy Patient 11"; before(() => { - loginPage.loginAsDisctrictAdmin(); + loginPage.loginAsDistrictAdmin(); cy.saveLocalStorage(); }); diff --git a/cypress/e2e/patient_spec/PatientPrescription.cy.ts b/cypress/e2e/patient_spec/PatientPrescription.cy.ts index 86ca4122082..f5febc85fdc 100644 --- a/cypress/e2e/patient_spec/PatientPrescription.cy.ts +++ b/cypress/e2e/patient_spec/PatientPrescription.cy.ts @@ -15,7 +15,7 @@ const medicineIndicator = "Test Indicator"; describe("Patient Medicine Administration", () => { before(() => { - loginPage.loginAsDisctrictAdmin(); + loginPage.loginAsDistrictAdmin(); cy.saveLocalStorage(); }); diff --git a/cypress/e2e/patient_spec/PatientRegistration.cy.ts b/cypress/e2e/patient_spec/PatientRegistration.cy.ts index 36c08497c2c..d774a90ceb8 100644 --- a/cypress/e2e/patient_spec/PatientRegistration.cy.ts +++ b/cypress/e2e/patient_spec/PatientRegistration.cy.ts @@ -71,7 +71,7 @@ describe("Patient Creation with consultation", () => { const patientOccupation = "Student"; before(() => { - loginPage.loginAsDisctrictAdmin(); + loginPage.loginAsDistrictAdmin(); cy.saveLocalStorage(); }); diff --git a/cypress/e2e/resource_spec/ResourcesHomepage.cy.ts b/cypress/e2e/resource_spec/ResourcesHomepage.cy.ts index 2b4e75e1883..8dc526a68c3 100644 --- a/cypress/e2e/resource_spec/ResourcesHomepage.cy.ts +++ b/cypress/e2e/resource_spec/ResourcesHomepage.cy.ts @@ -10,7 +10,7 @@ describe("Resource Page", () => { const phone_number = "9999999999"; before(() => { - loginPage.loginAsDisctrictAdmin(); + loginPage.loginAsDistrictAdmin(); cy.saveLocalStorage(); }); diff --git a/cypress/e2e/users_spec/UsersCreation.cy.ts b/cypress/e2e/users_spec/UsersCreation.cy.ts index 8e7236835e7..683a2131b2f 100644 --- a/cypress/e2e/users_spec/UsersCreation.cy.ts +++ b/cypress/e2e/users_spec/UsersCreation.cy.ts @@ -55,7 +55,7 @@ describe("User Creation", () => { ]; before(() => { - loginPage.loginAsDisctrictAdmin(); + loginPage.loginAsDistrictAdmin(); cy.saveLocalStorage(); }); diff --git a/cypress/e2e/users_spec/UsersHomepage.cy.ts b/cypress/e2e/users_spec/UsersHomepage.cy.ts index 634336a4ef9..0dd03c74304 100644 --- a/cypress/e2e/users_spec/UsersHomepage.cy.ts +++ b/cypress/e2e/users_spec/UsersHomepage.cy.ts @@ -17,7 +17,7 @@ describe("User Homepage", () => { const doctorUserName = "devdoctor1"; before(() => { - loginPage.loginAsDisctrictAdmin(); + loginPage.loginAsDistrictAdmin(); cy.saveLocalStorage(); }); diff --git a/cypress/e2e/users_spec/UsersManage.cy.ts b/cypress/e2e/users_spec/UsersManage.cy.ts index 3d9d18ff285..98c2d564f6d 100644 --- a/cypress/e2e/users_spec/UsersManage.cy.ts +++ b/cypress/e2e/users_spec/UsersManage.cy.ts @@ -20,7 +20,7 @@ describe("Manage User", () => { const linkedskill = "General Medicine"; before(() => { - loginPage.loginAsDisctrictAdmin(); + loginPage.loginAsDistrictAdmin(); cy.saveLocalStorage(); }); diff --git a/cypress/fixtures/users.json b/cypress/fixtures/users.json deleted file mode 100644 index 3a935589846..00000000000 --- a/cypress/fixtures/users.json +++ /dev/null @@ -1,38 +0,0 @@ -[ - { - "username": "karadmin", - "rolename": "DistrictAdmin" - }, - { - "username": "karadminro", - "rolename": "DistrictReadOnlyAdmin" - }, - { - "username": "karstaff1", - "rolename": "Staff" - }, - { - "username": "karstaffro", - "rolename": "StaffReadOnly" - }, - { - "username": "karlocal", - "rolename": "LocalBodyAdmin" - }, - { - "username": "karward", - "rolename": "WardAdmin" - }, - { - "username": "kardoc1", - "rolename": "Doctor" - }, - { - "username": "karpharma1", - "rolename": "Pharmacist" - }, - { - "username": "karvol", - "rolename": "Volunteer" - } -] diff --git a/cypress/pageobject/Login/LoginPage.ts b/cypress/pageobject/Login/LoginPage.ts index 06bd165c9ac..cd5230a7772 100644 --- a/cypress/pageobject/Login/LoginPage.ts +++ b/cypress/pageobject/Login/LoginPage.ts @@ -1,7 +1,7 @@ // LoginPage.ts class LoginPage { - loginAsDisctrictAdmin(): void { + loginAsDistrictAdmin(): void { cy.loginByApi("devdistrictadmin", "Coronasafe@123"); } diff --git a/package-lock.json b/package-lock.json index a4276cb3d35..e46a726b69c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -41,6 +41,7 @@ "hi-profiles": "^1.1.0", "i18next": "^23.11.4", "i18next-browser-languagedetector": "^7.2.1", + "i18next-http-backend": "^2.6.2", "lodash-es": "^4.17.21", "postcss-loader": "^7.3.3", "qrcode.react": "^3.1.0", @@ -51,10 +52,8 @@ "react-google-recaptcha": "^3.1.0", "react-i18next": "^15.0.2", "react-infinite-scroll-component": "^6.1.0", - "react-markdown": "^8.0.7", "react-pdf": "^9.1.0", "react-webcam": "^7.2.0", - "rehype-raw": "^6.1.1", "tailwind-merge": "^2.5.2", "tailwindcss-animate": "^1.0.7", "use-keyboard-shortcut": "^1.1.6", @@ -64,8 +63,11 @@ "@tailwindcss/container-queries": "^0.1.1", "@tailwindcss/forms": "^0.5.7", "@tailwindcss/typography": "^0.5.13", + "@trivago/prettier-plugin-sort-imports": "^4.3.0", + "@types/dompurify": "^3.0.5", "@types/events": "^3.0.3", "@types/google.maps": "^3.55.8", + "@types/jsdom": "^21.1.7", "@types/lodash-es": "^4.17.12", "@types/node": "^22.7.4", "@types/qrcode.react": "^1.0.5", @@ -80,6 +82,7 @@ "autoprefixer": "^10.4.19", "cypress-localstorage-commands": "^2.2.5", "cypress-split": "^1.23.2", + "dompurify": "^3.1.7", "dotenv": "^16.4.5", "eslint-config-prettier": "^9.1.0", "eslint-plugin-i18next": "^6.0.9", @@ -89,8 +92,10 @@ "eslint-plugin-react-hooks": "^4.6.2", "glob": "^11.0.0", "husky": "^8.0.3", + "jsdom": "^25.0.1", "lint-staged": "^13.2.3", "local-cypress": "^1.2.6", + "marked": "^14.1.3", "postcss": "^8.4.38", "prettier": "^3.3.3", "prettier-plugin-tailwindcss": "^0.6.5", @@ -110,6 +115,7 @@ "apps/care_livekit_fe": { "name": "care-livekit", "version": "0.0.1", + "extraneous": true, "license": "ISC", "dependencies": { "@livekit/components-react": "^2.6.2", @@ -419,6 +425,46 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/@babel/helper-environment-visitor": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.24.7.tgz", + "integrity": "sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-function-name": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.24.7.tgz", + "integrity": "sha512-FyoJTsj/PEUWu1/TYRiXTIHc8lbw+TDYkZuoE43opPS5TrI7MyONBE1oNvfguEXAD9yhQRrVBnXdXzSLQl9XnA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/template": "^7.24.7", + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-hoist-variables": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.24.7.tgz", + "integrity": "sha512-MJJwhkoGy5c4ehfoRyrJ/owKeMl19U54h27YYftT0o2teQ3FJ3nQUf/I3LlJsX4l3qlw7WRXUmiyajvHXoTubQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@babel/helper-member-expression-to-functions": { "version": "7.25.7", "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.25.7.tgz", @@ -553,10 +599,23 @@ "node": ">=6.9.0" } }, + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.7.tgz", + "integrity": "sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@babel/helper-string-parser": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.7.tgz", - "integrity": "sha512-CbkjYdsJNHFk8uqpEkpCvRs3YRp9tY6FmFY7wLMSYuGYkrdUi7r2lc4/wqsvlHoMznX3WJ9IP8giGPq68T/Y6g==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz", + "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==", "dev": true, "license": "MIT", "engines": { @@ -564,9 +623,9 @@ } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.7.tgz", - "integrity": "sha512-AM6TzwYqGChO45oiuPqwL2t20/HdMC1rTPAesnBCgPCSF1x3oN9MVUwQV2iyz4xqWrctwK5RNC8LV22kaQCNYg==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", + "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==", "license": "MIT", "engines": { "node": ">=6.9.0" @@ -698,13 +757,13 @@ } }, "node_modules/@babel/parser": { - "version": "7.25.8", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.25.8.tgz", - "integrity": "sha512-HcttkxzdPucv3nNFmfOOMfFf64KgdJVqm1KaCm25dPGMLElo9nsLvXeJECQg8UzPuBGLyTSA0ZzqCtDSzKTEoQ==", + "version": "7.26.2", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.2.tgz", + "integrity": "sha512-DWMCZH9WA4Maitz2q21SRKHo9QXZxkDsbNZoVD62gusNtNBBqDg9i7uOhASfTfIGNzW+O+r7+jAlM8dwphcJKQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/types": "^7.25.8" + "@babel/types": "^7.26.0" }, "bin": { "parser": "bin/babel-parser.js" @@ -1872,26 +1931,19 @@ } }, "node_modules/@babel/types": { - "version": "7.25.8", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.8.tgz", - "integrity": "sha512-JWtuCu8VQsMladxVz/P4HzHUGCAwpuqacmowgXFs5XjxIgKuNjnLokQzuVjlTvIzODaDmpjT3oxcC48vyk9EWg==", + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.0.tgz", + "integrity": "sha512-Z/yiTPj+lDVnF7lWeKCIJzaIkI0vYO87dMpZ4bg4TDrFe4XXLFWL1TbXU27gBP3QccxV9mZICCrnjnYlJjXHOA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-string-parser": "^7.25.7", - "@babel/helper-validator-identifier": "^7.25.7", - "to-fast-properties": "^2.0.0" + "@babel/helper-string-parser": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@bufbuild/protobuf": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/@bufbuild/protobuf/-/protobuf-1.10.0.tgz", - "integrity": "sha512-QDdVFLoN93Zjg36NoQPZfsVH9tZew7wKDKyV5qRdj8ntT4wQCOradQjRaTdwMhWUYsgKsvCINKKm87FdEk96Ag==", - "license": "(Apache-2.0 AND BSD-3-Clause)" - }, "node_modules/@colors/colors": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", @@ -2792,74 +2844,6 @@ "@jridgewell/sourcemap-codec": "^1.4.14" } }, - "node_modules/@livekit/components-core": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/@livekit/components-core/-/components-core-0.11.10.tgz", - "integrity": "sha512-PvFlKq1W64b9GfFjG7L4/o7ulAl5yFFpDTvG+JHQiXkaPaecMPt/qPbs6zdvUlC7om1TGMuW/pIN7o585Xz9Fg==", - "license": "Apache-2.0", - "dependencies": { - "@floating-ui/dom": "1.6.11", - "loglevel": "1.9.1", - "rxjs": "7.8.1" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "livekit-client": "^2.5.7", - "tslib": "^2.6.2" - } - }, - "node_modules/@livekit/components-react": { - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/@livekit/components-react/-/components-react-2.6.7.tgz", - "integrity": "sha512-z8dgrBrRXIe7oagwFyjehdwL/4zpySJyPdAjeMDXZVbTXYNAugb3a88Ws9yQz4PZFECLkIPXJCN3C3YR+bgh5Q==", - "license": "Apache-2.0", - "dependencies": { - "@livekit/components-core": "0.11.10", - "clsx": "2.1.1", - "usehooks-ts": "3.1.0" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@livekit/krisp-noise-filter": "^0.2.12", - "livekit-client": "^2.5.7", - "react": ">=18", - "react-dom": ">=18", - "tslib": "^2.6.2" - }, - "peerDependenciesMeta": { - "@livekit/krisp-noise-filter": { - "optional": true - } - } - }, - "node_modules/@livekit/components-styles": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/@livekit/components-styles/-/components-styles-1.1.4.tgz", - "integrity": "sha512-QCupn7tQ/dy/WZclrfsgtDe8peiGYS6Ied1IGkKOysaXo04l90t62SIUTKyxgd0dNDhUDC0p34qCggGZs/44lQ==", - "license": "Apache-2.0", - "engines": { - "node": ">=18" - } - }, - "node_modules/@livekit/mutex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@livekit/mutex/-/mutex-1.0.0.tgz", - "integrity": "sha512-aiUhoThBNF9UyGTxEURFzJLhhPLIVTnQiEVMjRhPnfHNKLfo2JY9xovHKIus7B78UD5hsP6DlgpmAsjrz4U0Iw==", - "license": "Apache-2.0" - }, - "node_modules/@livekit/protocol": { - "version": "1.24.0", - "resolved": "https://registry.npmjs.org/@livekit/protocol/-/protocol-1.24.0.tgz", - "integrity": "sha512-9dCsqnkMn7lvbI4NGh18zhLDsrXyUcpS++TEFgEk5Xv1WM3R2kT3EzqgL1P/mr3jaabM6rJ8wZA/KJLuQNpF5w==", - "license": "Apache-2.0", - "dependencies": { - "@bufbuild/protobuf": "^1.10.0" - } - }, "node_modules/@mapbox/node-pre-gyp": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.11.tgz", @@ -4954,6 +4938,158 @@ "url": "https://github.com/sponsors/tannerlinsley" } }, + "node_modules/@trivago/prettier-plugin-sort-imports": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@trivago/prettier-plugin-sort-imports/-/prettier-plugin-sort-imports-4.3.0.tgz", + "integrity": "sha512-r3n0onD3BTOVUNPhR4lhVK4/pABGpbA7bW3eumZnYdKaHkf1qEC+Mag6DPbGNuuh0eG8AaYj+YqmVHSiGslaTQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@babel/generator": "7.17.7", + "@babel/parser": "^7.20.5", + "@babel/traverse": "7.23.2", + "@babel/types": "7.17.0", + "javascript-natural-sort": "0.7.1", + "lodash": "^4.17.21" + }, + "peerDependencies": { + "@vue/compiler-sfc": "3.x", + "prettier": "2.x - 3.x" + }, + "peerDependenciesMeta": { + "@vue/compiler-sfc": { + "optional": true + } + } + }, + "node_modules/@trivago/prettier-plugin-sort-imports/node_modules/@babel/generator": { + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.7.tgz", + "integrity": "sha512-oLcVCTeIFadUoArDTwpluncplrYBmTCCZZgXCbgNGvOBBiSDDK3eWO4b/+eOTli5tKv1lg+a5/NAXg+nTcei1w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.17.0", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@trivago/prettier-plugin-sort-imports/node_modules/@babel/traverse": { + "version": "7.23.2", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.2.tgz", + "integrity": "sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.22.13", + "@babel/generator": "^7.23.0", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/parser": "^7.23.0", + "@babel/types": "^7.23.0", + "debug": "^4.1.0", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@trivago/prettier-plugin-sort-imports/node_modules/@babel/traverse/node_modules/@babel/generator": { + "version": "7.26.2", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.2.tgz", + "integrity": "sha512-zevQbhbau95nkoxSq3f/DC/SC+EEOUZd3DYqfSkMhY2/wfSeaHV1Ew4vk8e+x8lja31IbyuUa2uQ3JONqKbysw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.26.2", + "@babel/types": "^7.26.0", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", + "jsesc": "^3.0.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@trivago/prettier-plugin-sort-imports/node_modules/@babel/traverse/node_modules/@babel/types": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.0.tgz", + "integrity": "sha512-Z/yiTPj+lDVnF7lWeKCIJzaIkI0vYO87dMpZ4bg4TDrFe4XXLFWL1TbXU27gBP3QccxV9mZICCrnjnYlJjXHOA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@trivago/prettier-plugin-sort-imports/node_modules/@babel/traverse/node_modules/jsesc": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz", + "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==", + "dev": true, + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@trivago/prettier-plugin-sort-imports/node_modules/@babel/types": { + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", + "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.16.7", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@trivago/prettier-plugin-sort-imports/node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/@trivago/prettier-plugin-sort-imports/node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true, + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@trivago/prettier-plugin-sort-imports/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/@types/acorn": { "version": "4.0.6", "resolved": "https://registry.npmjs.org/@types/acorn/-/acorn-4.0.6.tgz", @@ -4978,6 +5114,7 @@ "version": "4.1.12", "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==", + "dev": true, "license": "MIT", "dependencies": { "@types/ms": "*" @@ -4989,6 +5126,16 @@ "integrity": "sha512-O5hkiFIcjjszPIYyUSyvScyvrBoV3NOEEZx/pMlsu44TKzWNkLVBBxnxJz42in5n3QIolYOcBYFCPZZ0h8SkwQ==", "license": "MIT" }, + "node_modules/@types/dompurify": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@types/dompurify/-/dompurify-3.0.5.tgz", + "integrity": "sha512-1Wg0g3BtQF7sSb27fJQAKck1HECM6zV1EB66j8JH9i3LCjYabJa0FSdiSgsD5K/RbrsR0SiraKacLB+T8ZVYAg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/trusted-types": "*" + } + }, "node_modules/@types/emscripten": { "version": "1.39.13", "resolved": "https://registry.npmjs.org/@types/emscripten/-/emscripten-1.39.13.tgz", @@ -5025,21 +5172,6 @@ "dev": true, "license": "MIT" }, - "node_modules/@types/hast": { - "version": "2.3.10", - "resolved": "https://registry.npmjs.org/@types/hast/-/hast-2.3.10.tgz", - "integrity": "sha512-McWspRw8xx8J9HurkVBfYj0xKoE25tOFlHGdx4MJ5xORQrMGZNqJhVQWaIbm6Oyla5kYOXtDiopzKRJzEOkwJw==", - "license": "MIT", - "dependencies": { - "@types/unist": "^2" - } - }, - "node_modules/@types/hast/node_modules/@types/unist": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", - "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==", - "license": "MIT" - }, "node_modules/@types/is-empty": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/@types/is-empty/-/is-empty-1.2.3.tgz", @@ -5047,6 +5179,18 @@ "dev": true, "license": "MIT" }, + "node_modules/@types/jsdom": { + "version": "21.1.7", + "resolved": "https://registry.npmjs.org/@types/jsdom/-/jsdom-21.1.7.tgz", + "integrity": "sha512-yOriVnggzrnQ3a9OKOCxaVuSug3w3/SbOj5i7VwXWZEyUNl3bLF9V3MfxGbZKuwqJOQyRfqXyROBB1CoZLFWzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*", + "@types/tough-cookie": "*", + "parse5": "^7.0.0" + } + }, "node_modules/@types/json-schema": { "version": "7.0.15", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", @@ -5075,6 +5219,7 @@ "version": "3.0.15", "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.15.tgz", "integrity": "sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==", + "dev": true, "license": "MIT", "dependencies": { "@types/unist": "^2" @@ -5084,12 +5229,14 @@ "version": "2.0.11", "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==", + "dev": true, "license": "MIT" }, "node_modules/@types/ms": { "version": "0.7.34", "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.34.tgz", "integrity": "sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==", + "dev": true, "license": "MIT" }, "node_modules/@types/node": { @@ -5101,16 +5248,11 @@ "undici-types": "~6.19.2" } }, - "node_modules/@types/parse5": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/@types/parse5/-/parse5-6.0.3.tgz", - "integrity": "sha512-SuT16Q1K51EAVPz1K29DJ/sXjhSQ0zjvsypYJ6tlwVsRV9jwW5Adq2ch8Dq8kDBCkYnELS7N7VNCSB5nC56t/g==", - "license": "MIT" - }, "node_modules/@types/prop-types": { "version": "15.7.13", "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.13.tgz", "integrity": "sha512-hCZTSvwbzWGvhqxp/RqVqwU999pBf2vp7hzIjiYOsl8wqOmUxkQ6ddw1cV3l8811+kdUFus/q4d1Y3E3SyEifA==", + "devOptional": true, "license": "MIT" }, "node_modules/@types/qrcode.react": { @@ -5127,6 +5269,7 @@ "version": "18.3.11", "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.11.tgz", "integrity": "sha512-r6QZ069rFTjrEYgFdOck1gK7FLVsgJE7tTz0pQBczlBNUhBNk0MQH4UbnFSwjpQLMkLzgqvBBa+qGpLje16eTQ==", + "devOptional": true, "license": "MIT", "dependencies": { "@types/prop-types": "*", @@ -5199,6 +5342,13 @@ "dev": true, "license": "MIT" }, + "node_modules/@types/tough-cookie": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.5.tgz", + "integrity": "sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==", + "dev": true, + "license": "MIT" + }, "node_modules/@types/trusted-types": { "version": "2.0.7", "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz", @@ -6306,6 +6456,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz", "integrity": "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==", + "dev": true, "license": "MIT", "funding": { "type": "github", @@ -6604,10 +6755,6 @@ "node": ">=6" } }, - "node_modules/care-livekit": { - "resolved": "apps/care_livekit_fe", - "link": true - }, "node_modules/caseless": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", @@ -6937,16 +7084,6 @@ "node": ">= 0.8" } }, - "node_modules/comma-separated-tokens": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz", - "integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, "node_modules/commander": { "version": "6.2.1", "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", @@ -7110,6 +7247,15 @@ "yarn": ">=1" } }, + "node_modules/cross-fetch": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-4.0.0.tgz", + "integrity": "sha512-e4a5N8lVvuLgAWgnCrLr2PP0YyDOTHa9H/Rj54dirp61qXnNq46m82bRhNqIA5VccJtWBvPTFRV3TtvHUKPB1g==", + "license": "MIT", + "dependencies": { + "node-fetch": "^2.6.12" + } + }, "node_modules/cross-spawn": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", @@ -7155,10 +7301,24 @@ "node": ">=4" } }, + "node_modules/cssstyle": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-4.1.0.tgz", + "integrity": "sha512-h66W1URKpBS5YMI/V8PyXvTMFT8SupJ1IzoIV8IeBC/ji8WVmrO8dGlTi+2dh6whmdk6BiKJLD/ZBkhWbcg6nA==", + "dev": true, + "license": "MIT", + "dependencies": { + "rrweb-cssom": "^0.7.1" + }, + "engines": { + "node": ">=18" + } + }, "node_modules/csstype": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", + "devOptional": true, "license": "MIT" }, "node_modules/cypress": { @@ -7264,40 +7424,91 @@ "node": ">=0.10" } }, - "node_modules/data-view-buffer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz", - "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==", + "node_modules/data-urls": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-5.0.0.tgz", + "integrity": "sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.6", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.1" + "whatwg-mimetype": "^4.0.0", + "whatwg-url": "^14.0.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=18" } }, - "node_modules/data-view-byte-length": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz", - "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==", + "node_modules/data-urls/node_modules/tr46": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-5.0.0.tgz", + "integrity": "sha512-tk2G5R2KRwBd+ZN0zaEXpmzdKyOYksXwywulIX95MBODjSzMIuQnQ3m8JxgbhnL1LeVo7lqQKsYa1O3Htl7K5g==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.1" + "punycode": "^2.3.1" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=18" + } + }, + "node_modules/data-urls/node_modules/webidl-conversions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=12" + } + }, + "node_modules/data-urls/node_modules/whatwg-url": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-14.0.0.tgz", + "integrity": "sha512-1lfMEm2IEr7RIV+f4lUNPOqfFL+pO+Xw3fJSqmjX9AbXcXcYOkCe1P6+9VBZB6n94af16NfZf+sSk0JCBZC9aw==", + "dev": true, + "license": "MIT", + "dependencies": { + "tr46": "^5.0.0", + "webidl-conversions": "^7.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/data-view-buffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz", + "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz", + "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/data-view-byte-offset": { @@ -7341,10 +7552,18 @@ } } }, + "node_modules/decimal.js": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz", + "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==", + "dev": true, + "license": "MIT" + }, "node_modules/decode-named-character-reference": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.0.2.tgz", "integrity": "sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==", + "dev": true, "license": "MIT", "dependencies": { "character-entities": "^2.0.0" @@ -7358,6 +7577,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz", "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==", + "dev": true, "license": "MIT", "funding": { "type": "github", @@ -7717,6 +7937,7 @@ "version": "5.2.0", "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz", "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==", + "dev": true, "license": "BSD-3-Clause", "engines": { "node": ">=0.3.1" @@ -7755,6 +7976,13 @@ "node": ">=6.0.0" } }, + "node_modules/dompurify": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.1.7.tgz", + "integrity": "sha512-VaTstWtsneJY8xzy7DekmYWEOZcmzIe3Qb3zPd4STve1OBTa+e+WmS1ITQec1fZYXI3HCsOZZiSMpG6oxoWMWQ==", + "dev": true, + "license": "(MPL-2.0 OR Apache-2.0)" + }, "node_modules/dotenv": { "version": "16.4.5", "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz", @@ -9690,246 +9918,6 @@ "node": ">= 0.4" } }, - "node_modules/hast-util-from-parse5": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-7.1.2.tgz", - "integrity": "sha512-Nz7FfPBuljzsN3tCQ4kCBKqdNhQE2l0Tn+X1ubgKBPRoiDIu1mL08Cfw4k7q71+Duyaw7DXDN+VTAp4Vh3oCOw==", - "license": "MIT", - "dependencies": { - "@types/hast": "^2.0.0", - "@types/unist": "^2.0.0", - "hastscript": "^7.0.0", - "property-information": "^6.0.0", - "vfile": "^5.0.0", - "vfile-location": "^4.0.0", - "web-namespaces": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hast-util-from-parse5/node_modules/@types/unist": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", - "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==", - "license": "MIT" - }, - "node_modules/hast-util-from-parse5/node_modules/unist-util-stringify-position": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.3.tgz", - "integrity": "sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==", - "license": "MIT", - "dependencies": { - "@types/unist": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hast-util-from-parse5/node_modules/vfile": { - "version": "5.3.7", - "resolved": "https://registry.npmjs.org/vfile/-/vfile-5.3.7.tgz", - "integrity": "sha512-r7qlzkgErKjobAmyNIkkSpizsFPYiUPuJb5pNW1RB4JcYVZhs4lIbVqk8XPk033CV/1z8ss5pkax8SuhGpcG8g==", - "license": "MIT", - "dependencies": { - "@types/unist": "^2.0.0", - "is-buffer": "^2.0.0", - "unist-util-stringify-position": "^3.0.0", - "vfile-message": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hast-util-from-parse5/node_modules/vfile-message": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-3.1.4.tgz", - "integrity": "sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==", - "license": "MIT", - "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-stringify-position": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hast-util-parse-selector": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-3.1.1.tgz", - "integrity": "sha512-jdlwBjEexy1oGz0aJ2f4GKMaVKkA9jwjr4MjAAI22E5fM/TXVZHuS5OpONtdeIkRKqAaryQ2E9xNQxijoThSZA==", - "license": "MIT", - "dependencies": { - "@types/hast": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hast-util-raw": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/hast-util-raw/-/hast-util-raw-7.2.3.tgz", - "integrity": "sha512-RujVQfVsOrxzPOPSzZFiwofMArbQke6DJjnFfceiEbFh7S05CbPt0cYN+A5YeD3pso0JQk6O1aHBnx9+Pm2uqg==", - "license": "MIT", - "dependencies": { - "@types/hast": "^2.0.0", - "@types/parse5": "^6.0.0", - "hast-util-from-parse5": "^7.0.0", - "hast-util-to-parse5": "^7.0.0", - "html-void-elements": "^2.0.0", - "parse5": "^6.0.0", - "unist-util-position": "^4.0.0", - "unist-util-visit": "^4.0.0", - "vfile": "^5.0.0", - "web-namespaces": "^2.0.0", - "zwitch": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hast-util-raw/node_modules/@types/unist": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", - "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==", - "license": "MIT" - }, - "node_modules/hast-util-raw/node_modules/unist-util-is": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.2.1.tgz", - "integrity": "sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==", - "license": "MIT", - "dependencies": { - "@types/unist": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hast-util-raw/node_modules/unist-util-stringify-position": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.3.tgz", - "integrity": "sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==", - "license": "MIT", - "dependencies": { - "@types/unist": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hast-util-raw/node_modules/unist-util-visit": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.2.tgz", - "integrity": "sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==", - "license": "MIT", - "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0", - "unist-util-visit-parents": "^5.1.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hast-util-raw/node_modules/unist-util-visit-parents": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.3.tgz", - "integrity": "sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==", - "license": "MIT", - "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hast-util-raw/node_modules/vfile": { - "version": "5.3.7", - "resolved": "https://registry.npmjs.org/vfile/-/vfile-5.3.7.tgz", - "integrity": "sha512-r7qlzkgErKjobAmyNIkkSpizsFPYiUPuJb5pNW1RB4JcYVZhs4lIbVqk8XPk033CV/1z8ss5pkax8SuhGpcG8g==", - "license": "MIT", - "dependencies": { - "@types/unist": "^2.0.0", - "is-buffer": "^2.0.0", - "unist-util-stringify-position": "^3.0.0", - "vfile-message": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hast-util-raw/node_modules/vfile-message": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-3.1.4.tgz", - "integrity": "sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==", - "license": "MIT", - "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-stringify-position": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hast-util-to-parse5": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/hast-util-to-parse5/-/hast-util-to-parse5-7.1.0.tgz", - "integrity": "sha512-YNRgAJkH2Jky5ySkIqFXTQiaqcAtJyVE+D5lkN6CdtOqrnkLfGYYrEcKuHOJZlp+MwjSwuD3fZuawI+sic/RBw==", - "license": "MIT", - "dependencies": { - "@types/hast": "^2.0.0", - "comma-separated-tokens": "^2.0.0", - "property-information": "^6.0.0", - "space-separated-tokens": "^2.0.0", - "web-namespaces": "^2.0.0", - "zwitch": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hast-util-whitespace": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-2.0.1.tgz", - "integrity": "sha512-nAxA0v8+vXSBDt3AnRUNjyRIQ0rD+ntpbAp4LnPkumc5M9yUbSMa4XDU9Q6etY4f1Wp4bNgvc1yjiZtsTTrSng==", - "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hastscript": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-7.2.0.tgz", - "integrity": "sha512-TtYPq24IldU8iKoJQqvZOuhi5CyCQRAbvDOX0x1eW6rsHSxa/1i2CCiptNTotGHJ3VoHRGmqiv6/D3q113ikkw==", - "license": "MIT", - "dependencies": { - "@types/hast": "^2.0.0", - "comma-separated-tokens": "^2.0.0", - "hast-util-parse-selector": "^3.0.0", - "property-information": "^6.0.0", - "space-separated-tokens": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, "node_modules/hi-profiles": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/hi-profiles/-/hi-profiles-1.1.0.tgz", @@ -9969,6 +9957,19 @@ "dev": true, "license": "ISC" }, + "node_modules/html-encoding-sniffer": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-4.0.0.tgz", + "integrity": "sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "whatwg-encoding": "^3.1.1" + }, + "engines": { + "node": ">=18" + } + }, "node_modules/html-parse-stringify": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/html-parse-stringify/-/html-parse-stringify-3.0.1.tgz", @@ -9978,14 +9979,31 @@ "void-elements": "3.1.0" } }, - "node_modules/html-void-elements": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-2.0.1.tgz", - "integrity": "sha512-0quDb7s97CfemeJAnW9wC0hw78MtW7NU3hqtCD75g2vFlDLt36llsYD7uB7SUzojLMP24N5IatXf7ylGXiGG9A==", + "node_modules/http-proxy-agent": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", + "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", + "dev": true, "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "dependencies": { + "agent-base": "^7.1.0", + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/http-proxy-agent/node_modules/agent-base": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", + "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" } }, "node_modules/http-signature": { @@ -10080,6 +10098,28 @@ "@babel/runtime": "^7.23.2" } }, + "node_modules/i18next-http-backend": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/i18next-http-backend/-/i18next-http-backend-2.6.2.tgz", + "integrity": "sha512-Hp/kd8/VuoxIHmxsknJXjkTYYHzivAyAF15pzliKzk2TiXC25rZCEerb1pUFoxz4IVrG3fCvQSY51/Lu4ECV4A==", + "license": "MIT", + "dependencies": { + "cross-fetch": "4.0.0" + } + }, + "node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/idb": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/idb/-/idb-7.1.1.tgz", @@ -10199,12 +10239,6 @@ "node": ">=10" } }, - "node_modules/inline-style-parser": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.1.1.tgz", - "integrity": "sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==", - "license": "MIT" - }, "node_modules/internal-slot": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", @@ -10363,29 +10397,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-buffer": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", - "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "engines": { - "node": ">=4" - } - }, "node_modules/is-callable": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", @@ -10643,6 +10654,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", + "dev": true, "license": "MIT", "engines": { "node": ">=12" @@ -10651,6 +10663,13 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/is-potential-custom-element-name": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", + "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", + "dev": true, + "license": "MIT" + }, "node_modules/is-regex": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", @@ -10943,6 +10962,13 @@ "node": "*" } }, + "node_modules/javascript-natural-sort": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/javascript-natural-sort/-/javascript-natural-sort-0.7.1.tgz", + "integrity": "sha512-nO6jcEfZWQXDhOiBtG2KvKyEptz7RVbpGP4vTD2hLBdmNQSsCiicO2Ioinv6UI4y9ukqnBpy+XZ9H6uLNgJTlw==", + "dev": true, + "license": "MIT" + }, "node_modules/jest-worker": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", @@ -10991,6 +11017,124 @@ "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==", "license": "MIT" }, + "node_modules/jsdom": { + "version": "25.0.1", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-25.0.1.tgz", + "integrity": "sha512-8i7LzZj7BF8uplX+ZyOlIz86V6TAsSs+np6m1kpW9u0JWi4z/1t+FzcK1aek+ybTnAC4KhBL4uXCNT0wcUIeCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "cssstyle": "^4.1.0", + "data-urls": "^5.0.0", + "decimal.js": "^10.4.3", + "form-data": "^4.0.0", + "html-encoding-sniffer": "^4.0.0", + "http-proxy-agent": "^7.0.2", + "https-proxy-agent": "^7.0.5", + "is-potential-custom-element-name": "^1.0.1", + "nwsapi": "^2.2.12", + "parse5": "^7.1.2", + "rrweb-cssom": "^0.7.1", + "saxes": "^6.0.0", + "symbol-tree": "^3.2.4", + "tough-cookie": "^5.0.0", + "w3c-xmlserializer": "^5.0.0", + "webidl-conversions": "^7.0.0", + "whatwg-encoding": "^3.1.1", + "whatwg-mimetype": "^4.0.0", + "whatwg-url": "^14.0.0", + "ws": "^8.18.0", + "xml-name-validator": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "canvas": "^2.11.2" + }, + "peerDependenciesMeta": { + "canvas": { + "optional": true + } + } + }, + "node_modules/jsdom/node_modules/agent-base": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", + "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/jsdom/node_modules/https-proxy-agent": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz", + "integrity": "sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==", + "dev": true, + "license": "MIT", + "dependencies": { + "agent-base": "^7.0.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/jsdom/node_modules/tough-cookie": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-5.0.0.tgz", + "integrity": "sha512-FRKsF7cz96xIIeMZ82ehjC3xW2E+O2+v11udrDYewUbszngYhsGa8z6YUMMzO9QJZzzyd0nGGXnML/TReX6W8Q==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "tldts": "^6.1.32" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/jsdom/node_modules/tr46": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-5.0.0.tgz", + "integrity": "sha512-tk2G5R2KRwBd+ZN0zaEXpmzdKyOYksXwywulIX95MBODjSzMIuQnQ3m8JxgbhnL1LeVo7lqQKsYa1O3Htl7K5g==", + "dev": true, + "license": "MIT", + "dependencies": { + "punycode": "^2.3.1" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/jsdom/node_modules/webidl-conversions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=12" + } + }, + "node_modules/jsdom/node_modules/whatwg-url": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-14.0.0.tgz", + "integrity": "sha512-1lfMEm2IEr7RIV+f4lUNPOqfFL+pO+Xw3fJSqmjX9AbXcXcYOkCe1P6+9VBZB6n94af16NfZf+sSk0JCBZC9aw==", + "dev": true, + "license": "MIT", + "dependencies": { + "tr46": "^5.0.0", + "webidl-conversions": "^7.0.0" + }, + "engines": { + "node": ">=18" + } + }, "node_modules/jsesc": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz", @@ -11126,6 +11270,7 @@ "version": "4.1.5", "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", + "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -11703,29 +11848,6 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/livekit-client": { - "version": "2.5.10", - "resolved": "https://registry.npmjs.org/livekit-client/-/livekit-client-2.5.10.tgz", - "integrity": "sha512-H7EeIb19LAH8ejlvhh0JWtWkvXDan6Yf3bpFGlDMb54uPmyRgBY+McfgQsFgJCB9WJL0X+GYUoV1Cmnn8iAoIQ==", - "license": "Apache-2.0", - "dependencies": { - "@livekit/mutex": "1.0.0", - "@livekit/protocol": "1.24.0", - "events": "^3.3.0", - "loglevel": "^1.8.0", - "sdp-transform": "^2.14.1", - "ts-debounce": "^4.0.0", - "tslib": "2.7.0", - "typed-emitter": "^2.1.0", - "webrtc-adapter": "^9.0.0" - } - }, - "node_modules/livekit-client/node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "license": "0BSD" - }, "node_modules/load-plugin": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/load-plugin/-/load-plugin-6.0.3.tgz", @@ -11837,6 +11959,7 @@ "version": "4.0.8", "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", + "dev": true, "license": "MIT" }, "node_modules/lodash.isplainobject": { @@ -11931,19 +12054,6 @@ "node": ">=8" } }, - "node_modules/loglevel": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.9.1.tgz", - "integrity": "sha512-hP3I3kCrDIMuRwAwHltphhDM1r8i55H33GgqjXbrisuJhF4kRhW1dNuxsRklp4bXl8DSdLaNLuiL4A/LWRfxvg==", - "license": "MIT", - "engines": { - "node": ">= 0.6.0" - }, - "funding": { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/loglevel" - } - }, "node_modules/long": { "version": "5.2.3", "resolved": "https://registry.npmjs.org/long/-/long-5.2.3.tgz", @@ -12038,6 +12148,19 @@ "url": "https://github.com/wojtekmaj/make-event-props?sponsor=1" } }, + "node_modules/marked": { + "version": "14.1.3", + "resolved": "https://registry.npmjs.org/marked/-/marked-14.1.3.tgz", + "integrity": "sha512-ZibJqTULGlt9g5k4VMARAktMAjXoVnnr+Y3aCqW1oDftcV4BA3UmrBifzXoZyenHRk75csiPu9iwsTj4VNBT0g==", + "dev": true, + "license": "MIT", + "bin": { + "marked": "bin/marked.js" + }, + "engines": { + "node": ">= 18" + } + }, "node_modules/matcher": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/matcher/-/matcher-3.0.0.tgz", @@ -12051,69 +12174,6 @@ "node": ">=10" } }, - "node_modules/mdast-util-definitions": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/mdast-util-definitions/-/mdast-util-definitions-5.1.2.tgz", - "integrity": "sha512-8SVPMuHqlPME/z3gqVwWY4zVXn8lqKv/pAhC57FuJ40ImXyBpmO5ukh98zB2v7Blql2FiHjHv9LVztSIqjY+MA==", - "license": "MIT", - "dependencies": { - "@types/mdast": "^3.0.0", - "@types/unist": "^2.0.0", - "unist-util-visit": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-definitions/node_modules/@types/unist": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", - "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==", - "license": "MIT" - }, - "node_modules/mdast-util-definitions/node_modules/unist-util-is": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.2.1.tgz", - "integrity": "sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==", - "license": "MIT", - "dependencies": { - "@types/unist": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-definitions/node_modules/unist-util-visit": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.2.tgz", - "integrity": "sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==", - "license": "MIT", - "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0", - "unist-util-visit-parents": "^5.1.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-definitions/node_modules/unist-util-visit-parents": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.3.tgz", - "integrity": "sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==", - "license": "MIT", - "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, "node_modules/mdast-util-from-markdown": { "version": "0.8.5", "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-0.8.5.tgz", @@ -12929,74 +12989,6 @@ "@types/unist": "*" } }, - "node_modules/mdast-util-to-hast": { - "version": "12.3.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-12.3.0.tgz", - "integrity": "sha512-pits93r8PhnIoU4Vy9bjW39M2jJ6/tdHyja9rrot9uujkN7UTU9SDnE6WNJz/IGyQk3XHX6yNNtrBH6cQzm8Hw==", - "license": "MIT", - "dependencies": { - "@types/hast": "^2.0.0", - "@types/mdast": "^3.0.0", - "mdast-util-definitions": "^5.0.0", - "micromark-util-sanitize-uri": "^1.1.0", - "trim-lines": "^3.0.0", - "unist-util-generated": "^2.0.0", - "unist-util-position": "^4.0.0", - "unist-util-visit": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-to-hast/node_modules/@types/unist": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", - "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==", - "license": "MIT" - }, - "node_modules/mdast-util-to-hast/node_modules/unist-util-is": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.2.1.tgz", - "integrity": "sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==", - "license": "MIT", - "dependencies": { - "@types/unist": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-to-hast/node_modules/unist-util-visit": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.2.tgz", - "integrity": "sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==", - "license": "MIT", - "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0", - "unist-util-visit-parents": "^5.1.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-to-hast/node_modules/unist-util-visit-parents": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.3.tgz", - "integrity": "sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==", - "license": "MIT", - "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, "node_modules/mdast-util-to-markdown": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-2.1.0.tgz", @@ -13522,22 +13514,6 @@ "micromark-util-symbol": "^2.0.0" } }, - "node_modules/micromark-util-encode": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-1.1.0.tgz", - "integrity": "sha512-EuEzTWSTAj9PA5GOAs992GzNh2dGQO52UvAbtSOMvXTxv3Criqb6IOzJUBCmEqrrXSblJIJBbFFv6zPxpreiJw==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT" - }, "node_modules/micromark-util-events-to-acorn": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/micromark-util-events-to-acorn/-/micromark-util-events-to-acorn-2.0.2.tgz", @@ -13622,31 +13598,11 @@ "micromark-util-types": "^2.0.0" } }, - "node_modules/micromark-util-sanitize-uri": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-1.2.0.tgz", - "integrity": "sha512-QO4GXv0XZfWey4pYFndLUKEAktKkG5kZTdUNaTAkzbuJxn2tNBOr+QtxR2XpWaMhbImT2dPzyLrPXLlPhph34A==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "micromark-util-character": "^1.0.0", - "micromark-util-encode": "^1.0.0", - "micromark-util-symbol": "^1.0.0" - } - }, - "node_modules/micromark-util-sanitize-uri/node_modules/micromark-util-character": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-1.2.0.tgz", - "integrity": "sha512-lXraTwcX3yH/vMDaFWCQJP1uIszLVebzUa3ZHdrgxr7KEU/9mL4mVgCpGbyhvNLNlauROiNUq7WN5u7ndbY6xg==", + "node_modules/micromark-util-subtokenize": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.0.1.tgz", + "integrity": "sha512-jZNtiFl/1aY73yS3UGQkutD0UbhTt68qnRpw2Pifmz5wV9h8gOVsN70v+Lq/f1rKaU/W8pxRe8y8Q9FX1AOe1Q==", + "dev": true, "funding": [ { "type": "GitHub Sponsors", @@ -13659,14 +13615,17 @@ ], "license": "MIT", "dependencies": { - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0" + "devlop": "^1.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" } }, - "node_modules/micromark-util-sanitize-uri/node_modules/micromark-util-symbol": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-1.1.0.tgz", - "integrity": "sha512-uEjpEYY6KMs1g7QfJ2eX1SQEV+ZT4rUD3UcF6l57acZvLNK7PBZL+ty82Z1qhK1/yXIY4bdx04FKMgR0g4IAag==", + "node_modules/micromark-util-symbol": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", + "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", + "dev": true, "funding": [ { "type": "GitHub Sponsors", @@ -13679,67 +13638,11 @@ ], "license": "MIT" }, - "node_modules/micromark-util-sanitize-uri/node_modules/micromark-util-types": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-1.1.0.tgz", - "integrity": "sha512-ukRBgie8TIAcacscVHSiddHjO4k/q3pnedmzMQ4iwDcK0FtFCohKOlFbaOL/mPgfnPsL3C1ZyxJa4sbWrBl3jg==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT" - }, - "node_modules/micromark-util-subtokenize": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.0.1.tgz", - "integrity": "sha512-jZNtiFl/1aY73yS3UGQkutD0UbhTt68qnRpw2Pifmz5wV9h8gOVsN70v+Lq/f1rKaU/W8pxRe8y8Q9FX1AOe1Q==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "devlop": "^1.0.0", - "micromark-util-chunked": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/micromark-util-symbol": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", - "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT" - }, - "node_modules/micromark-util-types": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.0.tgz", - "integrity": "sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==", - "dev": true, + "node_modules/micromark-util-types": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.0.tgz", + "integrity": "sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==", + "dev": true, "funding": [ { "type": "GitHub Sponsors", @@ -13994,6 +13897,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==", + "dev": true, "license": "MIT", "engines": { "node": ">=4" @@ -14060,7 +13964,6 @@ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", "license": "MIT", - "optional": true, "dependencies": { "whatwg-url": "^5.0.0" }, @@ -14226,6 +14129,13 @@ "set-blocking": "^2.0.0" } }, + "node_modules/nwsapi": { + "version": "2.2.13", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.13.tgz", + "integrity": "sha512-cTGB9ptp9dY9A5VbMSe7fQBcl/tt22Vcqdq8+eN93rblOuE0aCFu4aZ2vMwct/2t+lFnosm8RkQW1I0Omb1UtQ==", + "dev": true, + "license": "MIT" + }, "node_modules/object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", @@ -14508,10 +14418,17 @@ } }, "node_modules/parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", - "license": "MIT" + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.2.1.tgz", + "integrity": "sha512-BuBYQYlv1ckiPdQi/ohiivi9Sagc9JG+Ozs0r7b/0iK3sKmrb0b9FdWdBbOdx6hBCM/F9Ir82ofnBhtZOjCRPQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "entities": "^4.5.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } }, "node_modules/path-exists": { "version": "4.0.0", @@ -15160,16 +15077,6 @@ "react-is": "^16.13.1" } }, - "node_modules/property-information": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/property-information/-/property-information-6.5.0.tgz", - "integrity": "sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, "node_modules/proxy-from-env": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.0.0.tgz", @@ -15409,749 +15316,145 @@ "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", "license": "MIT" }, - "node_modules/react-markdown": { - "version": "8.0.7", - "resolved": "https://registry.npmjs.org/react-markdown/-/react-markdown-8.0.7.tgz", - "integrity": "sha512-bvWbzG4MtOU62XqBx3Xx+zB2raaFFsq4mYiAzfjXJMEz2sixgeAfraA3tvzULF02ZdOMUOKTBFFaZJDDrq+BJQ==", + "node_modules/react-pdf": { + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/react-pdf/-/react-pdf-9.1.1.tgz", + "integrity": "sha512-Cn3RTJZMqVOOCgLMRXDamLk4LPGfyB2Np3OwQAUjmHIh47EpuGW1OpAA1Z1GVDLoHx4d5duEDo/YbUkDbr4QFQ==", "license": "MIT", "dependencies": { - "@types/hast": "^2.0.0", - "@types/prop-types": "^15.0.0", - "@types/unist": "^2.0.0", - "comma-separated-tokens": "^2.0.0", - "hast-util-whitespace": "^2.0.0", - "prop-types": "^15.0.0", - "property-information": "^6.0.0", - "react-is": "^18.0.0", - "remark-parse": "^10.0.0", - "remark-rehype": "^10.0.0", - "space-separated-tokens": "^2.0.0", - "style-to-object": "^0.4.0", - "unified": "^10.0.0", - "unist-util-visit": "^4.0.0", - "vfile": "^5.0.0" + "clsx": "^2.0.0", + "dequal": "^2.0.3", + "make-cancellable-promise": "^1.3.1", + "make-event-props": "^1.6.0", + "merge-refs": "^1.3.0", + "pdfjs-dist": "4.4.168", + "tiny-invariant": "^1.0.0", + "warning": "^4.0.0" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "url": "https://github.com/wojtekmaj/react-pdf?sponsor=1" }, "peerDependencies": { - "@types/react": ">=16", - "react": ">=16" + "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "node_modules/react-markdown/node_modules/@types/unist": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", - "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==", - "license": "MIT" - }, - "node_modules/react-markdown/node_modules/mdast-util-from-markdown": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-1.3.1.tgz", - "integrity": "sha512-4xTO/M8c82qBcnQc1tgpNtubGUW/Y1tBQ1B0i5CtSoelOLKFYlElIr3bvgREYYO5iRqbMY1YuqZng0GVOI8Qww==", + "node_modules/react-redux": { + "version": "9.1.2", + "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-9.1.2.tgz", + "integrity": "sha512-0OA4dhM1W48l3uzmv6B7TXPCGmokUU4p1M44DGN2/D9a1FjVPukVjER1PcPX97jIg6aUeLq1XJo1IpfbgULn0w==", "license": "MIT", "dependencies": { - "@types/mdast": "^3.0.0", - "@types/unist": "^2.0.0", - "decode-named-character-reference": "^1.0.0", - "mdast-util-to-string": "^3.1.0", - "micromark": "^3.0.0", - "micromark-util-decode-numeric-character-reference": "^1.0.0", - "micromark-util-decode-string": "^1.0.0", - "micromark-util-normalize-identifier": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0", - "unist-util-stringify-position": "^3.0.0", - "uvu": "^0.5.0" + "@types/use-sync-external-store": "^0.0.3", + "use-sync-external-store": "^1.0.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "peerDependencies": { + "@types/react": "^18.2.25", + "react": "^18.0", + "redux": "^5.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "redux": { + "optional": true + } } }, - "node_modules/react-markdown/node_modules/mdast-util-to-string": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-3.2.0.tgz", - "integrity": "sha512-V4Zn/ncyN1QNSqSBxTrMOLpjr+IKdHl2v3KVLoWmDPscP4r9GcCi71gjgvUV1SFSKh92AjAG4peFuBl2/YgCJg==", + "node_modules/react-remove-scroll": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.6.0.tgz", + "integrity": "sha512-I2U4JVEsQenxDAKaVa3VZ/JeJZe0/2DxPWL8Tj8yLKctQJQiZM52pn/GWFpSp8dftjM3pSAHVJZscAnC/y+ySQ==", "license": "MIT", "dependencies": { - "@types/mdast": "^3.0.0" + "react-remove-scroll-bar": "^2.3.6", + "react-style-singleton": "^2.2.1", + "tslib": "^2.1.0", + "use-callback-ref": "^1.3.0", + "use-sidecar": "^1.1.2" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "node_modules/react-markdown/node_modules/micromark": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/micromark/-/micromark-3.2.0.tgz", - "integrity": "sha512-uD66tJj54JLYq0De10AhWycZWGQNUvDI55xPgk2sQM5kn1JYlhbCMTtEeT27+vAhW2FBQxLlOmS3pmA7/2z4aA==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], + "node_modules/react-remove-scroll-bar": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.6.tgz", + "integrity": "sha512-DtSYaao4mBmX+HDo5YWYdBWQwYIQQshUV/dVxFxK+KM26Wjwp1gZ6rv6OC3oujI6Bfu6Xyg3TwK533AQutsn/g==", "license": "MIT", "dependencies": { - "@types/debug": "^4.0.0", - "debug": "^4.0.0", - "decode-named-character-reference": "^1.0.0", - "micromark-core-commonmark": "^1.0.1", - "micromark-factory-space": "^1.0.0", - "micromark-util-character": "^1.0.0", - "micromark-util-chunked": "^1.0.0", - "micromark-util-combine-extensions": "^1.0.0", - "micromark-util-decode-numeric-character-reference": "^1.0.0", - "micromark-util-encode": "^1.0.0", - "micromark-util-normalize-identifier": "^1.0.0", - "micromark-util-resolve-all": "^1.0.0", - "micromark-util-sanitize-uri": "^1.0.0", - "micromark-util-subtokenize": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.1", - "uvu": "^0.5.0" - } - }, - "node_modules/react-markdown/node_modules/micromark-core-commonmark": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-1.1.0.tgz", - "integrity": "sha512-BgHO1aRbolh2hcrzL2d1La37V0Aoz73ymF8rAcKnohLy93titmv62E0gP8Hrx9PKcKrqCZ1BbLGbP3bEhoXYlw==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" + "react-style-singleton": "^2.2.1", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true } - ], + } + }, + "node_modules/react-style-singleton": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/react-style-singleton/-/react-style-singleton-2.2.1.tgz", + "integrity": "sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==", "license": "MIT", "dependencies": { - "decode-named-character-reference": "^1.0.0", - "micromark-factory-destination": "^1.0.0", - "micromark-factory-label": "^1.0.0", - "micromark-factory-space": "^1.0.0", - "micromark-factory-title": "^1.0.0", - "micromark-factory-whitespace": "^1.0.0", - "micromark-util-character": "^1.0.0", - "micromark-util-chunked": "^1.0.0", - "micromark-util-classify-character": "^1.0.0", - "micromark-util-html-tag-name": "^1.0.0", - "micromark-util-normalize-identifier": "^1.0.0", - "micromark-util-resolve-all": "^1.0.0", - "micromark-util-subtokenize": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.1", - "uvu": "^0.5.0" - } - }, - "node_modules/react-markdown/node_modules/micromark-factory-destination": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-1.1.0.tgz", - "integrity": "sha512-XaNDROBgx9SgSChd69pjiGKbV+nfHGDPVYFs5dOoDd7ZnMAE+Cuu91BCpsY8RT2NP9vo/B8pds2VQNCLiu0zhg==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" + "get-nonce": "^1.0.0", + "invariant": "^2.2.4", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true } - ], - "license": "MIT", - "dependencies": { - "micromark-util-character": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0" } }, - "node_modules/react-markdown/node_modules/micromark-factory-label": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-1.1.0.tgz", - "integrity": "sha512-OLtyez4vZo/1NjxGhcpDSbHQ+m0IIGnT8BoPamh+7jVlzLJBH98zzuCoUeMxvM6WsNeh8wx8cKvqLiPHEACn0w==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], + "node_modules/react-webcam": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/react-webcam/-/react-webcam-7.2.0.tgz", + "integrity": "sha512-xkrzYPqa1ag2DP+2Q/kLKBmCIfEx49bVdgCCCcZf88oF+0NPEbkwYk3/s/C7Zy0mhM8k+hpdNkBLzxg8H0aWcg==", "license": "MIT", - "dependencies": { - "micromark-util-character": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0", - "uvu": "^0.5.0" + "peerDependencies": { + "react": ">=16.2.0", + "react-dom": ">=16.2.0" } }, - "node_modules/react-markdown/node_modules/micromark-factory-space": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-1.1.0.tgz", - "integrity": "sha512-cRzEj7c0OL4Mw2v6nwzttyOZe8XY/Z8G0rzmWQZTBi/jjwyw/U4uqKtUORXQrR5bAZZnbTI/feRV/R7hc4jQYQ==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], + "node_modules/read-cache": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", + "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", "license": "MIT", "dependencies": { - "micromark-util-character": "^1.0.0", - "micromark-util-types": "^1.0.0" - } - }, - "node_modules/react-markdown/node_modules/micromark-factory-title": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-1.1.0.tgz", - "integrity": "sha512-J7n9R3vMmgjDOCY8NPw55jiyaQnH5kBdV2/UXCtZIpnHH3P6nHUKaH7XXEYuWwx/xUJcawa8plLBEjMPU24HzQ==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "micromark-factory-space": "^1.0.0", - "micromark-util-character": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0" - } - }, - "node_modules/react-markdown/node_modules/micromark-factory-whitespace": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-1.1.0.tgz", - "integrity": "sha512-v2WlmiymVSp5oMg+1Q0N1Lxmt6pMhIHD457whWM7/GUlEks1hI9xj5w3zbc4uuMKXGisksZk8DzP2UyGbGqNsQ==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "micromark-factory-space": "^1.0.0", - "micromark-util-character": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0" - } - }, - "node_modules/react-markdown/node_modules/micromark-util-character": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-1.2.0.tgz", - "integrity": "sha512-lXraTwcX3yH/vMDaFWCQJP1uIszLVebzUa3ZHdrgxr7KEU/9mL4mVgCpGbyhvNLNlauROiNUq7WN5u7ndbY6xg==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0" - } - }, - "node_modules/react-markdown/node_modules/micromark-util-chunked": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-1.1.0.tgz", - "integrity": "sha512-Ye01HXpkZPNcV6FiyoW2fGZDUw4Yc7vT0E9Sad83+bEDiCJ1uXu0S3mr8WLpsz3HaG3x2q0HM6CTuPdcZcluFQ==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "micromark-util-symbol": "^1.0.0" - } - }, - "node_modules/react-markdown/node_modules/micromark-util-classify-character": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-1.1.0.tgz", - "integrity": "sha512-SL0wLxtKSnklKSUplok1WQFoGhUdWYKggKUiqhX+Swala+BtptGCu5iPRc+xvzJ4PXE/hwM3FNXsfEVgoZsWbw==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "micromark-util-character": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0" - } - }, - "node_modules/react-markdown/node_modules/micromark-util-combine-extensions": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-1.1.0.tgz", - "integrity": "sha512-Q20sp4mfNf9yEqDL50WwuWZHUrCO4fEyeDCnMGmG5Pr0Cz15Uo7KBs6jq+dq0EgX4DPwwrh9m0X+zPV1ypFvUA==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "micromark-util-chunked": "^1.0.0", - "micromark-util-types": "^1.0.0" - } - }, - "node_modules/react-markdown/node_modules/micromark-util-decode-numeric-character-reference": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-1.1.0.tgz", - "integrity": "sha512-m9V0ExGv0jB1OT21mrWcuf4QhP46pH1KkfWy9ZEezqHKAxkj4mPCy3nIH1rkbdMlChLHX531eOrymlwyZIf2iw==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "micromark-util-symbol": "^1.0.0" - } - }, - "node_modules/react-markdown/node_modules/micromark-util-decode-string": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-1.1.0.tgz", - "integrity": "sha512-YphLGCK8gM1tG1bd54azwyrQRjCFcmgj2S2GoJDNnh4vYtnL38JS8M4gpxzOPNyHdNEpheyWXCTnnTDY3N+NVQ==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "decode-named-character-reference": "^1.0.0", - "micromark-util-character": "^1.0.0", - "micromark-util-decode-numeric-character-reference": "^1.0.0", - "micromark-util-symbol": "^1.0.0" - } - }, - "node_modules/react-markdown/node_modules/micromark-util-html-tag-name": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-1.2.0.tgz", - "integrity": "sha512-VTQzcuQgFUD7yYztuQFKXT49KghjtETQ+Wv/zUjGSGBioZnkA4P1XXZPT1FHeJA6RwRXSF47yvJ1tsJdoxwO+Q==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT" - }, - "node_modules/react-markdown/node_modules/micromark-util-normalize-identifier": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-1.1.0.tgz", - "integrity": "sha512-N+w5vhqrBihhjdpM8+5Xsxy71QWqGn7HYNUvch71iV2PM7+E3uWGox1Qp90loa1ephtCxG2ftRV/Conitc6P2Q==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "micromark-util-symbol": "^1.0.0" - } - }, - "node_modules/react-markdown/node_modules/micromark-util-resolve-all": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-1.1.0.tgz", - "integrity": "sha512-b/G6BTMSg+bX+xVCshPTPyAu2tmA0E4X98NSR7eIbeC6ycCqCeE7wjfDIgzEbkzdEVJXRtOG4FbEm/uGbCRouA==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "micromark-util-types": "^1.0.0" - } - }, - "node_modules/react-markdown/node_modules/micromark-util-subtokenize": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-1.1.0.tgz", - "integrity": "sha512-kUQHyzRoxvZO2PuLzMt2P/dwVsTiivCK8icYTeR+3WgbuPqfHgPPy7nFKbeqRivBvn/3N3GBiNC+JRTMSxEC7A==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "micromark-util-chunked": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0", - "uvu": "^0.5.0" - } - }, - "node_modules/react-markdown/node_modules/micromark-util-symbol": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-1.1.0.tgz", - "integrity": "sha512-uEjpEYY6KMs1g7QfJ2eX1SQEV+ZT4rUD3UcF6l57acZvLNK7PBZL+ty82Z1qhK1/yXIY4bdx04FKMgR0g4IAag==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT" - }, - "node_modules/react-markdown/node_modules/micromark-util-types": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-1.1.0.tgz", - "integrity": "sha512-ukRBgie8TIAcacscVHSiddHjO4k/q3pnedmzMQ4iwDcK0FtFCohKOlFbaOL/mPgfnPsL3C1ZyxJa4sbWrBl3jg==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT" - }, - "node_modules/react-markdown/node_modules/react-is": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", - "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", - "license": "MIT" - }, - "node_modules/react-markdown/node_modules/remark-parse": { - "version": "10.0.2", - "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-10.0.2.tgz", - "integrity": "sha512-3ydxgHa/ZQzG8LvC7jTXccARYDcRld3VfcgIIFs7bI6vbRSxJJmzgLEIIoYKyrfhaY+ujuWaf/PJiMZXoiCXgw==", - "license": "MIT", - "dependencies": { - "@types/mdast": "^3.0.0", - "mdast-util-from-markdown": "^1.0.0", - "unified": "^10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/react-markdown/node_modules/unified": { - "version": "10.1.2", - "resolved": "https://registry.npmjs.org/unified/-/unified-10.1.2.tgz", - "integrity": "sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==", - "license": "MIT", - "dependencies": { - "@types/unist": "^2.0.0", - "bail": "^2.0.0", - "extend": "^3.0.0", - "is-buffer": "^2.0.0", - "is-plain-obj": "^4.0.0", - "trough": "^2.0.0", - "vfile": "^5.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/react-markdown/node_modules/unist-util-is": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.2.1.tgz", - "integrity": "sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==", - "license": "MIT", - "dependencies": { - "@types/unist": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/react-markdown/node_modules/unist-util-stringify-position": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.3.tgz", - "integrity": "sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==", - "license": "MIT", - "dependencies": { - "@types/unist": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/react-markdown/node_modules/unist-util-visit": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.2.tgz", - "integrity": "sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==", - "license": "MIT", - "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0", - "unist-util-visit-parents": "^5.1.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/react-markdown/node_modules/unist-util-visit-parents": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.3.tgz", - "integrity": "sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==", - "license": "MIT", - "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/react-markdown/node_modules/vfile": { - "version": "5.3.7", - "resolved": "https://registry.npmjs.org/vfile/-/vfile-5.3.7.tgz", - "integrity": "sha512-r7qlzkgErKjobAmyNIkkSpizsFPYiUPuJb5pNW1RB4JcYVZhs4lIbVqk8XPk033CV/1z8ss5pkax8SuhGpcG8g==", - "license": "MIT", - "dependencies": { - "@types/unist": "^2.0.0", - "is-buffer": "^2.0.0", - "unist-util-stringify-position": "^3.0.0", - "vfile-message": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/react-markdown/node_modules/vfile-message": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-3.1.4.tgz", - "integrity": "sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==", - "license": "MIT", - "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-stringify-position": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/react-pdf": { - "version": "9.1.1", - "resolved": "https://registry.npmjs.org/react-pdf/-/react-pdf-9.1.1.tgz", - "integrity": "sha512-Cn3RTJZMqVOOCgLMRXDamLk4LPGfyB2Np3OwQAUjmHIh47EpuGW1OpAA1Z1GVDLoHx4d5duEDo/YbUkDbr4QFQ==", - "license": "MIT", - "dependencies": { - "clsx": "^2.0.0", - "dequal": "^2.0.3", - "make-cancellable-promise": "^1.3.1", - "make-event-props": "^1.6.0", - "merge-refs": "^1.3.0", - "pdfjs-dist": "4.4.168", - "tiny-invariant": "^1.0.0", - "warning": "^4.0.0" - }, - "funding": { - "url": "https://github.com/wojtekmaj/react-pdf?sponsor=1" - }, - "peerDependencies": { - "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", - "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/react-redux": { - "version": "9.1.2", - "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-9.1.2.tgz", - "integrity": "sha512-0OA4dhM1W48l3uzmv6B7TXPCGmokUU4p1M44DGN2/D9a1FjVPukVjER1PcPX97jIg6aUeLq1XJo1IpfbgULn0w==", - "license": "MIT", - "dependencies": { - "@types/use-sync-external-store": "^0.0.3", - "use-sync-external-store": "^1.0.0" - }, - "peerDependencies": { - "@types/react": "^18.2.25", - "react": "^18.0", - "redux": "^5.0.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "redux": { - "optional": true - } - } - }, - "node_modules/react-remove-scroll": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.6.0.tgz", - "integrity": "sha512-I2U4JVEsQenxDAKaVa3VZ/JeJZe0/2DxPWL8Tj8yLKctQJQiZM52pn/GWFpSp8dftjM3pSAHVJZscAnC/y+ySQ==", - "license": "MIT", - "dependencies": { - "react-remove-scroll-bar": "^2.3.6", - "react-style-singleton": "^2.2.1", - "tslib": "^2.1.0", - "use-callback-ref": "^1.3.0", - "use-sidecar": "^1.1.2" - }, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react": "^16.8.0 || ^17.0.0 || ^18.0.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/react-remove-scroll-bar": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.6.tgz", - "integrity": "sha512-DtSYaao4mBmX+HDo5YWYdBWQwYIQQshUV/dVxFxK+KM26Wjwp1gZ6rv6OC3oujI6Bfu6Xyg3TwK533AQutsn/g==", - "license": "MIT", - "dependencies": { - "react-style-singleton": "^2.2.1", - "tslib": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react": "^16.8.0 || ^17.0.0 || ^18.0.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/react-style-singleton": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/react-style-singleton/-/react-style-singleton-2.2.1.tgz", - "integrity": "sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==", - "license": "MIT", - "dependencies": { - "get-nonce": "^1.0.0", - "invariant": "^2.2.4", - "tslib": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react": "^16.8.0 || ^17.0.0 || ^18.0.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/react-webcam": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/react-webcam/-/react-webcam-7.2.0.tgz", - "integrity": "sha512-xkrzYPqa1ag2DP+2Q/kLKBmCIfEx49bVdgCCCcZf88oF+0NPEbkwYk3/s/C7Zy0mhM8k+hpdNkBLzxg8H0aWcg==", - "license": "MIT", - "peerDependencies": { - "react": ">=16.2.0", - "react-dom": ">=16.2.0" - } - }, - "node_modules/read-cache": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", - "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", - "license": "MIT", - "dependencies": { - "pify": "^2.3.0" + "pify": "^2.3.0" } }, "node_modules/read-package-json-fast": { @@ -16359,93 +15662,10 @@ "dev": true, "license": "BSD-2-Clause", "dependencies": { - "jsesc": "~3.0.2" - }, - "bin": { - "regjsparser": "bin/parser" - } - }, - "node_modules/rehype-raw": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/rehype-raw/-/rehype-raw-6.1.1.tgz", - "integrity": "sha512-d6AKtisSRtDRX4aSPsJGTfnzrX2ZkHQLE5kiUuGOeEoLpbEulFF4hj0mLPbsa+7vmguDKOVVEQdHKDSwoaIDsQ==", - "license": "MIT", - "dependencies": { - "@types/hast": "^2.0.0", - "hast-util-raw": "^7.2.0", - "unified": "^10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/rehype-raw/node_modules/@types/unist": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", - "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==", - "license": "MIT" - }, - "node_modules/rehype-raw/node_modules/unified": { - "version": "10.1.2", - "resolved": "https://registry.npmjs.org/unified/-/unified-10.1.2.tgz", - "integrity": "sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==", - "license": "MIT", - "dependencies": { - "@types/unist": "^2.0.0", - "bail": "^2.0.0", - "extend": "^3.0.0", - "is-buffer": "^2.0.0", - "is-plain-obj": "^4.0.0", - "trough": "^2.0.0", - "vfile": "^5.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/rehype-raw/node_modules/unist-util-stringify-position": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.3.tgz", - "integrity": "sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==", - "license": "MIT", - "dependencies": { - "@types/unist": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/rehype-raw/node_modules/vfile": { - "version": "5.3.7", - "resolved": "https://registry.npmjs.org/vfile/-/vfile-5.3.7.tgz", - "integrity": "sha512-r7qlzkgErKjobAmyNIkkSpizsFPYiUPuJb5pNW1RB4JcYVZhs4lIbVqk8XPk033CV/1z8ss5pkax8SuhGpcG8g==", - "license": "MIT", - "dependencies": { - "@types/unist": "^2.0.0", - "is-buffer": "^2.0.0", - "unist-util-stringify-position": "^3.0.0", - "vfile-message": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/rehype-raw/node_modules/vfile-message": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-3.1.4.tgz", - "integrity": "sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==", - "license": "MIT", - "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-stringify-position": "^3.0.0" + "jsesc": "~3.0.2" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "bin": { + "regjsparser": "bin/parser" } }, "node_modules/remark-mdx": { @@ -16618,90 +15838,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/remark-rehype": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/remark-rehype/-/remark-rehype-10.1.0.tgz", - "integrity": "sha512-EFmR5zppdBp0WQeDVZ/b66CWJipB2q2VLNFMabzDSGR66Z2fQii83G5gTBbgGEnEEA0QRussvrFHxk1HWGJskw==", - "license": "MIT", - "dependencies": { - "@types/hast": "^2.0.0", - "@types/mdast": "^3.0.0", - "mdast-util-to-hast": "^12.1.0", - "unified": "^10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-rehype/node_modules/@types/unist": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", - "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==", - "license": "MIT" - }, - "node_modules/remark-rehype/node_modules/unified": { - "version": "10.1.2", - "resolved": "https://registry.npmjs.org/unified/-/unified-10.1.2.tgz", - "integrity": "sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==", - "license": "MIT", - "dependencies": { - "@types/unist": "^2.0.0", - "bail": "^2.0.0", - "extend": "^3.0.0", - "is-buffer": "^2.0.0", - "is-plain-obj": "^4.0.0", - "trough": "^2.0.0", - "vfile": "^5.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-rehype/node_modules/unist-util-stringify-position": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.3.tgz", - "integrity": "sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==", - "license": "MIT", - "dependencies": { - "@types/unist": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-rehype/node_modules/vfile": { - "version": "5.3.7", - "resolved": "https://registry.npmjs.org/vfile/-/vfile-5.3.7.tgz", - "integrity": "sha512-r7qlzkgErKjobAmyNIkkSpizsFPYiUPuJb5pNW1RB4JcYVZhs4lIbVqk8XPk033CV/1z8ss5pkax8SuhGpcG8g==", - "license": "MIT", - "dependencies": { - "@types/unist": "^2.0.0", - "is-buffer": "^2.0.0", - "unist-util-stringify-position": "^3.0.0", - "vfile-message": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-rehype/node_modules/vfile-message": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-3.1.4.tgz", - "integrity": "sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==", - "license": "MIT", - "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-stringify-position": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, "node_modules/remark-stringify": { "version": "11.0.0", "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-11.0.0.tgz", @@ -17032,6 +16168,13 @@ "fsevents": "~2.3.2" } }, + "node_modules/rrweb-cssom": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.7.1.tgz", + "integrity": "sha512-TrEMa7JGdVm0UThDJSx7ddw5nVm3UJS9o9CCIZ72B1vSyEZoziDqBYP3XIoi/12lKrJR8rE3jeFHMok2F/Mnsg==", + "dev": true, + "license": "MIT" + }, "node_modules/run-parallel": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", @@ -17068,6 +16211,7 @@ "version": "1.8.1", "resolved": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz", "integrity": "sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==", + "dev": true, "license": "MIT", "dependencies": { "mri": "^1.1.0" @@ -17165,6 +16309,19 @@ "node": ">=18" } }, + "node_modules/saxes": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz", + "integrity": "sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==", + "dev": true, + "license": "ISC", + "dependencies": { + "xmlchars": "^2.2.0" + }, + "engines": { + "node": ">=v12.22.7" + } + }, "node_modules/scheduler": { "version": "0.23.2", "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", @@ -17199,15 +16356,6 @@ "integrity": "sha512-d7wDPgDV3DDiqulJjKiV2865wKsJ34YI+NDREbm+FySq6WuKOikwyNQcm+doLAZ1O6ltdO0SeKle2xMpN3Brgw==", "license": "MIT" }, - "node_modules/sdp-transform": { - "version": "2.14.2", - "resolved": "https://registry.npmjs.org/sdp-transform/-/sdp-transform-2.14.2.tgz", - "integrity": "sha512-icY6jVao7MfKCieyo1AyxFYm1baiM+fA00qW/KrNNVlkxHAd34riEKuEkUe4bBb3gJwLJZM+xT60Yj1QL8rHiA==", - "license": "MIT", - "bin": { - "sdp-verify": "checker.js" - } - }, "node_modules/semver": { "version": "7.6.3", "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", @@ -17548,16 +16696,6 @@ "dev": true, "license": "MIT" }, - "node_modules/space-separated-tokens": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz", - "integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, "node_modules/spdx-correct": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", @@ -17927,15 +17065,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/style-to-object": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-0.4.4.tgz", - "integrity": "sha512-HYNoHZa2GorYNyqiCaBgsxvcJIn7OHq6inEga+E6Ke3m5JkoqpQbnFssk4jwe+K7AhGa2fcha4wSOf1Kn01dMg==", - "license": "MIT", - "dependencies": { - "inline-style-parser": "0.1.1" - } - }, "node_modules/stylus-lookup": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/stylus-lookup/-/stylus-lookup-6.0.0.tgz", @@ -18077,6 +17206,13 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/symbol-tree": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", + "dev": true, + "license": "MIT" + }, "node_modules/synckit": { "version": "0.9.2", "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.9.2.tgz", @@ -18432,6 +17568,26 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, + "node_modules/tldts": { + "version": "6.1.58", + "resolved": "https://registry.npmjs.org/tldts/-/tldts-6.1.58.tgz", + "integrity": "sha512-MQJrJhjHOYGYb8DobR6Y4AdDbd4TYkyQ+KBDVc5ODzs1cbrvPpfN1IemYi9jfipJ/vR1YWvrDli0hg1y19VRoA==", + "dev": true, + "license": "MIT", + "dependencies": { + "tldts-core": "^6.1.58" + }, + "bin": { + "tldts": "bin/cli.js" + } + }, + "node_modules/tldts-core": { + "version": "6.1.58", + "resolved": "https://registry.npmjs.org/tldts-core/-/tldts-core-6.1.58.tgz", + "integrity": "sha512-dR936xmhBm7AeqHIhCWwK765gZ7dFyL+IqLSFAjJbFlUXGMLCb8i2PzlzaOuWBuplBTaBYseSb565nk/ZEM0Bg==", + "dev": true, + "license": "MIT" + }, "node_modules/tmp": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.3.tgz", @@ -18497,23 +17653,13 @@ "version": "0.0.3", "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", - "license": "MIT", - "optional": true - }, - "node_modules/trim-lines": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz", - "integrity": "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } + "license": "MIT" }, "node_modules/trough": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/trough/-/trough-2.2.0.tgz", "integrity": "sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==", + "dev": true, "license": "MIT", "funding": { "type": "github", @@ -18533,12 +17679,6 @@ "typescript": ">=4.2.0" } }, - "node_modules/ts-debounce": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/ts-debounce/-/ts-debounce-4.0.0.tgz", - "integrity": "sha512-+1iDGY6NmOGidq7i7xZGA4cm8DAa6fqdYcvO5Z6yBevH++Bdo9Qt/mN0TzHUgcCcKv1gmh9+W5dHqz8pMWbCbg==", - "license": "MIT" - }, "node_modules/ts-interface-checker": { "version": "0.1.13", "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", @@ -18719,15 +17859,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/typed-emitter": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/typed-emitter/-/typed-emitter-2.1.0.tgz", - "integrity": "sha512-g/KzbYKbH5C2vPkaXGu8DJlHrGKHLsM25Zg9WuC9pMGfuvT+X25tZQWo5fK1BjBm8+UrVE9LDCvaY0CQk+fXDA==", - "license": "MIT", - "optionalDependencies": { - "rxjs": "*" - } - }, "node_modules/typedarray": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", @@ -19032,16 +18163,6 @@ "node": ">=8" } }, - "node_modules/unist-util-generated": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/unist-util-generated/-/unist-util-generated-2.0.1.tgz", - "integrity": "sha512-qF72kLmPxAw0oN2fwpWIqbXAVyEqUzDHMsbtPvOudIlUzXYFIeQIuxXQCRCFh22B7cixvU0MG7m3MW8FTq/S+A==", - "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, "node_modules/unist-util-inspect": { "version": "8.1.0", "resolved": "https://registry.npmjs.org/unist-util-inspect/-/unist-util-inspect-8.1.0.tgz", @@ -19070,19 +18191,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/unist-util-position": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-4.0.4.tgz", - "integrity": "sha512-kUBE91efOWfIVBo8xzh/uZQ7p9ffYRtUbMRZBNFYwf0RK8koUMx6dGUfwylLOKmaT2cs4wSW96QoYUSXAyEtpg==", - "license": "MIT", - "dependencies": { - "@types/unist": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, "node_modules/unist-util-position-from-estree": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/unist-util-position-from-estree/-/unist-util-position-from-estree-2.0.0.tgz", @@ -19097,12 +18205,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/unist-util-position/node_modules/@types/unist": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", - "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==", - "license": "MIT" - }, "node_modules/unist-util-stringify-position": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz", @@ -19305,21 +18407,6 @@ "react": "^16.8.0 || ^17.0.0 || ^18.0.0" } }, - "node_modules/usehooks-ts": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/usehooks-ts/-/usehooks-ts-3.1.0.tgz", - "integrity": "sha512-bBIa7yUyPhE1BCc0GmR96VU/15l/9gP1Ch5mYdLcFBaFGQsdmXkvjV0TtOqW1yUd6VjIwDunm+flSciCQXujiw==", - "license": "MIT", - "dependencies": { - "lodash.debounce": "^4.0.8" - }, - "engines": { - "node": ">=16.15.0" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17 || ^18" - } - }, "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", @@ -19344,6 +18431,7 @@ "version": "0.5.6", "resolved": "https://registry.npmjs.org/uvu/-/uvu-0.5.6.tgz", "integrity": "sha512-+g8ENReyr8YsOc6fv/NVJs2vFdHBnBNdfE49rshrTzDWOlUx4Gq7KOS2GD8eqhy2j+Ejq29+SbKH8yjkAqXqoA==", + "dev": true, "license": "MIT", "dependencies": { "dequal": "^2.0.0", @@ -19414,69 +18502,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/vfile-location": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-4.1.0.tgz", - "integrity": "sha512-YF23YMyASIIJXpktBa4vIGLJ5Gs88UB/XePgqPmTa7cDA+JeO3yclbpheQYCHjVHBn/yePzrXuygIL+xbvRYHw==", - "license": "MIT", - "dependencies": { - "@types/unist": "^2.0.0", - "vfile": "^5.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/vfile-location/node_modules/@types/unist": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", - "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==", - "license": "MIT" - }, - "node_modules/vfile-location/node_modules/unist-util-stringify-position": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.3.tgz", - "integrity": "sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==", - "license": "MIT", - "dependencies": { - "@types/unist": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/vfile-location/node_modules/vfile": { - "version": "5.3.7", - "resolved": "https://registry.npmjs.org/vfile/-/vfile-5.3.7.tgz", - "integrity": "sha512-r7qlzkgErKjobAmyNIkkSpizsFPYiUPuJb5pNW1RB4JcYVZhs4lIbVqk8XPk033CV/1z8ss5pkax8SuhGpcG8g==", - "license": "MIT", - "dependencies": { - "@types/unist": "^2.0.0", - "is-buffer": "^2.0.0", - "unist-util-stringify-position": "^3.0.0", - "vfile-message": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/vfile-location/node_modules/vfile-message": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-3.1.4.tgz", - "integrity": "sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==", - "license": "MIT", - "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-stringify-position": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, "node_modules/vfile-message": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", @@ -20398,6 +19423,19 @@ "dev": true, "license": "MIT" }, + "node_modules/w3c-xmlserializer": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-5.0.0.tgz", + "integrity": "sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==", + "dev": true, + "license": "MIT", + "dependencies": { + "xml-name-validator": "^5.0.0" + }, + "engines": { + "node": ">=18" + } + }, "node_modules/walk-up-path": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/walk-up-path/-/walk-up-path-3.0.1.tgz", @@ -20438,22 +19476,11 @@ "defaults": "^1.0.3" } }, - "node_modules/web-namespaces": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/web-namespaces/-/web-namespaces-2.0.1.tgz", - "integrity": "sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, "node_modules/webidl-conversions": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", - "license": "BSD-2-Clause", - "optional": true + "license": "BSD-2-Clause" }, "node_modules/webpack": { "version": "5.95.0", @@ -20549,12 +19576,34 @@ "npm": ">=3.10.0" } }, + "node_modules/whatwg-encoding": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz", + "integrity": "sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "iconv-lite": "0.6.3" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/whatwg-mimetype": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz", + "integrity": "sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + } + }, "node_modules/whatwg-url": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", "license": "MIT", - "optional": true, "dependencies": { "tr46": "~0.0.3", "webidl-conversions": "^3.0.0" @@ -21233,6 +20282,28 @@ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", "license": "ISC" }, + "node_modules/ws": { + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", + "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, "node_modules/xlsx": { "version": "0.18.5", "resolved": "https://registry.npmjs.org/xlsx/-/xlsx-0.18.5.tgz", @@ -21254,6 +20325,23 @@ "node": ">=0.8" } }, + "node_modules/xml-name-validator": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-5.0.0.tgz", + "integrity": "sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18" + } + }, + "node_modules/xmlchars": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", + "dev": true, + "license": "MIT" + }, "node_modules/yallist": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", @@ -21314,6 +20402,7 @@ "version": "2.0.4", "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz", "integrity": "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==", + "dev": true, "license": "MIT", "funding": { "type": "github", diff --git a/package.json b/package.json index e779081dc4b..a84fdb9ac13 100644 --- a/package.json +++ b/package.json @@ -80,6 +80,7 @@ "hi-profiles": "^1.1.0", "i18next": "^23.11.4", "i18next-browser-languagedetector": "^7.2.1", + "i18next-http-backend": "^2.6.2", "lodash-es": "^4.17.21", "postcss-loader": "^7.3.3", "qrcode.react": "^3.1.0", @@ -90,10 +91,8 @@ "react-google-recaptcha": "^3.1.0", "react-i18next": "^15.0.2", "react-infinite-scroll-component": "^6.1.0", - "react-markdown": "^8.0.7", "react-pdf": "^9.1.0", "react-webcam": "^7.2.0", - "rehype-raw": "^6.1.1", "tailwind-merge": "^2.5.2", "tailwindcss-animate": "^1.0.7", "use-keyboard-shortcut": "^1.1.6", @@ -103,8 +102,11 @@ "@tailwindcss/container-queries": "^0.1.1", "@tailwindcss/forms": "^0.5.7", "@tailwindcss/typography": "^0.5.13", + "@trivago/prettier-plugin-sort-imports": "^4.3.0", + "@types/dompurify": "^3.0.5", "@types/events": "^3.0.3", "@types/google.maps": "^3.55.8", + "@types/jsdom": "^21.1.7", "@types/lodash-es": "^4.17.12", "@types/node": "^22.7.4", "@types/qrcode.react": "^1.0.5", @@ -119,6 +121,7 @@ "autoprefixer": "^10.4.19", "cypress-localstorage-commands": "^2.2.5", "cypress-split": "^1.23.2", + "dompurify": "^3.1.7", "dotenv": "^16.4.5", "eslint-config-prettier": "^9.1.0", "eslint-plugin-i18next": "^6.0.9", @@ -128,8 +131,10 @@ "eslint-plugin-react-hooks": "^4.6.2", "glob": "^11.0.0", "husky": "^8.0.3", + "jsdom": "^25.0.1", "lint-staged": "^13.2.3", "local-cypress": "^1.2.6", + "marked": "^14.1.3", "postcss": "^8.4.38", "prettier": "^3.3.3", "prettier-plugin-tailwindcss": "^0.6.5", @@ -168,4 +173,4 @@ "node": ">=20.12.0" }, "packageManager": "npm@10.5.0" -} \ No newline at end of file +} diff --git a/src/Locale/en.json b/public/locale/en.json similarity index 99% rename from src/Locale/en.json rename to public/locale/en.json index 9a7f4d750c2..b6ccb84de08 100644 --- a/src/Locale/en.json +++ b/public/locale/en.json @@ -873,7 +873,7 @@ "no_policy_added": "No Insurance Policy Added", "no_policy_found": "No Insurance Policy Found for this Patient", "no_presets": "No Presets", - "no_records_found": "No records found", + "no_records_found": "No Records Found", "no_remarks": "No remarks", "no_results_found": "No Results Found", "no_staff": "No staff found", diff --git a/src/Locale/hi.json b/public/locale/hi.json similarity index 99% rename from src/Locale/hi.json rename to public/locale/hi.json index 20a822323bf..0eb0cc28cfd 100644 --- a/src/Locale/hi.json +++ b/public/locale/hi.json @@ -809,4 +809,4 @@ "you_need_at_least_a_location_to_create_an_assest": "संपत्ति बनाने के लिए आपको कम से कम एक स्थान की आवश्यकता होगी।", "zoom_in": "ज़ूम इन", "zoom_out": "ज़ूम आउट" -} \ No newline at end of file +} diff --git a/src/Locale/kn.json b/public/locale/kn.json similarity index 99% rename from src/Locale/kn.json rename to public/locale/kn.json index 0fa96427b85..be18432e0ce 100644 --- a/src/Locale/kn.json +++ b/public/locale/kn.json @@ -809,4 +809,4 @@ "you_need_at_least_a_location_to_create_an_assest": "ಆಸ್ತಿಯನ್ನು ರಚಿಸಲು ನಿಮಗೆ ಕನಿಷ್ಠ ಸ್ಥಳದ ಅಗತ್ಯವಿದೆ.", "zoom_in": "ಜೂಮ್ ಇನ್", "zoom_out": "ಜೂಮ್ ಔಟ್" -} \ No newline at end of file +} diff --git a/src/Locale/ml.json b/public/locale/ml.json similarity index 99% rename from src/Locale/ml.json rename to public/locale/ml.json index b9a45ca73fb..cf381c32c0e 100644 --- a/src/Locale/ml.json +++ b/public/locale/ml.json @@ -809,4 +809,4 @@ "you_need_at_least_a_location_to_create_an_assest": "ഒരു അസസ്‌റ്റ് സൃഷ്‌ടിക്കാൻ നിങ്ങൾക്ക് ഒരു ലൊക്കേഷനെങ്കിലും ആവശ്യമാണ്.", "zoom_in": "സൂം ഇൻ ചെയ്യുക", "zoom_out": "സൂം ഔട്ട്" -} \ No newline at end of file +} diff --git a/src/Locale/mr.json b/public/locale/mr.json similarity index 100% rename from src/Locale/mr.json rename to public/locale/mr.json diff --git a/src/Locale/ta.json b/public/locale/ta.json similarity index 99% rename from src/Locale/ta.json rename to public/locale/ta.json index fb5dd0a72c8..694efd52e20 100644 --- a/src/Locale/ta.json +++ b/public/locale/ta.json @@ -809,4 +809,4 @@ "you_need_at_least_a_location_to_create_an_assest": "ஒரு அசெஸ்ட்டை உருவாக்க குறைந்தபட்சம் ஒரு இருப்பிடமாவது தேவை.", "zoom_in": "பெரிதாக்கவும்", "zoom_out": "பெரிதாக்கவும்" -} \ No newline at end of file +} diff --git a/src/App.tsx b/src/App.tsx index eea75d84c1a..62a173c8409 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -1,13 +1,16 @@ import { Suspense } from "react"; -import Routers from "./Routers"; -import Integrations from "./Integrations"; -import Loading from "@/components/Common/Loading"; -import HistoryAPIProvider from "./Providers/HistoryAPIProvider"; -import AuthUserProvider from "./Providers/AuthUserProvider"; -import PluginEngine from "./PluginEngine"; -import { FeatureFlagsProvider } from "./Utils/featureFlags"; + import { Toaster } from "@/components/ui/toaster"; +import Loading from "@/components/Common/Loading"; + +import Integrations from "@/Integrations"; +import PluginEngine from "@/PluginEngine"; +import AuthUserProvider from "@/Providers/AuthUserProvider"; +import HistoryAPIProvider from "@/Providers/HistoryAPIProvider"; +import Routers from "@/Routers"; +import { FeatureFlagsProvider } from "@/Utils/featureFlags"; + const App = () => { return ( }> diff --git a/src/CAREUI/display/Chip.tsx b/src/CAREUI/display/Chip.tsx index 14f98da8506..a2bacf8bd61 100644 --- a/src/CAREUI/display/Chip.tsx +++ b/src/CAREUI/display/Chip.tsx @@ -1,6 +1,8 @@ -import CareIcon, { IconName } from "../icons/CareIcon"; -import { ButtonVariant } from "@/components/Common/components/ButtonV2"; -import { classNames } from "../../Utils/utils"; +import CareIcon, { IconName } from "@/CAREUI/icons/CareIcon"; + +import { ButtonVariant } from "@/components/Common/ButtonV2"; + +import { classNames } from "@/Utils/utils"; interface Props { size?: "small" | "medium" | "large"; diff --git a/src/CAREUI/display/Count.tsx b/src/CAREUI/display/Count.tsx index 6b28ca4f962..1f43325d010 100644 --- a/src/CAREUI/display/Count.tsx +++ b/src/CAREUI/display/Count.tsx @@ -1,5 +1,6 @@ -import { classNames } from "../../Utils/utils"; -import CareIcon, { IconName } from "../icons/CareIcon"; +import CareIcon, { IconName } from "@/CAREUI/icons/CareIcon"; + +import { classNames } from "@/Utils/utils"; interface Props { count: number; diff --git a/src/CAREUI/display/FilterBadge.tsx b/src/CAREUI/display/FilterBadge.tsx index 0259439a4b8..3a5d40f26f2 100644 --- a/src/CAREUI/display/FilterBadge.tsx +++ b/src/CAREUI/display/FilterBadge.tsx @@ -1,4 +1,4 @@ -import CareIcon from "../icons/CareIcon"; +import CareIcon from "@/CAREUI/icons/CareIcon"; export interface FilterBadgeProps { name: string; diff --git a/src/CAREUI/display/NetworkSignal.tsx b/src/CAREUI/display/NetworkSignal.tsx index d241a37674a..6cc212f2f0a 100644 --- a/src/CAREUI/display/NetworkSignal.tsx +++ b/src/CAREUI/display/NetworkSignal.tsx @@ -1,5 +1,6 @@ -import { classNames } from "../../Utils/utils"; -import CareIcon from "../icons/CareIcon"; +import CareIcon from "@/CAREUI/icons/CareIcon"; + +import { classNames } from "@/Utils/utils"; interface Props { /** diff --git a/src/CAREUI/display/PopupModal.tsx b/src/CAREUI/display/PopupModal.tsx index b0b40f2dc7d..6410addbcc2 100644 --- a/src/CAREUI/display/PopupModal.tsx +++ b/src/CAREUI/display/PopupModal.tsx @@ -1,10 +1,13 @@ import { ReactNode, useEffect, useRef, useState } from "react"; -import { Cancel, Submit } from "@/components/Common/components/ButtonV2"; -import { classNames } from "../../Utils/utils"; import { useTranslation } from "react-i18next"; -import useBreakpoints from "@/common/hooks/useBreakpoints"; + +import { Cancel, Submit } from "@/components/Common/ButtonV2"; import DialogModal from "@/components/Common/Dialog"; +import useBreakpoints from "@/hooks/useBreakpoints"; + +import { classNames } from "@/Utils/utils"; + type Props = { show: boolean; onHide: () => void; diff --git a/src/CAREUI/display/RecordMeta.tsx b/src/CAREUI/display/RecordMeta.tsx index 2363ddbd551..6d04c9b8def 100644 --- a/src/CAREUI/display/RecordMeta.tsx +++ b/src/CAREUI/display/RecordMeta.tsx @@ -1,11 +1,13 @@ -import CareIcon from "../icons/CareIcon"; +import { ReactNode } from "react"; + +import CareIcon from "@/CAREUI/icons/CareIcon"; + import { formatDateTime, formatName, isUserOnline, relativeTime, -} from "../../Utils/utils"; -import { ReactNode } from "react"; +} from "@/Utils/utils"; interface Props { time?: string; diff --git a/src/CAREUI/display/SubHeading.tsx b/src/CAREUI/display/SubHeading.tsx index 1161ecd8e55..67072fd9e02 100644 --- a/src/CAREUI/display/SubHeading.tsx +++ b/src/CAREUI/display/SubHeading.tsx @@ -1,6 +1,7 @@ import { ReactNode } from "react"; -import CareIcon from "../icons/CareIcon"; -import RecordMeta from "./RecordMeta"; + +import RecordMeta from "@/CAREUI/display/RecordMeta"; +import CareIcon from "@/CAREUI/icons/CareIcon"; interface Props { title: ReactNode; diff --git a/src/CAREUI/display/Timeline.tsx b/src/CAREUI/display/Timeline.tsx index aa3fd06e7de..2b029ff526f 100644 --- a/src/CAREUI/display/Timeline.tsx +++ b/src/CAREUI/display/Timeline.tsx @@ -1,10 +1,12 @@ -import CareIcon, { IconName } from "../icons/CareIcon"; -import { classNames, formatName } from "../../Utils/utils"; import { createContext, useContext } from "react"; +import { useTranslation } from "react-i18next"; + +import RecordMeta from "@/CAREUI/display/RecordMeta"; +import CareIcon, { IconName } from "@/CAREUI/icons/CareIcon"; -import RecordMeta from "./RecordMeta"; import { UserBareMinimum } from "@/components/Users/models"; -import { useTranslation } from "react-i18next"; + +import { classNames, formatName } from "@/Utils/utils"; export interface TimelineEvent { type: TType; diff --git a/src/CAREUI/icons/CareIcon.tsx b/src/CAREUI/icons/CareIcon.tsx index a45117cc675..80b57085615 100644 --- a/src/CAREUI/icons/CareIcon.tsx +++ b/src/CAREUI/icons/CareIcon.tsx @@ -1,5 +1,5 @@ -import iconData from "./UniconPaths.json"; -import "./icon.css"; +import iconData from "@/CAREUI/icons/UniconPaths.json"; +import "@/CAREUI/icons/icon.css"; export type IconName = keyof typeof iconData; diff --git a/src/CAREUI/icons/Index.tsx b/src/CAREUI/icons/Index.tsx index 527bdfd0a4c..c7f553512aa 100644 --- a/src/CAREUI/icons/Index.tsx +++ b/src/CAREUI/icons/Index.tsx @@ -1,10 +1,13 @@ /* eslint-disable i18next/no-literal-string */ -import React, { useState } from "react"; -import CareIcon, { IconName } from "./CareIcon"; -import iconPaths from "./UniconPaths.json"; import { t } from "i18next"; +import React, { useState } from "react"; + +import CareIcon, { IconName } from "@/CAREUI/icons/CareIcon"; +import iconPaths from "@/CAREUI/icons/UniconPaths.json"; + import PageTitle from "@/components/Common/PageTitle"; -import { useToast } from "@/hooks/use-toast"; + +import { useToast } from "@/hooks/useToast"; const IconIndex: React.FC = () => { const { toast } = useToast(); diff --git a/src/CAREUI/interactive/FiltersSlideover.tsx b/src/CAREUI/interactive/FiltersSlideover.tsx index 4330486e9bc..959fd0621e8 100644 --- a/src/CAREUI/interactive/FiltersSlideover.tsx +++ b/src/CAREUI/interactive/FiltersSlideover.tsx @@ -1,9 +1,12 @@ -import { useTranslation } from "react-i18next"; -import useFilters from "@/common/hooks/useFilters"; -import ButtonV2 from "@/components/Common/components/ButtonV2"; -import CareIcon from "../icons/CareIcon"; -import SlideOver from "./SlideOver"; import { ReactNode } from "react"; +import { useTranslation } from "react-i18next"; + +import CareIcon from "@/CAREUI/icons/CareIcon"; +import SlideOver from "@/CAREUI/interactive/SlideOver"; + +import ButtonV2 from "@/components/Common/ButtonV2"; + +import useFilters from "@/hooks/useFilters"; type AdvancedFilter = ReturnType["advancedFilter"]; diff --git a/src/CAREUI/interactive/HumanChart.tsx b/src/CAREUI/interactive/HumanChart.tsx index 63552d28682..1f6d87f31b3 100644 --- a/src/CAREUI/interactive/HumanChart.tsx +++ b/src/CAREUI/interactive/HumanChart.tsx @@ -1,4 +1,5 @@ import { Fragment } from "react/jsx-runtime"; + import { HumanBodyPaths, HumanBodyRegion } from "@/common/constants"; type Props = { diff --git a/src/CAREUI/interactive/KeyboardShortcut.tsx b/src/CAREUI/interactive/KeyboardShortcut.tsx index 4ad46c99387..07f3af6a429 100644 --- a/src/CAREUI/interactive/KeyboardShortcut.tsx +++ b/src/CAREUI/interactive/KeyboardShortcut.tsx @@ -1,5 +1,6 @@ import useKeyboardShortcut from "use-keyboard-shortcut"; -import { classNames, isAppleDevice } from "../../Utils/utils"; + +import { classNames, isAppleDevice } from "@/Utils/utils"; interface Props { children?: React.ReactNode; diff --git a/src/CAREUI/interactive/LegendInput.tsx b/src/CAREUI/interactive/LegendInput.tsx index 83486095f7a..cb415d76ab1 100644 --- a/src/CAREUI/interactive/LegendInput.tsx +++ b/src/CAREUI/interactive/LegendInput.tsx @@ -1,8 +1,10 @@ -import CareIcon from "../icons/CareIcon"; -import { classNames } from "../../Utils/utils"; -import { RefObject, useRef, useState, useEffect } from "react"; +import { RefObject, useEffect, useRef, useState } from "react"; import { useTranslation } from "react-i18next"; +import CareIcon from "@/CAREUI/icons/CareIcon"; + +import { classNames } from "@/Utils/utils"; + type InputProps = { id?: string; name: string; diff --git a/src/CAREUI/interactive/ScrollOverlay.tsx b/src/CAREUI/interactive/ScrollOverlay.tsx index 7389f313e7c..47d3048e2aa 100644 --- a/src/CAREUI/interactive/ScrollOverlay.tsx +++ b/src/CAREUI/interactive/ScrollOverlay.tsx @@ -1,5 +1,6 @@ -import useVisibility from "../../Utils/useVisibility"; -import { classNames } from "../../Utils/utils"; +import useVisibility from "@/hooks/useVisibility"; + +import { classNames } from "@/Utils/utils"; interface Props { className?: string; diff --git a/src/CAREUI/interactive/SlideOver.tsx b/src/CAREUI/interactive/SlideOver.tsx index 78982efc39d..d979be77f99 100644 --- a/src/CAREUI/interactive/SlideOver.tsx +++ b/src/CAREUI/interactive/SlideOver.tsx @@ -4,8 +4,10 @@ import { Transition, TransitionChild, } from "@headlessui/react"; -import { classNames } from "../../Utils/utils"; -import CareIcon from "../icons/CareIcon"; + +import CareIcon from "@/CAREUI/icons/CareIcon"; + +import { classNames } from "@/Utils/utils"; export type SlideFromEdges = "left" | "top" | "right" | "bottom"; diff --git a/src/CAREUI/interactive/Switch.tsx b/src/CAREUI/interactive/Switch.tsx index 495722a0f39..a30f85fbc14 100644 --- a/src/CAREUI/interactive/Switch.tsx +++ b/src/CAREUI/interactive/Switch.tsx @@ -1,4 +1,4 @@ -import { classNames } from "../../Utils/utils"; +import { classNames } from "@/Utils/utils"; interface Props { tabs: Record; diff --git a/src/CAREUI/interactive/Zoom.tsx b/src/CAREUI/interactive/Zoom.tsx index c88412dca1e..0d6513efbba 100644 --- a/src/CAREUI/interactive/Zoom.tsx +++ b/src/CAREUI/interactive/Zoom.tsx @@ -1,6 +1,8 @@ -import { createContext, ReactNode, useContext, useState } from "react"; -import ButtonV2 from "@/components/Common/components/ButtonV2"; -import CareIcon from "../icons/CareIcon"; +import { ReactNode, createContext, useContext, useState } from "react"; + +import CareIcon from "@/CAREUI/icons/CareIcon"; + +import ButtonV2 from "@/components/Common/ButtonV2"; type ProviderValue = { scale: number; diff --git a/src/CAREUI/misc/AuthorizedChild.tsx b/src/CAREUI/misc/AuthorizedChild.tsx index e71a4f64b5e..5805ed5f44c 100644 --- a/src/CAREUI/misc/AuthorizedChild.tsx +++ b/src/CAREUI/misc/AuthorizedChild.tsx @@ -1,8 +1,10 @@ import { ReactNode } from "react"; -import useAuthUser from "@/common/hooks/useAuthUser"; -import { useIsAuthorized } from "@/common/hooks/useIsAuthorized"; -import useSlug from "@/common/hooks/useSlug"; -import { AuthorizedForCB } from "../../Utils/AuthorizeFor"; + +import useAuthUser from "@/hooks/useAuthUser"; +import { useIsAuthorized } from "@/hooks/useIsAuthorized"; +import useSlug from "@/hooks/useSlug"; + +import { AuthorizedForCB } from "@/Utils/AuthorizeFor"; interface Props { children: (value: { isAuthorized: boolean }) => JSX.Element; diff --git a/src/CAREUI/misc/PaginatedList.tsx b/src/CAREUI/misc/PaginatedList.tsx index 93a3685b394..1c5f9db99a2 100644 --- a/src/CAREUI/misc/PaginatedList.tsx +++ b/src/CAREUI/misc/PaginatedList.tsx @@ -1,13 +1,14 @@ import { createContext, useContext, useEffect, useState } from "react"; -import { PaginatedResponse, QueryRoute } from "../../Utils/request/types"; -import useQuery, { QueryOptions } from "../../Utils/request/useQuery"; -import ButtonV2, { - CommonButtonProps, -} from "@/components/Common/components/ButtonV2"; -import CareIcon from "../icons/CareIcon"; -import { classNames } from "../../Utils/utils"; + +import CareIcon from "@/CAREUI/icons/CareIcon"; + +import ButtonV2, { CommonButtonProps } from "@/components/Common/ButtonV2"; import Pagination from "@/components/Common/Pagination"; +import { PaginatedResponse, QueryRoute } from "@/Utils/request/types"; +import useQuery, { QueryOptions } from "@/Utils/request/useQuery"; +import { classNames } from "@/Utils/utils"; + const DEFAULT_PER_PAGE_LIMIT = 14; interface PaginatedListContext diff --git a/src/CAREUI/misc/PrintPreview.tsx b/src/CAREUI/misc/PrintPreview.tsx index 9efa11cc01b..53eda1339ac 100644 --- a/src/CAREUI/misc/PrintPreview.tsx +++ b/src/CAREUI/misc/PrintPreview.tsx @@ -1,11 +1,19 @@ import { ReactNode } from "react"; -import ButtonV2 from "@/components/Common/components/ButtonV2"; -import CareIcon from "../icons/CareIcon"; -import { classNames } from "../../Utils/utils"; -import Page from "@/components/Common/components/Page"; -import useBreakpoints from "@/common/hooks/useBreakpoints"; import { useTranslation } from "react-i18next"; -import { ZoomControls, ZoomProvider, ZoomTransform } from "../interactive/Zoom"; + +import CareIcon from "@/CAREUI/icons/CareIcon"; +import { + ZoomControls, + ZoomProvider, + ZoomTransform, +} from "@/CAREUI/interactive/Zoom"; + +import ButtonV2 from "@/components/Common/ButtonV2"; +import Page from "@/components/Common/Page"; + +import useBreakpoints from "@/hooks/useBreakpoints"; + +import { classNames } from "@/Utils/utils"; type Props = { children: ReactNode; diff --git a/src/Integrations/Plausible.tsx b/src/Integrations/Plausible.tsx index e6c4d2fa42a..dfbb2942e5d 100644 --- a/src/Integrations/Plausible.tsx +++ b/src/Integrations/Plausible.tsx @@ -1,7 +1,8 @@ +import careConfig from "@careConfig"; import { useLocationChange } from "raviger"; -import Script from "@/components/Common/Script"; import { useEffect } from "react"; -import careConfig from "@careConfig"; + +import Script from "@/components/Common/Script"; export default function Plausible() { useLocationChange(() => { diff --git a/src/Integrations/index.tsx b/src/Integrations/index.tsx index 9b2b1e156fd..5582a58bc8e 100644 --- a/src/Integrations/index.tsx +++ b/src/Integrations/index.tsx @@ -1,5 +1,5 @@ -import Sentry from "./Sentry"; -import Plausible from "./Plausible"; +import Plausible from "@/Integrations/Plausible"; +import Sentry from "@/Integrations/Sentry"; const Integrations = { Sentry, Plausible }; diff --git a/src/Locale/TRANSLATION_CONTRIBUTION.md b/src/Locale/TRANSLATION_CONTRIBUTION.md deleted file mode 100644 index f3150ae8fc0..00000000000 --- a/src/Locale/TRANSLATION_CONTRIBUTION.md +++ /dev/null @@ -1,13 +0,0 @@ -# Contributing Translations - -## Adding a new language - -- Open the Terminal and `cd` to `care_fe/src/Locale` -- Run the command `node update_locale.js ` - Eg: `node update_locale.js ml` for Malayalam -- The command will create a directory with default locale files. -- After it's done, add the new language to `care_fe/src/Locale/config.ts` file. - -## Note - -⚠ - Try to separate the translation files for each module like `Facility`, `Patient` and more. Don't dump all the keys in one JSON file. diff --git a/src/Locale/update_locale.js b/src/Locale/update_locale.js index 61f5e32cf84..204fef3a80a 100644 --- a/src/Locale/update_locale.js +++ b/src/Locale/update_locale.js @@ -1,11 +1,10 @@ /* eslint-disable no-undef */ - import { existsSync, mkdirSync, + readFileSync, readdirSync, writeFileSync, - readFileSync, } from "fs"; const DEFAULT_LOCALE = "en"; diff --git a/src/PluginEngine.tsx b/src/PluginEngine.tsx index a56fe21b5b8..9f2fc0113fb 100644 --- a/src/PluginEngine.tsx +++ b/src/PluginEngine.tsx @@ -1,9 +1,12 @@ -import { CareAppsContext, useCareApps } from "@/common/hooks/useCareApps"; /* eslint-disable i18next/no-literal-string */ import React, { Suspense } from "react"; -import { SupportedPluginComponents, pluginMap } from "./pluginTypes"; import ErrorBoundary from "@/components/Common/ErrorBoundary"; +import Loading from "@/components/Common/Loading"; + +import { CareAppsContext, useCareApps } from "@/hooks/useCareApps"; + +import { SupportedPluginComponents, pluginMap } from "@/pluginTypes"; export default function PluginEngine({ children, @@ -11,7 +14,7 @@ export default function PluginEngine({ children: React.ReactNode; }) { return ( - Loading plugins...}> + }> diff --git a/src/Providers/AuthUserProvider.tsx b/src/Providers/AuthUserProvider.tsx index 43263b98dab..1e4545f64a2 100644 --- a/src/Providers/AuthUserProvider.tsx +++ b/src/Providers/AuthUserProvider.tsx @@ -1,12 +1,16 @@ +import careConfig from "@careConfig"; +import { navigate } from "raviger"; import { useCallback, useEffect } from "react"; -import { AuthUserContext } from "@/common/hooks/useAuthUser"; + import Loading from "@/components/Common/Loading"; -import routes from "../Redux/api"; -import useQuery from "../Utils/request/useQuery"; + +import { AuthUserContext } from "@/hooks/useAuthUser"; + import { LocalStorageKeys } from "@/common/constants"; -import request from "../Utils/request/request"; -import { navigate } from "raviger"; -import careConfig from "@careConfig"; + +import routes from "@/Utils/request/api"; +import request from "@/Utils/request/request"; +import useQuery from "@/Utils/request/useQuery"; interface Props { children: React.ReactNode; diff --git a/src/Providers/HistoryAPIProvider.tsx b/src/Providers/HistoryAPIProvider.tsx index 0f60437360d..20077733b01 100644 --- a/src/Providers/HistoryAPIProvider.tsx +++ b/src/Providers/HistoryAPIProvider.tsx @@ -1,5 +1,5 @@ import { useLocationChange } from "raviger"; -import { createContext, ReactNode, useState } from "react"; +import { ReactNode, createContext, useState } from "react"; export const HistoryContext = createContext([]); // eslint-disable-next-line @typescript-eslint/no-empty-function diff --git a/src/Routers/AppRouter.tsx b/src/Routers/AppRouter.tsx index 7275c7c2860..c8f6fbec83e 100644 --- a/src/Routers/AppRouter.tsx +++ b/src/Routers/AppRouter.tsx @@ -1,30 +1,34 @@ +import careConfig from "@careConfig"; +import { Redirect, usePath, useRedirect, useRoutes } from "raviger"; +import { useEffect, useState } from "react"; + +import IconIndex from "@/CAREUI/icons/Index"; + +import ABDMFacilityRecords from "@/components/ABDM/ABDMFacilityRecords"; +import HealthInformation from "@/components/ABDM/HealthInformation"; import { DesktopSidebar, MobileSidebar, SIDEBAR_SHRINK_PREFERENCE_KEY, SidebarShrinkContext, } from "@/components/Common/Sidebar/Sidebar"; -import { Redirect, usePath, useRedirect, useRoutes } from "raviger"; -import { useEffect, useState } from "react"; - -import ABDMFacilityRecords from "@/components/ABDM/ABDMFacilityRecords"; -import AssetRoutes from "./routes/AssetRoutes"; -import { BLACKLISTED_PATHS } from "@/common/constants"; -import ConsultationRoutes from "./routes/ConsultationRoutes"; import Error404 from "@/components/ErrorPages/404"; -import FacilityRoutes from "./routes/FacilityRoutes"; -import HealthInformation from "@/components/ABDM/HealthInformation"; -import IconIndex from "../CAREUI/icons/Index"; -import { NoticeBoard } from "@/components/Notifications/NoticeBoard"; -import PatientRoutes from "./routes/PatientRoutes"; -import ResourceRoutes from "./routes/ResourceRoutes"; -import SampleRoutes from "./routes/SampleRoutes"; import SessionExpired from "@/components/ErrorPages/SessionExpired"; -import ShiftingRoutes from "./routes/ShiftingRoutes"; +import { NoticeBoard } from "@/components/Notifications/NoticeBoard"; import ShowPushNotification from "@/components/Notifications/ShowPushNotification"; -import UserRoutes from "./routes/UserRoutes"; -import careConfig from "@careConfig"; -import { usePluginRoutes } from "@/common/hooks/useCareApps"; + +import { usePluginRoutes } from "@/hooks/useCareApps"; + +import { BLACKLISTED_PATHS } from "@/common/constants"; + +import AssetRoutes from "@/Routers/routes/AssetRoutes"; +import ConsultationRoutes from "@/Routers/routes/ConsultationRoutes"; +import FacilityRoutes from "@/Routers/routes/FacilityRoutes"; +import PatientRoutes from "@/Routers/routes/PatientRoutes"; +import ResourceRoutes from "@/Routers/routes/ResourceRoutes"; +import SampleRoutes from "@/Routers/routes/SampleRoutes"; +import ShiftingRoutes from "@/Routers/routes/ShiftingRoutes"; +import UserRoutes from "@/Routers/routes/UserRoutes"; export type RouteParams = T extends `${string}:${infer Param}/${infer Rest}` diff --git a/src/Routers/SessionRouter.tsx b/src/Routers/SessionRouter.tsx index f6556b38c39..8982a629ba0 100644 --- a/src/Routers/SessionRouter.tsx +++ b/src/Routers/SessionRouter.tsx @@ -1,14 +1,20 @@ -import { Login, ResetPassword } from "@/components/Auth"; import { useRoutes } from "raviger"; -import SessionExpired from "@/components/ErrorPages/SessionExpired"; +import { lazy } from "react"; + +import Login from "@/components/Auth/Login"; +import ResetPassword from "@/components/Auth/ResetPassword"; import InvalidReset from "@/components/ErrorPages/InvalidReset"; -import LicensesPage from "@/components/Licenses/LicensesPage"; +import SessionExpired from "@/components/ErrorPages/SessionExpired"; + +const LicensesPage = lazy(() => import("@/components/Licenses/LicensesPage")); const routes = { "/": () => , "/login": () => , "/forgot-password": () => , - "/password_reset/:token": ({ token }: any) => , + "/password_reset/:token": ({ token }: { token: string }) => ( + + ), "/session-expired": () => , "/licenses": () => , "/invalid-reset": () => , diff --git a/src/Routers/index.tsx b/src/Routers/index.tsx index 8a27df7b59d..e1b507dbde0 100644 --- a/src/Routers/index.tsx +++ b/src/Routers/index.tsx @@ -1,5 +1,5 @@ -import SessionRouter from "./SessionRouter"; -import AppRouter from "./AppRouter"; +import AppRouter from "@/Routers/AppRouter"; +import SessionRouter from "@/Routers/SessionRouter"; const routers = { SessionRouter, AppRouter }; diff --git a/src/Routers/routes/AssetRoutes.tsx b/src/Routers/routes/AssetRoutes.tsx index 4c32df55069..8a54e465c79 100644 --- a/src/Routers/routes/AssetRoutes.tsx +++ b/src/Routers/routes/AssetRoutes.tsx @@ -2,7 +2,8 @@ import AssetConfigure from "@/components/Assets/AssetConfigure"; import AssetManage from "@/components/Assets/AssetManage"; import AssetsList from "@/components/Assets/AssetsList"; import AssetCreate from "@/components/Facility/AssetCreate"; -import { AppRoutes } from "../AppRouter"; + +import { AppRoutes } from "@/Routers/AppRouter"; const AssetRoutes: AppRoutes = { "/assets": () => , diff --git a/src/Routers/routes/ConsultationRoutes.tsx b/src/Routers/routes/ConsultationRoutes.tsx index bb804bd7613..2d283df27d7 100644 --- a/src/Routers/routes/ConsultationRoutes.tsx +++ b/src/Routers/routes/ConsultationRoutes.tsx @@ -1,19 +1,20 @@ +import { ConsultationDetails } from "@/components/Facility/ConsultationDetails"; +import ConsultationDoctorNotes from "@/components/Facility/ConsultationDoctorNotes"; import { ConsultationForm } from "@/components/Facility/ConsultationForm"; import Investigation from "@/components/Facility/Investigations"; +import InvestigationPrintPreview from "@/components/Facility/Investigations/InvestigationsPrintPreview"; import ShowInvestigation from "@/components/Facility/Investigations/ShowInvestigation"; -import ManagePrescriptions from "@/components/Medicine/ManagePrescriptions"; -import { DailyRoundListDetails } from "@/components/Patient/DailyRoundListDetails"; -import { DailyRounds } from "@/components/Patient/DailyRounds"; -import { ConsultationDetails } from "@/components/Facility/ConsultationDetails"; import TreatmentSummary from "@/components/Facility/TreatmentSummary"; -import ConsultationDoctorNotes from "@/components/Facility/ConsultationDoctorNotes"; -import PatientConsentRecords from "@/components/Patient/PatientConsentRecords"; import CriticalCareEditor from "@/components/LogUpdate/CriticalCareEditor"; -import PrescriptionsPrintPreview from "@/components/Medicine/PrintPreview"; import CriticalCarePreview from "@/components/LogUpdate/CriticalCarePreview"; +import ManagePrescriptions from "@/components/Medicine/ManagePrescriptions"; +import PrescriptionsPrintPreview from "@/components/Medicine/PrintPreview"; +import { DailyRoundListDetails } from "@/components/Patient/DailyRoundListDetails"; +import { DailyRounds } from "@/components/Patient/DailyRounds"; import FileUploadPage from "@/components/Patient/FileUploadPage"; -import InvestigationPrintPreview from "@/components/Facility/Investigations/InvestigationsPrintPreview"; -import { AppRoutes } from "../AppRouter"; +import PatientConsentRecords from "@/components/Patient/PatientConsentRecords"; + +import { AppRoutes } from "@/Routers/AppRouter"; const consultationRoutes: AppRoutes = { "/facility/:facilityId/patient/:patientId/consultation": ({ diff --git a/src/Routers/routes/FacilityInventoryRoutes.tsx b/src/Routers/routes/FacilityInventoryRoutes.tsx index 3de193ffe08..e096460ed46 100644 --- a/src/Routers/routes/FacilityInventoryRoutes.tsx +++ b/src/Routers/routes/FacilityInventoryRoutes.tsx @@ -1,9 +1,11 @@ import { Redirect } from "raviger"; + import InventoryList from "@/components/Facility/InventoryList"; import InventoryLog from "@/components/Facility/InventoryLog"; import MinQuantityList from "@/components/Facility/MinQuantityList"; import { SetInventoryForm } from "@/components/Facility/SetInventoryForm"; -import { AppRoutes } from "../AppRouter"; + +import { AppRoutes } from "@/Routers/AppRouter"; const FacilityInventoryRoutes: AppRoutes = { "/facility/:facilityId/inventory": ({ facilityId }) => ( diff --git a/src/Routers/routes/FacilityLocationRoutes.tsx b/src/Routers/routes/FacilityLocationRoutes.tsx index e2f574664ce..c142ed5ed01 100644 --- a/src/Routers/routes/FacilityLocationRoutes.tsx +++ b/src/Routers/routes/FacilityLocationRoutes.tsx @@ -1,12 +1,13 @@ +import CentralLiveMonitoring from "@/components/CameraFeed/CentralLiveMonitoring"; import { AddBedForm } from "@/components/Facility/AddBedForm"; import { AddInventoryForm } from "@/components/Facility/AddInventoryForm"; import { AddLocationForm } from "@/components/Facility/AddLocationForm"; import { BedManagement } from "@/components/Facility/BedManagement"; import LocationManagement from "@/components/Facility/LocationManagement"; -import CentralLiveMonitoring from "@/components/CameraFeed/CentralLiveMonitoring"; -import { AuthorizeUserRoute } from "../../Utils/AuthorizeFor"; -import { CameraFeedPermittedUserTypes } from "../../Utils/permissions"; -import { AppRoutes } from "../AppRouter"; + +import { AppRoutes } from "@/Routers/AppRouter"; +import { AuthorizeUserRoute } from "@/Utils/AuthorizeFor"; +import { CameraFeedPermittedUserTypes } from "@/Utils/permissions"; const FacilityLocationRoutes: AppRoutes = { "/facility/:facilityId/location": ({ facilityId }) => ( diff --git a/src/Routers/routes/FacilityRoutes.tsx b/src/Routers/routes/FacilityRoutes.tsx index e3b787abd9f..8c942518996 100644 --- a/src/Routers/routes/FacilityRoutes.tsx +++ b/src/Routers/routes/FacilityRoutes.tsx @@ -1,15 +1,16 @@ +import CentralNursingStation from "@/components/Facility/CentralNursingStation"; +import DischargedPatientsList from "@/components/Facility/DischargedPatientsList"; import { FacilityConfigure } from "@/components/Facility/FacilityConfigure"; import { FacilityCreate } from "@/components/Facility/FacilityCreate"; import { FacilityHome } from "@/components/Facility/FacilityHome"; -import FacilityUsers from "@/components/Facility/FacilityUsers"; import { FacilityList } from "@/components/Facility/FacilityList"; +import FacilityUsers from "@/components/Facility/FacilityUsers"; import { TriageForm } from "@/components/Facility/TriageForm"; import ResourceCreate from "@/components/Resource/ResourceCreate"; -import CentralNursingStation from "@/components/Facility/CentralNursingStation"; -import FacilityLocationRoutes from "./FacilityLocationRoutes"; -import FacilityInventoryRoutes from "./FacilityInventoryRoutes"; -import DischargedPatientsList from "@/components/Facility/DischargedPatientsList"; -import { AppRoutes } from "../AppRouter"; + +import { AppRoutes } from "@/Routers/AppRouter"; +import FacilityInventoryRoutes from "@/Routers/routes/FacilityInventoryRoutes"; +import FacilityLocationRoutes from "@/Routers/routes/FacilityLocationRoutes"; const FacilityRoutes: AppRoutes = { "/facility": () => , diff --git a/src/Routers/routes/PatientRoutes.tsx b/src/Routers/routes/PatientRoutes.tsx index 8f9d8bd460f..0a46190cfd1 100644 --- a/src/Routers/routes/PatientRoutes.tsx +++ b/src/Routers/routes/PatientRoutes.tsx @@ -1,12 +1,13 @@ +import DeathReport from "@/components/DeathReport/DeathReport"; import InvestigationReports from "@/components/Facility/Investigations/Reports"; +import FileUploadPage from "@/components/Patient/FileUploadPage"; +import { InsuranceDetails } from "@/components/Patient/InsuranceDetails"; import { PatientManager } from "@/components/Patient/ManagePatients"; import { PatientHome } from "@/components/Patient/PatientHome"; import PatientNotes from "@/components/Patient/PatientNotes"; import { PatientRegister } from "@/components/Patient/PatientRegister"; -import DeathReport from "@/components/DeathReport/DeathReport"; -import { InsuranceDetails } from "@/components/Patient/InsuranceDetails"; -import FileUploadPage from "@/components/Patient/FileUploadPage"; -import { AppRoutes } from "../AppRouter"; + +import { AppRoutes } from "@/Routers/AppRouter"; const PatientRoutes: AppRoutes = { "/patients": () => , diff --git a/src/Routers/routes/ResourceRoutes.tsx b/src/Routers/routes/ResourceRoutes.tsx index 24e60ec5ad9..547aeb53610 100644 --- a/src/Routers/routes/ResourceRoutes.tsx +++ b/src/Routers/routes/ResourceRoutes.tsx @@ -1,10 +1,12 @@ -import ResourceDetails from "@/components/Resource/ResourceDetails"; -import { ResourceDetailsUpdate } from "@/components/Resource/ResourceDetailsUpdate"; import { Redirect } from "raviger"; -import { AppRoutes } from "../AppRouter"; + import BoardView from "@/components/Resource/ResourceBoard"; +import ResourceDetails from "@/components/Resource/ResourceDetails"; +import { ResourceDetailsUpdate } from "@/components/Resource/ResourceDetailsUpdate"; import ListView from "@/components/Resource/ResourceList"; +import { AppRoutes } from "@/Routers/AppRouter"; + const getDefaultView = () => localStorage.getItem("defaultResourceView") === "list" ? "list" : "board"; diff --git a/src/Routers/routes/SampleRoutes.tsx b/src/Routers/routes/SampleRoutes.tsx index a09f5603a62..d9d3162cdd9 100644 --- a/src/Routers/routes/SampleRoutes.tsx +++ b/src/Routers/routes/SampleRoutes.tsx @@ -2,7 +2,8 @@ import { SampleDetails } from "@/components/Patient/SampleDetails"; import SampleReport from "@/components/Patient/SamplePreview"; import { SampleTest } from "@/components/Patient/SampleTest"; import SampleViewAdmin from "@/components/Patient/SampleViewAdmin"; -import { AppRoutes } from "../AppRouter"; + +import { AppRoutes } from "@/Routers/AppRouter"; const SampleRoutes: AppRoutes = { "/sample": () => , diff --git a/src/Routers/routes/ShiftingRoutes.tsx b/src/Routers/routes/ShiftingRoutes.tsx index b5448cc527f..68131390f50 100644 --- a/src/Routers/routes/ShiftingRoutes.tsx +++ b/src/Routers/routes/ShiftingRoutes.tsx @@ -1,10 +1,12 @@ +import { Redirect } from "raviger"; + import { ShiftCreate } from "@/components/Patient/ShiftCreate"; import ShiftDetails from "@/components/Shifting/ShiftDetails"; import { ShiftDetailsUpdate } from "@/components/Shifting/ShiftDetailsUpdate"; -import ListView from "@/components/Shifting/ShiftingList"; import BoardView from "@/components/Shifting/ShiftingBoard"; -import { Redirect } from "raviger"; -import { AppRoutes } from "../AppRouter"; +import ListView from "@/components/Shifting/ShiftingList"; + +import { AppRoutes } from "@/Routers/AppRouter"; const getDefaultView = () => localStorage.getItem("defaultShiftView") === "list" ? "list" : "board"; diff --git a/src/Routers/routes/UserRoutes.tsx b/src/Routers/routes/UserRoutes.tsx index d7542c15a15..ff7212a02e2 100644 --- a/src/Routers/routes/UserRoutes.tsx +++ b/src/Routers/routes/UserRoutes.tsx @@ -1,7 +1,8 @@ import ManageUsers from "@/components/Users/ManageUsers"; import { UserAdd } from "@/components/Users/UserAdd"; import UserProfile from "@/components/Users/UserProfile"; -import { AppRoutes } from "../AppRouter"; + +import { AppRoutes } from "@/Routers/AppRouter"; const UserRoutes: AppRoutes = { "/users": () => , diff --git a/src/Utils/AuthorizeFor.tsx b/src/Utils/AuthorizeFor.tsx index 6e1e048ee4e..6324dd9909e 100644 --- a/src/Utils/AuthorizeFor.tsx +++ b/src/Utils/AuthorizeFor.tsx @@ -1,8 +1,11 @@ -import { UserRole } from "@/common/constants"; import React from "react"; -import useAuthUser from "@/common/hooks/useAuthUser"; + import Error404 from "@/components/ErrorPages/404"; +import useAuthUser from "@/hooks/useAuthUser"; + +import { UserRole } from "@/common/constants"; + export type AuthorizedForCB = (userType: UserRole) => boolean; interface AuthorizeUserRouteProps { diff --git a/src/Utils/AutoSave.tsx b/src/Utils/AutoSave.tsx index 45217dd51b4..f621a58802d 100644 --- a/src/Utils/AutoSave.tsx +++ b/src/Utils/AutoSave.tsx @@ -1,16 +1,20 @@ import React, { - useReducer, + Dispatch, + ReactNode, + useContext, useEffect, + useReducer, useRef, useState, - Dispatch, - useContext, - ReactNode, } from "react"; + +import CareIcon from "@/CAREUI/icons/CareIcon"; + import { Button } from "@/components/ui/button"; + import { FormAction, FormReducer, FormState } from "@/components/Form/Utils"; -import { relativeTime } from "./utils"; -import CareIcon from "@/CAREUI/icons/CareIcon"; + +import { relativeTime } from "@/Utils/utils"; type Draft = { timestamp: number; diff --git a/src/Utils/Notifications.js b/src/Utils/Notifications.js index ce57ab5edd9..5b3ecdf143c 100644 --- a/src/Utils/Notifications.js +++ b/src/Utils/Notifications.js @@ -1,6 +1,6 @@ -import { alert, Stack, defaultModules } from "@pnotify/core"; +import { Stack, alert, defaultModules } from "@pnotify/core"; import * as PNotifyMobile from "@pnotify/mobile"; -import { startCase, camelCase } from "lodash-es"; +import { camelCase, startCase } from "lodash-es"; defaultModules.set(PNotifyMobile, {}); diff --git a/src/Utils/dayjs.ts b/src/Utils/dayjs.ts index b70c2fc044b..a053cd1ffbb 100644 --- a/src/Utils/dayjs.ts +++ b/src/Utils/dayjs.ts @@ -1,8 +1,8 @@ import dayjs from "dayjs"; -import relativeTime from "dayjs/plugin/relativeTime"; -import duration from "dayjs/plugin/duration"; import customParseFormat from "dayjs/plugin/customParseFormat"; +import duration from "dayjs/plugin/duration"; import isBetween from "dayjs/plugin/isBetween"; +import relativeTime from "dayjs/plugin/relativeTime"; dayjs.extend(relativeTime); dayjs.extend(duration); diff --git a/src/Utils/featureFlags.tsx b/src/Utils/featureFlags.tsx index 7a1fd85e28b..a475bee57d6 100644 --- a/src/Utils/featureFlags.tsx +++ b/src/Utils/featureFlags.tsx @@ -1,9 +1,12 @@ -import { createContext, useContext, useState, useEffect } from "react"; -import useQuery from "./request/useQuery"; -import routes from "../Redux/api"; -import useAuthUser from "@/common/hooks/useAuthUser"; +import { createContext, useContext, useEffect, useState } from "react"; + import { FacilityModel } from "@/components/Facility/models"; +import useAuthUser from "@/hooks/useAuthUser"; + +import routes from "@/Utils/request/api"; +import useQuery from "@/Utils/request/useQuery"; + export type FeatureFlag = "SCRIBE_ENABLED"; // "HCX_ENABLED" | "ABDM_ENABLED" | export interface FeatureFlagsResponse { diff --git a/src/Utils/permissions.ts b/src/Utils/permissions.ts index 3037f23c9f7..35f12715eff 100644 --- a/src/Utils/permissions.ts +++ b/src/Utils/permissions.ts @@ -1,6 +1,7 @@ -import { USER_TYPES, UserRole } from "@/common/constants"; import { UserModel } from "@/components/Users/models"; +import { USER_TYPES, UserRole } from "@/common/constants"; + export const showUserDelete = (authUser: UserModel, targetUser: UserModel) => { // Auth user should be higher in hierarchy than target user if ( diff --git a/src/Redux/api.tsx b/src/Utils/request/api.tsx similarity index 99% rename from src/Redux/api.tsx rename to src/Utils/request/api.tsx index a2794e35203..441b9a3d8c8 100644 --- a/src/Redux/api.tsx +++ b/src/Utils/request/api.tsx @@ -1,7 +1,13 @@ +import { AbhaNumberModel } from "@/components/ABDM/types/abha"; import { ConsentRequestModel, CreateConsentTBody, } from "@/components/ABDM/types/consent"; +import { + IHealthFacility, + IcreateHealthFacilityTBody, + IpartialUpdateHealthFacilityTBody, +} from "@/components/ABDM/types/health-facility"; import { HealthInformationModel } from "@/components/ABDM/types/health-information"; import { AssetBedBody, @@ -14,6 +20,22 @@ import { AvailabilityRecord, PatientAssetBed, } from "@/components/Assets/AssetTypes"; +import { ICD11DiagnosisModel } from "@/components/Diagnosis/types"; +import { + IDeleteBedCapacity, + ILocalBodies, + ILocalBodyByDistrict, +} from "@/components/ExternalResult/models"; +import { + EventGeneric, + type Type, +} from "@/components/Facility/ConsultationDetails/Events/types"; +import { + InvestigationGroup, + InvestigationType, +} from "@/components/Facility/Investigations"; +import { Investigation } from "@/components/Facility/Investigations/Reports/types"; +import { InvestigationSessionType } from "@/components/Facility/Investigations/investigationsTab"; import { BedModel, CapacityModal, @@ -47,40 +69,30 @@ import { StateModel, WardModel, } from "@/components/Facility/models"; -import { - DailyRoundsModel, - PatientModel, - SampleReportModel, - SampleTestModel, -} from "@/components/Patient/models"; -import { - IDeleteBedCapacity, - ILocalBodies, - ILocalBodyByDistrict, -} from "@/components/ExternalResult/models"; -import { - InvestigationGroup, - InvestigationType, -} from "@/components/Facility/Investigations"; import { DupPatientModel, PatientConsentModel, PatientTransferRequest, } from "@/components/Facility/models"; +import { InsurerOptionModel } from "@/components/HCX/InsurerAutocomplete"; +import { HCXPolicyModel } from "@/components/HCX/models"; import { MedibaseMedicine, Prescription } from "@/components/Medicine/models"; import { NotificationData, PNconfigData, } from "@/components/Notifications/models"; -import { HCXPolicyModel } from "@/components/HCX/models"; -import { ICD11DiagnosisModel } from "@/components/Diagnosis/types"; -import { Investigation } from "@/components/Facility/Investigations/Reports/types"; -import { PaginatedResponse } from "../Utils/request/types"; +import { + DailyRoundsModel, + PatientModel, + SampleReportModel, + SampleTestModel, +} from "@/components/Patient/models"; import { CreateFileRequest, CreateFileResponse, FileUploadModel, } from "@/components/Patient/models"; +import { ScribeModel } from "@/components/Scribe/Scribe"; import { SkillModel, SkillObjectModel, @@ -88,19 +100,8 @@ import { UserAssignedModel, UserModel, } from "@/components/Users/models"; -import { - EventGeneric, - type Type, -} from "@/components/Facility/ConsultationDetails/Events/types"; -import { InvestigationSessionType } from "@/components/Facility/Investigations/investigationsTab"; -import { AbhaNumberModel } from "@/components/ABDM/types/abha"; -import { ScribeModel } from "@/components/Scribe/Scribe"; -import { - IcreateHealthFacilityTBody, - IHealthFacility, - IpartialUpdateHealthFacilityTBody, -} from "@/components/ABDM/types/health-facility"; -import { InsurerOptionModel } from "@/components/HCX/InsurerAutocomplete"; + +import { PaginatedResponse } from "@/Utils/request/types"; /** * A fake function that returns an empty object casted to type T diff --git a/src/Utils/request/handleResponse.ts b/src/Utils/request/handleResponse.ts index 905417ad0e2..339d5559b6b 100644 --- a/src/Utils/request/handleResponse.ts +++ b/src/Utils/request/handleResponse.ts @@ -1,7 +1,8 @@ -import { RequestResult } from "./types"; -import * as Notifications from "../Notifications"; import { navigate } from "raviger"; +import * as Notifications from "@/Utils/Notifications"; +import { RequestResult } from "@/Utils/request/types"; + export default function handleResponse( { res, error }: RequestResult, silent?: boolean, diff --git a/src/Utils/request/request.ts b/src/Utils/request/request.ts index 3fa648316af..d036ad49750 100644 --- a/src/Utils/request/request.ts +++ b/src/Utils/request/request.ts @@ -1,7 +1,8 @@ import careConfig from "@careConfig"; -import handleResponse from "./handleResponse"; -import { RequestOptions, RequestResult, Route } from "./types"; -import { makeHeaders, makeUrl } from "./utils"; + +import handleResponse from "@/Utils/request/handleResponse"; +import { RequestOptions, RequestResult, Route } from "@/Utils/request/types"; +import { makeHeaders, makeUrl } from "@/Utils/request/utils"; type ControllerXORControllerRef = | { diff --git a/src/Utils/request/uploadFile.ts b/src/Utils/request/uploadFile.ts index ca62672f642..005eeaf92aa 100644 --- a/src/Utils/request/uploadFile.ts +++ b/src/Utils/request/uploadFile.ts @@ -1,6 +1,7 @@ import { Dispatch, SetStateAction } from "react"; -import { handleUploadPercentage } from "./utils"; -import * as Notification from "../../Utils/Notifications"; + +import * as Notification from "@/Utils/Notifications"; +import { handleUploadPercentage } from "@/Utils/request/utils"; const uploadFile = ( url: string, diff --git a/src/Utils/request/useMutation.ts b/src/Utils/request/useMutation.ts index 737b32a2237..fbc6edc3940 100644 --- a/src/Utils/request/useMutation.ts +++ b/src/Utils/request/useMutation.ts @@ -1,3 +1,5 @@ +import React from "react"; + import request from "@/Utils/request/request"; import { MutationRoute, @@ -5,7 +7,6 @@ import { RequestResult, } from "@/Utils/request/types"; import { mergeRequestOptions } from "@/Utils/request/utils"; -import React from "react"; export default function useMutation( route: MutationRoute, diff --git a/src/Utils/request/useQuery.ts b/src/Utils/request/useQuery.ts index d9bec8f7a05..109ff0bb2f1 100644 --- a/src/Utils/request/useQuery.ts +++ b/src/Utils/request/useQuery.ts @@ -1,7 +1,12 @@ import { useCallback, useEffect, useRef, useState } from "react"; -import { QueryRoute, RequestOptions, RequestResult } from "./types"; -import request from "./request"; -import { mergeRequestOptions } from "./utils"; + +import request from "@/Utils/request/request"; +import { + QueryRoute, + RequestOptions, + RequestResult, +} from "@/Utils/request/types"; +import { mergeRequestOptions } from "@/Utils/request/utils"; export interface QueryOptions extends RequestOptions { prefetch?: boolean; diff --git a/src/Utils/request/utils.ts b/src/Utils/request/utils.ts index 2734625e196..8fd7bc96bea 100644 --- a/src/Utils/request/utils.ts +++ b/src/Utils/request/utils.ts @@ -1,7 +1,9 @@ import { Dispatch, SetStateAction } from "react"; + import { LocalStorageKeys } from "@/common/constants"; -import * as Notification from "../Notifications"; -import { QueryParams, RequestOptions } from "./types"; + +import * as Notification from "@/Utils/Notifications"; +import { QueryParams, RequestOptions } from "@/Utils/request/types"; export function makeUrl( path: string, diff --git a/src/Utils/useRecorder.d.ts b/src/Utils/useRecorder.d.ts deleted file mode 100644 index ed253a47646..00000000000 --- a/src/Utils/useRecorder.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -import useRecorder from "./useRecorder"; -export default useRecorder as any; diff --git a/src/Utils/useSegmentedRecorder.ts b/src/Utils/useSegmentedRecorder.ts index fe38afb3b06..c10379a9d12 100644 --- a/src/Utils/useSegmentedRecorder.ts +++ b/src/Utils/useSegmentedRecorder.ts @@ -1,7 +1,8 @@ -import { useState, useEffect } from "react"; -import * as Notify from "./Notifications"; +import { useEffect, useState } from "react"; import { useTranslation } from "react-i18next"; +import * as Notify from "@/Utils/Notifications"; + const useSegmentedRecording = () => { const [isRecording, setIsRecording] = useState(false); const [recorder, setRecorder] = useState(null); diff --git a/src/Utils/utils.ts b/src/Utils/utils.ts index 4ba10746d61..3888406ad29 100644 --- a/src/Utils/utils.ts +++ b/src/Utils/utils.ts @@ -1,7 +1,9 @@ +import { PatientModel } from "@/components/Patient/models"; + import { AREACODES, IN_LANDLINE_AREA_CODES } from "@/common/constants"; import phoneCodesJson from "@/common/static/countryPhoneAndFlags.json"; -import dayjs from "./dayjs"; -import { PatientModel } from "@/components/Patient/models"; + +import dayjs from "@/Utils/dayjs"; interface ApacheParams { age: number; diff --git a/src/common/constants.tsx b/src/common/constants.tsx index 87432fcaadb..b917ea1aa68 100644 --- a/src/common/constants.tsx +++ b/src/common/constants.tsx @@ -1,13 +1,16 @@ +import { IconName } from "@/CAREUI/icons/CareIcon"; + +import { ConsentHIType, ConsentPurpose } from "@/components/ABDM/types/consent"; +import { SortOption } from "@/components/Common/SortDropdown"; import { PatientCategory, SpokeRelationship, } from "@/components/Facility/models"; -import { SortOption } from "@/components/Common/SortDropdown"; -import { dateQueryString } from "../Utils/utils"; -import { IconName } from "../CAREUI/icons/CareIcon"; import { PhoneNumberValidator } from "@/components/Form/FieldValidators"; -import { SchemaType } from "./schemaParser"; -import { ConsentHIType, ConsentPurpose } from "@/components/ABDM/types/consent"; + +import { SchemaType } from "@/common/schemaParser"; + +import { dateQueryString } from "@/Utils/utils"; export const RESULTS_PER_PAGE_LIMIT = 14; export const PAGINATION_LIMIT = 36; diff --git a/src/common/utils.tsx b/src/common/utils.tsx index 4e14e3bf5ba..7089851a018 100644 --- a/src/common/utils.tsx +++ b/src/common/utils.tsx @@ -1,7 +1,9 @@ /* eslint-disable react-hooks/exhaustive-deps */ import { useEffect } from "react"; -import { OptionsType } from "./constants"; -import { humanizeStrings } from "../Utils/utils"; + +import { OptionsType } from "@/common/constants"; + +import { humanizeStrings } from "@/Utils/utils"; export interface statusType { aborted?: boolean; diff --git a/src/components/ABDM/ABDMFacilityRecords.tsx b/src/components/ABDM/ABDMFacilityRecords.tsx index 3e23e82fc8f..ef3a1da8ab4 100644 --- a/src/components/ABDM/ABDMFacilityRecords.tsx +++ b/src/components/ABDM/ABDMFacilityRecords.tsx @@ -1,13 +1,16 @@ import { Link } from "raviger"; -import routes from "../../Redux/api"; -import useQuery from "../../Utils/request/useQuery"; -import { classNames, formatDateTime } from "../../Utils/utils"; -import Loading from "@/components/Common/Loading"; -import Page from "@/components/Common/components/Page"; -import CareIcon from "../../CAREUI/icons/CareIcon"; -import ButtonV2 from "@/components/Common/components/ButtonV2"; import { useTranslation } from "react-i18next"; +import CareIcon from "@/CAREUI/icons/CareIcon"; + +import ButtonV2 from "@/components/Common/ButtonV2"; +import Loading from "@/components/Common/Loading"; +import Page from "@/components/Common/Page"; + +import routes from "@/Utils/request/api"; +import useQuery from "@/Utils/request/useQuery"; +import { classNames, formatDateTime } from "@/Utils/utils"; + interface IProps { facilityId: string; } @@ -184,6 +187,13 @@ export default function ABDMFacilityRecords({ facilityId }: IProps) { + {consentsResult?.results.length === 0 && ( +
+

+ {t("no_records_found")} +

+
+ )} diff --git a/src/components/ABDM/ABDMRecordsTab.tsx b/src/components/ABDM/ABDMRecordsTab.tsx index d97edbb0cc2..3b6f2493fb4 100644 --- a/src/components/ABDM/ABDMRecordsTab.tsx +++ b/src/components/ABDM/ABDMRecordsTab.tsx @@ -1,16 +1,22 @@ -import { ConsentArtefactModel, ConsentRequestModel } from "./types/consent"; import dayjs from "dayjs"; -import CareIcon from "../../CAREUI/icons/CareIcon"; -import ButtonV2 from "@/components/Common/components/ButtonV2"; -import * as Notification from "../../Utils/Notifications"; -import Loading from "@/components/Common/Loading"; -import { classNames, formatName } from "../../Utils/utils"; import { Link } from "raviger"; -import routes from "../../Redux/api"; -import request from "../../Utils/request/request"; -import useQuery from "../../Utils/request/useQuery"; import { useTranslation } from "react-i18next"; +import CareIcon from "@/CAREUI/icons/CareIcon"; + +import { + ConsentArtefactModel, + ConsentRequestModel, +} from "@/components/ABDM/types/consent"; +import ButtonV2 from "@/components/Common/ButtonV2"; +import Loading from "@/components/Common/Loading"; + +import * as Notification from "@/Utils/Notifications"; +import routes from "@/Utils/request/api"; +import request from "@/Utils/request/request"; +import useQuery from "@/Utils/request/useQuery"; +import { classNames, formatName } from "@/Utils/utils"; + interface IConsentArtefactCardProps { artefact: ConsentArtefactModel; } diff --git a/src/components/ABDM/ABHAProfileModal.tsx b/src/components/ABDM/ABHAProfileModal.tsx index f242a1e2fa8..1e348a40778 100644 --- a/src/components/ABDM/ABHAProfileModal.tsx +++ b/src/components/ABDM/ABHAProfileModal.tsx @@ -1,15 +1,17 @@ -import * as Notify from "../../Utils/Notifications"; - -import CareIcon from "../../CAREUI/icons/CareIcon"; -import DialogModal from "@/components/Common/Dialog"; import QRCode from "qrcode.react"; -import { formatDateTime } from "../../Utils/utils"; import { useRef } from "react"; -import request from "../../Utils/request/request"; -import routes from "../../Redux/api"; -import { AbhaNumberModel } from "./types/abha"; import { useTranslation } from "react-i18next"; +import CareIcon from "@/CAREUI/icons/CareIcon"; + +import { AbhaNumberModel } from "@/components/ABDM/types/abha"; +import DialogModal from "@/components/Common/Dialog"; + +import * as Notify from "@/Utils/Notifications"; +import routes from "@/Utils/request/api"; +import request from "@/Utils/request/request"; +import { formatDateTime } from "@/Utils/utils"; + interface IProps { patientId?: string; abha?: AbhaNumberModel; diff --git a/src/components/ABDM/ConfigureHealthFacility.tsx b/src/components/ABDM/ConfigureHealthFacility.tsx index 78b71e58bc3..ba3eb325dec 100644 --- a/src/components/ABDM/ConfigureHealthFacility.tsx +++ b/src/components/ABDM/ConfigureHealthFacility.tsx @@ -1,17 +1,19 @@ -import { useReducer, useState } from "react"; -import * as Notification from "../../Utils/Notifications"; import { navigate } from "raviger"; -import { Submit } from "@/components/Common/components/ButtonV2"; -import TextFormField from "../Form/FormFields/TextFormField"; -import { classNames } from "../../Utils/utils"; -import useQuery from "../../Utils/request/useQuery"; -import routes from "../../Redux/api"; -import request from "../../Utils/request/request"; -import { FieldChangeEvent } from "../Form/FormFields/Utils"; -import { IHealthFacility } from "./types/health-facility"; +import { useReducer, useState } from "react"; import { useTranslation } from "react-i18next"; +import { IHealthFacility } from "@/components/ABDM/types/health-facility"; +import { Submit } from "@/components/Common/ButtonV2"; import Loading from "@/components/Common/Loading"; +import TextFormField from "@/components/Form/FormFields/TextFormField"; +import { FieldChangeEvent } from "@/components/Form/FormFields/Utils"; + +import * as Notification from "@/Utils/Notifications"; +import routes from "@/Utils/request/api"; +import request from "@/Utils/request/request"; +import useQuery from "@/Utils/request/useQuery"; +import { classNames } from "@/Utils/utils"; + const initForm = { health_facility: null as IHealthFacility | null, hf_id: "", diff --git a/src/components/ABDM/FetchRecordsModal.tsx b/src/components/ABDM/FetchRecordsModal.tsx index 441bee0ddbd..9433374f931 100644 --- a/src/components/ABDM/FetchRecordsModal.tsx +++ b/src/components/ABDM/FetchRecordsModal.tsx @@ -1,24 +1,27 @@ -import * as Notification from "../../Utils/Notifications"; +import dayjs from "dayjs"; +import { navigate } from "raviger"; +import { useState } from "react"; +import { useTranslation } from "react-i18next"; -import ButtonV2 from "@/components/Common/components/ButtonV2"; +import { AbhaNumberModel } from "@/components/ABDM/types/abha"; +import { ConsentHIType, ConsentPurpose } from "@/components/ABDM/types/consent"; +import ButtonV2 from "@/components/Common/ButtonV2"; import DialogModal from "@/components/Common/Dialog"; -import TextFormField from "../Form/FormFields/TextFormField"; -import { useState } from "react"; +import DateFormField from "@/components/Form/FormFields/DateFormField"; +import DateRangeFormField from "@/components/Form/FormFields/DateRangeFormField"; import { MultiSelectFormField, SelectFormField, -} from "../Form/FormFields/SelectFormField"; +} from "@/components/Form/FormFields/SelectFormField"; +import TextFormField from "@/components/Form/FormFields/TextFormField"; + +import { useMessageListener } from "@/hooks/useMessageListener"; + import { ABDM_CONSENT_PURPOSE, ABDM_HI_TYPE } from "@/common/constants"; -import DateRangeFormField from "../Form/FormFields/DateRangeFormField"; -import dayjs from "dayjs"; -import { navigate } from "raviger"; -import DateFormField from "../Form/FormFields/DateFormField"; -import request from "../../Utils/request/request"; -import routes from "../../Redux/api"; -import { useMessageListener } from "@/common/hooks/useMessageListener"; -import { AbhaNumberModel } from "./types/abha"; -import { ConsentHIType, ConsentPurpose } from "./types/consent"; -import { useTranslation } from "react-i18next"; + +import * as Notification from "@/Utils/Notifications"; +import routes from "@/Utils/request/api"; +import request from "@/Utils/request/request"; const getDate = (value: string | Date) => (value && dayjs(value).isValid() && dayjs(value).toDate()) || undefined; diff --git a/src/components/ABDM/HealthInformation.tsx b/src/components/ABDM/HealthInformation.tsx index e3571c90d9f..e147f050131 100644 --- a/src/components/ABDM/HealthInformation.tsx +++ b/src/components/ABDM/HealthInformation.tsx @@ -1,9 +1,11 @@ +import { HIProfile } from "hi-profiles"; import { useTranslation } from "react-i18next"; -import routes from "../../Redux/api"; -import useQuery from "../../Utils/request/useQuery"; + import Loading from "@/components/Common/Loading"; -import Page from "@/components/Common/components/Page"; -import { HIProfile } from "hi-profiles"; +import Page from "@/components/Common/Page"; + +import routes from "@/Utils/request/api"; +import useQuery from "@/Utils/request/useQuery"; interface IProps { artefactId: string; diff --git a/src/components/ABDM/LinkAbhaNumber/CreateWithAadhaar.tsx b/src/components/ABDM/LinkAbhaNumber/CreateWithAadhaar.tsx index dc2b5ff7ef6..d2697633bea 100644 --- a/src/components/ABDM/LinkAbhaNumber/CreateWithAadhaar.tsx +++ b/src/components/ABDM/LinkAbhaNumber/CreateWithAadhaar.tsx @@ -1,19 +1,21 @@ -import { useTranslation } from "react-i18next"; -import useMultiStepForm, { InjectedStepProps } from "./useMultiStepForm"; -import { classNames } from "../../../Utils/utils"; -import TextFormField from "../../Form/FormFields/TextFormField"; import { useEffect, useState } from "react"; -import ButtonV2, { - ButtonWithTimer, -} from "@/components/Common/components/ButtonV2"; -import OtpFormField from "../../Form/FormFields/OtpFormField"; -import PhoneNumberFormField from "../../Form/FormFields/PhoneNumberFormField"; -import { AbhaNumberModel } from "../types/abha"; -import { validateRule } from "../../Users/UserAdd"; -import request from "../../../Utils/request/request"; -import routes from "../../../Redux/api"; -import * as Notify from "../../../Utils/Notifications"; -import CheckBoxFormField from "../../Form/FormFields/CheckBoxFormField"; +import { useTranslation } from "react-i18next"; + +import useMultiStepForm, { + InjectedStepProps, +} from "@/components/ABDM/LinkAbhaNumber/useMultiStepForm"; +import { AbhaNumberModel } from "@/components/ABDM/types/abha"; +import ButtonV2, { ButtonWithTimer } from "@/components/Common/ButtonV2"; +import CheckBoxFormField from "@/components/Form/FormFields/CheckBoxFormField"; +import OtpFormField from "@/components/Form/FormFields/OtpFormField"; +import PhoneNumberFormField from "@/components/Form/FormFields/PhoneNumberFormField"; +import TextFormField from "@/components/Form/FormFields/TextFormField"; +import { validateRule } from "@/components/Users/UserAdd"; + +import * as Notify from "@/Utils/Notifications"; +import routes from "@/Utils/request/api"; +import request from "@/Utils/request/request"; +import { classNames } from "@/Utils/utils"; const MAX_OTP_RESEND_ALLOWED = 2; @@ -682,18 +684,22 @@ function ChooseAbhaAddress({ {validateRule( healthId.length >= 4, t("abha_address_validation_length_error"), + false, )} {validateRule( - isNaN(Number(healthId[0])) && healthId[0] !== ".", + Number.isNaN(Number(healthId[0])) && healthId[0] !== ".", t("abha_address_validation_start_error"), + false, )} {validateRule( healthId[healthId.length - 1] !== ".", t("abha_address_validation_end_error"), + false, )} {validateRule( /^[0-9a-zA-Z._]+$/.test(healthId), t("abha_address_validation_character_error"), + false, )} diff --git a/src/components/ABDM/LinkAbhaNumber/LinkWithOtp.tsx b/src/components/ABDM/LinkAbhaNumber/LinkWithOtp.tsx index 2ca9dbfc5f4..9b8150dee86 100644 --- a/src/components/ABDM/LinkAbhaNumber/LinkWithOtp.tsx +++ b/src/components/ABDM/LinkAbhaNumber/LinkWithOtp.tsx @@ -1,18 +1,20 @@ -import { useTranslation } from "react-i18next"; -import { AbhaNumberModel } from "../types/abha"; -import useMultiStepForm, { InjectedStepProps } from "./useMultiStepForm"; import { useMemo, useState } from "react"; -import TextFormField from "../../Form/FormFields/TextFormField"; -import { classNames } from "../../../Utils/utils"; -import ButtonV2, { - ButtonWithTimer, -} from "@/components/Common/components/ButtonV2"; -import Dropdown, { DropdownItem } from "@/components/Common/components/Menu"; -import OtpFormField from "../../Form/FormFields/OtpFormField"; -import * as Notify from "../../../Utils/Notifications"; -import request from "../../../Utils/request/request"; -import routes from "../../../Redux/api"; -import CheckBoxFormField from "../../Form/FormFields/CheckBoxFormField"; +import { useTranslation } from "react-i18next"; + +import useMultiStepForm, { + InjectedStepProps, +} from "@/components/ABDM/LinkAbhaNumber/useMultiStepForm"; +import { AbhaNumberModel } from "@/components/ABDM/types/abha"; +import ButtonV2, { ButtonWithTimer } from "@/components/Common/ButtonV2"; +import Dropdown, { DropdownItem } from "@/components/Common/Menu"; +import CheckBoxFormField from "@/components/Form/FormFields/CheckBoxFormField"; +import OtpFormField from "@/components/Form/FormFields/OtpFormField"; +import TextFormField from "@/components/Form/FormFields/TextFormField"; + +import * as Notify from "@/Utils/Notifications"; +import routes from "@/Utils/request/api"; +import request from "@/Utils/request/request"; +import { classNames } from "@/Utils/utils"; const MAX_OTP_RESEND_ALLOWED = 2; diff --git a/src/components/ABDM/LinkAbhaNumber/LinkWithQr.tsx b/src/components/ABDM/LinkAbhaNumber/LinkWithQr.tsx index 4e91f89b384..712d28943b4 100644 --- a/src/components/ABDM/LinkAbhaNumber/LinkWithQr.tsx +++ b/src/components/ABDM/LinkAbhaNumber/LinkWithQr.tsx @@ -1,11 +1,12 @@ +import { IDetectedBarcode, Scanner } from "@yudiel/react-qr-scanner"; +import { useState } from "react"; import { useTranslation } from "react-i18next"; -import { AbhaNumberModel, ABHAQRContent } from "../types/abha"; -import * as Notification from "../../../Utils/Notifications"; -import { Scanner, IDetectedBarcode } from "@yudiel/react-qr-scanner"; -import request from "../../../Utils/request/request"; -import routes from "../../../Redux/api"; -import { useState } from "react"; +import { ABHAQRContent, AbhaNumberModel } from "@/components/ABDM/types/abha"; + +import * as Notification from "@/Utils/Notifications"; +import routes from "@/Utils/request/api"; +import request from "@/Utils/request/request"; type ILoginWithQrProps = { onSuccess: (abhaNumber: AbhaNumberModel) => void; diff --git a/src/components/ABDM/LinkAbhaNumber/index.tsx b/src/components/ABDM/LinkAbhaNumber/index.tsx index d8e4e955be2..45cd0b34d02 100644 --- a/src/components/ABDM/LinkAbhaNumber/index.tsx +++ b/src/components/ABDM/LinkAbhaNumber/index.tsx @@ -1,12 +1,14 @@ import { useState } from "react"; -import DialogModal from "@/components/Common/Dialog"; -import { AbhaNumberModel } from "../types/abha"; -import ButtonV2 from "@/components/Common/components/ButtonV2"; -import { classNames } from "../../../Utils/utils"; -import CreateWithAadhaar from "./CreateWithAadhaar"; import { useTranslation } from "react-i18next"; -import LinkWithOtp from "./LinkWithOtp"; -import LinkWithQr from "./LinkWithQr"; + +import CreateWithAadhaar from "@/components/ABDM/LinkAbhaNumber/CreateWithAadhaar"; +import LinkWithOtp from "@/components/ABDM/LinkAbhaNumber/LinkWithOtp"; +import LinkWithQr from "@/components/ABDM/LinkAbhaNumber/LinkWithQr"; +import { AbhaNumberModel } from "@/components/ABDM/types/abha"; +import ButtonV2 from "@/components/Common/ButtonV2"; +import DialogModal from "@/components/Common/Dialog"; + +import { classNames } from "@/Utils/utils"; interface ILinkAbhaNumberProps { show: boolean; diff --git a/src/components/ABDM/LinkAbhaNumber/useMultiStepForm.ts b/src/components/ABDM/LinkAbhaNumber/useMultiStepForm.ts index 8107fff8370..79bc9ec71c6 100644 --- a/src/components/ABDM/LinkAbhaNumber/useMultiStepForm.ts +++ b/src/components/ABDM/LinkAbhaNumber/useMultiStepForm.ts @@ -1,8 +1,8 @@ import { - cloneElement, Dispatch, ReactElement, SetStateAction, + cloneElement, useCallback, useMemo, useState, diff --git a/src/components/ABDM/types/abha.ts b/src/components/ABDM/types/abha.ts index d94549e2242..f189bd111cb 100644 --- a/src/components/ABDM/types/abha.ts +++ b/src/components/ABDM/types/abha.ts @@ -1,4 +1,4 @@ -import { PatientModel } from "../../Patient/models"; +import { PatientModel } from "@/components/Patient/models"; export type AbhaNumberModel = { id: number; diff --git a/src/components/ABDM/types/consent.ts b/src/components/ABDM/types/consent.ts index 9ca60c7bd99..a5041f5767d 100644 --- a/src/components/ABDM/types/consent.ts +++ b/src/components/ABDM/types/consent.ts @@ -1,5 +1,5 @@ -import { UserBaseModel } from "../../Users/models"; -import { AbhaNumberModel } from "./abha"; +import { AbhaNumberModel } from "@/components/ABDM/types/abha"; +import { UserBaseModel } from "@/components/Users/models"; export type ConsentPurpose = | "CAREMGT" diff --git a/src/components/Assets/AssetConfigure.tsx b/src/components/Assets/AssetConfigure.tsx index 9f04bddc321..d0d3e4f9420 100644 --- a/src/components/Assets/AssetConfigure.tsx +++ b/src/components/Assets/AssetConfigure.tsx @@ -1,9 +1,10 @@ +import HL7Monitor from "@/components/Assets/AssetType/HL7Monitor"; +import ConfigureCamera from "@/components/CameraFeed/ConfigureCamera"; import Loading from "@/components/Common/Loading"; -import HL7Monitor from "./AssetType/HL7Monitor"; -import ConfigureCamera from "../CameraFeed/ConfigureCamera"; -import Page from "@/components/Common/components/Page"; -import useQuery from "../../Utils/request/useQuery"; -import routes from "../../Redux/api"; +import Page from "@/components/Common/Page"; + +import routes from "@/Utils/request/api"; +import useQuery from "@/Utils/request/useQuery"; interface AssetConfigureProps { assetId: string; diff --git a/src/components/Assets/AssetFilter.tsx b/src/components/Assets/AssetFilter.tsx index 8095b96389e..fda9d0cfdf2 100644 --- a/src/components/Assets/AssetFilter.tsx +++ b/src/components/Assets/AssetFilter.tsx @@ -1,19 +1,22 @@ -import { useState, useEffect } from "react"; +import dayjs from "dayjs"; import { useQueryParams } from "raviger"; +import { useEffect, useState } from "react"; + +import FiltersSlideover from "@/CAREUI/interactive/FiltersSlideover"; + +import { AssetClass } from "@/components/Assets/AssetTypes"; +import { DateRange } from "@/components/Common/DateRangeInputV2"; import { FacilitySelect } from "@/components/Common/FacilitySelect"; -import { FacilityModel } from "../Facility/models"; import { LocationSelect } from "@/components/Common/LocationSelect"; -import { AssetClass } from "./AssetTypes"; -import { FieldLabel } from "../Form/FormFields/FormField"; -import { SelectFormField } from "../Form/FormFields/SelectFormField"; -import FiltersSlideover from "../../CAREUI/interactive/FiltersSlideover"; -import routes from "../../Redux/api"; -import useQuery from "../../Utils/request/useQuery"; -import DateRangeFormField from "../Form/FormFields/DateRangeFormField"; -import dayjs from "dayjs"; -import { FieldChangeEvent } from "../Form/FormFields/Utils"; -import { DateRange } from "@/components/Common/DateRangeInputV2"; -import { dateQueryString } from "../../Utils/utils"; +import { FacilityModel } from "@/components/Facility/models"; +import DateRangeFormField from "@/components/Form/FormFields/DateRangeFormField"; +import { FieldLabel } from "@/components/Form/FormFields/FormField"; +import { SelectFormField } from "@/components/Form/FormFields/SelectFormField"; +import { FieldChangeEvent } from "@/components/Form/FormFields/Utils"; + +import routes from "@/Utils/request/api"; +import useQuery from "@/Utils/request/useQuery"; +import { dateQueryString } from "@/Utils/utils"; const getDate = (value: any) => value && dayjs(value).isValid() && dayjs(value).toDate(); diff --git a/src/components/Assets/AssetImportModal.tsx b/src/components/Assets/AssetImportModal.tsx index 08fd4891078..beb0dd2c2c1 100644 --- a/src/components/Assets/AssetImportModal.tsx +++ b/src/components/Assets/AssetImportModal.tsx @@ -1,17 +1,20 @@ -import { lazy, useState } from "react"; -import { sleep } from "../../Utils/utils"; -import { FacilityModel } from "../Facility/models"; -import { AssetData } from "./AssetTypes"; -import * as Notification from "../../Utils/Notifications"; -import { Cancel } from "@/components/Common/components/ButtonV2"; +import careConfig from "@careConfig"; import { Link } from "raviger"; -import { AssetImportSchema } from "@/common/constants"; +import { lazy, useState } from "react"; + +import { AssetData } from "@/components/Assets/AssetTypes"; +import { Cancel } from "@/components/Common/ButtonV2"; import DialogModal from "@/components/Common/Dialog"; -import useQuery from "../../Utils/request/useQuery"; -import routes from "../../Redux/api"; -import { SelectFormField } from "../Form/FormFields/SelectFormField"; -import careConfig from "@careConfig"; -import request from "../../Utils/request/request"; +import { FacilityModel } from "@/components/Facility/models"; +import { SelectFormField } from "@/components/Form/FormFields/SelectFormField"; + +import { AssetImportSchema } from "@/common/constants"; + +import * as Notification from "@/Utils/Notifications"; +import routes from "@/Utils/request/api"; +import request from "@/Utils/request/request"; +import useQuery from "@/Utils/request/useQuery"; +import { sleep } from "@/Utils/utils"; const ExcelFileDragAndDrop = lazy( () => import("@/components/Common/ExcelFIleDragAndDrop"), diff --git a/src/components/Assets/AssetManage.tsx b/src/components/Assets/AssetManage.tsx index 0ee4f107d40..b56cb908c42 100644 --- a/src/components/Assets/AssetManage.tsx +++ b/src/components/Assets/AssetManage.tsx @@ -1,36 +1,41 @@ -import { useState, useEffect, ReactElement } from "react"; +import dayjs from "dayjs"; +import QRCode from "qrcode.react"; +import { navigate } from "raviger"; +import { ReactElement, useEffect, useState } from "react"; +import { useTranslation } from "react-i18next"; + +import Chip from "@/CAREUI/display/Chip"; +import RecordMeta from "@/CAREUI/display/RecordMeta"; +import CareIcon from "@/CAREUI/icons/CareIcon"; + +import { AssetServiceEditModal } from "@/components/Assets/AssetServiceEditModal"; import { AssetClass, - assetClassProps, AssetData, AssetService, AssetTransaction, -} from "./AssetTypes"; -import Pagination from "@/components/Common/Pagination"; -import { navigate } from "raviger"; -import QRCode from "qrcode.react"; -import AssetWarrantyCard from "./AssetWarrantyCard"; -import { formatDate, formatDateTime, formatName } from "../../Utils/utils"; -import Chip from "../../CAREUI/display/Chip"; -import CareIcon from "../../CAREUI/icons/CareIcon"; -import ButtonV2 from "@/components/Common/components/ButtonV2"; -import { UserRole, USER_TYPES } from "@/common/constants"; + assetClassProps, +} from "@/components/Assets/AssetTypes"; +import AssetWarrantyCard from "@/components/Assets/AssetWarrantyCard"; +import { warrantyAmcValidityChip } from "@/components/Assets/AssetsList"; +import ButtonV2 from "@/components/Common/ButtonV2"; import ConfirmDialog from "@/components/Common/ConfirmDialog"; -import RecordMeta from "../../CAREUI/display/RecordMeta"; -import { useTranslation } from "react-i18next"; import Loading from "@/components/Common/Loading"; -import * as Notification from "../../Utils/Notifications"; -import { NonReadOnlyUsers } from "../../Utils/AuthorizeFor"; -import Uptime from "@/components/Common/Uptime"; -import useAuthUser from "@/common/hooks/useAuthUser"; -import dayjs from "dayjs"; +import Page from "@/components/Common/Page"; +import Pagination from "@/components/Common/Pagination"; import RelativeDateUserMention from "@/components/Common/RelativeDateUserMention"; -import { AssetServiceEditModal } from "./AssetServiceEditModal"; -import { warrantyAmcValidityChip } from "./AssetsList"; -import Page from "@/components/Common/components/Page"; -import request from "../../Utils/request/request"; -import routes from "../../Redux/api"; -import useQuery from "../../Utils/request/useQuery"; +import Uptime from "@/components/Common/Uptime"; + +import useAuthUser from "@/hooks/useAuthUser"; + +import { USER_TYPES, UserRole } from "@/common/constants"; + +import { NonReadOnlyUsers } from "@/Utils/AuthorizeFor"; +import * as Notification from "@/Utils/Notifications"; +import routes from "@/Utils/request/api"; +import request from "@/Utils/request/request"; +import useQuery from "@/Utils/request/useQuery"; +import { formatDate, formatDateTime, formatName } from "@/Utils/utils"; interface AssetManageProps { assetId: string; diff --git a/src/components/Assets/AssetServiceEditModal.tsx b/src/components/Assets/AssetServiceEditModal.tsx index fecea8ad124..b946ea03e31 100644 --- a/src/components/Assets/AssetServiceEditModal.tsx +++ b/src/components/Assets/AssetServiceEditModal.tsx @@ -1,19 +1,23 @@ -import { useEffect, useState } from "react"; -import * as Notification from "../../Utils/Notifications"; -import ButtonV2, { - Cancel, - Submit, -} from "@/components/Common/components/ButtonV2"; -import DialogModal from "@/components/Common/Dialog"; -import { AssetData, AssetService, AssetServiceEdit } from "./AssetTypes"; import dayjs from "dayjs"; -import TextAreaFormField from "../Form/FormFields/TextAreaFormField"; -import { formatDate, formatDateTime } from "../../Utils/utils"; -import CareIcon from "../../CAREUI/icons/CareIcon"; -import request from "../../Utils/request/request"; -import routes from "../../Redux/api"; -import DateFormField from "../Form/FormFields/DateFormField"; import { t } from "i18next"; +import { useEffect, useState } from "react"; + +import CareIcon from "@/CAREUI/icons/CareIcon"; + +import { + AssetData, + AssetService, + AssetServiceEdit, +} from "@/components/Assets/AssetTypes"; +import ButtonV2, { Cancel, Submit } from "@/components/Common/ButtonV2"; +import DialogModal from "@/components/Common/Dialog"; +import DateFormField from "@/components/Form/FormFields/DateFormField"; +import TextAreaFormField from "@/components/Form/FormFields/TextAreaFormField"; + +import * as Notification from "@/Utils/Notifications"; +import routes from "@/Utils/request/api"; +import request from "@/Utils/request/request"; +import { formatDate, formatDateTime } from "@/Utils/utils"; export const AssetServiceEditModal = (props: { asset?: AssetData; diff --git a/src/components/Assets/AssetType/HL7Monitor.tsx b/src/components/Assets/AssetType/HL7Monitor.tsx index 43e968f33eb..76d761383bd 100644 --- a/src/components/Assets/AssetType/HL7Monitor.tsx +++ b/src/components/Assets/AssetType/HL7Monitor.tsx @@ -1,21 +1,30 @@ import { SyntheticEvent, useEffect, useState } from "react"; -import { AssetClass, AssetData, ResolvedMiddleware } from "../AssetTypes"; -import * as Notification from "../../../Utils/Notifications"; + +import Card from "@/CAREUI/display/Card"; +import CareIcon from "@/CAREUI/icons/CareIcon"; + +import { + AssetClass, + AssetData, + ResolvedMiddleware, +} from "@/components/Assets/AssetTypes"; +import { BedSelect } from "@/components/Common/BedSelect"; +import { Submit } from "@/components/Common/ButtonV2"; import Loading from "@/components/Common/Loading"; +import { BedModel } from "@/components/Facility/models"; +import { FieldLabel } from "@/components/Form/FormFields/FormField"; +import TextFormField from "@/components/Form/FormFields/TextFormField"; +import HL7PatientVitalsMonitor from "@/components/VitalsMonitor/HL7PatientVitalsMonitor"; +import VentilatorPatientVitalsMonitor from "@/components/VitalsMonitor/VentilatorPatientVitalsMonitor"; + +import useAuthUser from "@/hooks/useAuthUser"; + import { checkIfValidIP } from "@/common/validation"; -import Card from "../../../CAREUI/display/Card"; -import { Submit } from "@/components/Common/components/ButtonV2"; -import CareIcon from "../../../CAREUI/icons/CareIcon"; -import TextFormField from "../../Form/FormFields/TextFormField"; -import HL7PatientVitalsMonitor from "../../VitalsMonitor/HL7PatientVitalsMonitor"; -import VentilatorPatientVitalsMonitor from "../../VitalsMonitor/VentilatorPatientVitalsMonitor"; -import useAuthUser from "@/common/hooks/useAuthUser"; -import request from "../../../Utils/request/request"; -import routes from "../../../Redux/api"; -import { BedModel } from "../../Facility/models"; -import useQuery from "../../../Utils/request/useQuery"; -import { FieldLabel } from "../../Form/FormFields/FormField"; -import { BedSelect } from "@/components/Common/BedSelect"; + +import * as Notification from "@/Utils/Notifications"; +import routes from "@/Utils/request/api"; +import request from "@/Utils/request/request"; +import useQuery from "@/Utils/request/useQuery"; interface HL7MonitorProps { assetId: string; diff --git a/src/components/Assets/AssetTypes.tsx b/src/components/Assets/AssetTypes.tsx index 24f3f3e9352..14d1e40afe0 100644 --- a/src/components/Assets/AssetTypes.tsx +++ b/src/components/Assets/AssetTypes.tsx @@ -1,6 +1,7 @@ -import { BedModel } from "../Facility/models"; -import { IconName } from "../../CAREUI/icons/CareIcon"; -import { PatientModel } from "../Patient/models"; +import { IconName } from "@/CAREUI/icons/CareIcon"; + +import { BedModel } from "@/components/Facility/models"; +import { PatientModel } from "@/components/Patient/models"; import { UserBareMinimum } from "@/components/Users/models"; export enum AssetLocationType { diff --git a/src/components/Assets/AssetWarrantyCard.tsx b/src/components/Assets/AssetWarrantyCard.tsx index e26575f712b..ebaaca7e6c8 100644 --- a/src/components/Assets/AssetWarrantyCard.tsx +++ b/src/components/Assets/AssetWarrantyCard.tsx @@ -1,9 +1,12 @@ -import CareIcon, { IconName } from "../../CAREUI/icons/CareIcon"; -import { AssetData } from "./AssetTypes"; -import { formatDate } from "../../Utils/utils"; -import CopyToClipboard from "react-copy-to-clipboard"; import { t } from "i18next"; import { useEffect, useState } from "react"; +import CopyToClipboard from "react-copy-to-clipboard"; + +import CareIcon, { IconName } from "@/CAREUI/icons/CareIcon"; + +import { AssetData } from "@/components/Assets/AssetTypes"; + +import { formatDate } from "@/Utils/utils"; export default function AssetWarrantyCard(props: { asset: AssetData }) { const { asset } = props; diff --git a/src/components/Assets/AssetsList.tsx b/src/components/Assets/AssetsList.tsx index 613b87e5ea5..eceee4887e8 100644 --- a/src/components/Assets/AssetsList.tsx +++ b/src/components/Assets/AssetsList.tsx @@ -1,30 +1,34 @@ import { IDetectedBarcode, Scanner } from "@yudiel/react-qr-scanner"; -import * as Notification from "../../Utils/Notifications"; -import { assetClassProps, AssetData } from "./AssetTypes"; -import { useState, useEffect } from "react"; import { Link, navigate } from "raviger"; -import AssetFilter from "./AssetFilter"; -import { parseQueryParams } from "../../Utils/primitives"; -import Chip from "../../CAREUI/display/Chip"; -import SearchInput from "../Form/SearchInput"; -import useFilters from "@/common/hooks/useFilters"; -import { FacilityModel } from "../Facility/models"; -import CareIcon from "../../CAREUI/icons/CareIcon"; -import { useIsAuthorized } from "@/common/hooks/useIsAuthorized"; -import AuthorizeFor, { NonReadOnlyUsers } from "../../Utils/AuthorizeFor"; -import ButtonV2 from "@/components/Common/components/ButtonV2"; -import FacilitiesSelectDialogue from "../ExternalResult/FacilitiesSelectDialogue"; -import ExportMenu from "@/components/Common/Export"; -import CountBlock from "../../CAREUI/display/Count"; -import AssetImportModal from "./AssetImportModal"; -import Page from "@/components/Common/components/Page"; -import { AdvancedFilterButton } from "../../CAREUI/interactive/FiltersSlideover"; +import { useEffect, useState } from "react"; import { useTranslation } from "react-i18next"; -import request from "../../Utils/request/request"; -import routes from "../../Redux/api"; -import useQuery from "../../Utils/request/useQuery"; +import Chip from "@/CAREUI/display/Chip"; +import CountBlock from "@/CAREUI/display/Count"; +import CareIcon from "@/CAREUI/icons/CareIcon"; +import { AdvancedFilterButton } from "@/CAREUI/interactive/FiltersSlideover"; + +import AssetFilter from "@/components/Assets/AssetFilter"; +import AssetImportModal from "@/components/Assets/AssetImportModal"; +import { AssetData, assetClassProps } from "@/components/Assets/AssetTypes"; +import ButtonV2 from "@/components/Common/ButtonV2"; +import ExportMenu from "@/components/Common/Export"; import Loading from "@/components/Common/Loading"; +import Page from "@/components/Common/Page"; +import FacilitiesSelectDialogue from "@/components/ExternalResult/FacilitiesSelectDialogue"; +import { FacilityModel } from "@/components/Facility/models"; +import SearchInput from "@/components/Form/SearchInput"; + +import useFilters from "@/hooks/useFilters"; +import { useIsAuthorized } from "@/hooks/useIsAuthorized"; + +import AuthorizeFor, { NonReadOnlyUsers } from "@/Utils/AuthorizeFor"; +import * as Notification from "@/Utils/Notifications"; +import { parseQueryParams } from "@/Utils/primitives"; +import routes from "@/Utils/request/api"; +import request from "@/Utils/request/request"; +import useQuery from "@/Utils/request/useQuery"; + const AssetsList = () => { const { t } = useTranslation(); const { @@ -240,12 +244,19 @@ const AssetsList = () => { className="text-2xl" /> -

- {asset.name} -

+
+

+ {asset.name} +

+ {asset.name.length > 20 && ( + + {asset.name} + + )} +

diff --git a/src/components/Auth/Login.tsx b/src/components/Auth/Login.tsx index 403b133757f..bcf0d4e3415 100644 --- a/src/components/Auth/Login.tsx +++ b/src/components/Auth/Login.tsx @@ -1,22 +1,25 @@ +import careConfig from "@careConfig"; +import { Link } from "raviger"; import { useEffect, useState } from "react"; -import request from "../../Utils/request/request"; -import routes from "../../Redux/api"; -import { useTranslation } from "react-i18next"; import ReCaptcha from "react-google-recaptcha"; -import * as Notification from "../../Utils/Notifications"; -import LegendInput from "../../CAREUI/interactive/LegendInput"; +import { useTranslation } from "react-i18next"; + +import CareIcon from "@/CAREUI/icons/CareIcon"; +import LegendInput from "@/CAREUI/interactive/LegendInput"; + +import CircularProgress from "@/components/Common/CircularProgress"; import LanguageSelectorLogin from "@/components/Common/LanguageSelectorLogin"; -import CareIcon from "../../CAREUI/icons/CareIcon"; -import CircularProgress from "@/components/Common/components/CircularProgress"; -import ReactMarkdown from "react-markdown"; -import rehypeRaw from "rehype-raw"; -import { useAuthContext } from "@/common/hooks/useAuthUser"; -import FiltersCache from "../../Utils/FiltersCache"; -import { classNames } from "../../Utils/utils"; -import BrowserWarning from "../ErrorPages/BrowserWarning"; -import careConfig from "@careConfig"; +import BrowserWarning from "@/components/ErrorPages/BrowserWarning"; + +import { useAuthContext } from "@/hooks/useAuthUser"; -export const Login = (props: { forgot?: boolean }) => { +import FiltersCache from "@/Utils/FiltersCache"; +import * as Notification from "@/Utils/Notifications"; +import routes from "@/Utils/request/api"; +import request from "@/Utils/request/request"; +import { classNames } from "@/Utils/utils"; + +const Login = (props: { forgot?: boolean }) => { const { signIn } = useAuthContext(); const { mainLogo, @@ -25,8 +28,8 @@ export const Login = (props: { forgot?: boolean }) => { stateLogo, customLogo, customLogoAlt, - customDescription, } = careConfig; + const customDescriptionHtml = __CUSTOM_DESCRIPTION_HTML__; const initForm: any = { username: "", password: "", @@ -190,14 +193,14 @@ export const Login = (props: { forgot?: boolean }) => {

{t("care")}

- {customDescription ? ( + {customDescriptionHtml ? (
- - {customDescription || t("goal")} - + dangerouslySetInnerHTML={{ + __html: __CUSTOM_DESCRIPTION_HTML__, + }} + />
) : (
@@ -247,14 +250,14 @@ export const Login = (props: { forgot?: boolean }) => { {t("contribute_github")} | - {t("third_party_software_licenses")} - +
@@ -417,3 +420,5 @@ export const Login = (props: { forgot?: boolean }) => { ); }; + +export default Login; diff --git a/src/components/Auth/ResetPassword.tsx b/src/components/Auth/ResetPassword.tsx index 15fc6cbac69..11b541e276c 100644 --- a/src/components/Auth/ResetPassword.tsx +++ b/src/components/Auth/ResetPassword.tsx @@ -1,16 +1,23 @@ -import { useEffect, useState } from "react"; -import request from "../../Utils/request/request"; -import * as Notification from "../../Utils/Notifications"; import { navigate } from "raviger"; +import { useEffect, useState } from "react"; import { useTranslation } from "react-i18next"; + +import { Cancel, Submit } from "@/components/Common/ButtonV2"; +import TextFormField from "@/components/Form/FormFields/TextFormField"; +import { validateRule } from "@/components/Users/UserAdd"; + import { LocalStorageKeys } from "@/common/constants"; -import { Cancel, Submit } from "@/components/Common/components/ButtonV2"; -import TextFormField from "../Form/FormFields/TextFormField"; -import { validateRule } from "../Users/UserAdd"; import { validatePassword } from "@/common/validation"; -import routes from "../../Redux/api"; -export const ResetPassword = (props: any) => { +import * as Notification from "@/Utils/Notifications"; +import routes from "@/Utils/request/api"; +import request from "@/Utils/request/request"; + +interface ResetPasswordProps { + token: string; +} + +const ResetPassword = (props: ResetPasswordProps) => { const initForm: any = { password: "", confirm: "", @@ -128,18 +135,22 @@ export const ResetPassword = (props: any) => { {validateRule( form.password?.length >= 8, "Password should be atleast 8 characters long", + !form.password, )} {validateRule( form.password !== form.password.toUpperCase(), "Password should contain at least 1 lowercase letter", + !form.password, )} {validateRule( form.password !== form.password.toLowerCase(), "Password should contain at least 1 uppercase letter", + !form.password, )} {validateRule( /\d/.test(form.password), "Password should contain at least 1 number", + !form.password, )} )} @@ -154,9 +165,11 @@ export const ResetPassword = (props: any) => { /> {confirmPasswordInputInFocus && form.confirm.length > 0 && + form.password.length > 0 && validateRule( form.confirm === form.password, "Confirm password should match the entered password", + !form.password && form.password.length > 0, )}
@@ -169,3 +182,5 @@ export const ResetPassword = (props: any) => {
); }; + +export default ResetPassword; diff --git a/src/components/Auth/index.tsx b/src/components/Auth/index.tsx deleted file mode 100644 index 3713307768b..00000000000 --- a/src/components/Auth/index.tsx +++ /dev/null @@ -1,2 +0,0 @@ -export { Login } from "./Login"; -export { ResetPassword } from "./ResetPassword"; diff --git a/src/components/CameraFeed/CameraFeed.tsx b/src/components/CameraFeed/CameraFeed.tsx index daa237cd851..9646e0354bf 100644 --- a/src/components/CameraFeed/CameraFeed.tsx +++ b/src/components/CameraFeed/CameraFeed.tsx @@ -1,19 +1,27 @@ import { useCallback, useEffect, useRef, useState } from "react"; -import { AssetData } from "../Assets/AssetTypes"; -import useOperateCamera, { PTZPayload } from "./useOperateCamera"; -import { getStreamUrl } from "./utils"; -import { classNames, isIOS } from "../../Utils/utils"; -import FeedAlert, { FeedAlertState, StreamStatus } from "./FeedAlert"; -import FeedNetworkSignal from "./FeedNetworkSignal"; -import NoFeedAvailable from "./NoFeedAvailable"; -import FeedControls from "./FeedControls"; -import FeedWatermark from "./FeedWatermark"; -import useFullscreen from "@/common/hooks/useFullscreen"; -import useBreakpoints from "@/common/hooks/useBreakpoints"; -import { GetPresetsResponse } from "./routes"; -import VideoPlayer from "./videoPlayer"; + +import { AssetData } from "@/components/Assets/AssetTypes"; +import FeedAlert, { + FeedAlertState, + StreamStatus, +} from "@/components/CameraFeed/FeedAlert"; +import FeedControls from "@/components/CameraFeed/FeedControls"; +import FeedNetworkSignal from "@/components/CameraFeed/FeedNetworkSignal"; +import FeedWatermark from "@/components/CameraFeed/FeedWatermark"; +import NoFeedAvailable from "@/components/CameraFeed/NoFeedAvailable"; +import { GetPresetsResponse } from "@/components/CameraFeed/routes"; +import useOperateCamera, { + PTZPayload, +} from "@/components/CameraFeed/useOperateCamera"; +import { getStreamUrl } from "@/components/CameraFeed/utils"; +import VideoPlayer from "@/components/CameraFeed/videoPlayer"; import AssetInfoPopover from "@/components/Common/AssetInfoPopover"; +import useBreakpoints from "@/hooks/useBreakpoints"; +import useFullscreen from "@/hooks/useFullscreen"; + +import { classNames, isIOS } from "@/Utils/utils"; + interface Props { children?: React.ReactNode; asset: AssetData; diff --git a/src/components/CameraFeed/CameraFeedWithBedPresets.tsx b/src/components/CameraFeed/CameraFeedWithBedPresets.tsx index 3e447e34e21..be43fe3f810 100644 --- a/src/components/CameraFeed/CameraFeedWithBedPresets.tsx +++ b/src/components/CameraFeed/CameraFeedWithBedPresets.tsx @@ -1,11 +1,13 @@ import { useState } from "react"; -import { AssetData } from "../Assets/AssetTypes"; -import CameraFeed from "./CameraFeed"; -import useQuery from "../../Utils/request/useQuery"; -import { CameraPresetDropdown } from "./CameraPresetSelect"; -import useOperateCamera from "./useOperateCamera"; -import { classNames } from "../../Utils/utils"; -import { CameraPreset, FeedRoutes } from "./routes"; + +import { AssetData } from "@/components/Assets/AssetTypes"; +import CameraFeed from "@/components/CameraFeed/CameraFeed"; +import { CameraPresetDropdown } from "@/components/CameraFeed/CameraPresetSelect"; +import { CameraPreset, FeedRoutes } from "@/components/CameraFeed/routes"; +import useOperateCamera from "@/components/CameraFeed/useOperateCamera"; + +import useQuery from "@/Utils/request/useQuery"; +import { classNames } from "@/Utils/utils"; interface Props { asset: AssetData; diff --git a/src/components/CameraFeed/CameraPresetSelect.tsx b/src/components/CameraFeed/CameraPresetSelect.tsx index 95b6d195688..7b21a236493 100644 --- a/src/components/CameraFeed/CameraPresetSelect.tsx +++ b/src/components/CameraFeed/CameraPresetSelect.tsx @@ -4,11 +4,14 @@ import { ListboxOption, ListboxOptions, } from "@headlessui/react"; -import ButtonV2 from "@/components/Common/components/ButtonV2"; -import CareIcon from "../../CAREUI/icons/CareIcon"; -import { classNames } from "../../Utils/utils"; -import { dropdownOptionClassNames } from "../Form/MultiSelectMenuV2"; -import { CameraPreset } from "./routes"; + +import CareIcon from "@/CAREUI/icons/CareIcon"; + +import { CameraPreset } from "@/components/CameraFeed/routes"; +import ButtonV2 from "@/components/Common/ButtonV2"; +import { dropdownOptionClassNames } from "@/components/Form/MultiSelectMenuV2"; + +import { classNames } from "@/Utils/utils"; interface Props { disabled?: boolean; diff --git a/src/components/CameraFeed/CentralLiveMonitoring/LiveMonitoringFilters.tsx b/src/components/CameraFeed/CentralLiveMonitoring/LiveMonitoringFilters.tsx index 837a351fff5..ee91ccd7fea 100644 --- a/src/components/CameraFeed/CentralLiveMonitoring/LiveMonitoringFilters.tsx +++ b/src/components/CameraFeed/CentralLiveMonitoring/LiveMonitoringFilters.tsx @@ -4,14 +4,17 @@ import { PopoverPanel, Transition, } from "@headlessui/react"; -import ButtonV2 from "@/components/Common/components/ButtonV2"; -import { FieldLabel } from "../../Form/FormFields/FormField"; +import { useTranslation } from "react-i18next"; + +import CareIcon from "@/CAREUI/icons/CareIcon"; + +import ButtonV2 from "@/components/Common/ButtonV2"; import { LocationSelect } from "@/components/Common/LocationSelect"; import Pagination from "@/components/Common/Pagination"; -import useFilters from "@/common/hooks/useFilters"; -import CareIcon from "../../../CAREUI/icons/CareIcon"; -import useSlug from "@/common/hooks/useSlug"; -import { useTranslation } from "react-i18next"; +import { FieldLabel } from "@/components/Form/FormFields/FormField"; + +import useFilters from "@/hooks/useFilters"; +import useSlug from "@/hooks/useSlug"; interface Props { perPageLimit: number; diff --git a/src/components/CameraFeed/CentralLiveMonitoring/index.tsx b/src/components/CameraFeed/CentralLiveMonitoring/index.tsx index 987289ef74d..4a65480054d 100644 --- a/src/components/CameraFeed/CentralLiveMonitoring/index.tsx +++ b/src/components/CameraFeed/CentralLiveMonitoring/index.tsx @@ -1,14 +1,18 @@ +import { useQueryParams } from "raviger"; import { useState } from "react"; + +import Fullscreen from "@/CAREUI/misc/Fullscreen"; + +import LocationFeedTile from "@/components/CameraFeed/CameraFeedWithBedPresets"; +import LiveMonitoringFilters from "@/components/CameraFeed/CentralLiveMonitoring/LiveMonitoringFilters"; +import StillWatching from "@/components/CameraFeed/StillWatching"; import Loading from "@/components/Common/Loading"; -import Page from "@/components/Common/components/Page"; -import useQuery from "../../../Utils/request/useQuery"; -import routes from "../../../Redux/api"; -import LocationFeedTile from "../CameraFeedWithBedPresets"; -import Fullscreen from "../../../CAREUI/misc/Fullscreen"; -import useBreakpoints from "@/common/hooks/useBreakpoints"; -import { useQueryParams } from "raviger"; -import LiveMonitoringFilters from "./LiveMonitoringFilters"; -import StillWatching from "../StillWatching"; +import Page from "@/components/Common/Page"; + +import useBreakpoints from "@/hooks/useBreakpoints"; + +import routes from "@/Utils/request/api"; +import useQuery from "@/Utils/request/useQuery"; export default function CentralLiveMonitoring(props: { facilityId: string }) { const [isFullscreen, setFullscreen] = useState(false); diff --git a/src/components/CameraFeed/ConfigureCamera.tsx b/src/components/CameraFeed/ConfigureCamera.tsx index c0cb19e6a23..f969ed2b0ca 100644 --- a/src/components/CameraFeed/ConfigureCamera.tsx +++ b/src/components/CameraFeed/ConfigureCamera.tsx @@ -1,37 +1,43 @@ -import { useEffect, useState } from "react"; -import { AssetData } from "../Assets/AssetTypes"; -import { getCameraConfig, makeAccessKey } from "../../Utils/transformUtils"; -import TextFormField from "../Form/FormFields/TextFormField"; -import ButtonV2, { - Cancel, - Submit, -} from "@/components/Common/components/ButtonV2"; -import useAuthUser from "@/common/hooks/useAuthUser"; -import CareIcon from "../../CAREUI/icons/CareIcon"; -import useOperateCamera from "./useOperateCamera"; -import CameraFeed from "./CameraFeed"; -import { useTranslation } from "react-i18next"; -import request from "../../Utils/request/request"; -import routes from "../../Redux/api"; -import { Error, Success } from "../../Utils/Notifications"; -import { useQueryParams } from "raviger"; -import useQuery from "../../Utils/request/useQuery"; -import { classNames, compareBy } from "../../Utils/utils"; -import RecordMeta from "../../CAREUI/display/RecordMeta"; -import { CameraPreset, FeedRoutes, GetStatusResponse } from "./routes"; -import DialogModal from "@/components/Common/Dialog"; import { Listbox, ListboxButton, ListboxOption, ListboxOptions, } from "@headlessui/react"; -import { dropdownOptionClassNames } from "../Form/MultiSelectMenuV2"; -import Loading from "@/components/Common/Loading"; +import { useQueryParams } from "raviger"; +import { useEffect, useState } from "react"; +import { useTranslation } from "react-i18next"; + +import RecordMeta from "@/CAREUI/display/RecordMeta"; +import CareIcon from "@/CAREUI/icons/CareIcon"; + +import { AssetData } from "@/components/Assets/AssetTypes"; +import CameraFeed from "@/components/CameraFeed/CameraFeed"; +import { + CameraPreset, + FeedRoutes, + GetStatusResponse, +} from "@/components/CameraFeed/routes"; +import useOperateCamera from "@/components/CameraFeed/useOperateCamera"; +import ButtonV2, { Cancel, Submit } from "@/components/Common/ButtonV2"; import ConfirmDialog from "@/components/Common/ConfirmDialog"; -import { FieldLabel } from "../Form/FormFields/FormField"; +import DialogModal from "@/components/Common/Dialog"; +import Loading from "@/components/Common/Loading"; +import CheckBoxFormField from "@/components/Form/FormFields/CheckBoxFormField"; +import { FieldLabel } from "@/components/Form/FormFields/FormField"; +import TextFormField from "@/components/Form/FormFields/TextFormField"; +import { dropdownOptionClassNames } from "@/components/Form/MultiSelectMenuV2"; + +import useAuthUser from "@/hooks/useAuthUser"; + import { checkIfValidIP } from "@/common/validation"; -import CheckBoxFormField from "../Form/FormFields/CheckBoxFormField"; + +import { Error, Success } from "@/Utils/Notifications"; +import routes from "@/Utils/request/api"; +import request from "@/Utils/request/request"; +import useQuery from "@/Utils/request/useQuery"; +import { getCameraConfig, makeAccessKey } from "@/Utils/transformUtils"; +import { classNames, compareBy } from "@/Utils/utils"; interface Props { asset: AssetData; diff --git a/src/components/CameraFeed/FeedAlert.tsx b/src/components/CameraFeed/FeedAlert.tsx index 86c5468decf..5c42677611f 100644 --- a/src/components/CameraFeed/FeedAlert.tsx +++ b/src/components/CameraFeed/FeedAlert.tsx @@ -1,7 +1,10 @@ import { Transition } from "@headlessui/react"; import { useEffect, useState } from "react"; -import CareIcon, { IconName } from "../../CAREUI/icons/CareIcon"; -import { classNames } from "../../Utils/utils"; + +import CareIcon, { IconName } from "@/CAREUI/icons/CareIcon"; + +import { classNames } from "@/Utils/utils"; + export type StreamStatus = "playing" | "stop" | "loading" | "offline"; export type FeedAlertState = diff --git a/src/components/CameraFeed/FeedButton.tsx b/src/components/CameraFeed/FeedButton.tsx index e2ae2a8fe9e..c5d591955d9 100644 --- a/src/components/CameraFeed/FeedButton.tsx +++ b/src/components/CameraFeed/FeedButton.tsx @@ -1,5 +1,6 @@ -import KeyboardShortcut from "../../CAREUI/interactive/KeyboardShortcut"; -import { classNames } from "../../Utils/utils"; +import KeyboardShortcut from "@/CAREUI/interactive/KeyboardShortcut"; + +import { classNames } from "@/Utils/utils"; interface Props { className?: string; diff --git a/src/components/CameraFeed/FeedControls.tsx b/src/components/CameraFeed/FeedControls.tsx index 36d3aa96cd2..4b7add78a1d 100644 --- a/src/components/CameraFeed/FeedControls.tsx +++ b/src/components/CameraFeed/FeedControls.tsx @@ -1,8 +1,11 @@ import { useState } from "react"; -import FeedButton from "./FeedButton"; -import CareIcon from "../../CAREUI/icons/CareIcon"; -import { PTZPayload } from "./useOperateCamera"; -import { isAppleDevice } from "../../Utils/utils"; + +import CareIcon from "@/CAREUI/icons/CareIcon"; + +import FeedButton from "@/components/CameraFeed/FeedButton"; +import { PTZPayload } from "@/components/CameraFeed/useOperateCamera"; + +import { isAppleDevice } from "@/Utils/utils"; const Actions = { UP: 1 << 0, diff --git a/src/components/CameraFeed/FeedNetworkSignal.tsx b/src/components/CameraFeed/FeedNetworkSignal.tsx index 4b1e6c7fbe3..bb187ca8167 100644 --- a/src/components/CameraFeed/FeedNetworkSignal.tsx +++ b/src/components/CameraFeed/FeedNetworkSignal.tsx @@ -1,7 +1,9 @@ import { useEffect, useState } from "react"; -import { calculateVideoDelay } from "./utils"; -import NetworkSignal from "../../CAREUI/display/NetworkSignal"; -import { StreamStatus } from "./FeedAlert"; + +import NetworkSignal from "@/CAREUI/display/NetworkSignal"; + +import { StreamStatus } from "@/components/CameraFeed/FeedAlert"; +import { calculateVideoDelay } from "@/components/CameraFeed/utils"; interface Props { playerRef: React.RefObject; diff --git a/src/components/CameraFeed/FeedWatermark.tsx b/src/components/CameraFeed/FeedWatermark.tsx index f71bab24ac6..eb129b7db72 100644 --- a/src/components/CameraFeed/FeedWatermark.tsx +++ b/src/components/CameraFeed/FeedWatermark.tsx @@ -1,5 +1,6 @@ import { useEffect, useRef } from "react"; -import useAuthUser from "@/common/hooks/useAuthUser"; + +import useAuthUser from "@/hooks/useAuthUser"; export default function FeedWatermark() { const me = useAuthUser(); diff --git a/src/components/CameraFeed/NoFeedAvailable.tsx b/src/components/CameraFeed/NoFeedAvailable.tsx index 05e07327458..ae70f7abbc0 100644 --- a/src/components/CameraFeed/NoFeedAvailable.tsx +++ b/src/components/CameraFeed/NoFeedAvailable.tsx @@ -1,7 +1,9 @@ -import CareIcon, { IconName } from "../../CAREUI/icons/CareIcon"; -import { classNames } from "../../Utils/utils"; -import { AssetData } from "../Assets/AssetTypes"; -import ButtonV2 from "@/components/Common/components/ButtonV2"; +import CareIcon, { IconName } from "@/CAREUI/icons/CareIcon"; + +import { AssetData } from "@/components/Assets/AssetTypes"; +import ButtonV2 from "@/components/Common/ButtonV2"; + +import { classNames } from "@/Utils/utils"; interface Props { className?: string; diff --git a/src/components/CameraFeed/StillWatching.tsx b/src/components/CameraFeed/StillWatching.tsx index 8993d0344d7..b9c565ccd8a 100644 --- a/src/components/CameraFeed/StillWatching.tsx +++ b/src/components/CameraFeed/StillWatching.tsx @@ -1,10 +1,13 @@ +import careConfig from "@careConfig"; import { useEffect, useState } from "react"; -import ConfirmDialog from "@/components/Common/ConfirmDialog"; -import ButtonV2 from "@/components/Common/components/ButtonV2"; -import CareIcon from "../../CAREUI/icons/CareIcon"; import { useTranslation } from "react-i18next"; -import { useTimer } from "../../Utils/useTimer"; -import careConfig from "@careConfig"; + +import CareIcon from "@/CAREUI/icons/CareIcon"; + +import ButtonV2 from "@/components/Common/ButtonV2"; +import ConfirmDialog from "@/components/Common/ConfirmDialog"; + +import { useTimer } from "@/hooks/useTimer"; type State = "watching" | "prompted" | "timed-out"; diff --git a/src/components/CameraFeed/routes.ts b/src/components/CameraFeed/routes.ts index bffcb0fc9b0..e5a0ef72491 100644 --- a/src/components/CameraFeed/routes.ts +++ b/src/components/CameraFeed/routes.ts @@ -1,10 +1,13 @@ -import { OperationAction, PTZPayload } from "./useOperateCamera"; - -import { AssetBedModel } from "../Assets/AssetTypes"; -import { PaginatedResponse } from "../../Utils/request/types"; -import { Type } from "../../Redux/api"; +import { AssetBedModel } from "@/components/Assets/AssetTypes"; +import { + OperationAction, + PTZPayload, +} from "@/components/CameraFeed/useOperateCamera"; import { UserBareMinimum } from "@/components/Users/models"; -import { WritableOnly } from "../../Utils/types"; + +import { Type } from "@/Utils/request/api"; +import { PaginatedResponse } from "@/Utils/request/types"; +import { WritableOnly } from "@/Utils/types"; export type GetStatusResponse = { result: { diff --git a/src/components/CameraFeed/useOperateCamera.ts b/src/components/CameraFeed/useOperateCamera.ts index 0e65fb0130c..6fcc2436ac3 100644 --- a/src/components/CameraFeed/useOperateCamera.ts +++ b/src/components/CameraFeed/useOperateCamera.ts @@ -1,6 +1,8 @@ import { useState } from "react"; -import request from "../../Utils/request/request"; -import { FeedRoutes } from "./routes"; + +import { FeedRoutes } from "@/components/CameraFeed/routes"; + +import request from "@/Utils/request/request"; export interface PTZPayload { x: number; diff --git a/src/components/CameraFeed/utils.ts b/src/components/CameraFeed/utils.ts index 1cb721ebcc3..e13934c301b 100644 --- a/src/components/CameraFeed/utils.ts +++ b/src/components/CameraFeed/utils.ts @@ -1,6 +1,8 @@ import { MutableRefObject } from "react"; -import { AssetClass, AssetData } from "../Assets/AssetTypes"; -import { getCameraConfig } from "../../Utils/transformUtils"; + +import { AssetClass, AssetData } from "@/components/Assets/AssetTypes"; + +import { getCameraConfig } from "@/Utils/transformUtils"; export const calculateVideoDelay = ( ref: MutableRefObject, diff --git a/src/components/Common/components/AccordionV2.tsx b/src/components/Common/AccordionV2.tsx similarity index 100% rename from src/components/Common/components/AccordionV2.tsx rename to src/components/Common/AccordionV2.tsx diff --git a/src/components/Common/AssetInfoPopover.tsx b/src/components/Common/AssetInfoPopover.tsx index 986bed795c9..034073f473d 100644 --- a/src/components/Common/AssetInfoPopover.tsx +++ b/src/components/Common/AssetInfoPopover.tsx @@ -1,14 +1,16 @@ -import CareIcon from "../../CAREUI/icons/CareIcon"; -import { AssetData, assetClassProps } from "../Assets/AssetTypes"; -import ButtonV2 from "./components/ButtonV2"; -import { navigate } from "raviger"; -import { useTranslation } from "react-i18next"; import { Popover, PopoverButton, PopoverPanel, Transition, } from "@headlessui/react"; +import { navigate } from "raviger"; +import { useTranslation } from "react-i18next"; + +import CareIcon from "@/CAREUI/icons/CareIcon"; + +import { AssetData, assetClassProps } from "@/components/Assets/AssetTypes"; +import ButtonV2 from "@/components/Common/ButtonV2"; interface AssetInfoPopoverProps { asset?: AssetData; diff --git a/src/components/Common/AssetSelect.tsx b/src/components/Common/AssetSelect.tsx index 0db7b46b67c..b1feb8fc839 100644 --- a/src/components/Common/AssetSelect.tsx +++ b/src/components/Common/AssetSelect.tsx @@ -1,7 +1,9 @@ import { useCallback } from "react"; -import AutoCompleteAsync from "../Form/AutoCompleteAsync"; -import routes from "../../Redux/api"; -import request from "../../Utils/request/request"; + +import AutoCompleteAsync from "@/components/Form/AutoCompleteAsync"; + +import routes from "@/Utils/request/api"; +import request from "@/Utils/request/request"; interface AssetSelectProps { name: string; diff --git a/src/components/Common/Avatar.tsx b/src/components/Common/Avatar.tsx index 7a7ded17265..2c463fa093b 100644 --- a/src/components/Common/Avatar.tsx +++ b/src/components/Common/Avatar.tsx @@ -1,6 +1,7 @@ -import { cn } from "@/lib/utils"; import React from "react"; +import { cn } from "@/lib/utils"; + const colors: string[] = [ "#E6F3FF", // Light Blue "#FFF0E6", // Light Peach diff --git a/src/components/Common/AvatarEditModal.tsx b/src/components/Common/AvatarEditModal.tsx index 8884b62e3c2..38b54b1f1d2 100644 --- a/src/components/Common/AvatarEditModal.tsx +++ b/src/components/Common/AvatarEditModal.tsx @@ -1,17 +1,21 @@ import React, { - useState, ChangeEventHandler, useCallback, useEffect, useRef, + useState, } from "react"; -import { Warn } from "@/Utils/Notifications"; -import useDragAndDrop from "@/Utils/useDragAndDrop"; -import ButtonV2, { Cancel, Submit } from "./components/ButtonV2"; +import { useTranslation } from "react-i18next"; import Webcam from "react-webcam"; + import CareIcon from "@/CAREUI/icons/CareIcon"; -import { useTranslation } from "react-i18next"; -import DialogModal from "./Dialog"; + +import ButtonV2, { Cancel, Submit } from "@/components/Common/ButtonV2"; +import DialogModal from "@/components/Common/Dialog"; + +import useDragAndDrop from "@/hooks/useDragAndDrop"; + +import { Warn } from "@/Utils/Notifications"; interface Props { title: string; diff --git a/src/components/Common/AvatarEditable.tsx b/src/components/Common/AvatarEditable.tsx index f8c0f4885bb..bbf3ab6c35f 100644 --- a/src/components/Common/AvatarEditable.tsx +++ b/src/components/Common/AvatarEditable.tsx @@ -1,7 +1,10 @@ -import CareIcon from "@/CAREUI/icons/CareIcon"; -import { cn } from "@/lib/utils"; import { useTranslation } from "react-i18next"; -import { AvatarProps, Avatar } from "@/components/Common/Avatar"; + +import { cn } from "@/lib/utils"; + +import CareIcon from "@/CAREUI/icons/CareIcon"; + +import { Avatar, AvatarProps } from "@/components/Common/Avatar"; interface AvatarEditableProps extends AvatarProps { id?: string; diff --git a/src/components/Common/BedSelect.tsx b/src/components/Common/BedSelect.tsx index 7ed741061ee..741049e7d74 100644 --- a/src/components/Common/BedSelect.tsx +++ b/src/components/Common/BedSelect.tsx @@ -1,10 +1,12 @@ import { useCallback } from "react"; -import { BedModel } from "../Facility/models"; -import AutoCompleteAsync from "../Form/AutoCompleteAsync"; import { useTranslation } from "react-i18next"; -import request from "../../Utils/request/request"; -import routes from "../../Redux/api"; -import { AssetClass } from "../Assets/AssetTypes"; + +import { AssetClass } from "@/components/Assets/AssetTypes"; +import { BedModel } from "@/components/Facility/models"; +import AutoCompleteAsync from "@/components/Form/AutoCompleteAsync"; + +import routes from "@/Utils/request/api"; +import request from "@/Utils/request/request"; interface BedSelectProps { name: string; diff --git a/src/components/Common/BloodPressureFormField.tsx b/src/components/Common/BloodPressureFormField.tsx index beddd34cf38..77ef37fe5d7 100644 --- a/src/components/Common/BloodPressureFormField.tsx +++ b/src/components/Common/BloodPressureFormField.tsx @@ -1,13 +1,14 @@ import { useTranslation } from "react-i18next"; -import { FieldValidator } from "../Form/FieldValidators"; -import FormField from "../Form/FormFields/FormField"; + +import { FieldValidator } from "@/components/Form/FieldValidators"; +import FormField from "@/components/Form/FormFields/FormField"; +import TextFormField from "@/components/Form/FormFields/TextFormField"; import { FieldChangeEvent, FormFieldBaseProps, useFormFieldPropsResolver, -} from "../Form/FormFields/Utils"; -import { BloodPressure } from "../Patient/models"; -import TextFormField from "../Form/FormFields/TextFormField"; +} from "@/components/Form/FormFields/Utils"; +import { BloodPressure } from "@/components/Patient/models"; type Props = FormFieldBaseProps; diff --git a/src/components/Common/Breadcrumbs.tsx b/src/components/Common/Breadcrumbs.tsx index 4ccbbfd717e..410df597a5d 100644 --- a/src/components/Common/Breadcrumbs.tsx +++ b/src/components/Common/Breadcrumbs.tsx @@ -1,9 +1,13 @@ -import { usePath, Link } from "raviger"; +import { Link, usePath } from "raviger"; import { useState } from "react"; -import { classNames } from "../../Utils/utils"; + +import CareIcon from "@/CAREUI/icons/CareIcon"; + import { Button } from "@/components/ui/button"; -import CareIcon from "../../CAREUI/icons/CareIcon"; -import useAppHistory from "@/common/hooks/useAppHistory"; + +import useAppHistory from "@/hooks/useAppHistory"; + +import { classNames } from "@/Utils/utils"; const MENU_TAGS: { [key: string]: string } = { facility: "Facilities", diff --git a/src/components/Common/components/ButtonV2.tsx b/src/components/Common/ButtonV2.tsx similarity index 96% rename from src/components/Common/components/ButtonV2.tsx rename to src/components/Common/ButtonV2.tsx index b7eab5f29d7..11b6aa95d20 100644 --- a/src/components/Common/components/ButtonV2.tsx +++ b/src/components/Common/ButtonV2.tsx @@ -1,11 +1,14 @@ -import AuthorizedChild from "../../../CAREUI/misc/AuthorizedChild"; -import { AuthorizedElementProps } from "../../../Utils/AuthorizeFor"; -import CareIcon from "../../../CAREUI/icons/CareIcon"; import { Link } from "raviger"; -import { classNames } from "../../../Utils/utils"; -import { useTranslation } from "react-i18next"; import { useEffect, useState } from "react"; -import Spinner from "../Spinner"; +import { useTranslation } from "react-i18next"; + +import CareIcon from "@/CAREUI/icons/CareIcon"; +import AuthorizedChild from "@/CAREUI/misc/AuthorizedChild"; + +import Spinner from "@/components/Common/Spinner"; + +import { AuthorizedElementProps } from "@/Utils/AuthorizeFor"; +import { classNames } from "@/Utils/utils"; export type ButtonSize = "small" | "default" | "large"; export type ButtonShape = "square" | "circle"; diff --git a/src/components/Common/components/CircularProgress.tsx b/src/components/Common/CircularProgress.tsx similarity index 100% rename from src/components/Common/components/CircularProgress.tsx rename to src/components/Common/CircularProgress.tsx diff --git a/src/components/Common/components/CollapseV2.tsx b/src/components/Common/CollapseV2.tsx similarity index 100% rename from src/components/Common/components/CollapseV2.tsx rename to src/components/Common/CollapseV2.tsx diff --git a/src/components/Common/ConfirmDialog.tsx b/src/components/Common/ConfirmDialog.tsx index a6bc14e8d4f..0183fc1d651 100644 --- a/src/components/Common/ConfirmDialog.tsx +++ b/src/components/Common/ConfirmDialog.tsx @@ -1,5 +1,5 @@ -import DialogModal from "./Dialog"; -import { ButtonVariant, Cancel, Submit } from "./components/ButtonV2"; +import { ButtonVariant, Cancel, Submit } from "@/components/Common/ButtonV2"; +import DialogModal from "@/components/Common/Dialog"; type ConfirmDialogProps = { className?: string; diff --git a/src/components/Common/components/ContactLink.tsx b/src/components/Common/ContactLink.tsx similarity index 91% rename from src/components/Common/components/ContactLink.tsx rename to src/components/Common/ContactLink.tsx index ee834b3f2a9..c8115b42a1f 100644 --- a/src/components/Common/components/ContactLink.tsx +++ b/src/components/Common/ContactLink.tsx @@ -1,4 +1,4 @@ -import CareIcon from "../../../CAREUI/icons/CareIcon"; +import CareIcon from "@/CAREUI/icons/CareIcon"; type ContactLinkProps = | { mailto: string; tel?: undefined } diff --git a/src/components/Common/DateInputV2.tsx b/src/components/Common/DateInputV2.tsx index 87a29debe5b..e72639700fc 100644 --- a/src/components/Common/DateInputV2.tsx +++ b/src/components/Common/DateInputV2.tsx @@ -1,12 +1,14 @@ -import { MutableRefObject, useEffect, useRef, useState } from "react"; - -import CareIcon from "../../CAREUI/icons/CareIcon"; import { Popover, PopoverButton, PopoverPanel } from "@headlessui/react"; -import { classNames } from "../../Utils/utils"; -import dayjs from "../../Utils/dayjs"; -import * as Notification from "../../Utils/Notifications"; import { t } from "i18next"; -import DateTextInput from "./DateTextInput"; +import { MutableRefObject, useEffect, useRef, useState } from "react"; + +import CareIcon from "@/CAREUI/icons/CareIcon"; + +import DateTextInput from "@/components/Common/DateTextInput"; + +import * as Notification from "@/Utils/Notifications"; +import dayjs from "@/Utils/dayjs"; +import { classNames } from "@/Utils/utils"; type DatePickerType = "date" | "month" | "year"; @@ -190,6 +192,16 @@ const DateInputV2: React.FC = ({ year = datePickerHeaderDate.getFullYear(), ) => { const date = new Date(year, month, day); + if ( + min && + max && + min.getDate() === max.getDate() && + day === min.getDate() && + month === min.getMonth() && + year === min.getFullYear() + ) { + return true; + } if (min) if (date < min) return false; if (max) if (date > max) return false; return true; diff --git a/src/components/Common/DateRangeInputV2.tsx b/src/components/Common/DateRangeInputV2.tsx index aa426ad0cb2..d3f57e59884 100644 --- a/src/components/Common/DateRangeInputV2.tsx +++ b/src/components/Common/DateRangeInputV2.tsx @@ -1,5 +1,6 @@ import { useState } from "react"; -import DateInputV2 from "./DateInputV2"; + +import DateInputV2 from "@/components/Common/DateInputV2"; export type DateRange = { start: Date | undefined; diff --git a/src/components/Common/DateTextInput.tsx b/src/components/Common/DateTextInput.tsx index 38e13b23283..f2cd4844a1c 100644 --- a/src/components/Common/DateTextInput.tsx +++ b/src/components/Common/DateTextInput.tsx @@ -1,8 +1,10 @@ -import CareIcon from "@/CAREUI/icons/CareIcon"; -import { classNames } from "@/Utils/utils"; import dayjs from "dayjs"; import { Fragment, KeyboardEvent, useEffect, useState } from "react"; +import CareIcon from "@/CAREUI/icons/CareIcon"; + +import { classNames } from "@/Utils/utils"; + /** * DateTextInput component. * diff --git a/src/components/Common/Dialog.tsx b/src/components/Common/Dialog.tsx index 07722daf793..a67981dd3f8 100644 --- a/src/components/Common/Dialog.tsx +++ b/src/components/Common/Dialog.tsx @@ -5,7 +5,8 @@ import { Transition, TransitionChild, } from "@headlessui/react"; -import { classNames } from "../../Utils/utils"; + +import { classNames } from "@/Utils/utils"; type DialogProps = { title: React.ReactNode; diff --git a/src/components/Common/DistrictAutocompleteFormField.tsx b/src/components/Common/DistrictAutocompleteFormField.tsx index 25fef151f2a..91f1c9389f8 100644 --- a/src/components/Common/DistrictAutocompleteFormField.tsx +++ b/src/components/Common/DistrictAutocompleteFormField.tsx @@ -1,8 +1,9 @@ -import { FormFieldBaseProps } from "../Form/FormFields/Utils"; -import AutocompleteFormField from "../Form/FormFields/Autocomplete"; -import useQuery from "../../Utils/request/useQuery"; -import routes from "../../Redux/api"; -import { DistrictModel, StateModel } from "../Facility/models"; +import { DistrictModel, StateModel } from "@/components/Facility/models"; +import AutocompleteFormField from "@/components/Form/FormFields/Autocomplete"; +import { FormFieldBaseProps } from "@/components/Form/FormFields/Utils"; + +import routes from "@/Utils/request/api"; +import useQuery from "@/Utils/request/useQuery"; type Props = FormFieldBaseProps & { placeholder?: string; diff --git a/src/components/Common/ExcelFIleDragAndDrop.tsx b/src/components/Common/ExcelFIleDragAndDrop.tsx index d79cab62d34..67c64f0f433 100644 --- a/src/components/Common/ExcelFIleDragAndDrop.tsx +++ b/src/components/Common/ExcelFIleDragAndDrop.tsx @@ -1,18 +1,23 @@ import { forIn } from "lodash-es"; import { useEffect, useRef, useState } from "react"; -import * as Notification from "../../Utils/Notifications"; import { useTranslation } from "react-i18next"; -import { Cancel, Submit } from "./components/ButtonV2"; -import CareIcon from "../../CAREUI/icons/CareIcon"; -import useDragAndDrop from "../../Utils/useDragAndDrop"; -import ExcelViewer from "./ExcelViewer"; import * as XLSX from "xlsx"; + +import CareIcon from "@/CAREUI/icons/CareIcon"; + +import { Cancel, Submit } from "@/components/Common/ButtonV2"; +import ExcelViewer from "@/components/Common/ExcelViewer"; + +import useDragAndDrop from "@/hooks/useDragAndDrop"; + import schemaParser, { - SchemaType, ErrorData, ParsedData, + SchemaType, } from "@/common/schemaParser"; +import * as Notification from "@/Utils/Notifications"; + interface Props { handleSubmit: (data: any) => void; loading: boolean; diff --git a/src/components/Common/ExcelViewer.tsx b/src/components/Common/ExcelViewer.tsx index 4705d23c733..d35c98a6cc8 100644 --- a/src/components/Common/ExcelViewer.tsx +++ b/src/components/Common/ExcelViewer.tsx @@ -1,8 +1,11 @@ import { ReactNode, useEffect, useState } from "react"; -import CareIcon from "../../CAREUI/icons/CareIcon"; -import ButtonV2, { Cancel, Submit } from "./components/ButtonV2"; -import DialogModal from "./Dialog"; -import Pagination from "./Pagination"; + +import CareIcon from "@/CAREUI/icons/CareIcon"; + +import ButtonV2, { Cancel, Submit } from "@/components/Common/ButtonV2"; +import DialogModal from "@/components/Common/Dialog"; +import Pagination from "@/components/Common/Pagination"; + import { ParsedData } from "@/common/schemaParser"; type FilePreviewProps = { diff --git a/src/components/Common/Export.tsx b/src/components/Common/Export.tsx index c34e3f6b5d9..6cd786977ed 100644 --- a/src/components/Common/Export.tsx +++ b/src/components/Common/Export.tsx @@ -1,13 +1,15 @@ +import CareIcon from "@/CAREUI/icons/CareIcon"; + +import ButtonV2 from "@/components/Common/ButtonV2"; import DropdownMenu, { DropdownItem, DropdownItemProps, -} from "@/components/Common/components/Menu"; +} from "@/components/Common/Menu"; + +import useExport from "@/hooks/useExport"; -import ButtonV2 from "@/components/Common/components/ButtonV2"; -import CareIcon from "../../CAREUI/icons/CareIcon"; -import useExport from "@/common/hooks/useExport"; -import { Route } from "../../Utils/request/types"; -import request from "../../Utils/request/request"; +import request from "@/Utils/request/request"; +import { Route } from "@/Utils/request/types"; interface ExportItem { options?: DropdownItemProps; diff --git a/src/components/Common/FacilitySelect.tsx b/src/components/Common/FacilitySelect.tsx index d91b9a7f8fc..e4397cbcb9c 100644 --- a/src/components/Common/FacilitySelect.tsx +++ b/src/components/Common/FacilitySelect.tsx @@ -1,9 +1,11 @@ -import { useCallback } from "react"; -import AutoCompleteAsync from "../Form/AutoCompleteAsync"; -import { FacilityModel } from "../Facility/models"; -import request from "../../Utils/request/request"; -import routes from "../../Redux/api"; import { t } from "i18next"; +import { useCallback } from "react"; + +import { FacilityModel } from "@/components/Facility/models"; +import AutoCompleteAsync from "@/components/Form/AutoCompleteAsync"; + +import routes from "@/Utils/request/api"; +import request from "@/Utils/request/request"; interface FacilitySelectProps { name: string; diff --git a/src/components/Common/FilePreviewDialog.tsx b/src/components/Common/FilePreviewDialog.tsx index 13768a0cf04..4b7a07bd0cd 100644 --- a/src/components/Common/FilePreviewDialog.tsx +++ b/src/components/Common/FilePreviewDialog.tsx @@ -1,11 +1,21 @@ -import CircularProgress from "./components/CircularProgress"; +import { + Dispatch, + ReactNode, + SetStateAction, + Suspense, + lazy, + useState, +} from "react"; import { useTranslation } from "react-i18next"; -import { StateInterface } from "../Files/FileUpload"; -import { Dispatch, ReactNode, SetStateAction, useState } from "react"; -import CareIcon, { IconName } from "../../CAREUI/icons/CareIcon"; -import ButtonV2, { Cancel } from "./components/ButtonV2"; -import DialogModal from "./Dialog"; -import PDFViewer from "./PDFViewer"; + +import CareIcon, { IconName } from "@/CAREUI/icons/CareIcon"; + +import ButtonV2, { Cancel } from "@/components/Common/ButtonV2"; +import CircularProgress from "@/components/Common/CircularProgress"; +import DialogModal from "@/components/Common/Dialog"; +import { StateInterface } from "@/components/Files/FileUpload"; + +const PDFViewer = lazy(() => import("@/components/Common/PDFViewer")); export const zoom_values = [ "scale-25", @@ -135,14 +145,16 @@ const FilePreviewDialog = (props: FilePreviewProps) => { } ${getRotationClass(file_state.rotation)}`} /> ) : file_state.extension === "pdf" ? ( - { - setPage(1); - setNumPages(numPages); - }} - pageNumber={page} - /> + }> + { + setPage(1); + setNumPages(numPages); + }} + pageNumber={page} + /> + ) : previewExtensions.includes(file_state.extension) ? (