diff --git a/web/.prettierrc b/web/.prettierrc index 2af2c51a..6e0dd686 100644 --- a/web/.prettierrc +++ b/web/.prettierrc @@ -2,5 +2,7 @@ "printWidth": 140, "useTabs": false, "semi": true, - "singleQuote": false + "singleQuote": false, + "plugins": ["@ianvs/prettier-plugin-sort-imports"], + "importOrder": ["", "", "^@/(.*)$", "^[./]", ".less$"] } diff --git a/web/package.json b/web/package.json index 5549c96f..8d36dbe9 100644 --- a/web/package.json +++ b/web/package.json @@ -12,6 +12,8 @@ "@emotion/styled": "^11.10.5", "@microsoft/fetch-event-source": "^2.0.1", "@mui/joy": "^5.0.0-alpha.75", + "@mui/material": "^5.14.2", + "@mui/styled-engine-sc": "^5.12.0", "@reduxjs/toolkit": "^1.8.1", "axios": "^0.27.2", "classnames": "^2.3.2", @@ -30,12 +32,14 @@ "react-router-dom": "^6.8.2", "react-use": "^17.4.0", "semver": "^7.3.8", + "styled-components": "^6.0.5", "tailwindcss": "^3.2.4", "textarea-caret": "^3.1.0", "uuid": "^9.0.0", "zustand": "^4.3.6" }, "devDependencies": { + "@ianvs/prettier-plugin-sort-imports": "^4.1.0", "@types/lodash-es": "^4.17.5", "@types/node": "^18.0.3", "@types/qs": "^6.9.7", diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index fdde9521..5592ebb0 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -17,6 +17,12 @@ dependencies: '@mui/joy': specifier: ^5.0.0-alpha.75 version: 5.0.0-alpha.89(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(@types/react@18.2.17)(react-dom@18.2.0)(react@18.2.0) + '@mui/material': + specifier: ^5.14.2 + version: 5.14.2(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(@types/react@18.2.17)(react-dom@18.2.0)(react@18.2.0) + '@mui/styled-engine-sc': + specifier: ^5.12.0 + version: 5.12.0(styled-components@6.0.5) '@reduxjs/toolkit': specifier: ^1.8.1 version: 1.9.5(react-redux@8.1.2)(react@18.2.0) @@ -71,6 +77,9 @@ dependencies: semver: specifier: ^7.3.8 version: 7.5.4 + styled-components: + specifier: ^6.0.5 + version: 6.0.5(react-dom@18.2.0)(react@18.2.0) tailwindcss: specifier: ^3.2.4 version: 3.3.3 @@ -85,6 +94,9 @@ dependencies: version: 4.3.9(react@18.2.0) devDependencies: + '@ianvs/prettier-plugin-sort-imports': + specifier: ^4.1.0 + version: 4.1.0(prettier@2.5.1) '@types/lodash-es': specifier: ^4.17.5 version: 4.17.8 @@ -164,11 +176,168 @@ packages: engines: {node: '>=10'} dev: false + /@ampproject/remapping@2.2.1: + resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==} + engines: {node: '>=6.0.0'} + dependencies: + '@jridgewell/gen-mapping': 0.3.3 + '@jridgewell/trace-mapping': 0.3.18 + + /@babel/cli@7.22.9(@babel/core@7.22.9): + resolution: {integrity: sha512-nb2O7AThqRo7/E53EGiuAkMaRbb7J5Qp3RvN+dmua1U+kydm0oznkhqbTEG15yk26G/C3yL6OdZjzgl+DMXVVA==} + engines: {node: '>=6.9.0'} + hasBin: true + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.9 + '@jridgewell/trace-mapping': 0.3.18 + commander: 4.1.1 + convert-source-map: 1.9.0 + fs-readdir-recursive: 1.1.0 + glob: 7.2.3 + make-dir: 2.1.0 + slash: 2.0.0 + optionalDependencies: + '@nicolo-ribaudo/chokidar-2': 2.1.8-no-fsevents.3 + chokidar: 3.5.3 + dev: false + /@babel/code-frame@7.22.5: resolution: {integrity: sha512-Xmwn266vad+6DAqEB2A6V/CcZVp62BbwVmcOJc2RPuwih1kw02TjQvWVWlcKGbBPd+8/0V5DEkOcizRGYsspYQ==} engines: {node: '>=6.9.0'} dependencies: '@babel/highlight': 7.22.5 + + /@babel/compat-data@7.22.9: + resolution: {integrity: sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ==} + engines: {node: '>=6.9.0'} + + /@babel/core@7.22.9: + resolution: {integrity: sha512-G2EgeufBcYw27U4hhoIwFcgc1XU7TlXJ3mv04oOv1WCuo900U/anZSPzEqNjwdjgffkk2Gs0AN0dW1CKVLcG7w==} + engines: {node: '>=6.9.0'} + dependencies: + '@ampproject/remapping': 2.2.1 + '@babel/code-frame': 7.22.5 + '@babel/generator': 7.22.9 + '@babel/helper-compilation-targets': 7.22.9(@babel/core@7.22.9) + '@babel/helper-module-transforms': 7.22.9(@babel/core@7.22.9) + '@babel/helpers': 7.22.6 + '@babel/parser': 7.22.7 + '@babel/template': 7.22.5 + '@babel/traverse': 7.22.8 + '@babel/types': 7.22.5 + convert-source-map: 1.9.0 + debug: 4.3.4 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + /@babel/generator@7.22.9: + resolution: {integrity: sha512-KtLMbmicyuK2Ak/FTCJVbDnkN1SlT8/kceFTiuDiiRUUSMnHMidxSCdG4ndkTOHHpoomWe/4xkvHkEOncwjYIw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.22.5 + '@jridgewell/gen-mapping': 0.3.3 + '@jridgewell/trace-mapping': 0.3.18 + jsesc: 2.5.2 + + /@babel/helper-annotate-as-pure@7.22.5: + resolution: {integrity: sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.22.5 + dev: false + + /@babel/helper-builder-binary-assignment-operator-visitor@7.22.5: + resolution: {integrity: sha512-m1EP3lVOPptR+2DwD125gziZNcmoNSHGmJROKoy87loWUQyJaVXDgpmruWqDARZSmtYQ+Dl25okU8+qhVzuykw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.22.5 + dev: false + + /@babel/helper-compilation-targets@7.22.9(@babel/core@7.22.9): + resolution: {integrity: sha512-7qYrNM6HjpnPHJbopxmb8hSPoZ0gsX8IvUS32JGVoy+pU9e5N0nLr1VjJoR6kA4d9dmGLxNYOjeB8sUDal2WMw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/compat-data': 7.22.9 + '@babel/core': 7.22.9 + '@babel/helper-validator-option': 7.22.5 + browserslist: 4.21.9 + lru-cache: 5.1.1 + semver: 6.3.1 + + /@babel/helper-create-class-features-plugin@7.22.9(@babel/core@7.22.9): + resolution: {integrity: sha512-Pwyi89uO4YrGKxL/eNJ8lfEH55DnRloGPOseaA8NFNL6jAUnn+KccaISiFazCj5IolPPDjGSdzQzXVzODVRqUQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-environment-visitor': 7.22.5 + '@babel/helper-function-name': 7.22.5 + '@babel/helper-member-expression-to-functions': 7.22.5 + '@babel/helper-optimise-call-expression': 7.22.5 + '@babel/helper-replace-supers': 7.22.9(@babel/core@7.22.9) + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + semver: 6.3.1 + dev: false + + /@babel/helper-create-regexp-features-plugin@7.22.9(@babel/core@7.22.9): + resolution: {integrity: sha512-+svjVa/tFwsNSG4NEy1h85+HQ5imbT92Q5/bgtS7P0GTQlP8WuFdqsiABmQouhiFGyV66oGxZFpeYHza1rNsKw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-annotate-as-pure': 7.22.5 + regexpu-core: 5.3.2 + semver: 6.3.1 + dev: false + + /@babel/helper-define-polyfill-provider@0.4.2(@babel/core@7.22.9): + resolution: {integrity: sha512-k0qnnOqHn5dK9pZpfD5XXZ9SojAITdCKRn2Lp6rnDGzIbaP0rHyMPk/4wsSxVBVz4RfN0q6VpXWP2pDGIoQ7hw==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-compilation-targets': 7.22.9(@babel/core@7.22.9) + '@babel/helper-plugin-utils': 7.22.5 + debug: 4.3.4 + lodash.debounce: 4.0.8 + resolve: 1.22.2 + transitivePeerDependencies: + - supports-color + dev: false + + /@babel/helper-environment-visitor@7.22.5: + resolution: {integrity: sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q==} + engines: {node: '>=6.9.0'} + + /@babel/helper-function-name@7.22.5: + resolution: {integrity: sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/template': 7.22.5 + '@babel/types': 7.22.5 + + /@babel/helper-hoist-variables@7.22.5: + resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.22.5 + + /@babel/helper-member-expression-to-functions@7.22.5: + resolution: {integrity: sha512-aBiH1NKMG0H2cGZqspNvsaBe6wNGjbJjuLy29aU+eDZjSbbN53BaxlpB02xm9v34pLTZ1nIQPFYn2qMZoa5BQQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.22.5 dev: false /@babel/helper-module-imports@7.22.5: @@ -176,18 +345,106 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.22.5 + + /@babel/helper-module-transforms@7.22.9(@babel/core@7.22.9): + resolution: {integrity: sha512-t+WA2Xn5K+rTeGtC8jCsdAH52bjggG5TKRuRrAGNM/mjIbO4GxvlLMFOEz9wXY5I2XQ60PMFsAG2WIcG82dQMQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-environment-visitor': 7.22.5 + '@babel/helper-module-imports': 7.22.5 + '@babel/helper-simple-access': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + '@babel/helper-validator-identifier': 7.22.5 + + /@babel/helper-optimise-call-expression@7.22.5: + resolution: {integrity: sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.22.5 dev: false + /@babel/helper-plugin-utils@7.22.5: + resolution: {integrity: sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==} + engines: {node: '>=6.9.0'} + dev: false + + /@babel/helper-remap-async-to-generator@7.22.9(@babel/core@7.22.9): + resolution: {integrity: sha512-8WWC4oR4Px+tr+Fp0X3RHDVfINGpF3ad1HIbrc8A77epiR6eMMc6jsgozkzT2uDiOOdoS9cLIQ+XD2XvI2WSmQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-environment-visitor': 7.22.5 + '@babel/helper-wrap-function': 7.22.9 + dev: false + + /@babel/helper-replace-supers@7.22.9(@babel/core@7.22.9): + resolution: {integrity: sha512-LJIKvvpgPOPUThdYqcX6IXRuIcTkcAub0IaDRGCZH0p5GPUp7PhRU9QVgFcDDd51BaPkk77ZjqFwh6DZTAEmGg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-environment-visitor': 7.22.5 + '@babel/helper-member-expression-to-functions': 7.22.5 + '@babel/helper-optimise-call-expression': 7.22.5 + dev: false + + /@babel/helper-simple-access@7.22.5: + resolution: {integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.22.5 + + /@babel/helper-skip-transparent-expression-wrappers@7.22.5: + resolution: {integrity: sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.22.5 + dev: false + + /@babel/helper-split-export-declaration@7.22.6: + resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.22.5 + /@babel/helper-string-parser@7.22.5: resolution: {integrity: sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==} engines: {node: '>=6.9.0'} - dev: false /@babel/helper-validator-identifier@7.22.5: resolution: {integrity: sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==} engines: {node: '>=6.9.0'} + + /@babel/helper-validator-option@7.22.5: + resolution: {integrity: sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw==} + engines: {node: '>=6.9.0'} + + /@babel/helper-wrap-function@7.22.9: + resolution: {integrity: sha512-sZ+QzfauuUEfxSEjKFmi3qDSHgLsTPK/pEpoD/qonZKOtTPTLbf59oabPQ4rKekt9lFcj/hTZaOhWwFYrgjk+Q==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-function-name': 7.22.5 + '@babel/template': 7.22.5 + '@babel/types': 7.22.5 dev: false + /@babel/helpers@7.22.6: + resolution: {integrity: sha512-YjDs6y/fVOYFV8hAf1rxd1QvR9wJe1pDBZ2AREKq/SDayfPzgk0PBnVuTCE5X1acEpMMNOVUqoe+OwiZGJ+OaA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/template': 7.22.5 + '@babel/traverse': 7.22.8 + '@babel/types': 7.22.5 + transitivePeerDependencies: + - supports-color + /@babel/highlight@7.22.5: resolution: {integrity: sha512-BSKlD1hgnedS5XRnGOljZawtag7H1yPfQp0tdNJCHoH6AZ+Pcm9VvkrK59/Yy593Ypg0zMxH2BxD1VPYUQ7UIw==} engines: {node: '>=6.9.0'} @@ -195,6 +452,1005 @@ packages: '@babel/helper-validator-identifier': 7.22.5 chalk: 2.4.2 js-tokens: 4.0.0 + + /@babel/parser@7.22.7: + resolution: {integrity: sha512-7NF8pOkHP5o2vpmGgNGcfAeCvOYhGLyA3Z4eBQkT1RJlWu47n63bCs93QfJ2hIAFCil7L5P2IWhs1oToVgrL0Q==} + engines: {node: '>=6.0.0'} + hasBin: true + dependencies: + '@babel/types': 7.22.5 + + /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.22.5(@babel/core@7.22.9): + resolution: {integrity: sha512-NP1M5Rf+u2Gw9qfSO4ihjcTGW5zXTi36ITLd4/EoAcEhIZ0yjMqmftDNl3QC19CX7olhrjpyU454g/2W7X0jvQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-plugin-utils': 7.22.5 + dev: false + + /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.22.5(@babel/core@7.22.9): + resolution: {integrity: sha512-31Bb65aZaUwqCbWMnZPduIZxCBngHFlzyN6Dq6KAJjtx+lx6ohKHubc61OomYi7XwVD4Ol0XCVz4h+pYFR048g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.13.0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + '@babel/plugin-transform-optional-chaining': 7.22.6(@babel/core@7.22.9) + dev: false + + /@babel/plugin-external-helpers@7.22.5(@babel/core@7.22.9): + resolution: {integrity: sha512-ngnNEWxmykPk82mH4ajZT0qTztr3Je6hrMuKAslZVM8G1YZTENJSYwrIGtt6KOtznug3exmAtF4so/nPqJuA4A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-plugin-utils': 7.22.5 + dev: false + + /@babel/plugin-proposal-class-properties@7.18.6(@babel/core@7.22.9): + resolution: {integrity: sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-create-class-features-plugin': 7.22.9(@babel/core@7.22.9) + '@babel/helper-plugin-utils': 7.22.5 + dev: false + + /@babel/plugin-proposal-object-rest-spread@7.20.7(@babel/core@7.22.9): + resolution: {integrity: sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/compat-data': 7.22.9 + '@babel/core': 7.22.9 + '@babel/helper-compilation-targets': 7.22.9(@babel/core@7.22.9) + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.22.9) + '@babel/plugin-transform-parameters': 7.22.5(@babel/core@7.22.9) + dev: false + + /@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.22.9): + resolution: {integrity: sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.9 + dev: false + + /@babel/plugin-proposal-unicode-property-regex@7.18.6(@babel/core@7.22.9): + resolution: {integrity: sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==} + engines: {node: '>=4'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-create-regexp-features-plugin': 7.22.9(@babel/core@7.22.9) + '@babel/helper-plugin-utils': 7.22.5 + dev: false + + /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.22.9): + resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-plugin-utils': 7.22.5 + dev: false + + /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.22.9): + resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-plugin-utils': 7.22.5 + dev: false + + /@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.22.9): + resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-plugin-utils': 7.22.5 + dev: false + + /@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.22.9): + resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-plugin-utils': 7.22.5 + dev: false + + /@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.22.9): + resolution: {integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-plugin-utils': 7.22.5 + dev: false + + /@babel/plugin-syntax-import-assertions@7.22.5(@babel/core@7.22.9): + resolution: {integrity: sha512-rdV97N7KqsRzeNGoWUOK6yUsWarLjE5Su/Snk9IYPU9CwkWHs4t+rTGOvffTR8XGkJMTAdLfO0xVnXm8wugIJg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-plugin-utils': 7.22.5 + dev: false + + /@babel/plugin-syntax-import-attributes@7.22.5(@babel/core@7.22.9): + resolution: {integrity: sha512-KwvoWDeNKPETmozyFE0P2rOLqh39EoQHNjqizrI5B8Vt0ZNS7M56s7dAiAqbYfiAYOuIzIh96z3iR2ktgu3tEg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-plugin-utils': 7.22.5 + dev: false + + /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.22.9): + resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-plugin-utils': 7.22.5 + dev: false + + /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.22.9): + resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-plugin-utils': 7.22.5 + dev: false + + /@babel/plugin-syntax-jsx@7.22.5(@babel/core@7.22.9): + resolution: {integrity: sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-plugin-utils': 7.22.5 + dev: false + + /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.22.9): + resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-plugin-utils': 7.22.5 + dev: false + + /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.22.9): + resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-plugin-utils': 7.22.5 + dev: false + + /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.22.9): + resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-plugin-utils': 7.22.5 + dev: false + + /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.22.9): + resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-plugin-utils': 7.22.5 + dev: false + + /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.22.9): + resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-plugin-utils': 7.22.5 + dev: false + + /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.22.9): + resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-plugin-utils': 7.22.5 + dev: false + + /@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.22.9): + resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-plugin-utils': 7.22.5 + dev: false + + /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.22.9): + resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-plugin-utils': 7.22.5 + dev: false + + /@babel/plugin-syntax-typescript@7.22.5(@babel/core@7.22.9): + resolution: {integrity: sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-plugin-utils': 7.22.5 + dev: false + + /@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.22.9): + resolution: {integrity: sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-create-regexp-features-plugin': 7.22.9(@babel/core@7.22.9) + '@babel/helper-plugin-utils': 7.22.5 + dev: false + + /@babel/plugin-transform-arrow-functions@7.22.5(@babel/core@7.22.9): + resolution: {integrity: sha512-26lTNXoVRdAnsaDXPpvCNUq+OVWEVC6bx7Vvz9rC53F2bagUWW4u4ii2+h8Fejfh7RYqPxn+libeFBBck9muEw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-plugin-utils': 7.22.5 + dev: false + + /@babel/plugin-transform-async-generator-functions@7.22.7(@babel/core@7.22.9): + resolution: {integrity: sha512-7HmE7pk/Fmke45TODvxvkxRMV9RazV+ZZzhOL9AG8G29TLrr3jkjwF7uJfxZ30EoXpO+LJkq4oA8NjO2DTnEDg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-environment-visitor': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-remap-async-to-generator': 7.22.9(@babel/core@7.22.9) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.22.9) + dev: false + + /@babel/plugin-transform-async-to-generator@7.22.5(@babel/core@7.22.9): + resolution: {integrity: sha512-b1A8D8ZzE/VhNDoV1MSJTnpKkCG5bJo+19R4o4oy03zM7ws8yEMK755j61Dc3EyvdysbqH5BOOTquJ7ZX9C6vQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-module-imports': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-remap-async-to-generator': 7.22.9(@babel/core@7.22.9) + dev: false + + /@babel/plugin-transform-block-scoped-functions@7.22.5(@babel/core@7.22.9): + resolution: {integrity: sha512-tdXZ2UdknEKQWKJP1KMNmuF5Lx3MymtMN/pvA+p/VEkhK8jVcQ1fzSy8KM9qRYhAf2/lV33hoMPKI/xaI9sADA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-plugin-utils': 7.22.5 + dev: false + + /@babel/plugin-transform-block-scoping@7.22.5(@babel/core@7.22.9): + resolution: {integrity: sha512-EcACl1i5fSQ6bt+YGuU/XGCeZKStLmyVGytWkpyhCLeQVA0eu6Wtiw92V+I1T/hnezUv7j74dA/Ro69gWcU+hg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-plugin-utils': 7.22.5 + dev: false + + /@babel/plugin-transform-class-properties@7.22.5(@babel/core@7.22.9): + resolution: {integrity: sha512-nDkQ0NfkOhPTq8YCLiWNxp1+f9fCobEjCb0n8WdbNUBc4IB5V7P1QnX9IjpSoquKrXF5SKojHleVNs2vGeHCHQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-create-class-features-plugin': 7.22.9(@babel/core@7.22.9) + '@babel/helper-plugin-utils': 7.22.5 + dev: false + + /@babel/plugin-transform-class-static-block@7.22.5(@babel/core@7.22.9): + resolution: {integrity: sha512-SPToJ5eYZLxlnp1UzdARpOGeC2GbHvr9d/UV0EukuVx8atktg194oe+C5BqQ8jRTkgLRVOPYeXRSBg1IlMoVRA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.12.0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-create-class-features-plugin': 7.22.9(@babel/core@7.22.9) + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.22.9) + dev: false + + /@babel/plugin-transform-classes@7.22.6(@babel/core@7.22.9): + resolution: {integrity: sha512-58EgM6nuPNG6Py4Z3zSuu0xWu2VfodiMi72Jt5Kj2FECmaYk1RrTXA45z6KBFsu9tRgwQDwIiY4FXTt+YsSFAQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-compilation-targets': 7.22.9(@babel/core@7.22.9) + '@babel/helper-environment-visitor': 7.22.5 + '@babel/helper-function-name': 7.22.5 + '@babel/helper-optimise-call-expression': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-replace-supers': 7.22.9(@babel/core@7.22.9) + '@babel/helper-split-export-declaration': 7.22.6 + globals: 11.12.0 + dev: false + + /@babel/plugin-transform-computed-properties@7.22.5(@babel/core@7.22.9): + resolution: {integrity: sha512-4GHWBgRf0krxPX+AaPtgBAlTgTeZmqDynokHOX7aqqAB4tHs3U2Y02zH6ETFdLZGcg9UQSD1WCmkVrE9ErHeOg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/template': 7.22.5 + dev: false + + /@babel/plugin-transform-destructuring@7.22.5(@babel/core@7.22.9): + resolution: {integrity: sha512-GfqcFuGW8vnEqTUBM7UtPd5A4q797LTvvwKxXTgRsFjoqaJiEg9deBG6kWeQYkVEL569NpnmpC0Pkr/8BLKGnQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-plugin-utils': 7.22.5 + dev: false + + /@babel/plugin-transform-dotall-regex@7.22.5(@babel/core@7.22.9): + resolution: {integrity: sha512-5/Yk9QxCQCl+sOIB1WelKnVRxTJDSAIxtJLL2/pqL14ZVlbH0fUQUZa/T5/UnQtBNgghR7mfB8ERBKyKPCi7Vw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-create-regexp-features-plugin': 7.22.9(@babel/core@7.22.9) + '@babel/helper-plugin-utils': 7.22.5 + dev: false + + /@babel/plugin-transform-duplicate-keys@7.22.5(@babel/core@7.22.9): + resolution: {integrity: sha512-dEnYD+9BBgld5VBXHnF/DbYGp3fqGMsyxKbtD1mDyIA7AkTSpKXFhCVuj/oQVOoALfBs77DudA0BE4d5mcpmqw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-plugin-utils': 7.22.5 + dev: false + + /@babel/plugin-transform-dynamic-import@7.22.5(@babel/core@7.22.9): + resolution: {integrity: sha512-0MC3ppTB1AMxd8fXjSrbPa7LT9hrImt+/fcj+Pg5YMD7UQyWp/02+JWpdnCymmsXwIx5Z+sYn1bwCn4ZJNvhqQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.22.9) + dev: false + + /@babel/plugin-transform-exponentiation-operator@7.22.5(@babel/core@7.22.9): + resolution: {integrity: sha512-vIpJFNM/FjZ4rh1myqIya9jXwrwwgFRHPjT3DkUA9ZLHuzox8jiXkOLvwm1H+PQIP3CqfC++WPKeuDi0Sjdj1g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-builder-binary-assignment-operator-visitor': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + dev: false + + /@babel/plugin-transform-export-namespace-from@7.22.5(@babel/core@7.22.9): + resolution: {integrity: sha512-X4hhm7FRnPgd4nDA4b/5V280xCx6oL7Oob5+9qVS5C13Zq4bh1qq7LU0GgRU6b5dBWBvhGaXYVB4AcN6+ol6vg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.22.9) + dev: false + + /@babel/plugin-transform-for-of@7.22.5(@babel/core@7.22.9): + resolution: {integrity: sha512-3kxQjX1dU9uudwSshyLeEipvrLjBCVthCgeTp6CzE/9JYrlAIaeekVxRpCWsDDfYTfRZRoCeZatCQvwo+wvK8A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-plugin-utils': 7.22.5 + dev: false + + /@babel/plugin-transform-function-name@7.22.5(@babel/core@7.22.9): + resolution: {integrity: sha512-UIzQNMS0p0HHiQm3oelztj+ECwFnj+ZRV4KnguvlsD2of1whUeM6o7wGNj6oLwcDoAXQ8gEqfgC24D+VdIcevg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-compilation-targets': 7.22.9(@babel/core@7.22.9) + '@babel/helper-function-name': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + dev: false + + /@babel/plugin-transform-json-strings@7.22.5(@babel/core@7.22.9): + resolution: {integrity: sha512-DuCRB7fu8MyTLbEQd1ew3R85nx/88yMoqo2uPSjevMj3yoN7CDM8jkgrY0wmVxfJZyJ/B9fE1iq7EQppWQmR5A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.22.9) + dev: false + + /@babel/plugin-transform-literals@7.22.5(@babel/core@7.22.9): + resolution: {integrity: sha512-fTLj4D79M+mepcw3dgFBTIDYpbcB9Sm0bpm4ppXPaO+U+PKFFyV9MGRvS0gvGw62sd10kT5lRMKXAADb9pWy8g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-plugin-utils': 7.22.5 + dev: false + + /@babel/plugin-transform-logical-assignment-operators@7.22.5(@babel/core@7.22.9): + resolution: {integrity: sha512-MQQOUW1KL8X0cDWfbwYP+TbVbZm16QmQXJQ+vndPtH/BoO0lOKpVoEDMI7+PskYxH+IiE0tS8xZye0qr1lGzSA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.22.9) + dev: false + + /@babel/plugin-transform-member-expression-literals@7.22.5(@babel/core@7.22.9): + resolution: {integrity: sha512-RZEdkNtzzYCFl9SE9ATaUMTj2hqMb4StarOJLrZRbqqU4HSBE7UlBw9WBWQiDzrJZJdUWiMTVDI6Gv/8DPvfew==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-plugin-utils': 7.22.5 + dev: false + + /@babel/plugin-transform-modules-amd@7.22.5(@babel/core@7.22.9): + resolution: {integrity: sha512-R+PTfLTcYEmb1+kK7FNkhQ1gP4KgjpSO6HfH9+f8/yfp2Nt3ggBjiVpRwmwTlfqZLafYKJACy36yDXlEmI9HjQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-module-transforms': 7.22.9(@babel/core@7.22.9) + '@babel/helper-plugin-utils': 7.22.5 + dev: false + + /@babel/plugin-transform-modules-commonjs@7.22.5(@babel/core@7.22.9): + resolution: {integrity: sha512-B4pzOXj+ONRmuaQTg05b3y/4DuFz3WcCNAXPLb2Q0GT0TrGKGxNKV4jwsXts+StaM0LQczZbOpj8o1DLPDJIiA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-module-transforms': 7.22.9(@babel/core@7.22.9) + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-simple-access': 7.22.5 + dev: false + + /@babel/plugin-transform-modules-systemjs@7.22.5(@babel/core@7.22.9): + resolution: {integrity: sha512-emtEpoaTMsOs6Tzz+nbmcePl6AKVtS1yC4YNAeMun9U8YCsgadPNxnOPQ8GhHFB2qdx+LZu9LgoC0Lthuu05DQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-hoist-variables': 7.22.5 + '@babel/helper-module-transforms': 7.22.9(@babel/core@7.22.9) + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-validator-identifier': 7.22.5 + dev: false + + /@babel/plugin-transform-modules-umd@7.22.5(@babel/core@7.22.9): + resolution: {integrity: sha512-+S6kzefN/E1vkSsKx8kmQuqeQsvCKCd1fraCM7zXm4SFoggI099Tr4G8U81+5gtMdUeMQ4ipdQffbKLX0/7dBQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-module-transforms': 7.22.9(@babel/core@7.22.9) + '@babel/helper-plugin-utils': 7.22.5 + dev: false + + /@babel/plugin-transform-named-capturing-groups-regex@7.22.5(@babel/core@7.22.9): + resolution: {integrity: sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-create-regexp-features-plugin': 7.22.9(@babel/core@7.22.9) + '@babel/helper-plugin-utils': 7.22.5 + dev: false + + /@babel/plugin-transform-new-target@7.22.5(@babel/core@7.22.9): + resolution: {integrity: sha512-AsF7K0Fx/cNKVyk3a+DW0JLo+Ua598/NxMRvxDnkpCIGFh43+h/v2xyhRUYf6oD8gE4QtL83C7zZVghMjHd+iw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-plugin-utils': 7.22.5 + dev: false + + /@babel/plugin-transform-nullish-coalescing-operator@7.22.5(@babel/core@7.22.9): + resolution: {integrity: sha512-6CF8g6z1dNYZ/VXok5uYkkBBICHZPiGEl7oDnAx2Mt1hlHVHOSIKWJaXHjQJA5VB43KZnXZDIexMchY4y2PGdA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.22.9) + dev: false + + /@babel/plugin-transform-numeric-separator@7.22.5(@babel/core@7.22.9): + resolution: {integrity: sha512-NbslED1/6M+sXiwwtcAB/nieypGw02Ejf4KtDeMkCEpP6gWFMX1wI9WKYua+4oBneCCEmulOkRpwywypVZzs/g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.22.9) + dev: false + + /@babel/plugin-transform-object-rest-spread@7.22.5(@babel/core@7.22.9): + resolution: {integrity: sha512-Kk3lyDmEslH9DnvCDA1s1kkd3YWQITiBOHngOtDL9Pt6BZjzqb6hiOlb8VfjiiQJ2unmegBqZu0rx5RxJb5vmQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/compat-data': 7.22.9 + '@babel/core': 7.22.9 + '@babel/helper-compilation-targets': 7.22.9(@babel/core@7.22.9) + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.22.9) + '@babel/plugin-transform-parameters': 7.22.5(@babel/core@7.22.9) + dev: false + + /@babel/plugin-transform-object-super@7.22.5(@babel/core@7.22.9): + resolution: {integrity: sha512-klXqyaT9trSjIUrcsYIfETAzmOEZL3cBYqOYLJxBHfMFFggmXOv+NYSX/Jbs9mzMVESw/WycLFPRx8ba/b2Ipw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-replace-supers': 7.22.9(@babel/core@7.22.9) + dev: false + + /@babel/plugin-transform-optional-catch-binding@7.22.5(@babel/core@7.22.9): + resolution: {integrity: sha512-pH8orJahy+hzZje5b8e2QIlBWQvGpelS76C63Z+jhZKsmzfNaPQ+LaW6dcJ9bxTpo1mtXbgHwy765Ro3jftmUg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.22.9) + dev: false + + /@babel/plugin-transform-optional-chaining@7.22.6(@babel/core@7.22.9): + resolution: {integrity: sha512-Vd5HiWml0mDVtcLHIoEU5sw6HOUW/Zk0acLs/SAeuLzkGNOPc9DB4nkUajemhCmTIz3eiaKREZn2hQQqF79YTg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.22.9) + dev: false + + /@babel/plugin-transform-parameters@7.22.5(@babel/core@7.22.9): + resolution: {integrity: sha512-AVkFUBurORBREOmHRKo06FjHYgjrabpdqRSwq6+C7R5iTCZOsM4QbcB27St0a4U6fffyAOqh3s/qEfybAhfivg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-plugin-utils': 7.22.5 + dev: false + + /@babel/plugin-transform-private-methods@7.22.5(@babel/core@7.22.9): + resolution: {integrity: sha512-PPjh4gyrQnGe97JTalgRGMuU4icsZFnWkzicB/fUtzlKUqvsWBKEpPPfr5a2JiyirZkHxnAqkQMO5Z5B2kK3fA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-create-class-features-plugin': 7.22.9(@babel/core@7.22.9) + '@babel/helper-plugin-utils': 7.22.5 + dev: false + + /@babel/plugin-transform-private-property-in-object@7.22.5(@babel/core@7.22.9): + resolution: {integrity: sha512-/9xnaTTJcVoBtSSmrVyhtSvO3kbqS2ODoh2juEU72c3aYonNF0OMGiaz2gjukyKM2wBBYJP38S4JiE0Wfb5VMQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-create-class-features-plugin': 7.22.9(@babel/core@7.22.9) + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.22.9) + dev: false + + /@babel/plugin-transform-property-literals@7.22.5(@babel/core@7.22.9): + resolution: {integrity: sha512-TiOArgddK3mK/x1Qwf5hay2pxI6wCZnvQqrFSqbtg1GLl2JcNMitVH/YnqjP+M31pLUeTfzY1HAXFDnUBV30rQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-plugin-utils': 7.22.5 + dev: false + + /@babel/plugin-transform-react-display-name@7.22.5(@babel/core@7.22.9): + resolution: {integrity: sha512-PVk3WPYudRF5z4GKMEYUrLjPl38fJSKNaEOkFuoprioowGuWN6w2RKznuFNSlJx7pzzXXStPUnNSOEO0jL5EVw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-plugin-utils': 7.22.5 + dev: false + + /@babel/plugin-transform-react-jsx-development@7.22.5(@babel/core@7.22.9): + resolution: {integrity: sha512-bDhuzwWMuInwCYeDeMzyi7TaBgRQei6DqxhbyniL7/VG4RSS7HtSL2QbY4eESy1KJqlWt8g3xeEBGPuo+XqC8A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.9 + '@babel/plugin-transform-react-jsx': 7.22.5(@babel/core@7.22.9) + dev: false + + /@babel/plugin-transform-react-jsx@7.22.5(@babel/core@7.22.9): + resolution: {integrity: sha512-rog5gZaVbUip5iWDMTYbVM15XQq+RkUKhET/IHR6oizR+JEoN6CAfTTuHcK4vwUyzca30qqHqEpzBOnaRMWYMA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-module-imports': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-jsx': 7.22.5(@babel/core@7.22.9) + '@babel/types': 7.22.5 + dev: false + + /@babel/plugin-transform-react-pure-annotations@7.22.5(@babel/core@7.22.9): + resolution: {integrity: sha512-gP4k85wx09q+brArVinTXhWiyzLl9UpmGva0+mWyKxk6JZequ05x3eUcIUE+FyttPKJFRRVtAvQaJ6YF9h1ZpA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + dev: false + + /@babel/plugin-transform-regenerator@7.22.5(@babel/core@7.22.9): + resolution: {integrity: sha512-rR7KePOE7gfEtNTh9Qw+iO3Q/e4DEsoQ+hdvM6QUDH7JRJ5qxq5AA52ZzBWbI5i9lfNuvySgOGP8ZN7LAmaiPw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-plugin-utils': 7.22.5 + regenerator-transform: 0.15.1 + dev: false + + /@babel/plugin-transform-reserved-words@7.22.5(@babel/core@7.22.9): + resolution: {integrity: sha512-DTtGKFRQUDm8svigJzZHzb/2xatPc6TzNvAIJ5GqOKDsGFYgAskjRulbR/vGsPKq3OPqtexnz327qYpP57RFyA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-plugin-utils': 7.22.5 + dev: false + + /@babel/plugin-transform-shorthand-properties@7.22.5(@babel/core@7.22.9): + resolution: {integrity: sha512-vM4fq9IXHscXVKzDv5itkO1X52SmdFBFcMIBZ2FRn2nqVYqw6dBexUgMvAjHW+KXpPPViD/Yo3GrDEBaRC0QYA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-plugin-utils': 7.22.5 + dev: false + + /@babel/plugin-transform-spread@7.22.5(@babel/core@7.22.9): + resolution: {integrity: sha512-5ZzDQIGyvN4w8+dMmpohL6MBo+l2G7tfC/O2Dg7/hjpgeWvUx8FzfeOKxGog9IimPa4YekaQ9PlDqTLOljkcxg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + dev: false + + /@babel/plugin-transform-sticky-regex@7.22.5(@babel/core@7.22.9): + resolution: {integrity: sha512-zf7LuNpHG0iEeiyCNwX4j3gDg1jgt1k3ZdXBKbZSoA3BbGQGvMiSvfbZRR3Dr3aeJe3ooWFZxOOG3IRStYp2Bw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-plugin-utils': 7.22.5 + dev: false + + /@babel/plugin-transform-template-literals@7.22.5(@babel/core@7.22.9): + resolution: {integrity: sha512-5ciOehRNf+EyUeewo8NkbQiUs4d6ZxiHo6BcBcnFlgiJfu16q0bQUw9Jvo0b0gBKFG1SMhDSjeKXSYuJLeFSMA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-plugin-utils': 7.22.5 + dev: false + + /@babel/plugin-transform-typeof-symbol@7.22.5(@babel/core@7.22.9): + resolution: {integrity: sha512-bYkI5lMzL4kPii4HHEEChkD0rkc+nvnlR6+o/qdqR6zrm0Sv/nodmyLhlq2DO0YKLUNd2VePmPRjJXSBh9OIdA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-plugin-utils': 7.22.5 + dev: false + + /@babel/plugin-transform-typescript@7.22.9(@babel/core@7.22.9): + resolution: {integrity: sha512-BnVR1CpKiuD0iobHPaM1iLvcwPYN2uVFAqoLVSpEDKWuOikoCv5HbKLxclhKYUXlWkX86DoZGtqI4XhbOsyrMg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-create-class-features-plugin': 7.22.9(@babel/core@7.22.9) + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-typescript': 7.22.5(@babel/core@7.22.9) + dev: false + + /@babel/plugin-transform-unicode-escapes@7.22.5(@babel/core@7.22.9): + resolution: {integrity: sha512-biEmVg1IYB/raUO5wT1tgfacCef15Fbzhkx493D3urBI++6hpJ+RFG4SrWMn0NEZLfvilqKf3QDrRVZHo08FYg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-plugin-utils': 7.22.5 + dev: false + + /@babel/plugin-transform-unicode-property-regex@7.22.5(@babel/core@7.22.9): + resolution: {integrity: sha512-HCCIb+CbJIAE6sXn5CjFQXMwkCClcOfPCzTlilJ8cUatfzwHlWQkbtV0zD338u9dZskwvuOYTuuaMaA8J5EI5A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-create-regexp-features-plugin': 7.22.9(@babel/core@7.22.9) + '@babel/helper-plugin-utils': 7.22.5 + dev: false + + /@babel/plugin-transform-unicode-regex@7.22.5(@babel/core@7.22.9): + resolution: {integrity: sha512-028laaOKptN5vHJf9/Arr/HiJekMd41hOEZYvNsrsXqJ7YPYuX2bQxh31fkZzGmq3YqHRJzYFFAVYvKfMPKqyg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-create-regexp-features-plugin': 7.22.9(@babel/core@7.22.9) + '@babel/helper-plugin-utils': 7.22.5 + dev: false + + /@babel/plugin-transform-unicode-sets-regex@7.22.5(@babel/core@7.22.9): + resolution: {integrity: sha512-lhMfi4FC15j13eKrh3DnYHjpGj6UKQHtNKTbtc1igvAhRy4+kLhV07OpLcsN0VgDEw/MjAvJO4BdMJsHwMhzCg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-create-regexp-features-plugin': 7.22.9(@babel/core@7.22.9) + '@babel/helper-plugin-utils': 7.22.5 + dev: false + + /@babel/preset-env@7.22.9(@babel/core@7.22.9): + resolution: {integrity: sha512-wNi5H/Emkhll/bqPjsjQorSykrlfY5OWakd6AulLvMEytpKasMVUpVy8RL4qBIBs5Ac6/5i0/Rv0b/Fg6Eag/g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/compat-data': 7.22.9 + '@babel/core': 7.22.9 + '@babel/helper-compilation-targets': 7.22.9(@babel/core@7.22.9) + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-validator-option': 7.22.5 + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.22.5(@babel/core@7.22.9) + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.22.5(@babel/core@7.22.9) + '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.22.9) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.22.9) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.22.9) + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.22.9) + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.22.9) + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.22.9) + '@babel/plugin-syntax-import-assertions': 7.22.5(@babel/core@7.22.9) + '@babel/plugin-syntax-import-attributes': 7.22.5(@babel/core@7.22.9) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.22.9) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.22.9) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.22.9) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.22.9) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.22.9) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.22.9) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.22.9) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.22.9) + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.22.9) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.22.9) + '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.22.9) + '@babel/plugin-transform-arrow-functions': 7.22.5(@babel/core@7.22.9) + '@babel/plugin-transform-async-generator-functions': 7.22.7(@babel/core@7.22.9) + '@babel/plugin-transform-async-to-generator': 7.22.5(@babel/core@7.22.9) + '@babel/plugin-transform-block-scoped-functions': 7.22.5(@babel/core@7.22.9) + '@babel/plugin-transform-block-scoping': 7.22.5(@babel/core@7.22.9) + '@babel/plugin-transform-class-properties': 7.22.5(@babel/core@7.22.9) + '@babel/plugin-transform-class-static-block': 7.22.5(@babel/core@7.22.9) + '@babel/plugin-transform-classes': 7.22.6(@babel/core@7.22.9) + '@babel/plugin-transform-computed-properties': 7.22.5(@babel/core@7.22.9) + '@babel/plugin-transform-destructuring': 7.22.5(@babel/core@7.22.9) + '@babel/plugin-transform-dotall-regex': 7.22.5(@babel/core@7.22.9) + '@babel/plugin-transform-duplicate-keys': 7.22.5(@babel/core@7.22.9) + '@babel/plugin-transform-dynamic-import': 7.22.5(@babel/core@7.22.9) + '@babel/plugin-transform-exponentiation-operator': 7.22.5(@babel/core@7.22.9) + '@babel/plugin-transform-export-namespace-from': 7.22.5(@babel/core@7.22.9) + '@babel/plugin-transform-for-of': 7.22.5(@babel/core@7.22.9) + '@babel/plugin-transform-function-name': 7.22.5(@babel/core@7.22.9) + '@babel/plugin-transform-json-strings': 7.22.5(@babel/core@7.22.9) + '@babel/plugin-transform-literals': 7.22.5(@babel/core@7.22.9) + '@babel/plugin-transform-logical-assignment-operators': 7.22.5(@babel/core@7.22.9) + '@babel/plugin-transform-member-expression-literals': 7.22.5(@babel/core@7.22.9) + '@babel/plugin-transform-modules-amd': 7.22.5(@babel/core@7.22.9) + '@babel/plugin-transform-modules-commonjs': 7.22.5(@babel/core@7.22.9) + '@babel/plugin-transform-modules-systemjs': 7.22.5(@babel/core@7.22.9) + '@babel/plugin-transform-modules-umd': 7.22.5(@babel/core@7.22.9) + '@babel/plugin-transform-named-capturing-groups-regex': 7.22.5(@babel/core@7.22.9) + '@babel/plugin-transform-new-target': 7.22.5(@babel/core@7.22.9) + '@babel/plugin-transform-nullish-coalescing-operator': 7.22.5(@babel/core@7.22.9) + '@babel/plugin-transform-numeric-separator': 7.22.5(@babel/core@7.22.9) + '@babel/plugin-transform-object-rest-spread': 7.22.5(@babel/core@7.22.9) + '@babel/plugin-transform-object-super': 7.22.5(@babel/core@7.22.9) + '@babel/plugin-transform-optional-catch-binding': 7.22.5(@babel/core@7.22.9) + '@babel/plugin-transform-optional-chaining': 7.22.6(@babel/core@7.22.9) + '@babel/plugin-transform-parameters': 7.22.5(@babel/core@7.22.9) + '@babel/plugin-transform-private-methods': 7.22.5(@babel/core@7.22.9) + '@babel/plugin-transform-private-property-in-object': 7.22.5(@babel/core@7.22.9) + '@babel/plugin-transform-property-literals': 7.22.5(@babel/core@7.22.9) + '@babel/plugin-transform-regenerator': 7.22.5(@babel/core@7.22.9) + '@babel/plugin-transform-reserved-words': 7.22.5(@babel/core@7.22.9) + '@babel/plugin-transform-shorthand-properties': 7.22.5(@babel/core@7.22.9) + '@babel/plugin-transform-spread': 7.22.5(@babel/core@7.22.9) + '@babel/plugin-transform-sticky-regex': 7.22.5(@babel/core@7.22.9) + '@babel/plugin-transform-template-literals': 7.22.5(@babel/core@7.22.9) + '@babel/plugin-transform-typeof-symbol': 7.22.5(@babel/core@7.22.9) + '@babel/plugin-transform-unicode-escapes': 7.22.5(@babel/core@7.22.9) + '@babel/plugin-transform-unicode-property-regex': 7.22.5(@babel/core@7.22.9) + '@babel/plugin-transform-unicode-regex': 7.22.5(@babel/core@7.22.9) + '@babel/plugin-transform-unicode-sets-regex': 7.22.5(@babel/core@7.22.9) + '@babel/preset-modules': 0.1.6(@babel/core@7.22.9) + '@babel/types': 7.22.5 + babel-plugin-polyfill-corejs2: 0.4.5(@babel/core@7.22.9) + babel-plugin-polyfill-corejs3: 0.8.3(@babel/core@7.22.9) + babel-plugin-polyfill-regenerator: 0.5.2(@babel/core@7.22.9) + core-js-compat: 3.32.0 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + dev: false + + /@babel/preset-modules@0.1.6(@babel/core@7.22.9): + resolution: {integrity: sha512-ID2yj6K/4lKfhuU3+EX4UvNbIt7eACFbHmNUjzA+ep+B5971CknnA/9DEWKbRokfbbtblxxxXFJJrH47UEAMVg==} + peerDependencies: + '@babel/core': ^7.0.0-0 || ^8.0.0-0 <8.0.0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-proposal-unicode-property-regex': 7.18.6(@babel/core@7.22.9) + '@babel/plugin-transform-dotall-regex': 7.22.5(@babel/core@7.22.9) + '@babel/types': 7.22.5 + esutils: 2.0.3 + dev: false + + /@babel/preset-react@7.22.5(@babel/core@7.22.9): + resolution: {integrity: sha512-M+Is3WikOpEJHgR385HbuCITPTaPRaNkibTEa9oiofmJvIsrceb4yp9RL9Kb+TE8LznmeyZqpP+Lopwcx59xPQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-validator-option': 7.22.5 + '@babel/plugin-transform-react-display-name': 7.22.5(@babel/core@7.22.9) + '@babel/plugin-transform-react-jsx': 7.22.5(@babel/core@7.22.9) + '@babel/plugin-transform-react-jsx-development': 7.22.5(@babel/core@7.22.9) + '@babel/plugin-transform-react-pure-annotations': 7.22.5(@babel/core@7.22.9) + dev: false + + /@babel/preset-typescript@7.22.5(@babel/core@7.22.9): + resolution: {integrity: sha512-YbPaal9LxztSGhmndR46FmAbkJ/1fAsw293tSU+I5E5h+cnJ3d4GTwyUgGYmOXJYdGA+uNePle4qbaRzj2NISQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-validator-option': 7.22.5 + '@babel/plugin-syntax-jsx': 7.22.5(@babel/core@7.22.9) + '@babel/plugin-transform-modules-commonjs': 7.22.5(@babel/core@7.22.9) + '@babel/plugin-transform-typescript': 7.22.9(@babel/core@7.22.9) + dev: false + + /@babel/regjsgen@0.8.0: + resolution: {integrity: sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==} dev: false /@babel/runtime@7.22.6: @@ -204,6 +1460,31 @@ packages: regenerator-runtime: 0.13.11 dev: false + /@babel/template@7.22.5: + resolution: {integrity: sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.22.5 + '@babel/parser': 7.22.7 + '@babel/types': 7.22.5 + + /@babel/traverse@7.22.8: + resolution: {integrity: sha512-y6LPR+wpM2I3qJrsheCTwhIinzkETbplIgPBbwvqPKc+uljeA5gP+3nP8irdYt1mjQaDnlIcG+dw8OjAco4GXw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.22.5 + '@babel/generator': 7.22.9 + '@babel/helper-environment-visitor': 7.22.5 + '@babel/helper-function-name': 7.22.5 + '@babel/helper-hoist-variables': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + '@babel/parser': 7.22.7 + '@babel/types': 7.22.5 + debug: 4.3.4 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + /@babel/types@7.22.5: resolution: {integrity: sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA==} engines: {node: '>=6.9.0'} @@ -211,7 +1492,6 @@ packages: '@babel/helper-string-parser': 7.22.5 '@babel/helper-validator-identifier': 7.22.5 to-fast-properties: 2.0.0 - dev: false /@emotion/babel-plugin@11.11.0: resolution: {integrity: sha512-m4HEDZleaaCH+XgDDsPF15Ht6wTLsgDTeR3WYj9Q/k76JtWhrJjcP4+/XlG8LGT/Rol9qUfOIztXeA84ATpqPQ==} @@ -584,6 +1864,26 @@ packages: resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} dev: true + /@ianvs/prettier-plugin-sort-imports@4.1.0(prettier@2.5.1): + resolution: {integrity: sha512-IAXeTLU24k6mRPa6mFbW1qZJ/j0m3OeH44wyijWyr+YqqdNtBnfHxAntOAATS9iDfrT01NesKGsdzqnXdDQa/A==} + peerDependencies: + '@vue/compiler-sfc': '>=3.0.0' + prettier: 2 || 3 + peerDependenciesMeta: + '@vue/compiler-sfc': + optional: true + dependencies: + '@babel/core': 7.22.9 + '@babel/generator': 7.22.9 + '@babel/parser': 7.22.7 + '@babel/traverse': 7.22.8 + '@babel/types': 7.22.5 + prettier: 2.5.1 + semver: 7.5.4 + transitivePeerDependencies: + - supports-color + dev: true + /@jridgewell/gen-mapping@0.3.3: resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} engines: {node: '>=6.0.0'} @@ -685,6 +1985,42 @@ packages: react-is: 18.2.0 dev: false + /@mui/material@5.14.2(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(@types/react@18.2.17)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-TgNR4/YRL11RifsnMWNhITNCkGJYVz20SCvVJBBoU5Y/KhUNSSJxjDpEB8VrnY+sUsV0NigLCkHZJglfsiS3Pw==} + engines: {node: '>=12.0.0'} + peerDependencies: + '@emotion/react': ^11.5.0 + '@emotion/styled': ^11.3.0 + '@types/react': ^17.0.0 || ^18.0.0 + react: ^17.0.0 || ^18.0.0 + react-dom: ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@emotion/react': + optional: true + '@emotion/styled': + optional: true + '@types/react': + optional: true + dependencies: + '@babel/runtime': 7.22.6 + '@emotion/react': 11.11.1(@types/react@18.2.17)(react@18.2.0) + '@emotion/styled': 11.11.0(@emotion/react@11.11.1)(@types/react@18.2.17)(react@18.2.0) + '@mui/base': 5.0.0-beta.8(@types/react@18.2.17)(react-dom@18.2.0)(react@18.2.0) + '@mui/core-downloads-tracker': 5.14.2 + '@mui/system': 5.14.1(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(@types/react@18.2.17)(react@18.2.0) + '@mui/types': 7.2.4(@types/react@18.2.17) + '@mui/utils': 5.14.1(react@18.2.0) + '@types/react': 18.2.17 + '@types/react-transition-group': 4.4.6 + clsx: 1.2.1 + csstype: 3.1.2 + prop-types: 15.8.1 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-is: 18.2.0 + react-transition-group: 4.4.5(react-dom@18.2.0)(react@18.2.0) + dev: false + /@mui/private-theming@5.13.7(@types/react@18.2.17)(react@18.2.0): resolution: {integrity: sha512-qbSr+udcij5F9dKhGX7fEdx2drXchq7htLNr2Qg2Ma+WJ6q0ERlEqGSBiPiVDJkptcjeVL4DGmcf1wl5+vD4EA==} engines: {node: '>=12.0.0'} @@ -702,6 +2038,21 @@ packages: react: 18.2.0 dev: false + /@mui/styled-engine-sc@5.12.0(styled-components@6.0.5): + resolution: {integrity: sha512-3MgYoY2YG5tx0E5oKqvCv94oL0ABVBr+qpcyvciXW/v0wzPG6bXvuZV80GHYlJfasgnnRa1AbRWf5a9FcX8v6g==} + engines: {node: '>=12.0.0'} + peerDependencies: + '@types/styled-components': ^5.1.14 + styled-components: ^5.3.1 + peerDependenciesMeta: + '@types/styled-components': + optional: true + dependencies: + '@babel/runtime': 7.22.6 + prop-types: 15.8.1 + styled-components: 6.0.5(react-dom@18.2.0)(react@18.2.0) + dev: false + /@mui/styled-engine@5.13.2(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0): resolution: {integrity: sha512-VCYCU6xVtXOrIN8lcbuPmoG+u7FYuOERG++fpY74hPpEWkyFQG97F+/XfTQVYzlR2m7nPjnwVUgATcTCMEaMvw==} engines: {node: '>=12.0.0'} @@ -779,6 +2130,12 @@ packages: react-is: 18.2.0 dev: false + /@nicolo-ribaudo/chokidar-2@2.1.8-no-fsevents.3: + resolution: {integrity: sha512-s88O1aVtXftvp5bCPB7WnmXc5IwOZZ7YPuwNPt+GtOOXpPvad1LfbmjYv+qII7zP6RU2QGnqve27dnLycEnyEQ==} + requiresBuild: true + dev: false + optional: true + /@nodelib/fs.scandir@2.1.5: resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} engines: {node: '>= 8'} @@ -988,6 +2345,12 @@ packages: '@types/react': 18.2.17 dev: false + /@types/react-transition-group@4.4.6: + resolution: {integrity: sha512-VnCdSxfcm08KjsJVQcfBmhEQAPnLB8G08hAxn39azX1qYBQ/5RVQuoHuKIcfKOdncuaUvEpFKFzEvbtIMsfVew==} + dependencies: + '@types/react': 18.2.17 + dev: false + /@types/react@18.2.17: resolution: {integrity: sha512-u+e7OlgPPh+aryjOm5UJMX32OvB2E3QASOAqVMY6Ahs90djagxwv2ya0IctglNbNTexC12qCSMZG47KPfy1hAA==} dependencies: @@ -1002,6 +2365,10 @@ packages: resolution: {integrity: sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw==} dev: true + /@types/stylis@4.2.0: + resolution: {integrity: sha512-n4sx2bqL0mW1tvDf/loQ+aMX7GQD3lc3fkCMC55VFNDu/vBOabO+LTIeXKM14xK0ppk5TUGcWRjiSpIlUpghKw==} + dev: false + /@types/textarea-caret@3.0.1: resolution: {integrity: sha512-JjrXYzk4t6dM/5nz1hHkZXmd3xSdJM6mOIDSBUrpg4xThwKNryiu4CqHx81LwUJHxEEoQWHTu4fMV4em+c5bXg==} dev: true @@ -1192,7 +2559,6 @@ packages: engines: {node: '>=4'} dependencies: color-convert: 1.9.3 - dev: false /ansi-styles@4.3.0: resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} @@ -1329,6 +2695,42 @@ packages: resolve: 1.22.2 dev: false + /babel-plugin-polyfill-corejs2@0.4.5(@babel/core@7.22.9): + resolution: {integrity: sha512-19hwUH5FKl49JEsvyTcoHakh6BE0wgXLLptIyKZ3PijHc/Ci521wygORCUCCred+E/twuqRyAkE02BAWPmsHOg==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + dependencies: + '@babel/compat-data': 7.22.9 + '@babel/core': 7.22.9 + '@babel/helper-define-polyfill-provider': 0.4.2(@babel/core@7.22.9) + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + dev: false + + /babel-plugin-polyfill-corejs3@0.8.3(@babel/core@7.22.9): + resolution: {integrity: sha512-z41XaniZL26WLrvjy7soabMXrfPWARN25PZoriDEiLMxAp50AUW3t35BGQUMg5xK3UrpVTtagIDklxYa+MhiNA==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-define-polyfill-provider': 0.4.2(@babel/core@7.22.9) + core-js-compat: 3.32.0 + transitivePeerDependencies: + - supports-color + dev: false + + /babel-plugin-polyfill-regenerator@0.5.2(@babel/core@7.22.9): + resolution: {integrity: sha512-tAlOptU0Xj34V1Y2PNTL4Y0FOJMDB6bZmoW39FeCQIhigGLkqu3Fj6uiXpxIf6Ij274ENdYx64y6Au+ZKlb1IA==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-define-polyfill-provider': 0.4.2(@babel/core@7.22.9) + transitivePeerDependencies: + - supports-color + dev: false + /balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} @@ -1358,7 +2760,6 @@ packages: electron-to-chromium: 1.4.477 node-releases: 2.0.13 update-browserslist-db: 1.0.11(browserslist@4.21.9) - dev: true /buffer-from@1.1.2: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} @@ -1380,9 +2781,12 @@ packages: engines: {node: '>= 6'} dev: false + /camelize@1.0.1: + resolution: {integrity: sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ==} + dev: false + /caniuse-lite@1.0.30001517: resolution: {integrity: sha512-Vdhm5S11DaFVLlyiKu4hiUTkpZu+y1KA/rZZqVQfOD5YdDT/eQKlkt7NaE0WGOFgX32diqt9MiP9CAiFeRklaA==} - dev: true /chalk@2.4.2: resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} @@ -1391,7 +2795,6 @@ packages: ansi-styles: 3.2.1 escape-string-regexp: 1.0.5 supports-color: 5.5.0 - dev: false /chalk@4.1.2: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} @@ -1429,7 +2832,6 @@ packages: resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} dependencies: color-name: 1.1.3 - dev: false /color-convert@2.0.1: resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} @@ -1440,7 +2842,6 @@ packages: /color-name@1.1.3: resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} - dev: false /color-name@1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} @@ -1467,7 +2868,6 @@ packages: /convert-source-map@1.9.0: resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} - dev: false /copy-anything@2.0.6: resolution: {integrity: sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==} @@ -1481,6 +2881,12 @@ packages: toggle-selection: 1.0.6 dev: false + /core-js-compat@3.32.0: + resolution: {integrity: sha512-7a9a3D1k4UCVKnLhrgALyFcP7YCsLOQIxPd0dKjf/6GuPcgyiGP70ewWdCGrSK7evyhymi0qO4EqCmSJofDeYw==} + dependencies: + browserslist: 4.21.9 + dev: false + /cosmiconfig@7.1.0: resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==} engines: {node: '>=10'} @@ -1501,12 +2907,25 @@ packages: which: 2.0.2 dev: true + /css-color-keywords@1.0.0: + resolution: {integrity: sha512-FyyrDHZKEjXDpNJYvVsV960FiqQyXc/LlYmsxl2BcdMb2WPx0OGRVgTg55rPSyLSNMqP52R9r8geSp7apN3Ofg==} + engines: {node: '>=4'} + dev: false + /css-in-js-utils@3.1.0: resolution: {integrity: sha512-fJAcud6B3rRu+KHYk+Bwf+WFL2MDCJJ1XG9x137tJQ0xYxor7XziQtuGFbWNdqrvF4Tk26O3H73nfVqXt/fW1A==} dependencies: hyphenate-style-name: 1.0.4 dev: false + /css-to-react-native@3.2.0: + resolution: {integrity: sha512-e8RKaLXMOFii+02mOlqwjbD00KSEKqblnpO9e++1aXS1fPQOpS1YoqdVHBqPjHNoxeF2mimzVqawm2KCbEdtHQ==} + dependencies: + camelize: 1.0.1 + css-color-keywords: 1.0.0 + postcss-value-parser: 4.2.0 + dev: false + /css-tree@1.1.3: resolution: {integrity: sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==} engines: {node: '>=8.0.0'} @@ -1546,7 +2965,6 @@ packages: optional: true dependencies: ms: 2.1.2 - dev: true /deep-is@0.1.4: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} @@ -1594,9 +3012,15 @@ packages: esutils: 2.0.3 dev: true + /dom-helpers@5.2.1: + resolution: {integrity: sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==} + dependencies: + '@babel/runtime': 7.22.6 + csstype: 3.1.2 + dev: false + /electron-to-chromium@1.4.477: resolution: {integrity: sha512-shUVy6Eawp33dFBFIoYbIwLHrX0IZ857AlH9ug2o4rvbWmpaCUdBpQ5Zw39HRrfzAFm4APJE9V+E2A/WB0YqJw==} - dev: true /errno@0.1.8: resolution: {integrity: sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==} @@ -1721,12 +3145,10 @@ packages: /escalade@3.1.1: resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} engines: {node: '>=6'} - dev: true /escape-string-regexp@1.0.5: resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} engines: {node: '>=0.8.0'} - dev: false /escape-string-regexp@4.0.0: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} @@ -1885,7 +3307,6 @@ packages: /esutils@2.0.3: resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} engines: {node: '>=0.10.0'} - dev: true /fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} @@ -1995,6 +3416,10 @@ packages: resolution: {integrity: sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==} dev: true + /fs-readdir-recursive@1.1.0: + resolution: {integrity: sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA==} + dev: false + /fs.realpath@1.0.0: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} @@ -2022,6 +3447,10 @@ packages: resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} dev: true + /gensync@1.0.0-beta.2: + resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} + engines: {node: '>=6.9.0'} + /get-intrinsic@1.2.1: resolution: {integrity: sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==} dependencies: @@ -2071,7 +3500,10 @@ packages: minimatch: 3.1.2 once: 1.4.0 path-is-absolute: 1.0.1 - dev: true + + /globals@11.12.0: + resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} + engines: {node: '>=4'} /globals@13.20.0: resolution: {integrity: sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==} @@ -2130,7 +3562,6 @@ packages: /has-flag@3.0.0: resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} engines: {node: '>=4'} - dev: false /has-flag@4.0.0: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} @@ -2414,6 +3845,16 @@ packages: argparse: 2.0.1 dev: true + /jsesc@0.5.0: + resolution: {integrity: sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==} + hasBin: true + dev: false + + /jsesc@2.5.2: + resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} + engines: {node: '>=4'} + hasBin: true + /json-parse-even-better-errors@2.3.1: resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} dev: false @@ -2426,6 +3867,11 @@ packages: resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} dev: true + /json5@2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true + /jsx-ast-utils@3.3.5: resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==} engines: {node: '>=4.0'} @@ -2484,6 +3930,10 @@ packages: resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==} dev: false + /lodash.debounce@4.0.8: + resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} + dev: false + /lodash.merge@4.6.2: resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} dev: true @@ -2494,6 +3944,11 @@ packages: dependencies: js-tokens: 4.0.0 + /lru-cache@5.1.1: + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + dependencies: + yallist: 3.1.1 + /lru-cache@6.0.0: resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} engines: {node: '>=10'} @@ -2515,8 +3970,6 @@ packages: dependencies: pify: 4.0.1 semver: 5.7.2 - dev: true - optional: true /mdn-data@2.0.14: resolution: {integrity: sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==} @@ -2560,7 +4013,6 @@ packages: /ms@2.1.2: resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} - dev: true /ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} @@ -2622,7 +4074,6 @@ packages: /node-releases@2.0.13: resolution: {integrity: sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==} - dev: true /normalize-path@3.0.0: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} @@ -2784,8 +4235,6 @@ packages: /pify@4.0.1: resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} engines: {node: '>=6'} - dev: true - optional: true /pirates@4.0.6: resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} @@ -3014,6 +4463,20 @@ packages: react: 18.2.0 dev: false + /react-transition-group@4.4.5(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==} + peerDependencies: + react: '>=16.6.0' + react-dom: '>=16.6.0' + dependencies: + '@babel/runtime': 7.22.6 + dom-helpers: 5.2.1 + loose-envify: 1.4.0 + prop-types: 15.8.1 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + /react-universal-interface@0.6.2(react@18.2.0)(tslib@2.6.1): resolution: {integrity: sha512-dg8yXdcQmvgR13RIlZbTRQOoUrDciFVoSBZILwjE2LFISxZZ8loVJKAkuzswl5js8BHda79bIb2b84ehU8IjXw==} peerDependencies: @@ -3082,10 +4545,27 @@ packages: '@babel/runtime': 7.22.6 dev: false + /regenerate-unicode-properties@10.1.0: + resolution: {integrity: sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==} + engines: {node: '>=4'} + dependencies: + regenerate: 1.4.2 + dev: false + + /regenerate@1.4.2: + resolution: {integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==} + dev: false + /regenerator-runtime@0.13.11: resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} dev: false + /regenerator-transform@0.15.1: + resolution: {integrity: sha512-knzmNAcuyxV+gQCufkYcvOqX/qIIfHLv0u5x79kRxuGojfYVky1f15TzZEu2Avte8QGepvUNTnLskf8E6X6Vyg==} + dependencies: + '@babel/runtime': 7.22.6 + dev: false + /regexp.prototype.flags@1.5.0: resolution: {integrity: sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA==} engines: {node: '>= 0.4'} @@ -3095,6 +4575,25 @@ packages: functions-have-names: 1.2.3 dev: true + /regexpu-core@5.3.2: + resolution: {integrity: sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==} + engines: {node: '>=4'} + dependencies: + '@babel/regjsgen': 0.8.0 + regenerate: 1.4.2 + regenerate-unicode-properties: 10.1.0 + regjsparser: 0.9.1 + unicode-match-property-ecmascript: 2.0.0 + unicode-match-property-value-ecmascript: 2.1.0 + dev: false + + /regjsparser@0.9.1: + resolution: {integrity: sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==} + hasBin: true + dependencies: + jsesc: 0.5.0 + dev: false + /reselect@4.1.8: resolution: {integrity: sha512-ab9EmR80F/zQTMNeneUr4cv+jSwPJgIlvEmVwLerwrWVbpLlBuls9XHzIeTFy4cegU2NHBp3va0LKOzU5qFEYQ==} dev: false @@ -3197,13 +4696,10 @@ packages: /semver@5.7.2: resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} hasBin: true - dev: true - optional: true /semver@6.3.1: resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} hasBin: true - dev: true /semver@7.5.4: resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==} @@ -3217,6 +4713,10 @@ packages: engines: {node: '>=6.9'} dev: false + /shallowequal@1.1.0: + resolution: {integrity: sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==} + dev: false + /shebang-command@2.0.0: resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} engines: {node: '>=8'} @@ -3237,6 +4737,11 @@ packages: object-inspect: 1.12.3 dev: true + /slash@2.0.0: + resolution: {integrity: sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==} + engines: {node: '>=6'} + dev: false + /slash@3.0.0: resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} engines: {node: '>=8'} @@ -3347,6 +4852,42 @@ packages: engines: {node: '>=8'} dev: true + /styled-components@6.0.5(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-308zi5o7LrA9cVaP4nPD0TaUpOjGPePkAUFb/OGB0xRI3I9ozpW5UyASvRVi9wJcYASG+Y3mLDLDUZC7nqzimw==} + engines: {node: '>= 16'} + peerDependencies: + babel-plugin-styled-components: '>= 2' + react: '>= 16.8.0' + react-dom: '>= 16.8.0' + peerDependenciesMeta: + babel-plugin-styled-components: + optional: true + dependencies: + '@babel/cli': 7.22.9(@babel/core@7.22.9) + '@babel/core': 7.22.9 + '@babel/helper-module-imports': 7.22.5 + '@babel/plugin-external-helpers': 7.22.5(@babel/core@7.22.9) + '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.22.9) + '@babel/plugin-proposal-object-rest-spread': 7.20.7(@babel/core@7.22.9) + '@babel/preset-env': 7.22.9(@babel/core@7.22.9) + '@babel/preset-react': 7.22.5(@babel/core@7.22.9) + '@babel/preset-typescript': 7.22.5(@babel/core@7.22.9) + '@babel/traverse': 7.22.8 + '@emotion/is-prop-valid': 1.2.1 + '@emotion/unitless': 0.8.1 + '@types/stylis': 4.2.0 + css-to-react-native: 3.2.0 + csstype: 3.1.2 + postcss: 8.4.27 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + shallowequal: 1.1.0 + stylis: 4.3.0 + tslib: 2.6.1 + transitivePeerDependencies: + - supports-color + dev: false + /stylis@4.2.0: resolution: {integrity: sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==} dev: false @@ -3374,7 +4915,6 @@ packages: engines: {node: '>=4'} dependencies: has-flag: 3.0.0 - dev: false /supports-color@7.2.0: resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} @@ -3458,7 +4998,6 @@ packages: /to-fast-properties@2.0.0: resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} engines: {node: '>=4'} - dev: false /to-regex-range@5.0.1: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} @@ -3560,6 +5099,29 @@ packages: which-boxed-primitive: 1.0.2 dev: true + /unicode-canonical-property-names-ecmascript@2.0.0: + resolution: {integrity: sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==} + engines: {node: '>=4'} + dev: false + + /unicode-match-property-ecmascript@2.0.0: + resolution: {integrity: sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==} + engines: {node: '>=4'} + dependencies: + unicode-canonical-property-names-ecmascript: 2.0.0 + unicode-property-aliases-ecmascript: 2.1.0 + dev: false + + /unicode-match-property-value-ecmascript@2.1.0: + resolution: {integrity: sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==} + engines: {node: '>=4'} + dev: false + + /unicode-property-aliases-ecmascript@2.1.0: + resolution: {integrity: sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==} + engines: {node: '>=4'} + dev: false + /update-browserslist-db@1.0.11(browserslist@4.21.9): resolution: {integrity: sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==} hasBin: true @@ -3569,7 +5131,6 @@ packages: browserslist: 4.21.9 escalade: 3.1.1 picocolors: 1.0.0 - dev: true /uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} @@ -3669,6 +5230,9 @@ packages: /wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + /yallist@3.1.1: + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + /yallist@4.0.0: resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} diff --git a/web/src/App.tsx b/web/src/App.tsx index 4a6e30d9..3debb429 100644 --- a/web/src/App.tsx +++ b/web/src/App.tsx @@ -1,13 +1,13 @@ import { useColorScheme } from "@mui/joy"; -import { useEffect, Suspense } from "react"; +import { Suspense, useEffect } from "react"; import { Toaster } from "react-hot-toast"; import { useTranslation } from "react-i18next"; import { RouterProvider } from "react-router-dom"; -import router from "./router"; -import { useGlobalStore } from "./store/module"; import storage from "./helpers/storage"; import { getSystemColorScheme } from "./helpers/utils"; import Loading from "./pages/Loading"; +import router from "./router"; +import { useGlobalStore } from "./store/module"; const App = () => { const { i18n } = useTranslation(); diff --git a/web/src/components/AboutSiteDialog.tsx b/web/src/components/AboutSiteDialog.tsx index e04609a0..54f9fe24 100644 --- a/web/src/components/AboutSiteDialog.tsx +++ b/web/src/components/AboutSiteDialog.tsx @@ -1,8 +1,8 @@ -import { useTranslate } from "@/utils/i18n"; import { useGlobalStore } from "@/store/module"; -import Icon from "./Icon"; +import { useTranslate } from "@/utils/i18n"; import { generateDialog } from "./Dialog"; import GitHubBadge from "./GitHubBadge"; +import Icon from "./Icon"; type Props = DialogProps; diff --git a/web/src/components/ArchivedMemo.tsx b/web/src/components/ArchivedMemo.tsx index 370026e5..18724ada 100644 --- a/web/src/components/ArchivedMemo.tsx +++ b/web/src/components/ArchivedMemo.tsx @@ -1,12 +1,12 @@ import { Tooltip } from "@mui/joy"; import { toast } from "react-hot-toast"; +import { getDateTimeString } from "@/helpers/datetime"; import { useMemoStore } from "@/store/module"; import { useTranslate } from "@/utils/i18n"; -import { getDateTimeString } from "@/helpers/datetime"; +import { showCommonDialog } from "./Dialog/CommonDialog"; import Icon from "./Icon"; import MemoContent from "./MemoContent"; import MemoResourceListView from "./MemoResourceListView"; -import { showCommonDialog } from "./Dialog/CommonDialog"; import "@/less/memo.less"; interface Props { diff --git a/web/src/components/ArchivedMemoDialog.tsx b/web/src/components/ArchivedMemoDialog.tsx index 8d08b412..d86dc7be 100644 --- a/web/src/components/ArchivedMemoDialog.tsx +++ b/web/src/components/ArchivedMemoDialog.tsx @@ -1,11 +1,11 @@ import { useEffect, useState } from "react"; import { toast } from "react-hot-toast"; -import { useTranslate } from "@/utils/i18n"; -import { useMemoStore } from "@/store/module"; import useLoading from "@/hooks/useLoading"; -import Icon from "./Icon"; -import { generateDialog } from "./Dialog"; +import { useMemoStore } from "@/store/module"; +import { useTranslate } from "@/utils/i18n"; import ArchivedMemo from "./ArchivedMemo"; +import { generateDialog } from "./Dialog"; +import Icon from "./Icon"; import "@/less/archived-memo-dialog.less"; type Props = DialogProps; diff --git a/web/src/components/ChangeMemberPasswordDialog.tsx b/web/src/components/ChangeMemberPasswordDialog.tsx index b8c144e9..a9477790 100644 --- a/web/src/components/ChangeMemberPasswordDialog.tsx +++ b/web/src/components/ChangeMemberPasswordDialog.tsx @@ -1,9 +1,9 @@ import { useEffect, useState } from "react"; import { toast } from "react-hot-toast"; -import { useTranslate } from "@/utils/i18n"; import { useUserStore } from "@/store/module"; -import Icon from "./Icon"; +import { useTranslate } from "@/utils/i18n"; import { generateDialog } from "./Dialog"; +import Icon from "./Icon"; interface Props extends DialogProps { user: User; diff --git a/web/src/components/ChangeMemoCreatedTsDialog.tsx b/web/src/components/ChangeMemoCreatedTsDialog.tsx index 8f397c54..7ccf7f5a 100644 --- a/web/src/components/ChangeMemoCreatedTsDialog.tsx +++ b/web/src/components/ChangeMemoCreatedTsDialog.tsx @@ -1,10 +1,10 @@ -import { getNormalizedTimeString, getUnixTime } from "@/helpers/datetime"; import { useEffect, useState } from "react"; import { toast } from "react-hot-toast"; -import { useTranslate } from "@/utils/i18n"; +import { getNormalizedTimeString, getUnixTime } from "@/helpers/datetime"; import { useMemoStore } from "@/store/module"; -import Icon from "./Icon"; +import { useTranslate } from "@/utils/i18n"; import { generateDialog } from "./Dialog"; +import Icon from "./Icon"; interface Props extends DialogProps { memoId: MemoId; diff --git a/web/src/components/ChangePasswordDialog.tsx b/web/src/components/ChangePasswordDialog.tsx index 71c84eb1..51f3ddb2 100644 --- a/web/src/components/ChangePasswordDialog.tsx +++ b/web/src/components/ChangePasswordDialog.tsx @@ -1,9 +1,9 @@ import { useEffect, useState } from "react"; import { toast } from "react-hot-toast"; -import { useTranslate } from "@/utils/i18n"; import { useGlobalStore, useUserStore } from "@/store/module"; -import Icon from "./Icon"; +import { useTranslate } from "@/utils/i18n"; import { generateDialog } from "./Dialog"; +import Icon from "./Icon"; type Props = DialogProps; diff --git a/web/src/components/ChangeResourceFilenameDialog.tsx b/web/src/components/ChangeResourceFilenameDialog.tsx index 61933414..ffd750ca 100644 --- a/web/src/components/ChangeResourceFilenameDialog.tsx +++ b/web/src/components/ChangeResourceFilenameDialog.tsx @@ -1,9 +1,9 @@ import { useState } from "react"; import { toast } from "react-hot-toast"; -import { useTranslate } from "@/utils/i18n"; import { useResourceStore } from "@/store/module"; -import Icon from "./Icon"; +import { useTranslate } from "@/utils/i18n"; import { generateDialog } from "./Dialog"; +import Icon from "./Icon"; import "@/less/change-resource-filename-dialog.less"; interface Props extends DialogProps { diff --git a/web/src/components/CreateIdentityProviderDialog.tsx b/web/src/components/CreateIdentityProviderDialog.tsx index d42a4719..eaf5e199 100644 --- a/web/src/components/CreateIdentityProviderDialog.tsx +++ b/web/src/components/CreateIdentityProviderDialog.tsx @@ -1,10 +1,10 @@ import { Button, Divider, Input, Option, Select, Typography } from "@mui/joy"; import { useEffect, useState } from "react"; -import { useTranslate } from "@/utils/i18n"; import { toast } from "react-hot-toast"; import * as api from "@/helpers/api"; import { UNKNOWN_ID } from "@/helpers/consts"; import { absolutifyLink } from "@/helpers/utils"; +import { useTranslate } from "@/utils/i18n"; import { generateDialog } from "./Dialog"; import Icon from "./Icon"; diff --git a/web/src/components/CreateResourceDialog.tsx b/web/src/components/CreateResourceDialog.tsx index 4a5a07f8..daa40260 100644 --- a/web/src/components/CreateResourceDialog.tsx +++ b/web/src/components/CreateResourceDialog.tsx @@ -1,10 +1,10 @@ -import { Button, Input, Select, Option, Typography, List, ListItem, Autocomplete } from "@mui/joy"; +import { Autocomplete, Button, Input, List, ListItem, Option, Select, Typography } from "@mui/joy"; import React, { useRef, useState } from "react"; import { toast } from "react-hot-toast"; import { useTranslate } from "@/utils/i18n"; import { useResourceStore } from "../store/module"; -import Icon from "./Icon"; import { generateDialog } from "./Dialog"; +import Icon from "./Icon"; const fileTypeAutocompleteOptions = ["image/*", "text/*", "audio/*", "video/*", "application/*"]; diff --git a/web/src/components/CreateShortcutDialog.tsx b/web/src/components/CreateShortcutDialog.tsx index e64ba76a..362373e7 100644 --- a/web/src/components/CreateShortcutDialog.tsx +++ b/web/src/components/CreateShortcutDialog.tsx @@ -1,12 +1,12 @@ import { useCallback, useEffect, useState } from "react"; import { toast } from "react-hot-toast"; -import { useTranslate } from "@/utils/i18n"; -import { useShortcutStore, useTagStore } from "@/store/module"; -import { filterConsts, getDefaultFilter, relationConsts } from "@/helpers/filter"; import { getNormalizedTimeString } from "@/helpers/datetime"; +import { filterConsts, getDefaultFilter, relationConsts } from "@/helpers/filter"; import useLoading from "@/hooks/useLoading"; -import Icon from "./Icon"; +import { useShortcutStore, useTagStore } from "@/store/module"; +import { useTranslate } from "@/utils/i18n"; import { generateDialog } from "./Dialog"; +import Icon from "./Icon"; import Selector from "./kit/Selector"; import "@/less/create-shortcut-dialog.less"; diff --git a/web/src/components/CreateStorageServiceDialog.tsx b/web/src/components/CreateStorageServiceDialog.tsx index 48143f8f..5d408faf 100644 --- a/web/src/components/CreateStorageServiceDialog.tsx +++ b/web/src/components/CreateStorageServiceDialog.tsx @@ -1,12 +1,12 @@ import { Button, Input, Typography } from "@mui/joy"; import { useEffect, useState } from "react"; import { toast } from "react-hot-toast"; -import { useTranslate } from "@/utils/i18n"; import * as api from "@/helpers/api"; +import { useTranslate } from "@/utils/i18n"; import { generateDialog } from "./Dialog"; import Icon from "./Icon"; -import RequiredBadge from "./RequiredBadge"; import LearnMore from "./LearnMore"; +import RequiredBadge from "./RequiredBadge"; interface Props extends DialogProps { storage?: ObjectStorage; diff --git a/web/src/components/CreateTagDialog.tsx b/web/src/components/CreateTagDialog.tsx index 7b4abdd1..e4b85f55 100644 --- a/web/src/components/CreateTagDialog.tsx +++ b/web/src/components/CreateTagDialog.tsx @@ -1,13 +1,13 @@ import { Button, Input } from "@mui/joy"; import React, { useEffect, useState } from "react"; import { toast } from "react-hot-toast"; -import { useTranslate } from "@/utils/i18n"; -import { useTagStore } from "@/store/module"; import { getTagSuggestionList } from "@/helpers/api"; import { matcher } from "@/labs/marked/matcher"; import Tag from "@/labs/marked/parser/Tag"; -import Icon from "./Icon"; +import { useTagStore } from "@/store/module"; +import { useTranslate } from "@/utils/i18n"; import { generateDialog } from "./Dialog"; +import Icon from "./Icon"; type Props = DialogProps; diff --git a/web/src/components/DisablePasswordLoginDialog.tsx b/web/src/components/DisablePasswordLoginDialog.tsx index fd28af92..061586df 100644 --- a/web/src/components/DisablePasswordLoginDialog.tsx +++ b/web/src/components/DisablePasswordLoginDialog.tsx @@ -1,11 +1,11 @@ import { Button } from "@mui/joy"; import { useState } from "react"; import { toast } from "react-hot-toast"; -import { useTranslate } from "@/utils/i18n"; -import { useGlobalStore } from "@/store/module"; import * as api from "@/helpers/api"; -import Icon from "./Icon"; +import { useGlobalStore } from "@/store/module"; +import { useTranslate } from "@/utils/i18n"; import { generateDialog } from "./Dialog"; +import Icon from "./Icon"; type Props = DialogProps; diff --git a/web/src/components/EmbedMemoDialog.tsx b/web/src/components/EmbedMemoDialog.tsx index 7965ef16..393685dc 100644 --- a/web/src/components/EmbedMemoDialog.tsx +++ b/web/src/components/EmbedMemoDialog.tsx @@ -2,8 +2,8 @@ import copy from "copy-to-clipboard"; import React from "react"; import { toast } from "react-hot-toast"; import { useTranslate } from "@/utils/i18n"; -import Icon from "./Icon"; import { generateDialog } from "./Dialog"; +import Icon from "./Icon"; interface Props extends DialogProps { memoId: MemoId; diff --git a/web/src/components/Header.tsx b/web/src/components/Header.tsx index 3584568f..c6a987a6 100644 --- a/web/src/components/Header.tsx +++ b/web/src/components/Header.tsx @@ -5,8 +5,8 @@ import { useGlobalStore, useLayoutStore, useUserStore } from "@/store/module"; import { useTranslate } from "@/utils/i18n"; import { resolution } from "@/utils/layout"; import Icon from "./Icon"; -import UserBanner from "./UserBanner"; import UpgradeVersionView from "./UpgradeVersionBanner"; +import UserBanner from "./UserBanner"; const Header = () => { const t = useTranslate(); diff --git a/web/src/components/HomeSidebar.tsx b/web/src/components/HomeSidebar.tsx index 82fdd9b0..c7d4cfb9 100644 --- a/web/src/components/HomeSidebar.tsx +++ b/web/src/components/HomeSidebar.tsx @@ -1,7 +1,7 @@ import { useLayoutStore, useUserStore } from "../store/module"; +import SearchBar from "./SearchBar"; import ShortcutList from "./ShortcutList"; import TagList from "./TagList"; -import SearchBar from "./SearchBar"; import UsageHeatMap from "./UsageHeatMap"; const HomeSidebar = () => { diff --git a/web/src/components/LearnMore.tsx b/web/src/components/LearnMore.tsx index 00e920dc..d8789543 100644 --- a/web/src/components/LearnMore.tsx +++ b/web/src/components/LearnMore.tsx @@ -1,6 +1,7 @@ import { Tooltip } from "@mui/joy"; -import Icon from "./Icon"; import { useTranslate } from "@/utils/i18n"; +import Icon from "./Icon"; + interface Props { className?: string; url: string; diff --git a/web/src/components/LocaleSelect.tsx b/web/src/components/LocaleSelect.tsx index 80ea40ea..de50785d 100644 --- a/web/src/components/LocaleSelect.tsx +++ b/web/src/components/LocaleSelect.tsx @@ -1,6 +1,6 @@ import { Option, Select } from "@mui/joy"; -import { availableLocales } from "@/i18n"; import { FC } from "react"; +import { availableLocales } from "@/i18n"; import Icon from "./Icon"; interface Props { diff --git a/web/src/components/Memo.tsx b/web/src/components/Memo.tsx index b859cfd9..0a94a983 100644 --- a/web/src/components/Memo.tsx +++ b/web/src/components/Memo.tsx @@ -2,22 +2,22 @@ import { Divider, Tooltip } from "@mui/joy"; import { isEqual, uniqWith } from "lodash-es"; import { memo, useEffect, useRef, useState } from "react"; import { toast } from "react-hot-toast"; -import { useTranslate } from "@/utils/i18n"; import { useTranslation } from "react-i18next"; import { Link } from "react-router-dom"; -import { useFilterStore, useMemoStore, useUserStore } from "@/store/module"; import { UNKNOWN_ID } from "@/helpers/consts"; import { getRelativeTimeString } from "@/helpers/datetime"; +import { useFilterStore, useMemoStore, useUserStore } from "@/store/module"; import { useMemoCacheStore, useUserV1Store } from "@/store/v1"; +import { useTranslate } from "@/utils/i18n"; +import showChangeMemoCreatedTsDialog from "./ChangeMemoCreatedTsDialog"; import { showCommonDialog } from "./Dialog/CommonDialog"; import Icon from "./Icon"; import MemoContent from "./MemoContent"; -import MemoResourceListView from "./MemoResourceListView"; -import MemoRelationListView from "./MemoRelationListView"; -import showShareMemo from "./ShareMemoDialog"; -import showPreviewImageDialog from "./PreviewImageDialog"; -import showChangeMemoCreatedTsDialog from "./ChangeMemoCreatedTsDialog"; import showMemoEditorDialog from "./MemoEditor/MemoEditorDialog"; +import MemoRelationListView from "./MemoRelationListView"; +import MemoResourceListView from "./MemoResourceListView"; +import showPreviewImageDialog from "./PreviewImageDialog"; +import showShareMemo from "./ShareMemoDialog"; import UserAvatar from "./UserAvatar"; import "@/less/memo.less"; diff --git a/web/src/components/MemoChat/ChatInput.tsx b/web/src/components/MemoChat/ChatInput.tsx index cbb97f74..33ea1474 100644 --- a/web/src/components/MemoChat/ChatInput.tsx +++ b/web/src/components/MemoChat/ChatInput.tsx @@ -1,5 +1,5 @@ -import Icon from "@/components/Icon"; import Textarea from "@mui/joy/Textarea/Textarea"; +import Icon from "@/components/Icon"; import { useTranslate } from "@/utils/i18n"; interface Props { diff --git a/web/src/components/MemoChat/ChatMessage.tsx b/web/src/components/MemoChat/ChatMessage.tsx index cb8032f6..be65c862 100644 --- a/web/src/components/MemoChat/ChatMessage.tsx +++ b/web/src/components/MemoChat/ChatMessage.tsx @@ -1,10 +1,10 @@ -import { Message } from "@/store/v1/message"; -import { marked } from "@/labs/marked"; -import Icon from "@/components/Icon"; -import Dropdown from "../kit/Dropdown"; -import { useMemoStore } from "@/store/module"; import toast from "react-hot-toast"; +import Icon from "@/components/Icon"; +import { marked } from "@/labs/marked"; +import { useMemoStore } from "@/store/module"; +import { Message } from "@/store/v1/message"; import { useTranslate } from "@/utils/i18n"; +import Dropdown from "../kit/Dropdown"; interface MessageProps { index: number; diff --git a/web/src/components/MemoChat/ConversationTab.tsx b/web/src/components/MemoChat/ConversationTab.tsx index 4ead3749..661157b3 100644 --- a/web/src/components/MemoChat/ConversationTab.tsx +++ b/web/src/components/MemoChat/ConversationTab.tsx @@ -1,5 +1,5 @@ -import { Conversation } from "@/store/v1/conversation"; import Icon from "@/components/Icon"; +import { Conversation } from "@/store/v1/conversation"; interface ConversationTabProps { item: Conversation; diff --git a/web/src/components/MemoContent.tsx b/web/src/components/MemoContent.tsx index da78d05e..79d3f45f 100644 --- a/web/src/components/MemoContent.tsx +++ b/web/src/components/MemoContent.tsx @@ -1,7 +1,7 @@ import { useEffect, useRef, useState } from "react"; -import { useTranslate } from "@/utils/i18n"; import { marked } from "@/labs/marked"; import { useUserStore } from "@/store/module"; +import { useTranslate } from "@/utils/i18n"; import Icon from "./Icon"; import "@/less/memo-content.less"; diff --git a/web/src/components/MemoEditor/ActionButton/MemoVisibilitySelector.tsx b/web/src/components/MemoEditor/ActionButton/MemoVisibilitySelector.tsx index 43e5c224..1d876193 100644 --- a/web/src/components/MemoEditor/ActionButton/MemoVisibilitySelector.tsx +++ b/web/src/components/MemoEditor/ActionButton/MemoVisibilitySelector.tsx @@ -1,8 +1,8 @@ import { toLower } from "lodash-es"; -import { useTranslate } from "@/utils/i18n"; +import Selector from "@/components/kit/Selector"; import { VISIBILITY_SELECTOR_ITEMS } from "@/helpers/consts"; import { useGlobalStore } from "@/store/module"; -import Selector from "@/components/kit/Selector"; +import { useTranslate } from "@/utils/i18n"; interface Props { value: Visibility; diff --git a/web/src/components/MemoEditor/ActionButton/TagSelector.tsx b/web/src/components/MemoEditor/ActionButton/TagSelector.tsx index 38e4d48f..011aa929 100644 --- a/web/src/components/MemoEditor/ActionButton/TagSelector.tsx +++ b/web/src/components/MemoEditor/ActionButton/TagSelector.tsx @@ -1,5 +1,5 @@ -import { useTagStore } from "@/store/module"; import Icon from "@/components/Icon"; +import { useTagStore } from "@/store/module"; interface Props { onTagSelectorClick: (tag: string) => void; diff --git a/web/src/components/MemoEditor/Editor/TagSuggestions.tsx b/web/src/components/MemoEditor/Editor/TagSuggestions.tsx index d7cbfa7d..a16f5ff1 100644 --- a/web/src/components/MemoEditor/Editor/TagSuggestions.tsx +++ b/web/src/components/MemoEditor/Editor/TagSuggestions.tsx @@ -1,6 +1,6 @@ -import { useTagStore } from "@/store/module"; import { useEffect, useRef, useState } from "react"; import getCaretCoordinates from "textarea-caret"; +import { useTagStore } from "@/store/module"; import { EditorRefActions } from "."; type Props = { @@ -59,14 +59,14 @@ const TagSuggestions = ({ editorRef, editorActions }: Props) => { if (!position || !suggestions.length) return null; return (
{suggestions.map((tag) => (
handleSelection(tag)} - className="rounded p-1 px-2 z-1000 text-sm dark:text-gray-300 cursor-pointer hover:bg-zinc-300 dark:hover:bg-zinc-700" + className="rounded p-1 px-2 w-full truncate text-sm dark:text-gray-300 cursor-pointer hover:bg-zinc-300 dark:hover:bg-zinc-700" > #{tag}
diff --git a/web/src/components/MemoEditor/MemoEditorDialog.tsx b/web/src/components/MemoEditor/MemoEditorDialog.tsx index c2a51672..8eae02ed 100644 --- a/web/src/components/MemoEditor/MemoEditorDialog.tsx +++ b/web/src/components/MemoEditor/MemoEditorDialog.tsx @@ -1,7 +1,7 @@ +import { useTranslate } from "@/utils/i18n"; +import MemoEditor from "."; import { generateDialog } from "../Dialog"; import Icon from "../Icon"; -import MemoEditor from "."; -import { useTranslate } from "@/utils/i18n"; interface Props extends DialogProps { memoId?: MemoId; diff --git a/web/src/components/MemoEditor/index.tsx b/web/src/components/MemoEditor/index.tsx index ac87996e..9157c5fb 100644 --- a/web/src/components/MemoEditor/index.tsx +++ b/web/src/components/MemoEditor/index.tsx @@ -1,20 +1,20 @@ import { isNumber, last, uniq } from "lodash-es"; import React, { useCallback, useEffect, useMemo, useRef, useState } from "react"; import { toast } from "react-hot-toast"; -import { useTranslate } from "@/utils/i18n"; import { useTranslation } from "react-i18next"; -import { getMatchedNodes } from "@/labs/marked"; import { upsertMemoResource } from "@/helpers/api"; import { TAB_SPACE_WIDTH, UNKNOWN_ID } from "@/helpers/consts"; -import { useFilterStore, useGlobalStore, useMemoStore, useResourceStore, useTagStore, useUserStore } from "@/store/module"; import { clearContentQueryParam } from "@/helpers/utils"; -import Icon from "../Icon"; -import Editor, { EditorRefActions } from "./Editor"; +import { getMatchedNodes } from "@/labs/marked"; +import { useFilterStore, useGlobalStore, useMemoStore, useResourceStore, useTagStore, useUserStore } from "@/store/module"; +import { useTranslate } from "@/utils/i18n"; import showCreateResourceDialog from "../CreateResourceDialog"; -import TagSelector from "./ActionButton/TagSelector"; +import Icon from "../Icon"; import MemoVisibilitySelector from "./ActionButton/MemoVisibilitySelector"; -import ResourceListView from "./ResourceListView"; +import TagSelector from "./ActionButton/TagSelector"; +import Editor, { EditorRefActions } from "./Editor"; import RelationListView from "./RelationListView"; +import ResourceListView from "./ResourceListView"; import "@/less/memo-editor.less"; const listItemSymbolList = ["- [ ] ", "- [x] ", "- [X] ", "* ", "- "]; diff --git a/web/src/components/MemoFilter.tsx b/web/src/components/MemoFilter.tsx index 50b60be4..5c846624 100644 --- a/web/src/components/MemoFilter.tsx +++ b/web/src/components/MemoFilter.tsx @@ -1,9 +1,9 @@ import { useEffect } from "react"; -import { useTranslate } from "@/utils/i18n"; import { useLocation } from "react-router-dom"; -import { useFilterStore, useShortcutStore } from "@/store/module"; import { getDateString } from "@/helpers/datetime"; import { getTextWithMemoType } from "@/helpers/filter"; +import { useFilterStore, useShortcutStore } from "@/store/module"; +import { useTranslate } from "@/utils/i18n"; import Icon from "./Icon"; import "@/less/memo-filter.less"; diff --git a/web/src/components/MemoList.tsx b/web/src/components/MemoList.tsx index d4e07ab6..50a52d46 100644 --- a/web/src/components/MemoList.tsx +++ b/web/src/components/MemoList.tsx @@ -1,11 +1,11 @@ import { useEffect, useRef, useState } from "react"; import { toast } from "react-hot-toast"; -import { useTranslate } from "@/utils/i18n"; -import { useFilterStore, useMemoStore, useShortcutStore, useUserStore } from "@/store/module"; -import { TAG_REG, LINK_REG, PLAIN_LINK_REG } from "@/labs/marked/parser"; -import { getTimeStampByDate } from "@/helpers/datetime"; import { DEFAULT_MEMO_LIMIT } from "@/helpers/consts"; +import { getTimeStampByDate } from "@/helpers/datetime"; import { checkShouldShowMemoWithFilters } from "@/helpers/filter"; +import { LINK_REG, PLAIN_LINK_REG, TAG_REG } from "@/labs/marked/parser"; +import { useFilterStore, useMemoStore, useShortcutStore, useUserStore } from "@/store/module"; +import { useTranslate } from "@/utils/i18n"; import Empty from "./Empty"; import Memo from "./Memo"; import "@/less/memo-list.less"; diff --git a/web/src/components/MemoResourceListView.tsx b/web/src/components/MemoResourceListView.tsx index 06279d76..4509e951 100644 --- a/web/src/components/MemoResourceListView.tsx +++ b/web/src/components/MemoResourceListView.tsx @@ -1,8 +1,9 @@ +import { ImageList, ImageListItem, useMediaQuery } from "@mui/material"; import { absolutifyLink } from "@/helpers/utils"; import { getResourceUrl } from "@/utils/resource"; import SquareDiv from "./kit/SquareDiv"; -import showPreviewImageDialog from "./PreviewImageDialog"; import MemoResource from "./MemoResource"; +import showPreviewImageDialog from "./PreviewImageDialog"; import "@/less/memo-resources.less"; interface Props { @@ -22,10 +23,14 @@ const MemoResourceListView: React.FC = (props: Props) => { ...getDefaultProps(), ...props, }; - const availableResourceList = resourceList.filter((resource) => resource.type.startsWith("image") || resource.type.startsWith("video")); - const otherResourceList = resourceList.filter((resource) => !availableResourceList.includes(resource)); + const matches = useMediaQuery("(min-width:640px)"); + const imageResourceList = resourceList.filter((resource) => resource.type.startsWith("image")); + const videoResourceList = resourceList.filter((resource) => resource.type.startsWith("video")); + const otherResourceList = resourceList.filter( + (resource) => !imageResourceList.includes(resource) && !videoResourceList.includes(resource) + ); - const imgUrls = availableResourceList + const imgUrls = imageResourceList .filter((resource) => resource.type.startsWith("image")) .map((resource) => { return getResourceUrl(resource); @@ -38,37 +43,38 @@ const MemoResourceListView: React.FC = (props: Props) => { return ( <> -
- {availableResourceList.length > 0 && ( -
- {availableResourceList.map((resource) => { + {imageResourceList.length > 0 && ( +
+ + {imageResourceList.map((resource) => { const url = getResourceUrl(resource); - if (resource.type.startsWith("image")) { - return ( - - handleImageClick(url)} - decoding="async" - loading="lazy" - /> - - ); - } else if (resource.type.startsWith("video")) { - return ( - - - - ); - } else { - return null; - } + return ( + handleImageClick(url)} key={resource.id}> + + + ); + })} + +
+ )} + +
+ {videoResourceList.length > 0 && ( +
+ {videoResourceList.map((resource) => { + const url = getResourceUrl(resource); + return ( + + + + ); })}
)}
+ {otherResourceList.length > 0 && (
{otherResourceList.map((resource) => { diff --git a/web/src/components/MobileHeader.tsx b/web/src/components/MobileHeader.tsx index 4a6f41f1..8f978413 100644 --- a/web/src/components/MobileHeader.tsx +++ b/web/src/components/MobileHeader.tsx @@ -1,5 +1,5 @@ import { useEffect, useState } from "react"; -import { useLayoutStore, useFilterStore, useShortcutStore } from "@/store/module"; +import { useFilterStore, useLayoutStore, useShortcutStore } from "@/store/module"; import Icon from "./Icon"; interface Props { diff --git a/web/src/components/PreviewImageDialog.tsx b/web/src/components/PreviewImageDialog.tsx index 30e9cd2d..4bd22de8 100644 --- a/web/src/components/PreviewImageDialog.tsx +++ b/web/src/components/PreviewImageDialog.tsx @@ -1,7 +1,7 @@ import React, { useState } from "react"; import { getDateTimeString } from "@/helpers/datetime"; -import Icon from "./Icon"; import { generateDialog } from "./Dialog"; +import Icon from "./Icon"; import "@/less/preview-image-dialog.less"; const MIN_SCALE = 0.5; diff --git a/web/src/components/ResourceCard.tsx b/web/src/components/ResourceCard.tsx index 61a9e5b4..99eb21ab 100644 --- a/web/src/components/ResourceCard.tsx +++ b/web/src/components/ResourceCard.tsx @@ -1,5 +1,5 @@ -import { getDateTimeString } from "@/helpers/datetime"; import { useState } from "react"; +import { getDateTimeString } from "@/helpers/datetime"; import Icon from "./Icon"; import ResourceCover from "./ResourceCover"; import ResourceItemDropdown from "./ResourceItemDropdown"; diff --git a/web/src/components/ResourceCover.tsx b/web/src/components/ResourceCover.tsx index d28944d4..76565c63 100644 --- a/web/src/components/ResourceCover.tsx +++ b/web/src/components/ResourceCover.tsx @@ -1,8 +1,8 @@ import React from "react"; -import Icon from "./Icon"; import { getResourceUrl } from "@/utils/resource"; -import showPreviewImageDialog from "./PreviewImageDialog"; +import Icon from "./Icon"; import SquareDiv from "./kit/SquareDiv"; +import showPreviewImageDialog from "./PreviewImageDialog"; import "@/less/resource-cover.less"; interface ResourceCoverProps { diff --git a/web/src/components/ResourceItemDropdown.tsx b/web/src/components/ResourceItemDropdown.tsx index 0e4abe90..2615e193 100644 --- a/web/src/components/ResourceItemDropdown.tsx +++ b/web/src/components/ResourceItemDropdown.tsx @@ -1,13 +1,13 @@ import copy from "copy-to-clipboard"; import React from "react"; import toast from "react-hot-toast"; -import { useTranslate } from "@/utils/i18n"; import { useResourceStore } from "@/store/module"; +import { useTranslate } from "@/utils/i18n"; import { getResourceUrl } from "@/utils/resource"; -import Dropdown from "./kit/Dropdown"; -import Icon from "./Icon"; -import { showCommonDialog } from "./Dialog/CommonDialog"; import showChangeResourceFilenameDialog from "./ChangeResourceFilenameDialog"; +import { showCommonDialog } from "./Dialog/CommonDialog"; +import Icon from "./Icon"; +import Dropdown from "./kit/Dropdown"; import showPreviewImageDialog from "./PreviewImageDialog"; interface Props { diff --git a/web/src/components/ResourceSearchBar.tsx b/web/src/components/ResourceSearchBar.tsx index c37ffa24..39e4f834 100644 --- a/web/src/components/ResourceSearchBar.tsx +++ b/web/src/components/ResourceSearchBar.tsx @@ -1,7 +1,7 @@ -import { useState, useRef } from "react"; +import { useRef, useState } from "react"; +import useDebounce from "@/hooks/useDebounce"; import { useTranslate } from "@/utils/i18n"; import Icon from "./Icon"; -import useDebounce from "@/hooks/useDebounce"; interface ResourceSearchBarProps { setQuery: (queryText: string) => void; diff --git a/web/src/components/SearchBar.tsx b/web/src/components/SearchBar.tsx index ecdcc9f8..e2ba3ff2 100644 --- a/web/src/components/SearchBar.tsx +++ b/web/src/components/SearchBar.tsx @@ -1,7 +1,7 @@ -import { useEffect, useState, useRef } from "react"; -import { useTranslate } from "@/utils/i18n"; +import { useEffect, useRef, useState } from "react"; import useDebounce from "@/hooks/useDebounce"; import { useFilterStore } from "@/store/module"; +import { useTranslate } from "@/utils/i18n"; import Icon from "./Icon"; const SearchBar = () => { diff --git a/web/src/components/Settings/MemberSection.tsx b/web/src/components/Settings/MemberSection.tsx index a00b63a2..7f02ab3c 100644 --- a/web/src/components/Settings/MemberSection.tsx +++ b/web/src/components/Settings/MemberSection.tsx @@ -1,12 +1,12 @@ import { Button, Input } from "@mui/joy"; import React, { useEffect, useState } from "react"; import { toast } from "react-hot-toast"; -import { useTranslate } from "@/utils/i18n"; -import { useUserStore } from "@/store/module"; import * as api from "@/helpers/api"; -import Dropdown from "../kit/Dropdown"; -import { showCommonDialog } from "../Dialog/CommonDialog"; +import { useUserStore } from "@/store/module"; +import { useTranslate } from "@/utils/i18n"; import showChangeMemberPasswordDialog from "../ChangeMemberPasswordDialog"; +import { showCommonDialog } from "../Dialog/CommonDialog"; +import Dropdown from "../kit/Dropdown"; interface State { createUserUsername: string; diff --git a/web/src/components/Settings/MyAccountSection.tsx b/web/src/components/Settings/MyAccountSection.tsx index 08bd5f4b..e4a1ad80 100644 --- a/web/src/components/Settings/MyAccountSection.tsx +++ b/web/src/components/Settings/MyAccountSection.tsx @@ -1,8 +1,8 @@ import { Button, Input, Textarea } from "@mui/joy"; -import { useTranslate } from "@/utils/i18n"; import { useUserStore } from "@/store/module"; -import { showCommonDialog } from "../Dialog/CommonDialog"; +import { useTranslate } from "@/utils/i18n"; import showChangePasswordDialog from "../ChangePasswordDialog"; +import { showCommonDialog } from "../Dialog/CommonDialog"; import Icon from "../Icon"; import showUpdateAccountDialog from "../UpdateAccountDialog"; import UserAvatar from "../UserAvatar"; diff --git a/web/src/components/Settings/OpenAISection.tsx b/web/src/components/Settings/OpenAISection.tsx index b8d32b8b..3825ccd1 100644 --- a/web/src/components/Settings/OpenAISection.tsx +++ b/web/src/components/Settings/OpenAISection.tsx @@ -1,9 +1,9 @@ +import { Button, Input } from "@mui/joy"; import { useEffect, useState } from "react"; import { toast } from "react-hot-toast"; -import { useTranslate } from "@/utils/i18n"; -import { Button, Input } from "@mui/joy"; -import { useGlobalStore } from "@/store/module"; import * as api from "@/helpers/api"; +import { useGlobalStore } from "@/store/module"; +import { useTranslate } from "@/utils/i18n"; import LearnMore from "../LearnMore"; import "@/less/settings/system-section.less"; diff --git a/web/src/components/Settings/PreferencesSection.tsx b/web/src/components/Settings/PreferencesSection.tsx index ef64dc61..03294e73 100644 --- a/web/src/components/Settings/PreferencesSection.tsx +++ b/web/src/components/Settings/PreferencesSection.tsx @@ -1,13 +1,12 @@ -import { Input, Button, Divider, Switch, Option, Select } from "@mui/joy"; -import { useState } from "react"; +import { Button, Divider, Input, Option, Select, Switch } from "@mui/joy"; +import React, { useState } from "react"; import { toast } from "react-hot-toast"; -import React from "react"; -import { useTranslate } from "@/utils/i18n"; -import { useGlobalStore, useUserStore } from "@/store/module"; import { VISIBILITY_SELECTOR_ITEMS } from "@/helpers/consts"; +import { useGlobalStore, useUserStore } from "@/store/module"; +import { useTranslate } from "@/utils/i18n"; import AppearanceSelect from "../AppearanceSelect"; -import LocaleSelect from "../LocaleSelect"; import LearnMore from "../LearnMore"; +import LocaleSelect from "../LocaleSelect"; import "@/less/settings/preferences-section.less"; const PreferencesSection = () => { diff --git a/web/src/components/Settings/SSOSection.tsx b/web/src/components/Settings/SSOSection.tsx index d7de5c78..18e18971 100644 --- a/web/src/components/Settings/SSOSection.tsx +++ b/web/src/components/Settings/SSOSection.tsx @@ -1,13 +1,13 @@ import { Divider } from "@mui/joy"; import { useEffect, useState } from "react"; import { toast } from "react-hot-toast"; -import { useTranslate } from "@/utils/i18n"; import * as api from "@/helpers/api"; -import showCreateIdentityProviderDialog from "../CreateIdentityProviderDialog"; -import Dropdown from "../kit/Dropdown"; -import { showCommonDialog } from "../Dialog/CommonDialog"; -import LearnMore from "../LearnMore"; import { useGlobalStore } from "@/store/module"; +import { useTranslate } from "@/utils/i18n"; +import showCreateIdentityProviderDialog from "../CreateIdentityProviderDialog"; +import { showCommonDialog } from "../Dialog/CommonDialog"; +import Dropdown from "../kit/Dropdown"; +import LearnMore from "../LearnMore"; interface State { disablePasswordLogin: boolean; diff --git a/web/src/components/Settings/StorageSection.tsx b/web/src/components/Settings/StorageSection.tsx index 32bff396..183451dd 100644 --- a/web/src/components/Settings/StorageSection.tsx +++ b/web/src/components/Settings/StorageSection.tsx @@ -1,14 +1,14 @@ -import { Divider, Select, Option } from "@mui/joy"; +import { Divider, Option, Select } from "@mui/joy"; import { useEffect, useState } from "react"; import { toast } from "react-hot-toast"; -import { useTranslate } from "@/utils/i18n"; -import { useGlobalStore } from "@/store/module"; import * as api from "@/helpers/api"; +import { useGlobalStore } from "@/store/module"; +import { useTranslate } from "@/utils/i18n"; import showCreateStorageServiceDialog from "../CreateStorageServiceDialog"; -import showUpdateLocalStorageDialog from "../UpdateLocalStorageDialog"; -import Dropdown from "../kit/Dropdown"; import { showCommonDialog } from "../Dialog/CommonDialog"; +import Dropdown from "../kit/Dropdown"; import LearnMore from "../LearnMore"; +import showUpdateLocalStorageDialog from "../UpdateLocalStorageDialog"; const StorageSection = () => { const t = useTranslate(); diff --git a/web/src/components/Settings/SystemSection.tsx b/web/src/components/Settings/SystemSection.tsx index 0991af8a..c5e47543 100644 --- a/web/src/components/Settings/SystemSection.tsx +++ b/web/src/components/Settings/SystemSection.tsx @@ -1,13 +1,13 @@ +import { Button, Divider, Input, Switch, Textarea, Tooltip } from "@mui/joy"; import { useEffect, useState } from "react"; import { toast } from "react-hot-toast"; -import { useTranslate } from "@/utils/i18n"; -import { Button, Divider, Input, Switch, Textarea, Tooltip } from "@mui/joy"; +import * as api from "@/helpers/api"; import { formatBytes } from "@/helpers/utils"; import { useGlobalStore } from "@/store/module"; -import * as api from "@/helpers/api"; -import showUpdateCustomizedProfileDialog from "../UpdateCustomizedProfileDialog"; +import { useTranslate } from "@/utils/i18n"; import Icon from "../Icon"; import LearnMore from "../LearnMore"; +import showUpdateCustomizedProfileDialog from "../UpdateCustomizedProfileDialog"; import "@/less/settings/system-section.less"; import { showCommonDialog } from "../Dialog/CommonDialog"; import showDisablePasswordLoginDialog from "../DisablePasswordLoginDialog"; diff --git a/web/src/components/ShareMemoDialog.tsx b/web/src/components/ShareMemoDialog.tsx index 19ad854d..21585e05 100644 --- a/web/src/components/ShareMemoDialog.tsx +++ b/web/src/components/ShareMemoDialog.tsx @@ -1,21 +1,21 @@ -import { Select, Option } from "@mui/joy"; +import { Option, Select } from "@mui/joy"; +import copy from "copy-to-clipboard"; +import { toLower } from "lodash-es"; import { QRCodeSVG } from "qrcode.react"; import React, { useEffect, useRef, useState } from "react"; import { toast } from "react-hot-toast"; -import { useTranslate } from "@/utils/i18n"; -import copy from "copy-to-clipboard"; -import { toLower } from "lodash-es"; -import toImage from "@/labs/html2image"; -import { useGlobalStore, useMemoStore, useUserStore } from "@/store/module"; +import { getMemoStats } from "@/helpers/api"; import { VISIBILITY_SELECTOR_ITEMS } from "@/helpers/consts"; import { getDateTimeString, getTimeStampByDate } from "@/helpers/datetime"; -import { getMemoStats } from "@/helpers/api"; import useLoading from "@/hooks/useLoading"; -import Icon from "./Icon"; +import toImage from "@/labs/html2image"; +import { useGlobalStore, useMemoStore, useUserStore } from "@/store/module"; +import { useTranslate } from "@/utils/i18n"; import { generateDialog } from "./Dialog"; +import showEmbedMemoDialog from "./EmbedMemoDialog"; +import Icon from "./Icon"; import MemoContent from "./MemoContent"; import MemoResourceListView from "./MemoResourceListView"; -import showEmbedMemoDialog from "./EmbedMemoDialog"; import "@/less/share-memo-dialog.less"; interface Props extends DialogProps { diff --git a/web/src/components/ShortcutList.tsx b/web/src/components/ShortcutList.tsx index ed2cf4f7..39921e91 100644 --- a/web/src/components/ShortcutList.tsx +++ b/web/src/components/ShortcutList.tsx @@ -1,12 +1,12 @@ import { useEffect } from "react"; import { toast } from "react-hot-toast"; -import { useTranslate } from "@/utils/i18n"; -import { useFilterStore, useShortcutStore } from "@/store/module"; import { getTimeStampByDate } from "@/helpers/datetime"; -import useToggle from "@/hooks/useToggle"; import useLoading from "@/hooks/useLoading"; -import Icon from "./Icon"; +import useToggle from "@/hooks/useToggle"; +import { useFilterStore, useShortcutStore } from "@/store/module"; +import { useTranslate } from "@/utils/i18n"; import showCreateShortcutDialog from "./CreateShortcutDialog"; +import Icon from "./Icon"; const ShortcutList = () => { const t = useTranslate(); diff --git a/web/src/components/TagList.tsx b/web/src/components/TagList.tsx index fc31a366..bbc90f58 100644 --- a/web/src/components/TagList.tsx +++ b/web/src/components/TagList.tsx @@ -1,9 +1,9 @@ import { useEffect, useState } from "react"; -import { useTranslate } from "@/utils/i18n"; -import { useFilterStore, useTagStore } from "@/store/module"; import useToggle from "@/hooks/useToggle"; -import Icon from "./Icon"; +import { useFilterStore, useTagStore } from "@/store/module"; +import { useTranslate } from "@/utils/i18n"; import showCreateTagDialog from "./CreateTagDialog"; +import Icon from "./Icon"; interface Tag { key: string; diff --git a/web/src/components/UpdateAccountDialog.tsx b/web/src/components/UpdateAccountDialog.tsx index 00aca1ae..b0274b87 100644 --- a/web/src/components/UpdateAccountDialog.tsx +++ b/web/src/components/UpdateAccountDialog.tsx @@ -1,11 +1,11 @@ import { isEqual } from "lodash-es"; import { useEffect, useState } from "react"; import { toast } from "react-hot-toast"; -import { useTranslate } from "@/utils/i18n"; -import { useUserStore } from "@/store/module"; import { convertFileToBase64 } from "@/helpers/utils"; -import Icon from "./Icon"; +import { useUserStore } from "@/store/module"; +import { useTranslate } from "@/utils/i18n"; import { generateDialog } from "./Dialog"; +import Icon from "./Icon"; import UserAvatar from "./UserAvatar"; type Props = DialogProps; diff --git a/web/src/components/UpdateCustomizedProfileDialog.tsx b/web/src/components/UpdateCustomizedProfileDialog.tsx index 07e73123..4e10fb2b 100644 --- a/web/src/components/UpdateCustomizedProfileDialog.tsx +++ b/web/src/components/UpdateCustomizedProfileDialog.tsx @@ -1,14 +1,14 @@ import { Button, Input } from "@mui/joy"; -import { useState } from "react"; -import { useTranslate } from "@/utils/i18n"; -import { toast } from "react-hot-toast"; -import { useGlobalStore } from "@/store/module"; -import * as api from "@/helpers/api"; import Textarea from "@mui/joy/Textarea/Textarea"; -import Icon from "./Icon"; -import { generateDialog } from "./Dialog"; -import LocaleSelect from "./LocaleSelect"; +import { useState } from "react"; +import { toast } from "react-hot-toast"; +import * as api from "@/helpers/api"; +import { useGlobalStore } from "@/store/module"; +import { useTranslate } from "@/utils/i18n"; import AppearanceSelect from "./AppearanceSelect"; +import { generateDialog } from "./Dialog"; +import Icon from "./Icon"; +import LocaleSelect from "./LocaleSelect"; type Props = DialogProps; diff --git a/web/src/components/UpdateLocalStorageDialog.tsx b/web/src/components/UpdateLocalStorageDialog.tsx index 466a2b26..f37b6145 100644 --- a/web/src/components/UpdateLocalStorageDialog.tsx +++ b/web/src/components/UpdateLocalStorageDialog.tsx @@ -1,9 +1,9 @@ import { Button, Input } from "@mui/joy"; import { useState } from "react"; -import { useTranslate } from "@/utils/i18n"; import { toast } from "react-hot-toast"; -import { useGlobalStore } from "@/store/module"; import * as api from "@/helpers/api"; +import { useGlobalStore } from "@/store/module"; +import { useTranslate } from "@/utils/i18n"; import { generateDialog } from "./Dialog"; import Icon from "./Icon"; import LearnMore from "./LearnMore"; diff --git a/web/src/components/UsageHeatMap.tsx b/web/src/components/UsageHeatMap.tsx index 19290deb..154f504b 100644 --- a/web/src/components/UsageHeatMap.tsx +++ b/web/src/components/UsageHeatMap.tsx @@ -1,10 +1,10 @@ import { useCallback, useEffect, useRef, useState } from "react"; -import { useFilterStore, useMemoStore, useUserStore } from "../store/module"; -import { useTranslate } from "@/utils/i18n"; import { getMemoStats } from "@/helpers/api"; import { DAILY_TIMESTAMP } from "@/helpers/consts"; import { getDateStampByDate, getDateString, getTimeStampByDate } from "@/helpers/datetime"; import * as utils from "@/helpers/utils"; +import { useTranslate } from "@/utils/i18n"; +import { useFilterStore, useMemoStore, useUserStore } from "../store/module"; import "@/less/usage-heat-map.less"; const tableConfig = { diff --git a/web/src/components/UserBanner.tsx b/web/src/components/UserBanner.tsx index cdf1b8de..120177a1 100644 --- a/web/src/components/UserBanner.tsx +++ b/web/src/components/UserBanner.tsx @@ -1,11 +1,11 @@ import { useEffect, useState } from "react"; -import { useTranslate } from "@/utils/i18n"; import { useNavigate } from "react-router-dom"; import { useGlobalStore, useUserStore } from "@/store/module"; -import Dropdown from "./kit/Dropdown"; -import Icon from "./Icon"; -import UserAvatar from "./UserAvatar"; +import { useTranslate } from "@/utils/i18n"; import showAboutSiteDialog from "./AboutSiteDialog"; +import Icon from "./Icon"; +import Dropdown from "./kit/Dropdown"; +import UserAvatar from "./UserAvatar"; const UserBanner = () => { const t = useTranslate(); diff --git a/web/src/components/kit/DatePicker.tsx b/web/src/components/kit/DatePicker.tsx index 0571bf3c..89b027f2 100644 --- a/web/src/components/kit/DatePicker.tsx +++ b/web/src/components/kit/DatePicker.tsx @@ -1,11 +1,11 @@ import { Badge, Button } from "@mui/joy"; +import classNames from "classnames"; import { useEffect, useState } from "react"; -import { useTranslate } from "@/utils/i18n"; -import { DAILY_TIMESTAMP } from "@/helpers/consts"; import { getMemoStats } from "@/helpers/api"; +import { DAILY_TIMESTAMP } from "@/helpers/consts"; import { getDateStampByDate, isFutureDate } from "@/helpers/datetime"; import { useUserStore } from "@/store/module"; -import classNames from "classnames"; +import { useTranslate } from "@/utils/i18n"; import Icon from "../Icon"; import "@/less/common/date-picker.less"; diff --git a/web/src/components/kit/Selector.tsx b/web/src/components/kit/Selector.tsx index 86ee7d5e..e5f5cb22 100644 --- a/web/src/components/kit/Selector.tsx +++ b/web/src/components/kit/Selector.tsx @@ -1,7 +1,7 @@ import { Tooltip } from "@mui/joy"; import { memo, useEffect, useRef } from "react"; -import { useTranslate } from "@/utils/i18n"; import useToggle from "@/hooks/useToggle"; +import { useTranslate } from "@/utils/i18n"; import Icon from "../Icon"; import "@/less/common/selector.less"; diff --git a/web/src/helpers/filter.ts b/web/src/helpers/filter.ts index f8dbbdd2..720ad43a 100644 --- a/web/src/helpers/filter.ts +++ b/web/src/helpers/filter.ts @@ -1,5 +1,5 @@ +import { LINK_REG, PLAIN_LINK_REG, TAG_REG } from "@/labs/marked/parser"; import { getUnixTimeMillis } from "./datetime"; -import { TAG_REG, LINK_REG, PLAIN_LINK_REG } from "@/labs/marked/parser"; export const relationConsts = [ { text: "filter.and", value: "AND" }, diff --git a/web/src/hooks/useEvent.ts b/web/src/hooks/useEvent.ts index 3e9af77d..bf087157 100644 --- a/web/src/hooks/useEvent.ts +++ b/web/src/hooks/useEvent.ts @@ -1,4 +1,4 @@ -import React, { useEffect, useRef, EffectCallback, DependencyList } from "react"; +import React, { DependencyList, EffectCallback, useEffect, useRef } from "react"; const useIsoMorphicEffect = (effect: EffectCallback, deps?: DependencyList | undefined) => { useEffect(effect, deps); diff --git a/web/src/i18n.ts b/web/src/i18n.ts index abf5dac7..7fa494ea 100644 --- a/web/src/i18n.ts +++ b/web/src/i18n.ts @@ -1,7 +1,7 @@ import i18n, { FallbackLng, FallbackLngObjList } from "i18next"; -import { initReactI18next } from "react-i18next"; import LanguageDetector from "i18next-browser-languagedetector"; import toast from "react-hot-toast"; +import { initReactI18next } from "react-i18next"; export const availableLocales = [ "de", diff --git a/web/src/labs/marked/parser/CodeBlock.tsx b/web/src/labs/marked/parser/CodeBlock.tsx index 29c87638..b9efc3c4 100644 --- a/web/src/labs/marked/parser/CodeBlock.tsx +++ b/web/src/labs/marked/parser/CodeBlock.tsx @@ -1,8 +1,8 @@ import copy from "copy-to-clipboard"; import hljs from "highlight.js"; import { toast } from "react-hot-toast"; -import { matcher } from "../matcher"; import { useTranslate } from "@/utils/i18n"; +import { matcher } from "../matcher"; export const CODE_BLOCK_REG = /^```(\S*?)\s([\s\S]*?)```/; diff --git a/web/src/labs/marked/parser/Link.tsx b/web/src/labs/marked/parser/Link.tsx index 0eda5260..073a5351 100644 --- a/web/src/labs/marked/parser/Link.tsx +++ b/web/src/labs/marked/parser/Link.tsx @@ -1,10 +1,10 @@ -import Emphasis from "./Emphasis"; -import Bold from "./Bold"; import { marked } from ".."; -import InlineCode from "./InlineCode"; -import BoldEmphasis from "./BoldEmphasis"; -import PlainText from "./PlainText"; import { matcher } from "../matcher"; +import Bold from "./Bold"; +import BoldEmphasis from "./BoldEmphasis"; +import Emphasis from "./Emphasis"; +import InlineCode from "./InlineCode"; +import PlainText from "./PlainText"; export const LINK_REG = /\[([^\]]+)\]\(([^)]+)\)/; diff --git a/web/src/labs/marked/parser/index.ts b/web/src/labs/marked/parser/index.ts index 7a1eeb7f..a469471e 100644 --- a/web/src/labs/marked/parser/index.ts +++ b/web/src/labs/marked/parser/index.ts @@ -1,23 +1,23 @@ -import CodeBlock from "./CodeBlock"; -import TodoList from "./TodoList"; -import DoneList from "./DoneList"; -import OrderedList from "./OrderedList"; -import UnorderedList from "./UnorderedList"; -import Paragraph from "./Paragraph"; -import Br from "./Br"; -import Tag from "./Tag"; -import Image from "./Image"; -import Link from "./Link"; -import Bold from "./Bold"; -import Emphasis from "./Emphasis"; -import PlainLink from "./PlainLink"; -import InlineCode from "./InlineCode"; -import PlainText from "./PlainText"; -import BoldEmphasis from "./BoldEmphasis"; import Blockquote from "./Blockquote"; -import HorizontalRules from "./HorizontalRules"; -import Strikethrough from "./Strikethrough"; +import Bold from "./Bold"; +import BoldEmphasis from "./BoldEmphasis"; +import Br from "./Br"; +import CodeBlock from "./CodeBlock"; +import DoneList from "./DoneList"; +import Emphasis from "./Emphasis"; import Heading from "./Heading"; +import HorizontalRules from "./HorizontalRules"; +import Image from "./Image"; +import InlineCode from "./InlineCode"; +import Link from "./Link"; +import OrderedList from "./OrderedList"; +import Paragraph from "./Paragraph"; +import PlainLink from "./PlainLink"; +import PlainText from "./PlainText"; +import Strikethrough from "./Strikethrough"; +import Tag from "./Tag"; +import TodoList from "./TodoList"; +import UnorderedList from "./UnorderedList"; export { TAG_REG } from "./Tag"; export { LINK_REG } from "./Link"; diff --git a/web/src/layouts/Root.tsx b/web/src/layouts/Root.tsx index 0a9f16c7..73711414 100644 --- a/web/src/layouts/Root.tsx +++ b/web/src/layouts/Root.tsx @@ -1,6 +1,6 @@ import { Outlet } from "react-router-dom"; -import Header from "@/components/Header"; import DemoBanner from "@/components/DemoBanner"; +import Header from "@/components/Header"; function Root() { return ( diff --git a/web/src/main.tsx b/web/src/main.tsx index c479989d..1bf4b38c 100644 --- a/web/src/main.tsx +++ b/web/src/main.tsx @@ -1,8 +1,8 @@ import { CssVarsProvider } from "@mui/joy"; import { createRoot } from "react-dom/client"; import { Provider } from "react-redux"; -import store from "./store"; import App from "./App"; +import store from "./store"; import theme from "./theme"; import "./helpers/polyfill"; import "./i18n"; diff --git a/web/src/pages/Archived.tsx b/web/src/pages/Archived.tsx index 160f4231..636824d4 100644 --- a/web/src/pages/Archived.tsx +++ b/web/src/pages/Archived.tsx @@ -1,13 +1,13 @@ import { useEffect, useState } from "react"; -import { useTranslate } from "@/utils/i18n"; import toast from "react-hot-toast"; -import { useFilterStore, useMemoStore } from "@/store/module"; -import useLoading from "@/hooks/useLoading"; import ArchivedMemo from "@/components/ArchivedMemo"; -import MobileHeader from "@/components/MobileHeader"; import Empty from "@/components/Empty"; -import SearchBar from "@/components/SearchBar"; import MemoFilter from "@/components/MemoFilter"; +import MobileHeader from "@/components/MobileHeader"; +import SearchBar from "@/components/SearchBar"; +import useLoading from "@/hooks/useLoading"; +import { useFilterStore, useMemoStore } from "@/store/module"; +import { useTranslate } from "@/utils/i18n"; import "@/less/archived.less"; const Archived = () => { diff --git a/web/src/pages/Auth.tsx b/web/src/pages/Auth.tsx index 23ae3028..56a0c2ba 100644 --- a/web/src/pages/Auth.tsx +++ b/web/src/pages/Auth.tsx @@ -1,14 +1,14 @@ import { Button, Divider, Input } from "@mui/joy"; import { useEffect, useState } from "react"; import { toast } from "react-hot-toast"; -import { useTranslate } from "@/utils/i18n"; -import { useGlobalStore, useUserStore } from "@/store/module"; +import AppearanceSelect from "@/components/AppearanceSelect"; +import Icon from "@/components/Icon"; +import LocaleSelect from "@/components/LocaleSelect"; import * as api from "@/helpers/api"; import { absolutifyLink } from "@/helpers/utils"; import useLoading from "@/hooks/useLoading"; -import Icon from "@/components/Icon"; -import AppearanceSelect from "@/components/AppearanceSelect"; -import LocaleSelect from "@/components/LocaleSelect"; +import { useGlobalStore, useUserStore } from "@/store/module"; +import { useTranslate } from "@/utils/i18n"; const Auth = () => { const t = useTranslate(); diff --git a/web/src/pages/AuthCallback.tsx b/web/src/pages/AuthCallback.tsx index 6e08630f..4706e3ea 100644 --- a/web/src/pages/AuthCallback.tsx +++ b/web/src/pages/AuthCallback.tsx @@ -1,12 +1,12 @@ import { last } from "lodash-es"; import { useEffect, useState } from "react"; import { toast } from "react-hot-toast"; -import { useTranslate } from "@/utils/i18n"; import { useSearchParams } from "react-router-dom"; +import Icon from "@/components/Icon"; import * as api from "@/helpers/api"; import { absolutifyLink } from "@/helpers/utils"; import { useUserStore } from "@/store/module"; -import Icon from "@/components/Icon"; +import { useTranslate } from "@/utils/i18n"; interface State { loading: boolean; diff --git a/web/src/pages/DailyReview.tsx b/web/src/pages/DailyReview.tsx index af5b329f..1b663b0f 100644 --- a/web/src/pages/DailyReview.tsx +++ b/web/src/pages/DailyReview.tsx @@ -1,21 +1,20 @@ +import classNames from "classnames"; import { last } from "lodash-es"; import { useEffect, useRef, useState } from "react"; import toast from "react-hot-toast"; -import { useTranslate } from "@/utils/i18n"; -import { useMemoStore, useUserStore } from "@/store/module"; -import { DAILY_TIMESTAMP, DEFAULT_MEMO_LIMIT } from "@/helpers/consts"; -import MobileHeader from "@/components/MobileHeader"; -import useToggle from "@/hooks/useToggle"; -import toImage from "@/labs/html2image"; -import showPreviewImageDialog from "@/components/PreviewImageDialog"; +import DailyMemo from "@/components/DailyMemo"; +import Empty from "@/components/Empty"; import Icon from "@/components/Icon"; import DatePicker from "@/components/kit/DatePicker"; -import DailyMemo from "@/components/DailyMemo"; -import i18n from "@/i18n"; -import { findNearestLanguageMatch } from "@/utils/i18n"; +import MobileHeader from "@/components/MobileHeader"; +import showPreviewImageDialog from "@/components/PreviewImageDialog"; +import { DAILY_TIMESTAMP, DEFAULT_MEMO_LIMIT } from "@/helpers/consts"; import { convertToMillis, getDateStampByDate, getNormalizedDateString, getTimeStampByDate, isFutureDate } from "@/helpers/datetime"; -import Empty from "@/components/Empty"; -import classNames from "classnames"; +import useToggle from "@/hooks/useToggle"; +import i18n from "@/i18n"; +import toImage from "@/labs/html2image"; +import { useMemoStore, useUserStore } from "@/store/module"; +import { findNearestLanguageMatch, useTranslate } from "@/utils/i18n"; const DailyReview = () => { const t = useTranslate(); diff --git a/web/src/pages/EmbedMemo.tsx b/web/src/pages/EmbedMemo.tsx index 1a86567f..769d0002 100644 --- a/web/src/pages/EmbedMemo.tsx +++ b/web/src/pages/EmbedMemo.tsx @@ -1,12 +1,12 @@ import { useEffect, useState } from "react"; import { toast } from "react-hot-toast"; import { useParams } from "react-router-dom"; -import { UNKNOWN_ID } from "@/helpers/consts"; -import { useMemoStore } from "@/store/module"; -import useLoading from "@/hooks/useLoading"; import MemoContent from "@/components/MemoContent"; import MemoResourceListView from "@/components/MemoResourceListView"; +import { UNKNOWN_ID } from "@/helpers/consts"; import { getDateTimeString } from "@/helpers/datetime"; +import useLoading from "@/hooks/useLoading"; +import { useMemoStore } from "@/store/module"; interface State { memo: Memo; diff --git a/web/src/pages/Explore.tsx b/web/src/pages/Explore.tsx index bc3bd9be..4c35070e 100644 --- a/web/src/pages/Explore.tsx +++ b/web/src/pages/Explore.tsx @@ -1,16 +1,16 @@ import { useEffect, useState } from "react"; import { toast } from "react-hot-toast"; -import { useTranslate } from "@/utils/i18n"; import { useLocation } from "react-router-dom"; -import { useFilterStore, useGlobalStore, useMemoStore } from "@/store/module"; -import { TAG_REG } from "@/labs/marked/parser"; +import Empty from "@/components/Empty"; +import Memo from "@/components/Memo"; +import MemoFilter from "@/components/MemoFilter"; +import MobileHeader from "@/components/MobileHeader"; +import SearchBar from "@/components/SearchBar"; import { DEFAULT_MEMO_LIMIT } from "@/helpers/consts"; import useLoading from "@/hooks/useLoading"; -import MemoFilter from "@/components/MemoFilter"; -import Memo from "@/components/Memo"; -import MobileHeader from "@/components/MobileHeader"; -import Empty from "@/components/Empty"; -import SearchBar from "@/components/SearchBar"; +import { TAG_REG } from "@/labs/marked/parser"; +import { useFilterStore, useGlobalStore, useMemoStore } from "@/store/module"; +import { useTranslate } from "@/utils/i18n"; const Explore = () => { const t = useTranslate(); diff --git a/web/src/pages/Home.tsx b/web/src/pages/Home.tsx index 16369209..1d473864 100644 --- a/web/src/pages/Home.tsx +++ b/web/src/pages/Home.tsx @@ -1,12 +1,12 @@ import { useEffect } from "react"; import { toast } from "react-hot-toast"; -import { useTranslate } from "@/utils/i18n"; -import { useGlobalStore, useUserStore } from "@/store/module"; +import HomeSidebar from "@/components/HomeSidebar"; import MemoEditor from "@/components/MemoEditor"; import MemoFilter from "@/components/MemoFilter"; import MemoList from "@/components/MemoList"; import MobileHeader from "@/components/MobileHeader"; -import HomeSidebar from "@/components/HomeSidebar"; +import { useGlobalStore, useUserStore } from "@/store/module"; +import { useTranslate } from "@/utils/i18n"; const Home = () => { const t = useTranslate(); diff --git a/web/src/pages/MemoChat.tsx b/web/src/pages/MemoChat.tsx index 0380db73..44f5162c 100644 --- a/web/src/pages/MemoChat.tsx +++ b/web/src/pages/MemoChat.tsx @@ -1,20 +1,20 @@ -import { Button, Stack } from "@mui/joy"; import { fetchEventSource } from "@microsoft/fetch-event-source"; +import { Button, Stack } from "@mui/joy"; import { head } from "lodash-es"; import React, { useEffect, useState } from "react"; import { toast } from "react-hot-toast"; -import { useTranslate } from "@/utils/i18n"; +import Empty from "@/components/Empty"; +import Icon from "@/components/Icon"; +import ChatInput from "@/components/MemoChat/ChatInput"; +import ChatMessage from "@/components/MemoChat/ChatMessage"; +import ConversationTab from "@/components/MemoChat/ConversationTab"; +import MobileHeader from "@/components/MobileHeader"; import * as api from "@/helpers/api"; import useLoading from "@/hooks/useLoading"; -import { Message, useMessageStore } from "@/store/v1/message"; import { Conversation, useConversationStore } from "@/store/v1/conversation"; -import Icon from "@/components/Icon"; +import { Message, useMessageStore } from "@/store/v1/message"; +import { useTranslate } from "@/utils/i18n"; import { generateUUID } from "@/utils/uuid"; -import MobileHeader from "@/components/MobileHeader"; -import ChatMessage from "@/components/MemoChat/ChatMessage"; -import ChatInput from "@/components/MemoChat/ChatInput"; -import ConversationTab from "@/components/MemoChat/ConversationTab"; -import Empty from "@/components/Empty"; const chatStreaming = async (messageList: Array, onmessage: any, onclose: any) => { await fetchEventSource("/api/v1/openai/chat-streaming", { diff --git a/web/src/pages/MemoDetail.tsx b/web/src/pages/MemoDetail.tsx index deea520a..559bbbc5 100644 --- a/web/src/pages/MemoDetail.tsx +++ b/web/src/pages/MemoDetail.tsx @@ -1,11 +1,11 @@ import { useEffect } from "react"; import { toast } from "react-hot-toast"; -import { useTranslate } from "@/utils/i18n"; import { Link, useLocation, useParams } from "react-router-dom"; -import { useGlobalStore, useMemoStore } from "@/store/module"; -import useLoading from "@/hooks/useLoading"; import Icon from "@/components/Icon"; import Memo from "@/components/Memo"; +import useLoading from "@/hooks/useLoading"; +import { useGlobalStore, useMemoStore } from "@/store/module"; +import { useTranslate } from "@/utils/i18n"; const MemoDetail = () => { const t = useTranslate(); diff --git a/web/src/pages/NotFound.tsx b/web/src/pages/NotFound.tsx index b9596e39..ec6516aa 100644 --- a/web/src/pages/NotFound.tsx +++ b/web/src/pages/NotFound.tsx @@ -1,5 +1,5 @@ -import { useTranslate } from "@/utils/i18n"; import { Link } from "react-router-dom"; +import { useTranslate } from "@/utils/i18n"; import "@/less/not-found.less"; const NotFound = () => { diff --git a/web/src/pages/ResourcesDashboard.tsx b/web/src/pages/ResourcesDashboard.tsx index 8f0726b7..70c857f0 100644 --- a/web/src/pages/ResourcesDashboard.tsx +++ b/web/src/pages/ResourcesDashboard.tsx @@ -1,20 +1,20 @@ import { Button } from "@mui/joy"; import { useEffect, useMemo, useState } from "react"; import { toast } from "react-hot-toast"; -import { useTranslate } from "@/utils/i18n"; -import { DEFAULT_MEMO_LIMIT } from "@/helpers/consts"; -import useLoading from "@/hooks/useLoading"; -import useEvent from "@/hooks/useEvent"; -import { useResourceStore } from "@/store/module"; -import Icon from "@/components/Icon"; -import ResourceCard from "@/components/ResourceCard"; -import ResourceSearchBar from "@/components/ResourceSearchBar"; -import MobileHeader from "@/components/MobileHeader"; -import Dropdown from "@/components/kit/Dropdown"; -import ResourceItem from "@/components/ResourceItem"; -import { showCommonDialog } from "@/components/Dialog/CommonDialog"; import showCreateResourceDialog from "@/components/CreateResourceDialog"; +import { showCommonDialog } from "@/components/Dialog/CommonDialog"; import Empty from "@/components/Empty"; +import Icon from "@/components/Icon"; +import Dropdown from "@/components/kit/Dropdown"; +import MobileHeader from "@/components/MobileHeader"; +import ResourceCard from "@/components/ResourceCard"; +import ResourceItem from "@/components/ResourceItem"; +import ResourceSearchBar from "@/components/ResourceSearchBar"; +import { DEFAULT_MEMO_LIMIT } from "@/helpers/consts"; +import useEvent from "@/hooks/useEvent"; +import useLoading from "@/hooks/useLoading"; +import { useResourceStore } from "@/store/module"; +import { useTranslate } from "@/utils/i18n"; const ResourcesDashboard = () => { const t = useTranslate(); diff --git a/web/src/pages/Setting.tsx b/web/src/pages/Setting.tsx index f01579c6..b0acd09b 100644 --- a/web/src/pages/Setting.tsx +++ b/web/src/pages/Setting.tsx @@ -1,17 +1,17 @@ import { Option, Select } from "@mui/joy"; import { useState } from "react"; -import { useTranslate } from "@/utils/i18n"; -import { useGlobalStore, useUserStore } from "@/store/module"; -import Icon from "@/components/Icon"; import BetaBadge from "@/components/BetaBadge"; -import MyAccountSection from "@/components/Settings/MyAccountSection"; -import PreferencesSection from "@/components/Settings/PreferencesSection"; -import MemberSection from "@/components/Settings/MemberSection"; -import SystemSection from "@/components/Settings/SystemSection"; -import OpenAISection from "@/components/Settings/OpenAISection"; -import StorageSection from "@/components/Settings/StorageSection"; -import SSOSection from "@/components/Settings/SSOSection"; +import Icon from "@/components/Icon"; import MobileHeader from "@/components/MobileHeader"; +import MemberSection from "@/components/Settings/MemberSection"; +import MyAccountSection from "@/components/Settings/MyAccountSection"; +import OpenAISection from "@/components/Settings/OpenAISection"; +import PreferencesSection from "@/components/Settings/PreferencesSection"; +import SSOSection from "@/components/Settings/SSOSection"; +import StorageSection from "@/components/Settings/StorageSection"; +import SystemSection from "@/components/Settings/SystemSection"; +import { useGlobalStore, useUserStore } from "@/store/module"; +import { useTranslate } from "@/utils/i18n"; import "@/less/setting.less"; type SettingSection = "my-account" | "preference" | "member" | "system" | "openai" | "storage" | "sso"; diff --git a/web/src/router/index.tsx b/web/src/router/index.tsx index 6136796b..22c96bea 100644 --- a/web/src/router/index.tsx +++ b/web/src/router/index.tsx @@ -1,12 +1,12 @@ -import { createBrowserRouter, redirect } from "react-router-dom"; import { lazy } from "react"; +import { createBrowserRouter, redirect } from "react-router-dom"; import { isNullorUndefined } from "@/helpers/utils"; -import store from "@/store"; -import { initialGlobalState, initialUserState } from "@/store/module"; +import Archived from "@/pages/Archived"; import DailyReview from "@/pages/DailyReview"; import ResourcesDashboard from "@/pages/ResourcesDashboard"; import Setting from "@/pages/Setting"; -import Archived from "@/pages/Archived"; +import store from "@/store"; +import { initialGlobalState, initialUserState } from "@/store/module"; const Root = lazy(() => import("@/layouts/Root")); const Auth = lazy(() => import("@/pages/Auth")); diff --git a/web/src/store/index.ts b/web/src/store/index.ts index c0645b6f..36402987 100644 --- a/web/src/store/index.ts +++ b/web/src/store/index.ts @@ -1,14 +1,14 @@ import { configureStore } from "@reduxjs/toolkit"; import { TypedUseSelectorHook, useDispatch, useSelector } from "react-redux"; -import globalReducer from "./reducer/global"; -import userReducer from "./reducer/user"; -import memoReducer from "./reducer/memo"; -import shortcutReducer from "./reducer/shortcut"; -import filterReducer from "./reducer/filter"; -import resourceReducer from "./reducer/resource"; import dialogReducer from "./reducer/dialog"; -import tagReducer from "./reducer/tag"; +import filterReducer from "./reducer/filter"; +import globalReducer from "./reducer/global"; import layoutReducer from "./reducer/layout"; +import memoReducer from "./reducer/memo"; +import resourceReducer from "./reducer/resource"; +import shortcutReducer from "./reducer/shortcut"; +import tagReducer from "./reducer/tag"; +import userReducer from "./reducer/user"; const store = configureStore({ reducer: { diff --git a/web/src/store/module/dialog.ts b/web/src/store/module/dialog.ts index d185c557..27f90508 100644 --- a/web/src/store/module/dialog.ts +++ b/web/src/store/module/dialog.ts @@ -1,6 +1,6 @@ import { last } from "lodash-es"; import store, { useAppSelector } from ".."; -import { pushDialogStack, popDialogStack, removeDialog } from "../reducer/dialog"; +import { popDialogStack, pushDialogStack, removeDialog } from "../reducer/dialog"; export const useDialogStore = () => { const state = useAppSelector((state) => state.dialog); diff --git a/web/src/store/module/filter.ts b/web/src/store/module/filter.ts index 19b9aab3..72fe6b86 100644 --- a/web/src/store/module/filter.ts +++ b/web/src/store/module/filter.ts @@ -1,5 +1,5 @@ import store, { useAppSelector } from ".."; -import { setFilter, Filter } from "../reducer/filter"; +import { Filter, setFilter } from "../reducer/filter"; export const useFilterStore = () => { const state = useAppSelector((state) => state.filter); diff --git a/web/src/store/module/memo.ts b/web/src/store/module/memo.ts index 12e97bf7..111b9fff 100644 --- a/web/src/store/module/memo.ts +++ b/web/src/store/module/memo.ts @@ -1,10 +1,10 @@ import { omit } from "lodash-es"; import * as api from "@/helpers/api"; import { DEFAULT_MEMO_LIMIT } from "@/helpers/consts"; -import { useUserStore } from "./"; import store, { useAppSelector } from "../"; import { createMemo, deleteMemo, patchMemo, setIsFetching, upsertMemos } from "../reducer/memo"; import { useMemoCacheStore } from "../v1"; +import { useUserStore } from "./"; export const convertResponseModelMemo = (memo: Memo): Memo => { return { diff --git a/web/src/store/module/resource.ts b/web/src/store/module/resource.ts index 75d72146..614df474 100644 --- a/web/src/store/module/resource.ts +++ b/web/src/store/module/resource.ts @@ -1,9 +1,9 @@ import * as api from "@/helpers/api"; import { DEFAULT_MEMO_LIMIT } from "@/helpers/consts"; -import store, { useAppSelector } from "../"; -import { patchResource, setResources, deleteResource, upsertResources } from "../reducer/resource"; -import { useGlobalStore } from "./global"; import { useTranslate } from "@/utils/i18n"; +import store, { useAppSelector } from "../"; +import { deleteResource, patchResource, setResources, upsertResources } from "../reducer/resource"; +import { useGlobalStore } from "./global"; const convertResponseModelResource = (resource: Resource): Resource => { return { diff --git a/web/src/store/module/user.ts b/web/src/store/module/user.ts index 38f5bd25..413331d1 100644 --- a/web/src/store/module/user.ts +++ b/web/src/store/module/user.ts @@ -1,11 +1,11 @@ import { camelCase } from "lodash-es"; import * as api from "@/helpers/api"; -import storage from "@/helpers/storage"; import { UNKNOWN_USERNAME } from "@/helpers/consts"; +import storage from "@/helpers/storage"; import { getSystemColorScheme } from "@/helpers/utils"; import store, { useAppSelector } from ".."; import { setAppearance, setLocale } from "../reducer/global"; -import { setUser, patchUser, setHost, setUserById } from "../reducer/user"; +import { patchUser, setHost, setUser, setUserById } from "../reducer/user"; const defaultSetting: Setting = { locale: "en", diff --git a/web/src/store/v1/conversation.ts b/web/src/store/v1/conversation.ts index 0206faba..357611bb 100644 --- a/web/src/store/v1/conversation.ts +++ b/web/src/store/v1/conversation.ts @@ -1,6 +1,6 @@ +import { t } from "i18next"; import { create } from "zustand"; import { persist } from "zustand/middleware"; -import { t } from "i18next"; export interface Conversation { name: string; diff --git a/web/src/utils/i18n.ts b/web/src/utils/i18n.ts index 414fb7d0..88f6bcab 100644 --- a/web/src/utils/i18n.ts +++ b/web/src/utils/i18n.ts @@ -1,6 +1,6 @@ -import i18n, { TLocale, availableLocales } from "@/i18n"; import { FallbackLngObjList } from "i18next"; import { useTranslation } from "react-i18next"; +import i18n, { availableLocales, TLocale } from "@/i18n"; import locales from "@/locales/en.json"; import type { NestedKeyOf } from "@/types/utils/nestedKeyOf.types";